Skip to content

Commit 13b17ee

Browse files
authored
chore(eslint): set array-type lint rule to generic (#5899)
* chore(eslint): set array-type lint rule to generic * chore: fix prettier
1 parent 770d454 commit 13b17ee

File tree

67 files changed

+642
-590
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+642
-590
lines changed

.eslintrc.cjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const config = {
3434
},
3535
},
3636
rules: {
37+
'@typescript-eslint/array-type': ['error', { default: 'generic', readonly: 'generic' }],
3738
'@typescript-eslint/ban-types': 'off',
3839
'@typescript-eslint/ban-ts-comment': 'off',
3940
'@typescript-eslint/consistent-type-imports': [

packages/codemods/src/v4/__testfixtures__/type-arguments.input.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import * as React from 'react'
22
import { useQueries, useQuery, useQueryClient } from 'react-query'
33

44
type Todos = {
5-
items: readonly {
5+
items: ReadonlyArray<{
66
id: string
77
text: string
8-
}[]
8+
}>
99
ts: number
1010
}
1111

packages/codemods/src/v4/__testfixtures__/type-arguments.output.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import * as React from 'react'
22
import { useQueries, useQuery, useQueryClient } from 'react-query'
33

44
type Todos = {
5-
items: readonly {
5+
items: ReadonlyArray<{
66
id: string
77
text: string
8-
}[]
8+
}>
99
ts: number
1010
}
1111

packages/eslint-plugin-query/src/rules/exhaustive-deps.utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { TSESLint } from '@typescript-eslint/utils'
44

55
export const ExhaustiveDepsUtils = {
66
isRelevantReference(params: {
7-
context: Readonly<TSESLint.RuleContext<string, readonly unknown[]>>
7+
context: Readonly<TSESLint.RuleContext<string, ReadonlyArray<unknown>>>
88
reference: TSESLint.Scope.Reference
99
scopeManager: TSESLint.Scope.ScopeManager
1010
}) {

packages/eslint-plugin-query/src/utils/ast-utils.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type { RuleContext } from '@typescript-eslint/utils/dist/ts-eslint'
77
export const ASTUtils = {
88
isNodeOfOneOf<T extends AST_NODE_TYPES>(
99
node: TSESTree.Node,
10-
types: readonly T[],
10+
types: ReadonlyArray<T>,
1111
): node is TSESTree.Node & { type: T } {
1212
return types.includes(node.type as T)
1313
},
@@ -20,7 +20,7 @@ export const ASTUtils = {
2020
): node is TSESTree.Identifier {
2121
return ASTUtils.isIdentifier(node) && node.name === name
2222
},
23-
isIdentifierWithOneOfNames<T extends string[]>(
23+
isIdentifierWithOneOfNames<T extends Array<string>>(
2424
node: TSESTree.Node,
2525
name: T,
2626
): node is TSESTree.Identifier & { name: T[number] } {
@@ -41,15 +41,15 @@ export const ASTUtils = {
4141
)
4242
},
4343
findPropertyWithIdentifierKey(
44-
properties: TSESTree.ObjectLiteralElement[],
44+
properties: Array<TSESTree.ObjectLiteralElement>,
4545
key: string,
4646
): TSESTree.Property | undefined {
4747
return properties.find((x) =>
4848
ASTUtils.isPropertyWithIdentifierKey(x, key),
4949
) as TSESTree.Property | undefined
5050
},
51-
getNestedIdentifiers(node: TSESTree.Node): TSESTree.Identifier[] {
52-
const identifiers: TSESTree.Identifier[] = []
51+
getNestedIdentifiers(node: TSESTree.Node): Array<TSESTree.Identifier> {
52+
const identifiers: Array<TSESTree.Identifier> = []
5353

5454
if (ASTUtils.isIdentifier(node)) {
5555
identifiers.push(node)
@@ -131,7 +131,7 @@ export const ASTUtils = {
131131
},
132132
traverseUpOnly(
133133
identifier: TSESTree.Node,
134-
allowedNodeTypes: AST_NODE_TYPES[],
134+
allowedNodeTypes: Array<AST_NODE_TYPES>,
135135
): TSESTree.Node {
136136
const parent = identifier.parent
137137

@@ -159,7 +159,7 @@ export const ASTUtils = {
159159
scopeManager: TSESLint.Scope.ScopeManager
160160
sourceCode: Readonly<TSESLint.SourceCode>
161161
node: TSESTree.Node
162-
}): TSESLint.Scope.Reference[] {
162+
}): Array<TSESLint.Scope.Reference> {
163163
const { scopeManager, sourceCode, node } = params
164164
const scope = scopeManager.acquire(node)
165165

@@ -207,7 +207,7 @@ export const ASTUtils = {
207207
return identifier !== null && /^(use|[A-Z])/.test(identifier.name)
208208
},
209209
getFunctionAncestor(
210-
context: Readonly<RuleContext<string, readonly unknown[]>>,
210+
context: Readonly<RuleContext<string, ReadonlyArray<unknown>>>,
211211
) {
212212
return context.getAncestors().find((x) => {
213213
if (x.type === AST_NODE_TYPES.FunctionDeclaration) {
@@ -227,7 +227,7 @@ export const ASTUtils = {
227227
},
228228
getReferencedExpressionByIdentifier(params: {
229229
node: TSESTree.Node
230-
context: Readonly<RuleContext<string, readonly unknown[]>>
230+
context: Readonly<RuleContext<string, ReadonlyArray<unknown>>>
231231
}) {
232232
const { node, context } = params
233233

@@ -242,8 +242,10 @@ export const ASTUtils = {
242242

243243
return resolvedNode.init
244244
},
245-
getNestedReturnStatements(node: TSESTree.Node): TSESTree.ReturnStatement[] {
246-
const returnStatements: TSESTree.ReturnStatement[] = []
245+
getNestedReturnStatements(
246+
node: TSESTree.Node,
247+
): Array<TSESTree.ReturnStatement> {
248+
const returnStatements: Array<TSESTree.ReturnStatement> = []
247249

248250
if (node.type === AST_NODE_TYPES.ReturnStatement) {
249251
returnStatements.push(node)

packages/eslint-plugin-query/src/utils/detect-react-query-imports.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export type EnhancedCreate = (
1818

1919
export function detectTanstackQueryImports(create: EnhancedCreate): Create {
2020
return (context, optionsWithDefault) => {
21-
const tanstackQueryImportSpecifiers: TSESTree.ImportClause[] = []
21+
const tanstackQueryImportSpecifiers: Array<TSESTree.ImportClause> = []
2222

2323
const helpers: Helpers = {
2424
isTanstackQueryImport(node) {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
export function uniqueBy<T>(arr: T[], fn: (x: T) => unknown): T[] {
1+
export function uniqueBy<T>(arr: Array<T>, fn: (x: T) => unknown): Array<T> {
22
return arr.filter((x, i, a) => a.findIndex((y) => fn(x) === fn(y)) === i)
33
}

packages/query-async-storage-persister/src/__tests__/asyncThrottle.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { sleep as delay } from './utils'
55
describe('asyncThrottle', () => {
66
test('basic', async () => {
77
const interval = 10
8-
const execTimeStamps: number[] = []
8+
const execTimeStamps: Array<number> = []
99
const mockFunc = vi.fn(
1010
async (id: number, complete?: (value?: unknown) => void) => {
1111
await delay(1)
@@ -33,7 +33,7 @@ describe('asyncThrottle', () => {
3333

3434
test('Bug #3331 case 1: Special timing', async () => {
3535
const interval = 1000
36-
const execTimeStamps: number[] = []
36+
const execTimeStamps: Array<number> = []
3737
const mockFunc = vi.fn(
3838
async (id: number, complete?: (value?: unknown) => void) => {
3939
await delay(30)
@@ -62,7 +62,7 @@ describe('asyncThrottle', () => {
6262

6363
test('Bug #3331 case 2: "func" execution time is greater than the interval.', async () => {
6464
const interval = 1000
65-
const execTimeStamps: number[] = []
65+
const execTimeStamps: Array<number> = []
6666
const mockFunc = vi.fn(
6767
async (id: number, complete?: (value?: unknown) => void) => {
6868
await delay(interval + 10)

packages/query-async-storage-persister/src/asyncThrottle.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const noop = () => {
77
/* do nothing */
88
}
99

10-
export function asyncThrottle<Args extends readonly unknown[]>(
10+
export function asyncThrottle<Args extends ReadonlyArray<unknown>>(
1111
func: (...args: Args) => Promise<void>,
1212
{ interval = 1000, onError = noop }: AsyncThrottleOptions = {},
1313
) {

packages/query-core/src/hydration.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ interface DehydratedQuery {
3838
}
3939

4040
export interface DehydratedState {
41-
mutations: DehydratedMutation[]
42-
queries: DehydratedQuery[]
41+
mutations: Array<DehydratedMutation>
42+
queries: Array<DehydratedQuery>
4343
}
4444

4545
// FUNCTIONS

packages/query-core/src/mutation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class Mutation<
8888
options!: MutationOptions<TData, TError, TVariables, TContext>
8989
readonly mutationId: number
9090

91-
#observers: MutationObserver<TData, TError, TVariables, TContext>[]
91+
#observers: Array<MutationObserver<TData, TError, TVariables, TContext>>
9292
#defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>
9393
#mutationCache: MutationCache
9494
#retryer?: Retryer<TData>

packages/query-core/src/mutationCache.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ type MutationCacheListener = (event: MutationCacheNotifyEvent) => void
8282
// CLASS
8383

8484
export class MutationCache extends Subscribable<MutationCacheListener> {
85-
#mutations: Mutation<any, any, any, any>[]
85+
#mutations: Array<Mutation<any, any, any, any>>
8686
#mutationId: number
8787
#resuming: Promise<unknown> | undefined
8888

@@ -127,7 +127,7 @@ export class MutationCache extends Subscribable<MutationCacheListener> {
127127
})
128128
}
129129

130-
getAll(): Mutation[] {
130+
getAll(): Array<Mutation> {
131131
return this.#mutations
132132
}
133133

@@ -146,7 +146,7 @@ export class MutationCache extends Subscribable<MutationCacheListener> {
146146
)
147147
}
148148

149-
findAll(filters: MutationFilters = {}): Mutation[] {
149+
findAll(filters: MutationFilters = {}): Array<Mutation> {
150150
return this.#mutations.filter((mutation) =>
151151
matchMutation(filters, mutation),
152152
)

packages/query-core/src/notifyManager.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ type NotifyFunction = (callback: () => void) => void
88

99
type BatchNotifyFunction = (callback: () => void) => void
1010

11-
type BatchCallsCallback<T extends unknown[]> = (...args: T) => void
11+
type BatchCallsCallback<T extends Array<unknown>> = (...args: T) => void
1212

1313
export function createNotifyManager() {
14-
let queue: NotifyCallback[] = []
14+
let queue: Array<NotifyCallback> = []
1515
let transactions = 0
1616
let notifyFn: NotifyFunction = (callback) => {
1717
callback()
@@ -47,7 +47,7 @@ export function createNotifyManager() {
4747
/**
4848
* All calls to the wrapped function will be batched.
4949
*/
50-
const batchCalls = <T extends unknown[]>(
50+
const batchCalls = <T extends Array<unknown>>(
5151
callback: BatchCallsCallback<T>,
5252
): BatchCallsCallback<T> => {
5353
return (...args) => {

packages/query-core/src/queriesObserver.ts

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,37 @@ import type {
1010
import type { QueryClient } from './queryClient'
1111
import type { NotifyOptions } from './queryObserver'
1212

13-
function difference<T>(array1: T[], array2: T[]): T[] {
13+
function difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {
1414
return array1.filter((x) => !array2.includes(x))
1515
}
1616

17-
function replaceAt<T>(array: T[], index: number, value: T): T[] {
17+
function replaceAt<T>(array: Array<T>, index: number, value: T): Array<T> {
1818
const copy = array.slice(0)
1919
copy[index] = value
2020
return copy
2121
}
2222

23-
type QueriesObserverListener = (result: QueryObserverResult[]) => void
23+
type QueriesObserverListener = (result: Array<QueryObserverResult>) => void
2424

2525
export interface QueriesObserverOptions<
26-
TCombinedResult = QueryObserverResult[],
26+
TCombinedResult = Array<QueryObserverResult>,
2727
> {
28-
combine?: (result: QueryObserverResult[]) => TCombinedResult
28+
combine?: (result: Array<QueryObserverResult>) => TCombinedResult
2929
}
3030

3131
export class QueriesObserver<
32-
TCombinedResult = QueryObserverResult[],
32+
TCombinedResult = Array<QueryObserverResult>,
3333
> extends Subscribable<QueriesObserverListener> {
3434
#client: QueryClient
35-
#result!: QueryObserverResult[]
36-
#queries: QueryObserverOptions[]
37-
#observers: QueryObserver[]
35+
#result!: Array<QueryObserverResult>
36+
#queries: Array<QueryObserverOptions>
37+
#observers: Array<QueryObserver>
3838
#options?: QueriesObserverOptions<TCombinedResult>
3939
#combinedResult!: TCombinedResult
4040

4141
constructor(
4242
client: QueryClient,
43-
queries: QueryObserverOptions[],
43+
queries: Array<QueryObserverOptions>,
4444
options?: QueriesObserverOptions<TCombinedResult>,
4545
) {
4646
super()
@@ -53,7 +53,7 @@ export class QueriesObserver<
5353
this.setQueries(queries, options)
5454
}
5555

56-
#setResult(value: QueryObserverResult[]) {
56+
#setResult(value: Array<QueryObserverResult>) {
5757
this.#result = value
5858
this.#combinedResult = this.#combineResult(value)
5959
}
@@ -82,7 +82,7 @@ export class QueriesObserver<
8282
}
8383

8484
setQueries(
85-
queries: QueryObserverOptions[],
85+
queries: Array<QueryObserverOptions>,
8686
options?: QueriesObserverOptions<TCombinedResult>,
8787
notifyOptions?: NotifyOptions,
8888
): void {
@@ -145,11 +145,11 @@ export class QueriesObserver<
145145
}
146146

147147
getOptimisticResult(
148-
queries: QueryObserverOptions[],
148+
queries: Array<QueryObserverOptions>,
149149
): [
150-
rawResult: QueryObserverResult[],
151-
combineResult: (r?: QueryObserverResult[]) => TCombinedResult,
152-
trackResult: () => QueryObserverResult[],
150+
rawResult: Array<QueryObserverResult>,
151+
combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult,
152+
trackResult: () => Array<QueryObserverResult>,
153153
] {
154154
const matches = this.#findMatchingObservers(queries)
155155
const result = matches.map((match) =>
@@ -158,7 +158,7 @@ export class QueriesObserver<
158158

159159
return [
160160
result,
161-
(r?: QueryObserverResult[]) => {
161+
(r?: Array<QueryObserverResult>) => {
162162
return this.#combineResult(r ?? result)
163163
},
164164
() => {
@@ -172,7 +172,7 @@ export class QueriesObserver<
172172
]
173173
}
174174

175-
#combineResult(input: QueryObserverResult[]): TCombinedResult {
175+
#combineResult(input: Array<QueryObserverResult>): TCombinedResult {
176176
const combine = this.#options?.combine
177177
if (combine) {
178178
return replaceEqualDeep(this.#combinedResult, combine(input))
@@ -181,8 +181,8 @@ export class QueriesObserver<
181181
}
182182

183183
#findMatchingObservers(
184-
queries: QueryObserverOptions[],
185-
): QueryObserverMatch[] {
184+
queries: Array<QueryObserverOptions>,
185+
): Array<QueryObserverMatch> {
186186
const prevObservers = this.#observers
187187
const prevObserversMap = new Map(
188188
prevObservers.map((observer) => [observer.options.queryHash, observer]),
@@ -192,7 +192,7 @@ export class QueriesObserver<
192192
this.#client.defaultQueryOptions(options),
193193
)
194194

195-
const matchingObservers: QueryObserverMatch[] =
195+
const matchingObservers: Array<QueryObserverMatch> =
196196
defaultedQueryOptions.flatMap((defaultedOptions) => {
197197
const match = prevObserversMap.get(defaultedOptions.queryHash)
198198
if (match != null) {
@@ -218,14 +218,13 @@ export class QueriesObserver<
218218
)
219219
}
220220

221-
const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(
222-
(options) => {
221+
const newOrReusedObservers: Array<QueryObserverMatch> =
222+
unmatchedQueries.map((options) => {
223223
return {
224224
defaultedQueryOptions: options,
225225
observer: getObserver(options),
226226
}
227-
},
228-
)
227+
})
229228

230229
const sortMatchesByOrderOfQueries = (
231230
a: QueryObserverMatch,

packages/query-core/src/query.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ export class Query<
159159
#cache: QueryCache
160160
#promise?: Promise<TData>
161161
#retryer?: Retryer<TData>
162-
#observers: QueryObserver<any, any, any, any, any>[]
162+
#observers: Array<QueryObserver<any, any, any, any, any>>
163163
#defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>
164164
#abortSignalConsumed: boolean
165165

0 commit comments

Comments
 (0)