@trpc/tanstack-react-query 11.6.1-canary.5 → 11.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,6 +12,7 @@ import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
12
12
  import type { DistributiveOmit } from '@trpc/server/unstable-core-do-not-import';
13
13
  import type {
14
14
  ExtractCursorType,
15
+ FeatureFlags,
15
16
  ResolverDef,
16
17
  TRPCInfiniteData,
17
18
  TRPCQueryBaseOptions,
@@ -32,12 +33,13 @@ interface UndefinedTRPCInfiniteQueryOptionsIn<
32
33
  TQueryFnData,
33
34
  TData,
34
35
  TError,
36
+ TFeatureFlags extends FeatureFlags,
35
37
  > extends DistributiveOmit<
36
38
  UndefinedInitialDataInfiniteOptions<
37
39
  TQueryFnData,
38
40
  TError,
39
41
  TRPCInfiniteData<TInput, TData>,
40
- TRPCQueryKey,
42
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
41
43
  NonNullable<ExtractCursorType<TInput>> | null
42
44
  >,
43
45
  ReservedOptions
@@ -51,28 +53,38 @@ interface UndefinedTRPCInfiniteQueryOptionsOut<
51
53
  TQueryFnData,
52
54
  TData,
53
55
  TError,
56
+ TFeatureFlags extends FeatureFlags,
54
57
  > extends DistributiveOmit<
55
58
  UndefinedInitialDataInfiniteOptions<
56
59
  TQueryFnData,
57
60
  TError,
58
61
  TRPCInfiniteData<TInput, TData>,
59
- TRPCQueryKey,
62
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
60
63
  NonNullable<ExtractCursorType<TInput>> | null
61
64
  >,
62
65
  'initialPageParam'
63
66
  >,
64
67
  TRPCQueryOptionsResult {
65
- queryKey: DataTag<TRPCQueryKey, TRPCInfiniteData<TInput, TData>, TError>;
68
+ queryKey: DataTag<
69
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
70
+ TRPCInfiniteData<TInput, TData>,
71
+ TError
72
+ >;
66
73
  initialPageParam: NonNullable<ExtractCursorType<TInput>> | null;
67
74
  }
68
75
 
69
- interface DefinedTRPCInfiniteQueryOptionsIn<TInput, TQueryFnData, TData, TError>
70
- extends DistributiveOmit<
76
+ interface DefinedTRPCInfiniteQueryOptionsIn<
77
+ TInput,
78
+ TQueryFnData,
79
+ TData,
80
+ TError,
81
+ TFeatureFlags extends FeatureFlags,
82
+ > extends DistributiveOmit<
71
83
  DefinedInitialDataInfiniteOptions<
72
84
  TQueryFnData,
73
85
  TError,
74
86
  TRPCInfiniteData<TInput, TData>,
75
- TRPCQueryKey,
87
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
76
88
  NonNullable<ExtractCursorType<TInput>> | null
77
89
  >,
78
90
  ReservedOptions
@@ -86,18 +98,23 @@ interface DefinedTRPCInfiniteQueryOptionsOut<
86
98
  TQueryFnData,
87
99
  TData,
88
100
  TError,
101
+ TFeatureFlags extends FeatureFlags,
89
102
  > extends DistributiveOmit<
90
103
  DefinedInitialDataInfiniteOptions<
91
104
  TQueryFnData,
92
105
  TError,
93
106
  TRPCInfiniteData<TInput, TData>,
94
- TRPCQueryKey,
107
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
95
108
  NonNullable<ExtractCursorType<TInput>> | null
96
109
  >,
97
110
  'initialPageParam'
98
111
  >,
99
112
  TRPCQueryOptionsResult {
100
- queryKey: DataTag<TRPCQueryKey, TRPCInfiniteData<TInput, TData>, TError>;
113
+ queryKey: DataTag<
114
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
115
+ TRPCInfiniteData<TInput, TData>,
116
+ TError
117
+ >;
101
118
  initialPageParam: NonNullable<ExtractCursorType<TInput>> | null;
102
119
  }
103
120
 
@@ -106,12 +123,13 @@ interface UnusedSkipTokenTRPCInfiniteQueryOptionsIn<
106
123
  TQueryFnData,
107
124
  TData,
108
125
  TError,
126
+ TFeatureFlags extends FeatureFlags,
109
127
  > extends DistributiveOmit<
110
128
  UnusedSkipTokenInfiniteOptions<
111
129
  TQueryFnData,
112
130
  TError,
113
131
  TRPCInfiniteData<TInput, TData>,
114
- TRPCQueryKey,
132
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
115
133
  NonNullable<ExtractCursorType<TInput>> | null
116
134
  >,
117
135
  ReservedOptions
@@ -125,18 +143,23 @@ interface UnusedSkipTokenTRPCInfiniteQueryOptionsOut<
125
143
  TQueryFnData,
126
144
  TData,
127
145
  TError,
146
+ TFeatureFlags extends FeatureFlags,
128
147
  > extends DistributiveOmit<
129
148
  UnusedSkipTokenInfiniteOptions<
130
149
  TQueryFnData,
131
150
  TError,
132
151
  TRPCInfiniteData<TInput, TData>,
133
- TRPCQueryKey,
152
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
134
153
  NonNullable<ExtractCursorType<TInput>> | null
135
154
  >,
136
155
  'initialPageParam'
137
156
  >,
138
157
  TRPCQueryOptionsResult {
139
- queryKey: DataTag<TRPCQueryKey, TRPCInfiniteData<TInput, TData>, TError>;
158
+ queryKey: DataTag<
159
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
160
+ TRPCInfiniteData<TInput, TData>,
161
+ TError
162
+ >;
140
163
  initialPageParam: NonNullable<ExtractCursorType<TInput>> | null;
141
164
  }
142
165
 
@@ -150,7 +173,8 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
150
173
  TRPCClientErrorLike<{
151
174
  transformer: TDef['transformer'];
152
175
  errorShape: TDef['errorShape'];
153
- }>
176
+ }>,
177
+ TDef['featureFlags']
154
178
  >,
