Skip to content

Commit c774772

Browse files
manudeliTkDodo
andauthored
ci(eslint): add rule to encourage generic naming convention as ^(T|T[A-Z][A-Za-z]+)$ (TanStack#6684)
* ci(eslint): add rule to force generic naming convention * chore: reflect review Co-authored-by: Dominik Dorfmeister <[email protected]> * fix(eslint): accept A-Z alone too * chore: update rule regex * chore: update rule's regex * fix(eslint): update typeParameter rule as `^(T|T[A-Z][A-Za-z]+)$` more strictly * chore: resolve prettier error --------- Co-authored-by: Dominik Dorfmeister <[email protected]>
1 parent b32ad24 commit c774772

File tree

24 files changed

+164
-133
lines changed

24 files changed

+164
-133
lines changed

.eslintrc.cjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,19 @@ const config = {
6767
{ prefer: 'type-imports' },
6868
],
6969
'@typescript-eslint/explicit-module-boundary-types': 'off',
70+
'@typescript-eslint/naming-convention': [
71+
'error',
72+
{
73+
selector: 'typeParameter',
74+
format: ['PascalCase'],
75+
leadingUnderscore: 'forbid',
76+
trailingUnderscore: 'forbid',
77+
custom: {
78+
regex: '^(T|T[A-Z][A-Za-z]+)$',
79+
match: true,
80+
},
81+
},
82+
],
7083
'@typescript-eslint/no-empty-interface': 'off',
7184
'@typescript-eslint/no-explicit-any': 'off',
7285
'@typescript-eslint/no-non-null-assertion': 'off',

packages/angular-query-experimental/src/inject-queries.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,19 +119,19 @@ type GetResults<T> =
119119
*/
120120
export type QueriesOptions<
121121
T extends Array<any>,
122-
Result extends Array<any> = [],
123-
Depth extends ReadonlyArray<number> = [],
124-
> = Depth['length'] extends MAXIMUM_DEPTH
122+
TResult extends Array<any> = [],
123+
TDepth extends ReadonlyArray<number> = [],
124+
> = TDepth['length'] extends MAXIMUM_DEPTH
125125
? Array<QueryObserverOptionsForCreateQueries>
126126
: T extends []
127127
? []
128128
: T extends [infer Head]
129-
? [...Result, GetOptions<Head>]
129+
? [...TResult, GetOptions<Head>]
130130
: T extends [infer Head, ...infer Tail]
131131
? QueriesOptions<
132132
[...Tail],
133-
[...Result, GetOptions<Head>],
134-
[...Depth, 1]
133+
[...TResult, GetOptions<Head>],
134+
[...TDepth, 1]
135135
>
136136
: Array<unknown> extends T
137137
? T
@@ -161,19 +161,19 @@ export type QueriesOptions<
161161
*/
162162
export type QueriesResults<
163163
T extends Array<any>,
164-
Result extends Array<any> = [],
165-
Depth extends ReadonlyArray<number> = [],
166-
> = Depth['length'] extends MAXIMUM_DEPTH
164+
TResult extends Array<any> = [],
165+
TDepth extends ReadonlyArray<number> = [],
166+
> = TDepth['length'] extends MAXIMUM_DEPTH
167167
? Array<QueryObserverResult>
168168
: T extends []
169169
? []
170170
: T extends [infer Head]
171-
? [...Result, GetResults<Head>]
171+
? [...TResult, GetResults<Head>]
172172
: T extends [infer Head, ...infer Tail]
173173
? QueriesResults<
174174
[...Tail],
175-
[...Result, GetResults<Head>],
176-
[...Depth, 1]
175+
[...TResult, GetResults<Head>],
176+
[...TDepth, 1]
177177
>
178178
: T extends Array<
179179
QueryObserverOptionsForCreateQueries<

packages/angular-query-experimental/src/types.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ export interface BaseQueryNarrowing<TData = unknown, TError = DefaultError> {
5959
export type CreateBaseQueryResult<
6060
TData = unknown,
6161
TError = DefaultError,
62-
State = QueryObserverResult<TData, TError>,
62+
TState = QueryObserverResult<TData, TError>,
6363
> = BaseQueryNarrowing<TData, TError> &
64-
MapToSignals<Omit<State, keyof BaseQueryNarrowing>>
64+
MapToSignals<Omit<TState, keyof BaseQueryNarrowing>>
6565

6666
export interface CreateQueryOptions<
6767
TQueryFnData = unknown,
@@ -112,8 +112,8 @@ export type CreateInfiniteQueryResult<
112112
export type DefinedCreateQueryResult<
113113
TData = unknown,
114114
TError = DefaultError,
115-
DefinedQueryObserver = DefinedQueryObserverResult<TData, TError>,
116-
> = MapToSignals<DefinedQueryObserver>
115+
TDefinedQueryObserver = DefinedQueryObserverResult<TData, TError>,
116+
> = MapToSignals<TDefinedQueryObserver>
117117

118118
export type CreateMutationOptions<
119119
TData = unknown,
@@ -232,14 +232,18 @@ export type CreateMutationResult<
232232
TError = DefaultError,
233233
TVariables = unknown,
234234
TContext = unknown,
235-
State = CreateStatusBasedMutationResult<
235+
TState = CreateStatusBasedMutationResult<
236236
CreateBaseMutationResult['status'],
237237
TData,
238238
TError,
239239
TVariables,
240240
TContext
241241
>,
242242
> = BaseMutationNarrowing<TData, TError, TVariables, TContext> &
243-
MapToSignals<Omit<State, keyof BaseMutationNarrowing>>
243+
MapToSignals<Omit<TState, keyof BaseMutationNarrowing>>
244244

245-
type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }
245+
type Override<TTargetA, TTargetB> = {
246+
[AKey in keyof TTargetA]: AKey extends keyof TTargetB
247+
? TTargetB[AKey]
248+
: TTargetA[AKey]
249+
}

packages/angular-query-experimental/src/util/assert-injector/assert-injector.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ import {
3939
* injectValue(); // string
4040
* ```
4141
*/
42-
export function assertInjector<Runner extends () => any>(
42+
export function assertInjector<TRunner extends () => any>(
4343
fn: Function,
4444
injector: Injector | undefined | null,
45-
runner: Runner,
46-
): ReturnType<Runner>
45+
runner: TRunner,
46+
): ReturnType<TRunner>
4747
/**
4848
* `assertInjector` extends `assertInInjectionContext` with an optional `Injector`
4949
* After assertion, `assertInjector` returns a guaranteed `Injector` whether it is the default `Injector`

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

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

10-
export function asyncThrottle<Args extends ReadonlyArray<unknown>>(
11-
func: (...args: Args) => Promise<void>,
10+
export function asyncThrottle<TArgs extends ReadonlyArray<unknown>>(
11+
func: (...args: TArgs) => Promise<void>,
1212
{ interval = 1000, onError = noop }: AsyncThrottleOptions = {},
1313
) {
1414
if (typeof func !== 'function') throw new Error('argument is not function.')
1515

1616
let running = false
1717
let lastTime = 0
1818
let timeout: ReturnType<typeof setTimeout>
19-
let currentArgs: Args | null = null
19+
let currentArgs: TArgs | null = null
2020

2121
const execFunc = async () => {
2222
if (currentArgs) {
@@ -45,7 +45,7 @@ export function asyncThrottle<Args extends ReadonlyArray<unknown>>(
4545
}, interval)
4646
}
4747

48-
return (...args: Args) => {
48+
return (...args: TArgs) => {
4949
currentArgs = args
5050

5151
const tooSoon = Date.now() - lastTime < interval

packages/query-core/src/queryClient.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,14 +110,14 @@ export class QueryClient {
110110

111111
getQueryData<
112112
TQueryFnData = unknown,
113-
TaggedQueryKey extends QueryKey = QueryKey,
114-
TInferredQueryFnData = TaggedQueryKey extends DataTag<
113+
TTaggedQueryKey extends QueryKey = QueryKey,
114+
TInferredQueryFnData = TTaggedQueryKey extends DataTag<
115115
unknown,
116116
infer TaggedValue
117117
>
118118
? TaggedValue
119119
: TQueryFnData,
120-
>(queryKey: TaggedQueryKey): TInferredQueryFnData | undefined
120+
>(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined
121121
getQueryData(queryKey: QueryKey) {
122122
return this.#queryCache.find({ queryKey })?.state.data
123123
}
@@ -150,15 +150,15 @@ export class QueryClient {
150150

151151
setQueryData<
152152
TQueryFnData = unknown,
153-
TaggedQueryKey extends QueryKey = QueryKey,
154-
TInferredQueryFnData = TaggedQueryKey extends DataTag<
153+
TTaggedQueryKey extends QueryKey = QueryKey,
154+
TInferredQueryFnData = TTaggedQueryKey extends DataTag<
155155
unknown,
156156
infer TaggedValue
157157
>
158158
? TaggedValue
159159
: TQueryFnData,
160160
>(
161-
queryKey: TaggedQueryKey,
161+
queryKey: TTaggedQueryKey,
162162
updater: Updater<
163163
NoInfer<TInferredQueryFnData> | undefined,
164164
NoInfer<TInferredQueryFnData> | undefined

packages/query-core/src/tests/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ export function setIsServer(isServer: boolean) {
6060

6161
export const doNotExecute = (_func: () => void) => true
6262

63-
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
64-
T,
65-
>() => T extends Y ? 1 : 2
63+
export type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA
64+
? 1
65+
: 2) extends <T>() => T extends TTargetB ? 1 : 2
6666
? true
6767
: false
6868

packages/query-core/src/types.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ export type DefaultError = Register extends {
2424
export type QueryKey = ReadonlyArray<unknown>
2525

2626
export declare const dataTagSymbol: unique symbol
27-
export type DataTag<Type, Value> = Type & {
28-
[dataTagSymbol]: Value
27+
export type DataTag<TType, TValue> = TType & {
28+
[dataTagSymbol]: TValue
2929
}
3030

3131
export type QueryFunction<
@@ -335,7 +335,9 @@ export interface QueryObserverOptions<
335335
_optimisticResults?: 'optimistic' | 'isRestoring'
336336
}
337337

338-
export type WithRequired<T, K extends keyof T> = T & { [_ in K]: {} }
338+
export type WithRequired<TTarget, TKey extends keyof TTarget> = TTarget & {
339+
[_ in TKey]: {}
340+
}
339341

340342
export type DefaultedQueryObserverOptions<
341343
TQueryFnData = unknown,

packages/react-query/src/__tests__/utils.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ export function setActTimeout(fn: () => void, ms?: number) {
7878
}, ms)
7979
}
8080

81-
export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <
82-
T,
83-
>() => T extends Y ? 1 : 2
81+
export type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA
82+
? 1
83+
: 2) extends <T>() => T extends TTargetB ? 1 : 2
8484
? true
8585
: false
8686

packages/react-query/src/types.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,8 @@ export type UseMutationResult<
168168
TContext = unknown,
169169
> = UseBaseMutationResult<TData, TError, TVariables, TContext>
170170

171-
type Override<A, B> = { [K in keyof A]: K extends keyof B ? B[K] : A[K] }
171+
type Override<TTargetA, TTargetB> = {
172+
[AKey in keyof TTargetA]: AKey extends keyof TTargetB
173+
? TTargetB[AKey]
174+
: TTargetA[AKey]
175+
}

0 commit comments

Comments
 (0)