@trpc/react-query 10.42.0 → 11.0.0-next.91
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 +208 -0
- package/dist/createHooksInternal-3d8ebfcf.mjs +481 -0
- package/dist/createHooksInternal-dce6e141.js +435 -0
- package/dist/createHooksInternal-e2034194.js +490 -0
- package/dist/createTRPCReact.d.ts +46 -45
- package/dist/createTRPCReact.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -21
- package/dist/index.mjs +9 -21
- package/dist/internals/context.d.ts +42 -54
- package/dist/internals/context.d.ts.map +1 -1
- package/dist/internals/getClientArgs.d.ts +2 -1
- package/dist/internals/getClientArgs.d.ts.map +1 -1
- package/dist/internals/getQueryKey.d.ts +28 -13
- package/dist/internals/getQueryKey.d.ts.map +1 -1
- package/dist/internals/useQueries.d.ts +4 -4
- package/dist/internals/useQueries.d.ts.map +1 -1
- package/dist/server/index.d.ts +0 -6
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +52 -69
- package/dist/server/index.mjs +52 -69
- package/dist/server/ssgProxy.d.ts +23 -13
- package/dist/server/ssgProxy.d.ts.map +1 -1
- package/dist/shared/hooks/createHooksInternal.d.ts +35 -12
- package/dist/shared/hooks/createHooksInternal.d.ts.map +1 -1
- package/dist/shared/hooks/createRootHooks.d.ts +0 -5
- package/dist/shared/hooks/createRootHooks.d.ts.map +1 -1
- package/dist/shared/hooks/types.d.ts +33 -18
- package/dist/shared/hooks/types.d.ts.map +1 -1
- package/dist/shared/index.js +9 -9
- package/dist/shared/index.mjs +3 -3
- package/dist/shared/polymorphism/mutationLike.d.ts +5 -5
- package/dist/shared/polymorphism/mutationLike.d.ts.map +1 -1
- package/dist/shared/polymorphism/queryLike.d.ts +5 -5
- package/dist/shared/polymorphism/queryLike.d.ts.map +1 -1
- package/dist/shared/polymorphism/routerLike.d.ts +4 -3
- package/dist/shared/polymorphism/routerLike.d.ts.map +1 -1
- package/dist/shared/proxy/decorationProxy.d.ts +2 -2
- package/dist/shared/proxy/decorationProxy.d.ts.map +1 -1
- package/dist/shared/proxy/useQueriesProxy.d.ts +6 -6
- package/dist/shared/proxy/useQueriesProxy.d.ts.map +1 -1
- package/dist/shared/proxy/utilsProxy.d.ts +34 -31
- package/dist/shared/proxy/utilsProxy.d.ts.map +1 -1
- package/dist/shared/types.d.ts +0 -12
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/utils/inferReactQueryProcedure.d.ts +7 -7
- package/dist/utils/inferReactQueryProcedure.d.ts.map +1 -1
- package/dist/utilsProxy-00894da2.mjs +121 -0
- package/dist/utilsProxy-27bd93c1.js +128 -0
- package/dist/utilsProxy-7e396600.js +114 -0
- package/package.json +8 -14
- package/src/createTRPCReact.tsx +156 -135
- package/src/index.ts +0 -1
- package/src/internals/context.tsx +93 -164
- package/src/internals/getClientArgs.ts +9 -4
- package/src/internals/getQueryKey.ts +53 -24
- package/src/internals/useQueries.ts +7 -10
- package/src/server/index.ts +0 -8
- package/src/server/ssgProxy.ts +179 -34
- package/src/shared/hooks/createHooksInternal.tsx +298 -207
- package/src/shared/hooks/createRootHooks.tsx +0 -6
- package/src/shared/hooks/types.ts +87 -36
- package/src/shared/polymorphism/mutationLike.ts +11 -8
- package/src/shared/polymorphism/queryLike.ts +17 -12
- package/src/shared/polymorphism/routerLike.ts +15 -9
- package/src/shared/proxy/decorationProxy.ts +9 -31
- package/src/shared/proxy/useQueriesProxy.ts +23 -37
- package/src/shared/proxy/utilsProxy.ts +121 -95
- package/src/shared/types.ts +0 -12
- package/src/utils/inferReactQueryProcedure.ts +28 -30
- package/dist/context-4557b3d3.js +0 -38
- package/dist/createHooksInternal-2e69c447.js +0 -582
- package/dist/createHooksInternal-37b068e0.js +0 -510
- package/dist/createHooksInternal-bdff7171.mjs +0 -568
- package/dist/getArrayQueryKey-4bdb5cc2.js +0 -36
- package/dist/getArrayQueryKey-86134f8b.mjs +0 -34
- package/dist/internals/getArrayQueryKey.d.ts +0 -25
- package/dist/internals/getArrayQueryKey.d.ts.map +0 -1
- package/dist/interop.d.ts +0 -11
- package/dist/interop.d.ts.map +0 -1
- package/dist/server/types.d.ts +0 -14
- package/dist/server/types.d.ts.map +0 -1
- package/dist/shared/hooks/deprecated/createHooksInternal.d.ts +0 -63
- package/dist/shared/hooks/deprecated/createHooksInternal.d.ts.map +0 -1
- package/dist/ssg/index.d.ts +0 -15
- package/dist/ssg/index.d.ts.map +0 -1
- package/dist/ssg/ssg.d.ts +0 -16
- package/dist/ssg/ssg.d.ts.map +0 -1
- package/src/internals/getArrayQueryKey.ts +0 -46
- package/src/interop.ts +0 -29
- package/src/server/types.ts +0 -29
- package/src/shared/hooks/deprecated/createHooksInternal.tsx +0 -641
- package/src/ssg/index.tsx +0 -16
- package/src/ssg/ssg.ts +0 -139
- package/ssg/index.d.ts +0 -1
- package/ssg/index.js +0 -1
package/src/server/ssgProxy.ts
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
import {
|
|
2
|
+
dehydrate,
|
|
2
3
|
DehydratedState,
|
|
3
4
|
DehydrateOptions,
|
|
4
5
|
InfiniteData,
|
|
5
6
|
QueryClient,
|
|
6
7
|
} from '@tanstack/react-query';
|
|
8
|
+
import {
|
|
9
|
+
getUntypedClient,
|
|
10
|
+
inferRouterClient,
|
|
11
|
+
TRPCClientError,
|
|
12
|
+
TRPCUntypedClient,
|
|
13
|
+
} from '@trpc/client';
|
|
7
14
|
import {
|
|
8
15
|
AnyProcedure,
|
|
9
16
|
AnyQueryProcedure,
|
|
17
|
+
AnyRootConfig,
|
|
10
18
|
AnyRouter,
|
|
19
|
+
callProcedure,
|
|
20
|
+
ClientDataTransformerOptions,
|
|
11
21
|
Filter,
|
|
12
|
-
|
|
22
|
+
inferProcedureInput,
|
|
23
|
+
inferRouterContext,
|
|
24
|
+
Maybe,
|
|
13
25
|
ProtectedIntersection,
|
|
14
26
|
} from '@trpc/server';
|
|
15
27
|
import {
|
|
@@ -17,49 +29,103 @@ import {
|
|
|
17
29
|
createRecursiveProxy,
|
|
18
30
|
inferTransformedProcedureOutput,
|
|
19
31
|
} from '@trpc/server/shared';
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
32
|
+
import { getQueryKeyInternal } from '../internals/getQueryKey';
|
|
33
|
+
import {
|
|
34
|
+
CreateTRPCReactQueryClientConfig,
|
|
35
|
+
ExtractCursorType,
|
|
36
|
+
getQueryClient,
|
|
37
|
+
getQueryType,
|
|
38
|
+
TRPCFetchInfiniteQueryOptions,
|
|
39
|
+
TRPCFetchQueryOptions,
|
|
40
|
+
} from '../shared';
|
|
22
41
|
|
|
23
|
-
|
|
42
|
+
interface CreateSSGHelpersInternal<TRouter extends AnyRouter> {
|
|
43
|
+
router: TRouter;
|
|
44
|
+
ctx: inferRouterContext<TRouter>;
|
|
45
|
+
transformer?: ClientDataTransformerOptions;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
interface CreateSSGHelpersExternal<TRouter extends AnyRouter> {
|
|
49
|
+
client: inferRouterClient<TRouter> | TRPCUntypedClient<TRouter>;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
type CreateServerSideHelpersOptions<TRouter extends AnyRouter> =
|
|
53
|
+
CreateTRPCReactQueryClientConfig &
|
|
54
|
+
(CreateSSGHelpersExternal<TRouter> | CreateSSGHelpersInternal<TRouter>);
|
|
55
|
+
|
|
56
|
+
type DecorateProcedure<
|
|
57
|
+
TConfig extends AnyRootConfig,
|
|
58
|
+
TProcedure extends AnyProcedure,
|
|
59
|
+
> = {
|
|
24
60
|
/**
|
|
25
|
-
* @link https://tanstack.com/query/
|
|
61
|
+
* @link https://tanstack.com/query/v5/docs/react/guides/prefetching
|
|
26
62
|
*/
|
|
27
63
|
fetch(
|
|
28
|
-
|
|
29
|
-
|
|
64
|
+
input: inferProcedureInput<TProcedure>,
|
|
65
|
+
opts?: TRPCFetchQueryOptions<
|
|
66
|
+
inferTransformedProcedureOutput<TConfig, TProcedure>,
|
|
67
|
+
TRPCClientError<TConfig>
|
|
68
|
+
>,
|
|
69
|
+
): Promise<inferTransformedProcedureOutput<TConfig, TProcedure>>;
|
|
30
70
|
|
|
31
71
|
/**
|
|
32
|
-
* @link https://tanstack.com/query/
|
|
72
|
+
* @link https://tanstack.com/query/v5/docs/react/guides/prefetching
|
|
33
73
|
*/
|
|
34
74
|
fetchInfinite(
|
|
35
|
-
|
|
36
|
-
|
|
75
|
+
input: inferProcedureInput<TProcedure>,
|
|
76
|
+
opts?: TRPCFetchInfiniteQueryOptions<
|
|
77
|
+
inferProcedureInput<TProcedure>,
|
|
78
|
+
inferTransformedProcedureOutput<TConfig, TProcedure>,
|
|
79
|
+
TRPCClientError<TConfig>
|
|
80
|
+
>,
|
|
81
|
+
): Promise<
|
|
82
|
+
InfiniteData<
|
|
83
|
+
inferTransformedProcedureOutput<TConfig, TProcedure>,
|
|
84
|
+
NonNullable<ExtractCursorType<inferProcedureInput<TProcedure>>> | null
|
|
85
|
+
>
|
|
86
|
+
>;
|
|
37
87
|
|
|
38
88
|
/**
|
|
39
|
-
* @link https://tanstack.com/query/
|
|
89
|
+
* @link https://tanstack.com/query/v5/docs/react/guides/prefetching
|
|
40
90
|
*/
|
|
41
|
-
prefetch(
|
|
91
|
+
prefetch(
|
|
92
|
+
input: inferProcedureInput<TProcedure>,
|
|
93
|
+
opts?: TRPCFetchQueryOptions<
|
|
94
|
+
inferTransformedProcedureOutput<TConfig, TProcedure>,
|
|
95
|
+
TRPCClientError<TConfig>
|
|
96
|
+
>,
|
|
97
|
+
): Promise<void>;
|
|
42
98
|
|
|
43
99
|
/**
|
|
44
|
-
* @link https://tanstack.com/query/
|
|
100
|
+
* @link https://tanstack.com/query/v5/docs/react/guides/prefetching
|
|
45
101
|
*/
|
|
46
|
-
prefetchInfinite(
|
|
102
|
+
prefetchInfinite(
|
|
103
|
+
input: inferProcedureInput<TProcedure>,
|
|
104
|
+
opts?: TRPCFetchInfiniteQueryOptions<
|
|
105
|
+
inferProcedureInput<TProcedure>,
|
|
106
|
+
inferTransformedProcedureOutput<TConfig, TProcedure>,
|
|
107
|
+
TRPCClientError<TConfig>
|
|
108
|
+
>,
|
|
109
|
+
): Promise<void>;
|
|
47
110
|
};
|
|
48
111
|
|
|
49
112
|
/**
|
|
50
113
|
* @internal
|
|
51
114
|
*/
|
|
52
|
-
|
|
115
|
+
type DecoratedProcedureSSGRecord<TRouter extends AnyRouter> = {
|
|
53
116
|
[TKey in keyof Filter<
|
|
54
117
|
TRouter['_def']['record'],
|
|
55
118
|
AnyQueryProcedure | AnyRouter
|
|
56
119
|
>]: TRouter['_def']['record'][TKey] extends AnyRouter
|
|
57
120
|
? DecoratedProcedureSSGRecord<TRouter['_def']['record'][TKey]>
|
|
58
121
|
: // utils only apply to queries
|
|
59
|
-
DecorateProcedure<
|
|
122
|
+
DecorateProcedure<
|
|
123
|
+
TRouter['_def']['_config'],
|
|
124
|
+
TRouter['_def']['record'][TKey]
|
|
125
|
+
>;
|
|
60
126
|
};
|
|
61
127
|
|
|
62
|
-
type AnyDecoratedProcedure = DecorateProcedure<any>;
|
|
128
|
+
type AnyDecoratedProcedure = DecorateProcedure<any, any>;
|
|
63
129
|
|
|
64
130
|
/**
|
|
65
131
|
* Create functions you can use for server-side rendering / static generation
|
|
@@ -68,9 +134,57 @@ type AnyDecoratedProcedure = DecorateProcedure<any>;
|
|
|
68
134
|
export function createServerSideHelpers<TRouter extends AnyRouter>(
|
|
69
135
|
opts: CreateServerSideHelpersOptions<TRouter>,
|
|
70
136
|
) {
|
|
71
|
-
const
|
|
137
|
+
const queryClient = getQueryClient(opts);
|
|
72
138
|
|
|
73
|
-
|
|
139
|
+
const resolvedOpts: {
|
|
140
|
+
serialize: (obj: unknown) => any;
|
|
141
|
+
query: (queryOpts: { path: string; input: unknown }) => Promise<unknown>;
|
|
142
|
+
} = (() => {
|
|
143
|
+
if ('router' in opts) {
|
|
144
|
+
const { transformer, ctx, router } = opts;
|
|
145
|
+
return {
|
|
146
|
+
serialize: transformer
|
|
147
|
+
? ('input' in transformer ? transformer.input : transformer).serialize
|
|
148
|
+
: (obj) => obj,
|
|
149
|
+
query: (queryOpts) => {
|
|
150
|
+
return callProcedure({
|
|
151
|
+
procedures: router._def.procedures,
|
|
152
|
+
path: queryOpts.path,
|
|
153
|
+
getRawInput: async () => queryOpts.input,
|
|
154
|
+
ctx,
|
|
155
|
+
type: 'query',
|
|
156
|
+
});
|
|
157
|
+
},
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
const { client } = opts;
|
|
162
|
+
const untypedClient =
|
|
163
|
+
client instanceof TRPCUntypedClient
|
|
164
|
+
? client
|
|
165
|
+
: getUntypedClient(client as any);
|
|
166
|
+
|
|
167
|
+
return {
|
|
168
|
+
query: (queryOpts) =>
|
|
169
|
+
untypedClient.query(queryOpts.path, queryOpts.input),
|
|
170
|
+
serialize: (obj) => untypedClient.runtime.transformer.serialize(obj),
|
|
171
|
+
};
|
|
172
|
+
})();
|
|
173
|
+
|
|
174
|
+
function _dehydrate(
|
|
175
|
+
opts: DehydrateOptions = {
|
|
176
|
+
shouldDehydrateQuery() {
|
|
177
|
+
// makes sure to serialize errors
|
|
178
|
+
return true;
|
|
179
|
+
},
|
|
180
|
+
},
|
|
181
|
+
): DehydratedState {
|
|
182
|
+
const before = dehydrate(queryClient, opts);
|
|
183
|
+
const after = resolvedOpts.serialize(before);
|
|
184
|
+
return after;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
type CreateSSGHelpers = ProtectedIntersection<
|
|
74
188
|
{
|
|
75
189
|
queryClient: QueryClient;
|
|
76
190
|
dehydrate: (opts?: DehydrateOptions) => DehydratedState;
|
|
@@ -78,28 +192,59 @@ export function createServerSideHelpers<TRouter extends AnyRouter>(
|
|
|
78
192
|
DecoratedProcedureSSGRecord<TRouter>
|
|
79
193
|
>;
|
|
80
194
|
|
|
81
|
-
return createFlatProxy<
|
|
82
|
-
if (key === 'queryClient')
|
|
83
|
-
|
|
84
|
-
}
|
|
195
|
+
return createFlatProxy<CreateSSGHelpers>((key) => {
|
|
196
|
+
if (key === 'queryClient') return queryClient;
|
|
197
|
+
if (key === 'dehydrate') return _dehydrate;
|
|
85
198
|
|
|
86
|
-
if (key === 'dehydrate') {
|
|
87
|
-
return helpers.dehydrate;
|
|
88
|
-
}
|
|
89
199
|
return createRecursiveProxy((opts) => {
|
|
90
200
|
const args = opts.args;
|
|
201
|
+
const input = args[0];
|
|
202
|
+
const arrayPath = [key, ...opts.path];
|
|
203
|
+
const utilName = arrayPath.pop() as keyof AnyDecoratedProcedure;
|
|
91
204
|
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
const utilName = pathCopy.pop() as keyof AnyDecoratedProcedure;
|
|
205
|
+
const queryFn = () =>
|
|
206
|
+
resolvedOpts.query({ path: arrayPath.join('.'), input });
|
|
95
207
|
|
|
96
|
-
const
|
|
208
|
+
const queryKey = getQueryKeyInternal(
|
|
209
|
+
arrayPath,
|
|
210
|
+
input,
|
|
211
|
+
getQueryType(utilName),
|
|
212
|
+
);
|
|
97
213
|
|
|
98
|
-
const
|
|
99
|
-
|
|
214
|
+
const helperMap: Record<keyof AnyDecoratedProcedure, () => unknown> = {
|
|
215
|
+
fetch: () => {
|
|
216
|
+
const args1 = args[1] as Maybe<TRPCFetchQueryOptions<any, any>>;
|
|
217
|
+
return queryClient.fetchQuery({ ...args1, queryKey, queryFn });
|
|
218
|
+
},
|
|
219
|
+
fetchInfinite: () => {
|
|
220
|
+
const args1 = args[1] as Maybe<
|
|
221
|
+
TRPCFetchInfiniteQueryOptions<any, any, any>
|
|
222
|
+
>;
|
|
223
|
+
return queryClient.fetchInfiniteQuery({
|
|
224
|
+
...args1,
|
|
225
|
+
queryKey,
|
|
226
|
+
queryFn,
|
|
227
|
+
initialPageParam: args1?.initialCursor ?? null,
|
|
228
|
+
});
|
|
229
|
+
},
|
|
230
|
+
prefetch: () => {
|
|
231
|
+
const args1 = args[1] as Maybe<TRPCFetchQueryOptions<any, any>>;
|
|
232
|
+
return queryClient.prefetchQuery({ ...args1, queryKey, queryFn });
|
|
233
|
+
},
|
|
234
|
+
prefetchInfinite: () => {
|
|
235
|
+
const args1 = args[1] as Maybe<
|
|
236
|
+
TRPCFetchInfiniteQueryOptions<any, any, any>
|
|
237
|
+
>;
|
|
238
|
+
return queryClient.prefetchInfiniteQuery({
|
|
239
|
+
...args1,
|
|
240
|
+
queryKey,
|
|
241
|
+
queryFn,
|
|
242
|
+
initialPageParam: args1?.initialCursor ?? null,
|
|
243
|
+
});
|
|
244
|
+
},
|
|
245
|
+
};
|
|
100
246
|
|
|
101
|
-
|
|
102
|
-
return fn(fullPath, ...args);
|
|
247
|
+
return helperMap[utilName]();
|
|
103
248
|
});
|
|
104
249
|
});
|
|
105
250
|
}
|