155
179
  ): DefinedTRPCInfiniteQueryOptionsOut<
156
180
  TDef['input'],
@@ -159,7 +183,8 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
159
183
  TRPCClientErrorLike<{
160
184
  transformer: TDef['transformer'];
161
185
  errorShape: TDef['errorShape'];
162
- }>
186
+ }>,
187
+ TDef['featureFlags']
163
188
  >;
164
189
  <TQueryFnData extends TDef['output'], TData = TQueryFnData>(
165
190
  input: TDef['input'],
@@ -170,7 +195,8 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
170
195
  TRPCClientErrorLike<{
171
196
  transformer: TDef['transformer'];
172
197
  errorShape: TDef['errorShape'];
173
- }>
198
+ }>,
199
+ TDef['featureFlags']
174
200
  >,
175
201
  ): UnusedSkipTokenTRPCInfiniteQueryOptionsOut<
176
202
  TDef['input'],
@@ -179,7 +205,8 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
179
205
  TRPCClientErrorLike<{
180
206
  transformer: TDef['transformer'];
181
207
  errorShape: TDef['errorShape'];
182
- }>
208
+ }>,
209
+ TDef['featureFlags']
183
210
  >;
184
211
  <TQueryFnData extends TDef['output'], TData = TQueryFnData>(
185
212
  input: TDef['input'] | SkipToken,
@@ -190,7 +217,8 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
190
217
  TRPCClientErrorLike<{
191
218
  transformer: TDef['transformer'];
192
219
  errorShape: TDef['errorShape'];
193
- }>
220
+ }>,
221
+ TDef['featureFlags']
194
222
  >,
195
223
  ): UndefinedTRPCInfiniteQueryOptionsOut<
196
224
  TDef['input'],
@@ -199,34 +227,45 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
199
227
  TRPCClientErrorLike<{
200
228
  transformer: TDef['transformer'];
201
229
  errorShape: TDef['errorShape'];
202
- }>
230
+ }>,
231
+ TDef['featureFlags']
203
232
  >;
204
233
  }
205
234
 
