@trpc/tanstack-react-query 11.0.0-rc.768 → 11.0.0-rc.781
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.
- package/dist/bundle-analysis.json +31 -31
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/internals/Context.d.ts +13 -7
- package/dist/internals/Context.d.ts.map +1 -1
- package/dist/internals/Context.js +5 -1
- package/dist/internals/Context.mjs +5 -1
- package/dist/internals/createOptionsProxy.d.ts +37 -15
- package/dist/internals/createOptionsProxy.d.ts.map +1 -1
- package/dist/internals/createOptionsProxy.js +9 -4
- package/dist/internals/createOptionsProxy.mjs +9 -4
- package/dist/internals/infiniteQueryOptions.d.ts +5 -15
- package/dist/internals/infiniteQueryOptions.d.ts.map +1 -1
- package/dist/internals/mutationOptions.d.ts +8 -3
- package/dist/internals/mutationOptions.d.ts.map +1 -1
- package/dist/internals/mutationOptions.js +3 -1
- package/dist/internals/mutationOptions.mjs +3 -1
- package/dist/internals/queryOptions.d.ts +8 -15
- package/dist/internals/queryOptions.d.ts.map +1 -1
- package/dist/internals/queryOptions.js +3 -1
- package/dist/internals/queryOptions.mjs +3 -1
- package/dist/internals/subscriptionOptions.d.ts +12 -16
- package/dist/internals/subscriptionOptions.d.ts.map +1 -1
- package/dist/internals/subscriptionOptions.js +7 -3
- package/dist/internals/subscriptionOptions.mjs +7 -3
- package/dist/internals/types.d.ts +24 -0
- package/dist/internals/types.d.ts.map +1 -1
- package/dist/internals/utils.d.ts +10 -2
- package/dist/internals/utils.d.ts.map +1 -1
- package/dist/internals/utils.js +9 -3
- package/dist/internals/utils.mjs +9 -3
- package/package.json +8 -8
- package/src/index.ts +1 -0
- package/src/internals/Context.tsx +20 -7
- package/src/internals/createOptionsProxy.ts +55 -39
- package/src/internals/infiniteQueryOptions.ts +25 -8
- package/src/internals/mutationOptions.ts +23 -6
- package/src/internals/queryOptions.ts +17 -3
- package/src/internals/subscriptionOptions.ts +24 -8
- package/src/internals/types.ts +24 -0
- package/src/internals/utils.ts +11 -2
|
@@ -2,16 +2,13 @@ import type {
|
|
|
2
2
|
DataTag,
|
|
3
3
|
DefinedInitialDataInfiniteOptions,
|
|
4
4
|
InfiniteData,
|
|
5
|
+
QueryClient,
|
|
5
6
|
QueryFunction,
|
|
7
|
+
SkipToken,
|
|
6
8
|
UndefinedInitialDataInfiniteOptions,
|
|
7
9
|
UnusedSkipTokenInfiniteOptions,
|
|
8
10
|
} from '@tanstack/react-query';
|
|
9
|
-
import {
|
|
10
|
-
infiniteQueryOptions,
|
|
11
|
-
skipToken,
|
|
12
|
-
type QueryClient,
|
|
13
|
-
type SkipToken,
|
|
14
|
-
} from '@tanstack/react-query';
|
|
11
|
+
import { infiniteQueryOptions, skipToken } from '@tanstack/react-query';
|
|
15
12
|
import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
|
|
16
13
|
import type { DistributiveOmit } from '@trpc/server/unstable-core-do-not-import';
|
|
17
14
|
import type {
|
|
@@ -188,13 +185,33 @@ export interface TRPCInfiniteQueryOptions<TDef extends ResolverDef> {
|
|
|
188
185
|
>;
|
|
189
186
|
}
|
|
190
187
|
|
|
188
|
+
type AnyTRPCInfiniteQueryOptionsIn =
|
|
189
|
+
| DefinedTRPCInfiniteQueryOptionsIn<unknown, unknown, unknown, unknown>
|
|
190
|
+
| UnusedSkipTokenTRPCInfiniteQueryOptionsIn<
|
|
191
|
+
unknown,
|
|
192
|
+
unknown,
|
|
193
|
+
unknown,
|
|
194
|
+
unknown
|
|
195
|
+
>
|
|
196
|
+
| UndefinedTRPCInfiniteQueryOptionsIn<unknown, unknown, unknown, unknown>;
|
|
197
|
+
|
|
198
|
+
type AnyTRPCInfiniteQueryOptionsOut =
|
|
199
|
+
| DefinedTRPCInfiniteQueryOptionsOut<unknown, unknown, unknown, unknown>
|
|
200
|
+
| UnusedSkipTokenTRPCInfiniteQueryOptionsOut<
|
|
201
|
+
unknown,
|
|
202
|
+
unknown,
|
|
203
|
+
unknown,
|
|
204
|
+
unknown
|
|
205
|
+
>
|
|
206
|
+
| UndefinedTRPCInfiniteQueryOptionsOut<unknown, unknown, unknown, unknown>;
|
|
207
|
+
|
|
191
208
|
export function trpcInfiniteQueryOptions(args: {
|
|
192
209
|
query: typeof TRPCUntypedClient.prototype.query;
|
|
193
210
|
queryClient: QueryClient | (() => QueryClient);
|
|
194
211
|
path: readonly string[];
|
|
195
212
|
queryKey: TRPCQueryKey;
|
|
196
|
-
opts:
|
|
197
|
-
}) {
|
|
213
|
+
opts: AnyTRPCInfiniteQueryOptionsIn;
|
|
214
|
+
}): AnyTRPCInfiniteQueryOptionsOut {
|
|
198
215
|
const { query, path, queryKey, opts } = args;
|
|
199
216
|
const inputIsSkipToken = queryKey[1]?.input === skipToken;
|
|
200
217
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type {
|
|
2
|
+
MutationFunction,
|
|
3
|
+
QueryClient,
|
|
4
|
+
UseMutationOptions,
|
|
5
5
|
} from '@tanstack/react-query';
|
|
6
6
|
import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
|
|
7
7
|
import type {
|
|
@@ -69,13 +69,30 @@ export interface MutationOptionsOverride {
|
|
|
69
69
|
}) => MaybePromise<unknown>;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
type AnyTRPCMutationOptionsIn = TRPCMutationOptionsIn<
|
|
73
|
+
unknown,
|
|
74
|
+
unknown,
|
|
75
|
+
unknown,
|
|
76
|
+
unknown
|
|
77
|
+
>;
|
|
78
|
+
|
|
79
|
+
type AnyTRPCMutationOptionsOut = TRPCMutationOptionsOut<
|
|
80
|
+
unknown,
|
|
81
|
+
unknown,
|
|
82
|
+
unknown,
|
|
83
|
+
unknown
|
|
84
|
+
>;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
72
89
|
export function trpcMutationOptions(args: {
|
|
73
90
|
mutate: typeof TRPCUntypedClient.prototype.mutation;
|
|
74
91
|
queryClient: QueryClient | (() => QueryClient);
|
|
75
92
|
path: readonly string[];
|
|
76
|
-
opts:
|
|
93
|
+
opts: AnyTRPCMutationOptionsIn;
|
|
77
94
|
overrides: MutationOptionsOverride | undefined;
|
|
78
|
-
}):
|
|
95
|
+
}): AnyTRPCMutationOptionsOut {
|
|
79
96
|
const { mutate, path, opts, overrides } = args;
|
|
80
97
|
const queryClient = unwrapLazyArg(args.queryClient);
|
|
81
98
|
|
|
@@ -3,10 +3,11 @@ import type {
|
|
|
3
3
|
DefinedInitialDataOptions,
|
|
4
4
|
QueryClient,
|
|
5
5
|
QueryFunction,
|
|
6
|
+
SkipToken,
|
|
6
7
|
UndefinedInitialDataOptions,
|
|
7
8
|
UnusedSkipTokenOptions,
|
|
8
9
|
} from '@tanstack/react-query';
|
|
9
|
-
import { queryOptions, skipToken
|
|
10
|
+
import { queryOptions, skipToken } from '@tanstack/react-query';
|
|
10
11
|
import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
|
|
11
12
|
import type {
|
|
12
13
|
coerceAsyncIterableToArray,
|
|
@@ -154,13 +155,26 @@ export interface TRPCQueryOptions<TDef extends ResolverDef> {
|
|
|
154
155
|
>;
|
|
155
156
|
}
|
|
156
157
|
|
|
158
|
+
type AnyTRPCQueryOptionsIn =
|
|
159
|
+
| DefinedTRPCQueryOptionsIn<unknown, unknown, unknown>
|
|
160
|
+
| UnusedSkipTokenTRPCQueryOptionsIn<unknown, unknown, unknown>
|
|
161
|
+
| UndefinedTRPCQueryOptionsIn<unknown, unknown, unknown>;
|
|
162
|
+
|
|
163
|
+
type AnyTRPCQueryOptionsOut =
|
|
164
|
+
| DefinedTRPCQueryOptionsOut<unknown, unknown, unknown>
|
|
165
|
+
| UnusedSkipTokenTRPCQueryOptionsOut<unknown, unknown, unknown>
|
|
166
|
+
| UndefinedTRPCQueryOptionsOut<unknown, unknown, unknown>;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @internal
|
|
170
|
+
*/
|
|
157
171
|
export function trpcQueryOptions(args: {
|
|
158
172
|
query: typeof TRPCUntypedClient.prototype.query;
|
|
159
173
|
queryClient: QueryClient | (() => QueryClient);
|
|
160
174
|
path: readonly string[];
|
|
161
175
|
queryKey: TRPCQueryKey;
|
|
162
|
-
opts:
|
|
163
|
-
}) {
|
|
176
|
+
opts: AnyTRPCQueryOptionsIn;
|
|
177
|
+
}): AnyTRPCQueryOptionsOut {
|
|
164
178
|
const { query, path, queryKey, opts } = args;
|
|
165
179
|
const queryClient = unwrapLazyArg(args.queryClient);
|
|
166
180
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SkipToken } from '@tanstack/react-query';
|
|
2
|
+
import { hashKey, skipToken } from '@tanstack/react-query';
|
|
2
3
|
import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
|
|
3
4
|
import type { TRPCConnectionState } from '@trpc/client/unstable-internals';
|
|
4
5
|
import type { Unsubscribable } from '@trpc/server/observable';
|
|
@@ -14,15 +15,16 @@ import { createTRPCOptionsResult } from './utils';
|
|
|
14
15
|
interface BaseTRPCSubscriptionOptionsIn<TOutput, TError> {
|
|
15
16
|
enabled?: boolean;
|
|
16
17
|
onStarted?: () => void;
|
|
17
|
-
onData
|
|
18
|
+
onData?: (data: inferAsyncIterableYield<TOutput>) => void;
|
|
18
19
|
onError?: (err: TError) => void;
|
|
20
|
+
onConnectionStateChange?: (state: TRPCConnectionState<TError>) => void;
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
interface UnusedSkipTokenTRPCSubscriptionOptionsIn<TOutput, TError> {
|
|
22
24
|
onStarted?: () => void;
|
|
23
|
-
onData
|
|
25
|
+
onData?: (data: inferAsyncIterableYield<TOutput>) => void;
|
|
24
26
|
onError?: (err: TError) => void;
|
|
25
|
-
onConnectionStateChange
|
|
27
|
+
onConnectionStateChange?: (state: TRPCConnectionState<TError>) => void;
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
interface TRPCSubscriptionOptionsOut<TOutput, TError>
|
|
@@ -107,15 +109,27 @@ export type TRPCSubscriptionResult<TOutput, TError> =
|
|
|
107
109
|
| TRPCSubscriptionErrorResult<TOutput, TError>
|
|
108
110
|
| TRPCSubscriptionPendingResult<TOutput>;
|
|
109
111
|
|
|
112
|
+
type AnyTRPCSubscriptionOptionsIn =
|
|
113
|
+
| BaseTRPCSubscriptionOptionsIn<unknown, unknown>
|
|
114
|
+
| UnusedSkipTokenTRPCSubscriptionOptionsIn<unknown, unknown>;
|
|
115
|
+
|
|
116
|
+
type AnyTRPCSubscriptionOptionsOut = TRPCSubscriptionOptionsOut<
|
|
117
|
+
unknown,
|
|
118
|
+
unknown
|
|
119
|
+
>;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
110
124
|
export const trpcSubscriptionOptions = (args: {
|
|
111
125
|
subscribe: typeof TRPCUntypedClient.prototype.subscription;
|
|
112
126
|
path: readonly string[];
|
|
113
127
|
queryKey: TRPCQueryKey;
|
|
114
|
-
opts:
|
|
115
|
-
}) => {
|
|
128
|
+
opts: AnyTRPCSubscriptionOptionsIn;
|
|
129
|
+
}): AnyTRPCSubscriptionOptionsOut => {
|
|
116
130
|
const { subscribe, path, queryKey, opts } = args;
|
|
117
131
|
const input = queryKey[1]?.input;
|
|
118
|
-
const enabled = opts
|
|
132
|
+
const enabled = 'enabled' in opts ? !!opts.enabled : input !== skipToken;
|
|
119
133
|
|
|
120
134
|
const _subscribe: ReturnType<TRPCSubscriptionOptions<any>>['subscribe'] = (
|
|
121
135
|
innerOpts,
|
|
@@ -147,7 +161,9 @@ export function useSubscription<TOutput, TError>(
|
|
|
147
161
|
}, []);
|
|
148
162
|
|
|
149
163
|
type Unsubscribe = () => void;
|
|
150
|
-
const currentSubscriptionRef = React.useRef<Unsubscribe>()
|
|
164
|
+
const currentSubscriptionRef = React.useRef<Unsubscribe>(() => {
|
|
165
|
+
// noop
|
|
166
|
+
});
|
|
151
167
|
|
|
152
168
|
const reset = React.useCallback((): void => {
|
|
153
169
|
// unsubscribe from the previous subscription
|
package/src/internals/types.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { TRPCRequestOptions } from '@trpc/client';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
3
6
|
export type ResolverDef = {
|
|
4
7
|
input: any;
|
|
5
8
|
output: any;
|
|
@@ -7,10 +10,16 @@ export type ResolverDef = {
|
|
|
7
10
|
errorShape: any;
|
|
8
11
|
};
|
|
9
12
|
|
|
13
|
+
/**
|
|
14
|
+
* @internal
|
|
15
|
+
*/
|
|
10
16
|
export type ExtractCursorType<TInput> = TInput extends { cursor?: any }
|
|
11
17
|
? TInput['cursor']
|
|
12
18
|
: unknown;
|
|
13
19
|
|
|
20
|
+
/**
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
14
23
|
export interface TRPCReactRequestOptions
|
|
15
24
|
// For RQ, we use their internal AbortSignals instead of letting the user pass their own
|
|
16
25
|
extends Omit<TRPCRequestOptions, 'signal'> {
|
|
@@ -24,6 +33,9 @@ export interface TRPCReactRequestOptions
|
|
|
24
33
|
abortOnUnmount?: boolean;
|
|
25
34
|
}
|
|
26
35
|
|
|
36
|
+
/**
|
|
37
|
+
* @public
|
|
38
|
+
*/
|
|
27
39
|
export interface TRPCQueryBaseOptions {
|
|
28
40
|
/**
|
|
29
41
|
* tRPC-related options
|
|
@@ -31,17 +43,29 @@ export interface TRPCQueryBaseOptions {
|
|
|
31
43
|
trpc?: TRPCReactRequestOptions;
|
|
32
44
|
}
|
|
33
45
|
|
|
46
|
+
/**
|
|
47
|
+
* @public
|
|
48
|
+
*/
|
|
34
49
|
export interface TRPCQueryOptionsResult {
|
|
35
50
|
trpc: {
|
|
36
51
|
path: string;
|
|
37
52
|
};
|
|
38
53
|
}
|
|
39
54
|
|
|
55
|
+
/**
|
|
56
|
+
* @public
|
|
57
|
+
*/
|
|
40
58
|
export type QueryType = 'any' | 'infinite' | 'query';
|
|
41
59
|
|
|
60
|
+
/**
|
|
61
|
+
* @public
|
|
62
|
+
*/
|
|
42
63
|
export type TRPCQueryKey = [
|
|
43
64
|
readonly string[],
|
|
44
65
|
{ input?: unknown; type?: Exclude<QueryType, 'any'> }?,
|
|
45
66
|
];
|
|
46
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
47
71
|
export type TRPCMutationKey = [readonly string[]]; // = [TRPCQueryKey[0]]
|
package/src/internals/utils.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { QueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { skipToken } from '@tanstack/react-query';
|
|
2
3
|
import { isFunction, isObject } from '@trpc/server/unstable-core-do-not-import';
|
|
3
4
|
import type {
|
|
4
5
|
QueryType,
|
|
@@ -77,7 +78,9 @@ export async function buildQueryFromAsyncIterable(
|
|
|
77
78
|
* To allow easy interactions with groups of related queries, such as
|
|
78
79
|
* invalidating all queries of a router, we use an array as the path when
|
|
79
80
|
* storing in tanstack query.
|
|
80
|
-
|
|
81
|
+
*
|
|
82
|
+
* @internal
|
|
83
|
+
*/
|
|
81
84
|
export function getQueryKeyInternal(
|
|
82
85
|
path: readonly string[],
|
|
83
86
|
input: unknown,
|
|
@@ -126,6 +129,9 @@ export function getQueryKeyInternal(
|
|
|
126
129
|
];
|
|
127
130
|
}
|
|
128
131
|
|
|
132
|
+
/**
|
|
133
|
+
* @internal
|
|
134
|
+
*/
|
|
129
135
|
export function getMutationKeyInternal(
|
|
130
136
|
path: readonly string[],
|
|
131
137
|
): TRPCMutationKey {
|
|
@@ -135,6 +141,9 @@ export function getMutationKeyInternal(
|
|
|
135
141
|
return splitPath.length ? [splitPath] : ([] as unknown as TRPCMutationKey);
|
|
136
142
|
}
|
|
137
143
|
|
|
144
|
+
/**
|
|
145
|
+
* @internal
|
|
146
|
+
*/
|
|
138
147
|
export function unwrapLazyArg<T>(valueOrLazy: T | (() => T)): T {
|
|
139
148
|
return (isFunction(valueOrLazy) ? valueOrLazy() : valueOrLazy) as T;
|
|
140
149
|
}
|