Skip to content

Commit 1175c01

Browse files
authored
chore(lint): Fix suppressed ESLint errors in remote-feature-flag-controller package (#7428)
## Explanation This fixes all suppressed ESLint errors in the `remote-feature-flag-controller` package. ## References <!-- Are there any issues that this pull request is tied to? Are there other links that reviewers should consult to understand these changes better? Are there client or consumer pull requests to adopt any breaking changes? For example: * Fixes #12345 * Related to #67890 --> Closes #7388. ## Checklist - [ ] I've updated the test suite for new or updated code as appropriate - [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate - [ ] I've communicated my changes to consumers by [updating changelogs for packages I've changed](https://github.com/MetaMask/core/tree/main/docs/contributing.md#updating-changelogs) - [ ] I've introduced [breaking changes](https://github.com/MetaMask/core/tree/main/docs/breaking-changes.md) in this PR and have prepared draft pull requests for clients and consumer packages to resolve them <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Adds explicit types and a private method refactor to the client config service, tightens test typings/utilities, and removes related ESLint suppressions. > > - **Remote Feature Flag Controller**: > - **ClientConfigApiService (`client-config-api-service.ts`)**: > - Add explicit return types for `onBreak`/`onDegraded` (`IDisposable`). > - Refactor `flattenFeatureFlags` to private field method `#flattenFeatureFlags` and update call site. > - **Controller (`remote-feature-flag-controller.ts`)**: > - Add explicit `Promise<void>` return type to `#updateCache`. > - **Tests**: > - **ClientConfigApiService test**: Import `jest.Mock`, type `createMockFetch` to return `Mock`, adjust Promise params to satisfy lint. > - **RemoteFeatureFlagController test**: Annotate `createController` return type; type `getMetaMetricsId` default. > - **Tooling**: > - Remove corresponding entries for this package from `eslint-suppressions.json`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 9821288. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent 0ed31aa commit 1175c01

5 files changed

Lines changed: 16 additions & 35 deletions

File tree

eslint-suppressions.json

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3067,32 +3067,6 @@
30673067
"count": 1
30683068
}
30693069
},
3070-
"packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts": {
3071-
"@typescript-eslint/explicit-function-return-type": {
3072-
"count": 1
3073-
},
3074-
"promise/param-names": {
3075-
"count": 1
3076-
}
3077-
},
3078-
"packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts": {
3079-
"@typescript-eslint/explicit-function-return-type": {
3080-
"count": 2
3081-
},
3082-
"no-restricted-syntax": {
3083-
"count": 1
3084-
}
3085-
},
3086-
"packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts": {
3087-
"@typescript-eslint/explicit-function-return-type": {
3088-
"count": 2
3089-
}
3090-
},
3091-
"packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts": {
3092-
"@typescript-eslint/explicit-function-return-type": {
3093-
"count": 1
3094-
}
3095-
},
30963070
"packages/seedless-onboarding-controller/jest.environment.js": {
30973071
"n/no-unsupported-features/node-builtins": {
30983072
"count": 1

packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.test.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import {
1010
EnvironmentType,
1111
} from '../remote-feature-flag-controller-types';
1212

13+
import Mock = jest.Mock;
14+
1315
const mockServerFeatureFlagsResponse: ApiDataResponse = [
1416
{ feature1: false },
1517
{ feature2: { chrome: '<109' } },
@@ -265,13 +267,15 @@ function createMockFetch({
265267
response?: Partial<Response>;
266268
error?: Error;
267269
delay?: number;
268-
}) {
270+
}): Mock {
269271
if (error) {
270272
return jest
271273
.fn()
272274
.mockImplementation(
273275
() =>
274-
new Promise((_, reject) => setTimeout(() => reject(error), delay)),
276+
new Promise((_resolve, reject) =>
277+
setTimeout(() => reject(error), delay),
278+
),
275279
);
276280
}
277281

packages/remote-feature-flag-controller/src/client-config-api-service/client-config-api-service.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
DEFAULT_MAX_RETRIES,
66
} from '@metamask/controller-utils';
77
import type { ServicePolicy } from '@metamask/controller-utils';
8+
import type { IDisposable } from 'cockatiel';
89

910
import type { AbstractClientConfigApiService } from './abstract-client-config-api-service';
1011
import { BASE_URL } from '../constants';
@@ -154,7 +155,7 @@ export class ClientConfigApiService implements AbstractClientConfigApiService {
154155
* takes.
155156
* @returns What {@link ServicePolicy.onBreak} returns.
156157
*/
157-
onBreak(...args: Parameters<ServicePolicy['onBreak']>) {
158+
onBreak(...args: Parameters<ServicePolicy['onBreak']>): IDisposable {
158159
return this.#policy.onBreak(...args);
159160
}
160161

@@ -165,7 +166,7 @@ export class ClientConfigApiService implements AbstractClientConfigApiService {
165166
* takes.
166167
* @returns What {@link ServicePolicy.onDegraded} returns.
167168
*/
168-
onDegraded(...args: Parameters<ServicePolicy['onDegraded']>) {
169+
onDegraded(...args: Parameters<ServicePolicy['onDegraded']>): IDisposable {
169170
return this.#policy.onDegraded(...args);
170171
}
171172

@@ -194,7 +195,7 @@ export class ClientConfigApiService implements AbstractClientConfigApiService {
194195
throw new Error('Feature flags api did not return an array');
195196
}
196197

197-
const remoteFeatureFlags = this.flattenFeatureFlags(data);
198+
const remoteFeatureFlags = this.#flattenFeatureFlags(data);
198199

199200
return {
200201
remoteFeatureFlags,
@@ -211,7 +212,7 @@ export class ClientConfigApiService implements AbstractClientConfigApiService {
211212
* // Input: [{ flag1: true }, { flag2: [] }]
212213
* // Output: { flag1: true, flag2: [] }
213214
*/
214-
private flattenFeatureFlags(responseData: ApiDataResponse): FeatureFlags {
215+
#flattenFeatureFlags(responseData: ApiDataResponse): FeatureFlags {
215216
return responseData.reduce((acc, curr) => {
216217
return { ...acc, ...curr };
217218
}, {});

packages/remote-feature-flag-controller/src/remote-feature-flag-controller.test.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,16 @@ function createController(
6767
getMetaMetricsId: () => string;
6868
clientVersion: string;
6969
}> = {},
70-
) {
70+
): RemoteFeatureFlagController {
7171
return new RemoteFeatureFlagController({
7272
messenger: getMessenger(),
7373
state: options.state,
7474
clientConfigApiService:
7575
options.clientConfigApiService ?? buildClientConfigApiService(),
7676
disabled: options.disabled,
77-
getMetaMetricsId: options.getMetaMetricsId ?? (() => MOCK_METRICS_ID),
77+
getMetaMetricsId:
78+
options.getMetaMetricsId ??
79+
((): typeof MOCK_METRICS_ID => MOCK_METRICS_ID),
7880
clientVersion: options.clientVersion ?? MOCK_BASE_VERSION,
7981
});
8082
}

packages/remote-feature-flag-controller/src/remote-feature-flag-controller.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ export class RemoteFeatureFlagController extends BaseController<
212212
*
213213
* @param remoteFeatureFlags - The new feature flags to cache.
214214
*/
215-
async #updateCache(remoteFeatureFlags: FeatureFlags) {
215+
async #updateCache(remoteFeatureFlags: FeatureFlags): Promise<void> {
216216
const processedRemoteFeatureFlags =
217217
await this.#processRemoteFeatureFlags(remoteFeatureFlags);
218218
this.update(() => {

0 commit comments

Comments
 (0)