206
- type AnyTRPCInfiniteQueryOptionsIn =
207
- | DefinedTRPCInfiniteQueryOptionsIn<any, any, any, any>
208
- | UnusedSkipTokenTRPCInfiniteQueryOptionsIn<any, any, any, any>
209
- | UndefinedTRPCInfiniteQueryOptionsIn<any, any, any, any>;
235
+ type AnyTRPCInfiniteQueryOptionsIn<TFeatureFlags extends FeatureFlags> =
236
+ | DefinedTRPCInfiniteQueryOptionsIn<any, any, any, any, TFeatureFlags>
237
+ | UnusedSkipTokenTRPCInfiniteQueryOptionsIn<any, any, any, any, TFeatureFlags>
238
+ | UndefinedTRPCInfiniteQueryOptionsIn<any, any, any, any, TFeatureFlags>;
210
239
 
211
- type AnyTRPCInfiniteQueryOptionsOut =
212
- | DefinedTRPCInfiniteQueryOptionsOut<any, any, any, any>
213
- | UnusedSkipTokenTRPCInfiniteQueryOptionsOut<any, any, any, any>
214
- | UndefinedTRPCInfiniteQueryOptionsOut<any, any, any, any>;
240
+ type AnyTRPCInfiniteQueryOptionsOut<TFeatureFlags extends FeatureFlags> =
241
+ | DefinedTRPCInfiniteQueryOptionsOut<any, any, any, any, TFeatureFlags>
242
+ | UnusedSkipTokenTRPCInfiniteQueryOptionsOut<
243
+ any,
244
+ any,
245
+ any,
246
+ any,
247
+ TFeatureFlags
248
+ >
249
+ | UndefinedTRPCInfiniteQueryOptionsOut<any, any, any, any, TFeatureFlags>;
215
250
 
