refactor: Prevent for-each calls

This commit is contained in:
Joachim Van Herwegen 2023-10-30 16:58:39 +01:00
parent 20d4a0c3af
commit c9e4c7041c
7 changed files with 13 additions and 9 deletions

View File

@ -231,6 +231,7 @@ const configs = antfu(
}],
'unicorn/explicit-length-check': 'error',
'unicorn/new-for-builtins': 'error',
'unicorn/no-array-for-each': 'error',
'unicorn/no-array-reduce': 'error',
'unicorn/no-for-loop': 'error',
'unicorn/no-invalid-remove-event-listener': 'error',
@ -268,7 +269,6 @@ const configs = antfu(
'unicorn/require-number-to-fixed-digits-argument': 'error',
// Might want to enable these
'unicorn/no-array-for-each': 'off',
'unicorn/no-await-expression-member': 'off',
'unicorn/no-negated-condition': 'off',
'unicorn/no-object-as-default-parameter': 'off',

View File

@ -89,9 +89,9 @@ export class ExpiringAdapter implements Adapter {
return;
}
const deletePromises: Promise<unknown>[] = [];
grants.forEach((grant): void => {
for (const grant of grants) {
deletePromises.push(this.storage.delete(grant));
});
}
deletePromises.push(this.storage.delete(grantKey));
await Promise.all(deletePromises);
}

View File

@ -166,7 +166,7 @@ function parseAcceptPart(part: string, replacements: Record<string, string>, str
const extensionParams: Record<string, string> = {};
let map = mediaTypeParams;
const parsedParams = parseParameters(parameters, replacements);
parsedParams.forEach(({ name, value }): void => {
for (const { name, value } of parsedParams) {
if (name === 'q') {
// Extension parameters appear after the q value
map = extensionParams;
@ -179,11 +179,11 @@ function parseAcceptPart(part: string, replacements: Record<string, string>, str
if (!value && map !== extensionParams) {
handleInvalidValue(`Invalid Accept parameter ${name}: ` +
`Accept parameter values are not optional when preceding the q value`, strict);
return;
continue;
}
map[name] = value || '';
}
});
}
return {
range,

View File

@ -198,7 +198,9 @@ describeIf('docker')('A server with a RedisLocker', (): void => {
countdown -= 1;
// Start releasing locks after 3 inits of the promises below
if (countdown === 0) {
[ 1, 0, 2 ].forEach((num): unknown => releaseSignal.emit(`release${num}`));
for (const num of [ 1, 0, 2 ]) {
releaseSignal.emit(`release${num}`);
}
}
});
const promises = [ 0, 1, 2 ].map(async(num): Promise<any> =>

View File

@ -70,6 +70,7 @@ describe('A HashMap', (): void => {
it('supports a forEach call.', async(): Promise<void> => {
const result: string[] = [];
// eslint-disable-next-line unicorn/no-array-for-each
map.forEach((value): void => {
result.push(value.field3);
});

View File

@ -156,6 +156,7 @@ describe('A WrappedSetMultiMap', (): void => {
it('supports a forEach call.', async(): Promise<void> => {
expect(map.set(key, new Set([ 123, 456 ]))).toBe(map);
const result: number[] = [];
// eslint-disable-next-line unicorn/no-array-for-each
map.forEach((value): void => {
result.push(value);
});

View File

@ -146,7 +146,7 @@ export function mockFileSystem(rootFilepath?: string, time?: Date): { data: any
const name = parts.at(-1) as string;
parts = parts.slice(0, -1);
let folder = cache.data;
parts.forEach((part): any => {
for (const part of parts) {
if (typeof folder === 'string') {
throwSystemError('ENOTDIR');
}
@ -154,7 +154,7 @@ export function mockFileSystem(rootFilepath?: string, time?: Date): { data: any
if (!folder) {
throwSystemError('ENOENT');
}
});
}
return { folder, name };
}