216
- export function trpcInfiniteQueryOptions(args: {
251
+ export function trpcInfiniteQueryOptions<
252
+ TFeatureFlags extends FeatureFlags,
253
+ >(args: {
217
254
  input: unknown;
218
255
  query: typeof TRPCUntypedClient.prototype.query;
219
256
  queryClient: QueryClient | (() => QueryClient);
220
- path: readonly string[];
221
- queryKey: TRPCQueryKey;
222
- opts: AnyTRPCInfiniteQueryOptionsIn;
223
- }): AnyTRPCInfiniteQueryOptionsOut {
257
+ path: string[];
258
+ queryKey: TRPCQueryKey<TFeatureFlags['keyPrefix']>;
259
+ opts: AnyTRPCInfiniteQueryOptionsIn<TFeatureFlags>;
260
+ }): AnyTRPCInfiniteQueryOptionsOut<TFeatureFlags> {
224
261
  const { input, query, path, queryKey, opts } = args;
225
262
  const inputIsSkipToken = input === skipToken;
226
263
 
227
- const queryFn: QueryFunction<unknown, TRPCQueryKey, unknown> = async (
228
- queryFnContext,
229
- ) => {
264
+ const queryFn: QueryFunction<
265
+ unknown,
266
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
267
+ unknown
268
+ > = async (queryFnContext) => {
230
269
  const actualOpts = {
231
270
  ...opts,
232
271
  trpc: {
@@ -9,6 +9,9 @@ import type {
9
9
  MaybePromise,
10
10
  } from '@trpc/server/unstable-core-do-not-import';
11
11
  import type {
12
+ DefaultFeatureFlags,
13
+ FeatureFlags,
14
+ KeyPrefixOptions,
12
15
  ResolverDef,
13
16
  TRPCMutationKey,
14
17
  TRPCQueryBaseOptions,
@@ -23,32 +26,48 @@ import {
23
26
 
24
27
  type ReservedOptions = 'mutationKey' | 'mutationFn';
25
28
 
26
- interface TRPCMutationOptionsIn<TInput, TError, TOutput, TContext>
27
- extends DistributiveOmit<
28
- UseMutationOptions<TOutput, TError, TInput, TContext>,
29
- ReservedOptions
30
- >,
31
- TRPCQueryBaseOptions {}
29
+ type TRPCMutationOptionsIn<
30
+ TInput,
31
+ TError,
32
+ TOutput,
33
+ TContext,
34
+ TFeatureFlags extends FeatureFlags,
35
+ > = DistributiveOmit<
36
+ UseMutationOptions<TOutput, TError, TInput, TContext>,
37
+ ReservedOptions
38
+ > &
39
+ TRPCQueryBaseOptions &
40
+ KeyPrefixOptions<TFeatureFlags>;
32
41
 
33
- interface TRPCMutationOptionsOut<TInput, TError, TOutput, TContext>
34
- extends UseMutationOptions<TOutput, TError, TInput, TContext>,
42
+ interface TRPCMutationOptionsOut<
43
+ TInput,
44
+ TError,
45
+ TOutput,
46
+ TContext,
47
+ TFeatureFlags extends FeatureFlags,
48
+ > extends UseMutationOptions<TOutput, TError, TInput, TContext>,
35
49
  TRPCQueryOptionsResult {
36
- mutationKey: TRPCMutationKey;
50
+ mutationKey: TRPCMutationKey<TFeatureFlags['keyPrefix']>;
37
51
  }
38
52
 
39
- export interface TRPCMutationOptions<TDef extends ResolverDef> {
53
+ export interface TRPCMutationOptions<
54
+ TDef extends ResolverDef,
55
+ TFeatureFlags extends FeatureFlags = DefaultFeatureFlags,
56
+ > {
40
57
  <TContext = unknown>(
41
58
  opts?: TRPCMutationOptionsIn<
42
59
  TDef['input'],
43
60
  TRPCClientErrorLike<TDef>,
44
61
  TDef['output'],
45
- TContext
62
+ TContext,
63
+ TFeatureFlags
46
64
  >,
47
65
  ): TRPCMutationOptionsOut<
48
66
  TDef['input'],
49
67
  TRPCClientErrorLike<TDef>,
50
68
  TDef['output'],
51
- TContext
69
+ TContext,
70
+ TFeatureFlags
52
71
  >;
53
72
  }
54
73
 
@@ -69,34 +88,29 @@ export interface MutationOptionsOverride {
69
88
  }) => MaybePromise<void>;
70
89
  }
71
90
 
72
- type AnyTRPCMutationOptionsIn = TRPCMutationOptionsIn<
73
- unknown,
74
- unknown,
75
- unknown,
76
- unknown
77
- >;
91
+ type AnyTRPCMutationOptionsIn<TFeatureFlags extends FeatureFlags> =
92
+ TRPCMutationOptionsIn<unknown, unknown, unknown, unknown, TFeatureFlags>;
78
93
 
79
- type AnyTRPCMutationOptionsOut = TRPCMutationOptionsOut<
80
- unknown,
81
- unknown,
82
- unknown,
83
- unknown
84
- >;
94
+ type AnyTRPCMutationOptionsOut<TFeatureFlags extends FeatureFlags> =
95
+ TRPCMutationOptionsOut<unknown, unknown, unknown, unknown, TFeatureFlags>;
85
96
 
86
97
  /**
87
98
  * @internal
88
99
  */
89
- export function trpcMutationOptions(args: {
100
+ export function trpcMutationOptions<TFeatureFlags extends FeatureFlags>(args: {
90
101
  mutate: typeof TRPCUntypedClient.prototype.mutation;
91
102
  queryClient: QueryClient | (() => QueryClient);
92
- path: readonly string[];
93
- opts: AnyTRPCMutationOptionsIn;
103
+ path: string[];
104
+ opts: AnyTRPCMutationOptionsIn<TFeatureFlags>;
94
105
  overrides: MutationOptionsOverride | undefined;
95
- }): AnyTRPCMutationOptionsOut {
106
+ }): AnyTRPCMutationOptionsOut<TFeatureFlags> {
96
107
  const { mutate, path, opts, overrides } = args;
97
108
  const queryClient = unwrapLazyArg(args.queryClient);
98
109
 
99
- const mutationKey = getMutationKeyInternal(path);
110
+ const mutationKey = getMutationKeyInternal({
111
+ path,
112
+ prefix: opts.keyPrefix,
113
+ }) as TRPCMutationKey<TFeatureFlags['keyPrefix']>;
100
114
 
101
115
  const defaultOpts = queryClient.defaultMutationOptions(
102
116
  queryClient.getMutationDefaults(mutationKey),
@@ -106,14 +120,16 @@ export function trpcMutationOptions(args: {
106
120
  overrides?.onSuccess ?? ((options) => options.originalFn());
107
121
 
108
122
  const mutationFn: MutationFunction = async (input) => {
109
- const result = await mutate(...getClientArgs([path, { input }], opts));
123
+ const result = await mutate(
124
+ ...getClientArgs([...mutationKey, { input }] as any, opts),
125
+ );
110
126
 
111
127
  return result;
112
128
  };
113
129
 
114
130
  return {
115
131
  ...opts,
116
- mutationKey: mutationKey,
132
+ mutationKey,
117
133
  mutationFn,
118
134
  onSuccess(...args) {
119
135
  const originalFn = () =>
@@ -15,6 +15,8 @@ import type {
15
15
  } from '@trpc/server/unstable-core-do-not-import';
16
16
  import { isAsyncIterable } from '@trpc/server/unstable-core-do-not-import';
17
17
  import type {
18
+ DefaultFeatureFlags,
19
+ FeatureFlags,
18
20
  ResolverDef,
19
21
  TRPCQueryBaseOptions,
20
22
  TRPCQueryKey,
@@ -29,76 +31,115 @@ import {
29
31
 
30
32
  type ReservedOptions = 'queryKey' | 'queryFn' | 'queryHashFn' | 'queryHash';
31
33
 
32
- interface UndefinedTRPCQueryOptionsIn<TQueryFnData, TData, TError>
33
- extends DistributiveOmit<
34
+ interface UndefinedTRPCQueryOptionsIn<
35
+ TQueryFnData,
36
+ TData,
37
+ TError,
38
+ TFeatureFlags extends FeatureFlags,
39
+ > extends DistributiveOmit<
34
40
  UndefinedInitialDataOptions<
35
41
  coerceAsyncIterableToArray<TQueryFnData>,
36
42
  TError,
37
43
  coerceAsyncIterableToArray<TData>,
38
- TRPCQueryKey
44
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
39
45
  >,
40
46
  ReservedOptions
41
47
  >,
42
48
  TRPCQueryBaseOptions {}
43
49
 
44
- interface UndefinedTRPCQueryOptionsOut<TQueryFnData, TOutput, TError>
45
- extends UndefinedInitialDataOptions<
50
+ interface UndefinedTRPCQueryOptionsOut<
51
+ TQueryFnData,
52
+ TOutput,
53
+ TError,
54
+ TFeatureFlags extends FeatureFlags,
55
+ > extends UndefinedInitialDataOptions<
46
56
  coerceAsyncIterableToArray<TQueryFnData>,
47
57
  TError,
48
58
  coerceAsyncIterableToArray<TOutput>,
49
- TRPCQueryKey
59
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
50
60
  >,
51
61
  TRPCQueryOptionsResult {
52
- queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TOutput>, TError>;
62
+ queryKey: DataTag<
63
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
64
+ coerceAsyncIterableToArray<TOutput>,
65
+ TError
66
+ >;
53
67
  }
54
68
 
55
- interface DefinedTRPCQueryOptionsIn<TQueryFnData, TData, TError>
56
- extends DistributiveOmit<
69
+ interface DefinedTRPCQueryOptionsIn<
70
+ TQueryFnData,
71
+ TData,
72
+ TError,
73
+ TFeatureFlags extends FeatureFlags,
74
+ > extends DistributiveOmit<
57
75
  DefinedInitialDataOptions<
58
76
  coerceAsyncIterableToArray<NoInfer<TQueryFnData>>,
59
77
  TError,
60
78
  coerceAsyncIterableToArray<TData>,
61
- TRPCQueryKey
79
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
62
80
  >,
63
81
  ReservedOptions
64
82
  >,
65
83
  TRPCQueryBaseOptions {}
66
84
 
67
- interface DefinedTRPCQueryOptionsOut<TQueryFnData, TData, TError>
68
- extends DefinedInitialDataOptions<
85
+ interface DefinedTRPCQueryOptionsOut<
86
+ TQueryFnData,
87
+ TData,
88
+ TError,
89
+ TFeatureFlags extends FeatureFlags,
90
+ > extends DefinedInitialDataOptions<
69
91
  coerceAsyncIterableToArray<TQueryFnData>,
70
92
  TError,
71
93
  coerceAsyncIterableToArray<TData>,
72
- TRPCQueryKey
94
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
73
95
  >,
74
96
  TRPCQueryOptionsResult {
75
- queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TData>, TError>;
97
+ queryKey: DataTag<
98
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
99
+ coerceAsyncIterableToArray<TData>,
100
+ TError
101
+ >;
76
102
  }
77
103
 
78
- interface UnusedSkipTokenTRPCQueryOptionsIn<TQueryFnData, TData, TError>
79
- extends DistributiveOmit<
104
+ interface UnusedSkipTokenTRPCQueryOptionsIn<
105
+ TQueryFnData,
106
+ TData,
107
+ TError,
108
+ TFeatureFlags extends FeatureFlags,
109
+ > extends DistributiveOmit<
80
110
  UnusedSkipTokenOptions<
81
111
  coerceAsyncIterableToArray<TQueryFnData>,
82
112
  TError,
83
113
  coerceAsyncIterableToArray<TData>,
84
- TRPCQueryKey
114
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
85
115
  >,
86
116
  ReservedOptions
87
117
  >,
88
118
  TRPCQueryBaseOptions {}
89
119
 
90
- interface UnusedSkipTokenTRPCQueryOptionsOut<TQueryFnData, TOutput, TError>
91
- extends UnusedSkipTokenOptions<
120
+ interface UnusedSkipTokenTRPCQueryOptionsOut<
121
+ TQueryFnData,
122
+ TOutput,
123
+ TError,
124
+ TFeatureFlags extends FeatureFlags,
125
+ > extends UnusedSkipTokenOptions<
92
126
  coerceAsyncIterableToArray<TQueryFnData>,
93
127
  TError,
94
128
  coerceAsyncIterableToArray<TOutput>,
95
- TRPCQueryKey
129
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
96
130
  >,
97
131
  TRPCQueryOptionsResult {
98
- queryKey: DataTag<TRPCQueryKey, coerceAsyncIterableToArray<TOutput>, TError>;
132
+ queryKey: DataTag<
133
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>,
134
+ coerceAsyncIterableToArray<TOutput>,
135
+ TError
136
+ >;
99
137
  }
100
138
 
101
- export interface TRPCQueryOptions<TDef extends ResolverDef> {
139
+ export interface TRPCQueryOptions<
140
+ TDef extends ResolverDef,
141
+ TFeatureFlags extends FeatureFlags = DefaultFeatureFlags,
142
+ > {
102
143
  <TQueryFnData extends TDef['output'], TData = TQueryFnData>(
103
144
  input: TDef['input'] | SkipToken,
104
145
  opts: DefinedTRPCQueryOptionsIn<
@@ -107,7 +148,8 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
107
148
  TRPCClientErrorLike<{
108
149
  transformer: TDef['transformer'];
109
150
  errorShape: TDef['errorShape'];
110
- }>
151
+ }>,
152
+ TFeatureFlags
111
153
  >,
112
154
  ): DefinedTRPCQueryOptionsOut<
113
155
  TQueryFnData,
@@ -115,7 +157,8 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
115
157
  TRPCClientErrorLike<{
116
158
  transformer: TDef['transformer'];
117
159
  errorShape: TDef['errorShape'];
118
- }>
160
+ }>,
161
+ TFeatureFlags
119
162
  >;
120
163
  <TQueryFnData extends TDef['output'], TData = TQueryFnData>(
121
164
  input: TDef['input'],
@@ -125,7 +168,8 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
125
168
  TRPCClientErrorLike<{
126
169
  transformer: TDef['transformer'];
127
170
  errorShape: TDef['errorShape'];
128
- }>
171
+ }>,
172
+ TFeatureFlags
129
173
  >,
130
174
  ): UnusedSkipTokenTRPCQueryOptionsOut<
131
175
  TQueryFnData,
@@ -133,7 +177,8 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
133
177
  TRPCClientErrorLike<{
134
178
  transformer: TDef['transformer'];
135
179
  errorShape: TDef['errorShape'];
136
- }>
180
+ }>,
181
+ TFeatureFlags
137
182
  >;
138
183
  <TQueryFnData extends TDef['output'], TData = TQueryFnData>(
139
184
  input: TDef['input'] | SkipToken,
@@ -143,7 +188,8 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
143
188
  TRPCClientErrorLike<{
144
189
  transformer: TDef['transformer'];
145
190
  errorShape: TDef['errorShape'];
146
- }>
191
+ }>,
192
+ TFeatureFlags
147
193
  >,
148
194
  ): UndefinedTRPCQueryOptionsOut<
149
195
  TQueryFnData,
@@ -151,39 +197,43 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
151
197
  TRPCClientErrorLike<{
152
198
  transformer: TDef['transformer'];
153
199
  errorShape: TDef['errorShape'];
154
- }>
200
+ }>,
201
+ TFeatureFlags
155
202
  >;
156
203
  }
157
204
 
158
- type AnyTRPCQueryOptionsIn =
159
- | DefinedTRPCQueryOptionsIn<unknown, unknown, unknown>
160
- | UnusedSkipTokenTRPCQueryOptionsIn<unknown, unknown, unknown>
161
- | UndefinedTRPCQueryOptionsIn<unknown, unknown, unknown>;
205
+ type AnyTRPCQueryOptionsIn<TFeatureFlags extends FeatureFlags> =
206
+ | DefinedTRPCQueryOptionsIn<unknown, unknown, unknown, TFeatureFlags>
207
+ | UnusedSkipTokenTRPCQueryOptionsIn<unknown, unknown, unknown, TFeatureFlags>
208
+ | UndefinedTRPCQueryOptionsIn<unknown, unknown, unknown, TFeatureFlags>;
162
209
 
163
- type AnyTRPCQueryOptionsOut =
164
- | DefinedTRPCQueryOptionsOut<unknown, unknown, unknown>
165
- | UnusedSkipTokenTRPCQueryOptionsOut<unknown, unknown, unknown>
166
- | UndefinedTRPCQueryOptionsOut<unknown, unknown, unknown>;
210
+ type AnyTRPCQueryOptionsOut<
211
+ TFeatureFlags extends FeatureFlags = DefaultFeatureFlags,
212
+ > =
213
+ | DefinedTRPCQueryOptionsOut<unknown, unknown, unknown, TFeatureFlags>
214
+ | UnusedSkipTokenTRPCQueryOptionsOut<unknown, unknown, unknown, TFeatureFlags>
215
+ | UndefinedTRPCQueryOptionsOut<unknown, unknown, unknown, TFeatureFlags>;
167
216
 
168
217
  /**
169
218
  * @internal
170
219
  */
171
- export function trpcQueryOptions(args: {
220
+ export function trpcQueryOptions<TFeatureFlags extends FeatureFlags>(args: {
172
221
  input: unknown;
173
222
  query: typeof TRPCUntypedClient.prototype.query;
174
223
  queryClient: QueryClient | (() => QueryClient);
175
- path: readonly string[];
176
- queryKey: TRPCQueryKey;
177
- opts: AnyTRPCQueryOptionsIn;
178
- }): AnyTRPCQueryOptionsOut {
224
+ path: string[];
225
+ queryKey: TRPCQueryKey<TFeatureFlags['keyPrefix']>;
226
+ opts: AnyTRPCQueryOptionsIn<TFeatureFlags>;
227
+ }): AnyTRPCQueryOptionsOut<TFeatureFlags> {
179
228
  const { input, query, path, queryKey, opts } = args;
180
229
  const queryClient = unwrapLazyArg(args.queryClient);
181
230
 
182
231
  const inputIsSkipToken = input === skipToken;
183
232
 
184
- const queryFn: QueryFunction<unknown, TRPCQueryKey> = async (
185
- queryFnContext,
186
- ) => {
233
+ const queryFn: QueryFunction<
234
+ unknown,
235
+ TRPCQueryKey<TFeatureFlags['keyPrefix']>
236
+ > = async (queryFnContext) => {
187
237
  const actualOpts = {
188
238
  ...opts,
189
239
  trpc: {
@@ -207,7 +257,7 @@ export function trpcQueryOptions(args: {
207
257
  return Object.assign(
208
258
  queryOptions({
209
259
  ...opts,
210
- queryKey,
260
+ queryKey: queryKey,
211
261
  queryFn: inputIsSkipToken ? skipToken : queryFn,
212
262
  }),
213
263
  { trpc: createTRPCOptionsResult({ path }) },