@trpc/react-query 11.3.1 → 11.3.2-canary.4

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.
Files changed (129) hide show
  1. package/dist/getQueryKey-CP8onRYT.cjs +104 -0
  2. package/dist/getQueryKey-Dekty44G.mjs +53 -0
  3. package/dist/getQueryKey-Dekty44G.mjs.map +1 -0
  4. package/dist/getQueryKey.d-C_PnqPni.d.cts +892 -0
  5. package/dist/getQueryKey.d-C_PnqPni.d.cts.map +1 -0
  6. package/dist/getQueryKey.d-CruH3ncI.d.mts +892 -0
  7. package/dist/getQueryKey.d-CruH3ncI.d.mts.map +1 -0
  8. package/dist/index.cjs +47 -0
  9. package/dist/index.d.cts +31 -0
  10. package/dist/index.d.cts.map +1 -0
  11. package/dist/index.d.mts +31 -0
  12. package/dist/index.d.mts.map +1 -0
  13. package/dist/index.mjs +40 -4
  14. package/dist/index.mjs.map +1 -0
  15. package/dist/rsc.cjs +69 -0
  16. package/dist/rsc.d.cts +80 -0
  17. package/dist/rsc.d.cts.map +1 -0
  18. package/dist/rsc.d.mts +80 -0
  19. package/dist/rsc.d.mts.map +1 -0
  20. package/dist/rsc.mjs +65 -104
  21. package/dist/rsc.mjs.map +1 -0
  22. package/dist/server/index.cjs +132 -0
  23. package/dist/server/index.d.cts +31 -0
  24. package/dist/server/index.d.cts.map +1 -0
  25. package/dist/server/index.d.mts +31 -0
  26. package/dist/server/index.d.mts.map +1 -0
  27. package/dist/server/index.mjs +133 -1
  28. package/dist/server/index.mjs.map +1 -0
  29. package/dist/shared/index.cjs +13 -0
  30. package/dist/shared/index.d.cts +2 -0
  31. package/dist/shared/index.d.mts +2 -0
  32. package/dist/shared/index.mjs +4 -7
  33. package/dist/shared-CMPBsqju.mjs +784 -0
  34. package/dist/shared-CMPBsqju.mjs.map +1 -0
  35. package/dist/shared-Doe-Gsbv.cjs +846 -0
  36. package/package.json +45 -26
  37. package/rsc/package.json +1 -0
  38. package/server/package.json +1 -0
  39. package/shared/package.json +1 -0
  40. package/dist/createTRPCQueryUtils.d.ts +0 -4
  41. package/dist/createTRPCQueryUtils.d.ts.map +0 -1
  42. package/dist/createTRPCQueryUtils.js +0 -16
  43. package/dist/createTRPCQueryUtils.mjs +0 -14
  44. package/dist/createTRPCReact.d.ts +0 -147
  45. package/dist/createTRPCReact.d.ts.map +0 -1
  46. package/dist/createTRPCReact.js +0 -60
  47. package/dist/createTRPCReact.mjs +0 -38
  48. package/dist/index.d.ts +0 -6
  49. package/dist/index.d.ts.map +0 -1
  50. package/dist/index.js +0 -19
  51. package/dist/internals/context.d.ts +0 -157
  52. package/dist/internals/context.d.ts.map +0 -1
  53. package/dist/internals/context.js +0 -33
  54. package/dist/internals/context.mjs +0 -11
  55. package/dist/internals/getClientArgs.d.ts +0 -9
  56. package/dist/internals/getClientArgs.d.ts.map +0 -1
  57. package/dist/internals/getClientArgs.js +0 -24
  58. package/dist/internals/getClientArgs.mjs +0 -22
  59. package/dist/internals/getQueryKey.d.ts +0 -49
  60. package/dist/internals/getQueryKey.d.ts.map +0 -1
  61. package/dist/internals/getQueryKey.js +0 -75
  62. package/dist/internals/getQueryKey.mjs +0 -70
  63. package/dist/internals/trpcResult.d.ts +0 -18
  64. package/dist/internals/trpcResult.d.ts.map +0 -1
  65. package/dist/internals/trpcResult.js +0 -63
  66. package/dist/internals/trpcResult.mjs +0 -40
  67. package/dist/internals/useQueries.d.ts +0 -58
  68. package/dist/internals/useQueries.d.ts.map +0 -1
  69. package/dist/rsc.d.ts +0 -80
  70. package/dist/rsc.d.ts.map +0 -1
  71. package/dist/rsc.js +0 -130
  72. package/dist/server/index.d.ts +0 -2
  73. package/dist/server/index.d.ts.map +0 -1
  74. package/dist/server/index.js +0 -7
  75. package/dist/server/ssgProxy.d.ts +0 -31
  76. package/dist/server/ssgProxy.d.ts.map +0 -1
  77. package/dist/server/ssgProxy.js +0 -141
  78. package/dist/server/ssgProxy.mjs +0 -139
  79. package/dist/shared/hooks/createHooksInternal.d.ts +0 -31
  80. package/dist/shared/hooks/createHooksInternal.d.ts.map +0 -1
  81. package/dist/shared/hooks/createHooksInternal.js +0 -543
  82. package/dist/shared/hooks/createHooksInternal.mjs +0 -522
  83. package/dist/shared/hooks/createRootHooks.d.ts +0 -2
  84. package/dist/shared/hooks/createRootHooks.d.ts.map +0 -1
  85. package/dist/shared/hooks/types.d.ts +0 -157
  86. package/dist/shared/hooks/types.d.ts.map +0 -1
  87. package/dist/shared/index.d.ts +0 -22
  88. package/dist/shared/index.d.ts.map +0 -1
  89. package/dist/shared/index.js +0 -22
  90. package/dist/shared/polymorphism/index.d.ts +0 -5
  91. package/dist/shared/polymorphism/index.d.ts.map +0 -1
  92. package/dist/shared/polymorphism/mutationLike.d.ts +0 -17
  93. package/dist/shared/polymorphism/mutationLike.d.ts.map +0 -1
  94. package/dist/shared/polymorphism/queryLike.d.ts +0 -21
  95. package/dist/shared/polymorphism/queryLike.d.ts.map +0 -1
  96. package/dist/shared/polymorphism/routerLike.d.ts +0 -11
  97. package/dist/shared/polymorphism/routerLike.d.ts.map +0 -1
  98. package/dist/shared/polymorphism/utilsLike.d.ts +0 -7
  99. package/dist/shared/polymorphism/utilsLike.d.ts.map +0 -1
  100. package/dist/shared/proxy/decorationProxy.d.ts +0 -8
  101. package/dist/shared/proxy/decorationProxy.d.ts.map +0 -1
  102. package/dist/shared/proxy/decorationProxy.js +0 -30
  103. package/dist/shared/proxy/decorationProxy.mjs +0 -28
  104. package/dist/shared/proxy/useQueriesProxy.d.ts +0 -25
  105. package/dist/shared/proxy/useQueriesProxy.d.ts.map +0 -1
  106. package/dist/shared/proxy/useQueriesProxy.js +0 -27
  107. package/dist/shared/proxy/useQueriesProxy.mjs +0 -25
  108. package/dist/shared/proxy/utilsProxy.d.ts +0 -141
  109. package/dist/shared/proxy/utilsProxy.d.ts.map +0 -1
  110. package/dist/shared/proxy/utilsProxy.js +0 -106
  111. package/dist/shared/proxy/utilsProxy.mjs +0 -102
  112. package/dist/shared/queryClient.d.ts +0 -17
  113. package/dist/shared/queryClient.d.ts.map +0 -1
  114. package/dist/shared/queryClient.js +0 -9
  115. package/dist/shared/queryClient.mjs +0 -7
  116. package/dist/shared/types.d.ts +0 -98
  117. package/dist/shared/types.d.ts.map +0 -1
  118. package/dist/utils/createUtilityFunctions.d.ts +0 -23
  119. package/dist/utils/createUtilityFunctions.d.ts.map +0 -1
  120. package/dist/utils/createUtilityFunctions.js +0 -196
  121. package/dist/utils/createUtilityFunctions.mjs +0 -194
  122. package/dist/utils/inferReactQueryProcedure.d.ts +0 -25
  123. package/dist/utils/inferReactQueryProcedure.d.ts.map +0 -1
  124. package/rsc/index.d.ts +0 -1
  125. package/rsc/index.js +0 -1
  126. package/server/index.d.ts +0 -1
  127. package/server/index.js +0 -1
  128. package/shared/index.d.ts +0 -1
  129. package/shared/index.js +0 -1
@@ -1,543 +0,0 @@
1
- 'use strict';
2
-
3
- var reactQuery = require('@tanstack/react-query');
4
- var client = require('@trpc/client');
5
- var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
6
- var React = require('react');
7
- var context = require('../../internals/context.js');
8
- var getClientArgs = require('../../internals/getClientArgs.js');
9
- var getQueryKey = require('../../internals/getQueryKey.js');
10
- var trpcResult = require('../../internals/trpcResult.js');
11
- var createUtilityFunctions = require('../../utils/createUtilityFunctions.js');
12
- var useQueriesProxy = require('../proxy/useQueriesProxy.js');
13
-
14
- function _interopNamespaceDefault(e) {
15
- var n = Object.create(null);
16
- if (e) {
17
- Object.keys(e).forEach(function (k) {
18
- if (k !== 'default') {
19
- var d = Object.getOwnPropertyDescriptor(e, k);
20
- Object.defineProperty(n, k, d.get ? d : {
21
- enumerable: true,
22
- get: function () { return e[k]; }
23
- });
24
- }
25
- });
26
- }
27
- n.default = e;
28
- return Object.freeze(n);
29
- }
30
-
31
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
32
-
33
- // TODO: Look into fixing react-compiler support
34
- const trackResult = (result, onTrackResult)=>{
35
- const trackedResult = new Proxy(result, {
36
- get (target, prop) {
37
- onTrackResult(prop);
38
- return target[prop];
39
- }
40
- });
41
- return trackedResult;
42
- };
43
- /**
44
- * @internal
45
- */ function createRootHooks(config) {
46
- const mutationSuccessOverride = config?.overrides?.useMutation?.onSuccess ?? ((options)=>options.originalFn());
47
- const Context = config?.context ?? context.TRPCContext;
48
- const createClient = client.createTRPCClient;
49
- const TRPCProvider = (props)=>{
50
- const { abortOnUnmount = false, queryClient, ssrContext } = props;
51
- const [ssrState, setSSRState] = React__namespace.useState(props.ssrState ?? false);
52
- const client$1 = props.client instanceof client.TRPCUntypedClient ? props.client : client.getUntypedClient(props.client);
53
- const fns = React__namespace.useMemo(()=>createUtilityFunctions.createUtilityFunctions({
54
- client: client$1,
55
- queryClient
56
- }), [
57
- client$1,
58
- queryClient
59
- ]);
60
- const contextValue = React__namespace.useMemo(()=>({
61
- abortOnUnmount,
62
- queryClient,
63
- client: client$1,
64
- ssrContext: ssrContext ?? null,
65
- ssrState,
66
- ...fns
67
- }), [
68
- abortOnUnmount,
69
- client$1,
70
- fns,
71
- queryClient,
72
- ssrContext,
73
- ssrState
74
- ]);
75
- React__namespace.useEffect(()=>{
76
- // Only updating state to `mounted` if we are using SSR.
77
- // This makes it so we don't have an unnecessary re-render when opting out of SSR.
78
- setSSRState((state)=>state ? 'mounted' : false);
79
- }, []);
80
- return /*#__PURE__*/ React__namespace.createElement(Context.Provider, {
81
- value: contextValue
82
- }, props.children);
83
- };
84
- function useContext() {
85
- const context = React__namespace.useContext(Context);
86
- if (!context) {
87
- throw new Error('Unable to find tRPC Context. Did you forget to wrap your App inside `withTRPC` HoC?');
88
- }
89
- return context;
90
- }
91
- /**
92
- * Hack to make sure errors return `status`='error` when doing SSR
93
- * @see https://github.com/trpc/trpc/pull/1645
94
- */ function useSSRQueryOptionsIfNeeded(queryKey, opts) {
95
- const { queryClient, ssrState } = useContext();
96
- return ssrState && ssrState !== 'mounted' && queryClient.getQueryCache().find({
97
- queryKey
98
- })?.state.status === 'error' ? {
99
- retryOnMount: false,
100
- ...opts
101
- } : opts;
102
- }
103
- function useQuery(path, input, opts) {
104
- const context = useContext();
105
- const { abortOnUnmount, client, ssrState, queryClient, prefetchQuery } = context;
106
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'query');
107
- const defaultOpts = queryClient.getQueryDefaults(queryKey);
108
- const isInputSkipToken = input === reactQuery.skipToken;
109
- if (typeof window === 'undefined' && ssrState === 'prepass' && opts?.trpc?.ssr !== false && (opts?.enabled ?? defaultOpts?.enabled) !== false && !isInputSkipToken && !queryClient.getQueryCache().find({
110
- queryKey
111
- })) {
112
- void prefetchQuery(queryKey, opts);
113
- }
114
- const ssrOpts = useSSRQueryOptionsIfNeeded(queryKey, {
115
- ...defaultOpts,
116
- ...opts
117
- });
118
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? config?.abortOnUnmount ?? abortOnUnmount;
119
- const hook = reactQuery.useQuery({
120
- ...ssrOpts,
121
- queryKey: queryKey,
122
- queryFn: isInputSkipToken ? input : async (queryFunctionContext)=>{
123
- const actualOpts = {
124
- ...ssrOpts,
125
- trpc: {
126
- ...ssrOpts?.trpc,
127
- ...shouldAbortOnUnmount ? {
128
- signal: queryFunctionContext.signal
129
- } : {
130
- signal: null
131
- }
132
- }
133
- };
134
- const result = await client.query(...getClientArgs.getClientArgs(queryKey, actualOpts));
135
- if (unstableCoreDoNotImport.isAsyncIterable(result)) {
136
- return trpcResult.buildQueryFromAsyncIterable(result, queryClient, queryKey);
137
- }
138
- return result;
139
- }
140
- }, queryClient);
141
- hook.trpc = trpcResult.useHookResult({
142
- path
143
- });
144
- return hook;
145
- }
146
- function usePrefetchQuery(path, input, opts) {
147
- const context = useContext();
148
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'query');
149
- const isInputSkipToken = input === reactQuery.skipToken;
150
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? config?.abortOnUnmount ?? context.abortOnUnmount;
151
- reactQuery.usePrefetchQuery({
152
- ...opts,
153
- queryKey: queryKey,
154
- queryFn: isInputSkipToken ? input : (queryFunctionContext)=>{
155
- const actualOpts = {
156
- trpc: {
157
- ...opts?.trpc,
158
- ...shouldAbortOnUnmount ? {
159
- signal: queryFunctionContext.signal
160
- } : {}
161
- }
162
- };
163
- return context.client.query(...getClientArgs.getClientArgs(queryKey, actualOpts));
164
- }
165
- });
166
- }
167
- function useSuspenseQuery(path, input, opts) {
168
- const context = useContext();
169
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'query');
170
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? config?.abortOnUnmount ?? context.abortOnUnmount;
171
- const hook = reactQuery.useSuspenseQuery({
172
- ...opts,
173
- queryKey: queryKey,
174
- queryFn: (queryFunctionContext)=>{
175
- const actualOpts = {
176
- ...opts,
177
- trpc: {
178
- ...opts?.trpc,
179
- ...shouldAbortOnUnmount ? {
180
- signal: queryFunctionContext.signal
181
- } : {
182
- signal: null
183
- }
184
- }
185
- };
186
- return context.client.query(...getClientArgs.getClientArgs(queryKey, actualOpts));
187
- }
188
- }, context.queryClient);
189
- hook.trpc = trpcResult.useHookResult({
190
- path
191
- });
192
- return [
193
- hook.data,
194
- hook
195
- ];
196
- }
197
- function useMutation(path, opts) {
198
- const { client, queryClient } = useContext();
199
- const mutationKey = getQueryKey.getMutationKeyInternal(path);
200
- const defaultOpts = queryClient.defaultMutationOptions(queryClient.getMutationDefaults(mutationKey));
201
- const hook = reactQuery.useMutation({
202
- ...opts,
203
- mutationKey: mutationKey,
204
- mutationFn: (input)=>{
205
- return client.mutation(...getClientArgs.getClientArgs([
206
- path,
207
- {
208
- input
209
- }
210
- ], opts));
211
- },
212
- onSuccess (...args) {
213
- const originalFn = ()=>opts?.onSuccess?.(...args) ?? defaultOpts?.onSuccess?.(...args);
214
- return mutationSuccessOverride({
215
- originalFn,
216
- queryClient,
217
- meta: opts?.meta ?? defaultOpts?.meta ?? {}
218
- });
219
- }
220
- }, queryClient);
221
- hook.trpc = trpcResult.useHookResult({
222
- path
223
- });
224
- return hook;
225
- }
226
- const initialStateIdle = {
227
- data: undefined,
228
- error: null,
229
- status: 'idle'
230
- };
231
- const initialStateConnecting = {
232
- data: undefined,
233
- error: null,
234
- status: 'connecting'
235
- };
236
- /* istanbul ignore next -- @preserve */ function useSubscription(path, input, opts) {
237
- const enabled = opts?.enabled ?? input !== reactQuery.skipToken;
238
- const queryKey = reactQuery.hashKey(getQueryKey.getQueryKeyInternal(path, input, 'any'));
239
- const { client } = useContext();
240
- const optsRef = React__namespace.useRef(opts);
241
- React__namespace.useEffect(()=>{
242
- optsRef.current = opts;
243
- });
244
- const [trackedProps] = React__namespace.useState(new Set([]));
245
- const addTrackedProp = React__namespace.useCallback((key)=>{
246
- trackedProps.add(key);
247
- }, [
248
- trackedProps
249
- ]);
250
- const currentSubscriptionRef = React__namespace.useRef(null);
251
- const updateState = React__namespace.useCallback((callback)=>{
252
- const prev = resultRef.current;
253
- const next = resultRef.current = callback(prev);
254
- let shouldUpdate = false;
255
- for (const key of trackedProps){
256
- if (prev[key] !== next[key]) {
257
- shouldUpdate = true;
258
- break;
259
- }
260
- }
261
- if (shouldUpdate) {
262
- setState(trackResult(next, addTrackedProp));
263
- }
264
- }, [
265
- addTrackedProp,
266
- trackedProps
267
- ]);
268
- const reset = React__namespace.useCallback(()=>{
269
- // unsubscribe from the previous subscription
270
- currentSubscriptionRef.current?.unsubscribe();
271
- if (!enabled) {
272
- updateState(()=>({
273
- ...initialStateIdle,
274
- reset
275
- }));
276
- return;
277
- }
278
- updateState(()=>({
279
- ...initialStateConnecting,
280
- reset
281
- }));
282
- const subscription = client.subscription(path.join('.'), input ?? undefined, {
283
- onStarted: ()=>{
284
- optsRef.current.onStarted?.();
285
- updateState((prev)=>({
286
- ...prev,
287
- status: 'pending',
288
- error: null
289
- }));
290
- },
291
- onData: (data)=>{
292
- optsRef.current.onData?.(data);
293
- updateState((prev)=>({
294
- ...prev,
295
- status: 'pending',
296
- data,
297
- error: null
298
- }));
299
- },
300
- onError: (error)=>{
301
- optsRef.current.onError?.(error);
302
- updateState((prev)=>({
303
- ...prev,
304
- status: 'error',
305
- error
306
- }));
307
- },
308
- onConnectionStateChange: (result)=>{
309
- updateState((prev)=>{
310
- switch(result.state){
311
- case 'idle':
312
- return {
313
- ...prev,
314
- status: result.state,
315
- error: null,
316
- data: undefined
317
- };
318
- case 'connecting':
319
- return {
320
- ...prev,
321
- error: result.error,
322
- status: result.state
323
- };
324
- case 'pending':
325
- // handled when data is / onStarted
326
- return prev;
327
- }
328
- });
329
- },
330
- onComplete: ()=>{
331
- optsRef.current.onComplete?.();
332
- // In the case of WebSockets, the connection might not be idle so `onConnectionStateChange` will not be called until the connection is closed.
333
- // In this case, we need to set the state to idle manually.
334
- updateState((prev)=>({
335
- ...prev,
336
- status: 'idle',
337
- error: null,
338
- data: undefined
339
- }));
340
- // (We might want to add a `connectionState` to the state to track the connection state separately)
341
- }
342
- });
343
- currentSubscriptionRef.current = subscription;
344
- // eslint-disable-next-line react-hooks/exhaustive-deps
345
- }, [
346
- client,
347
- queryKey,
348
- enabled,
349
- updateState
350
- ]);
351
- React__namespace.useEffect(()=>{
352
- reset();
353
- return ()=>{
354
- currentSubscriptionRef.current?.unsubscribe();
355
- };
356
- }, [
357
- reset
358
- ]);
359
- const resultRef = React__namespace.useRef(enabled ? {
360
- ...initialStateConnecting,
361
- reset
362
- } : {
363
- ...initialStateIdle,
364
- reset
365
- });
366
- const [state, setState] = React__namespace.useState(trackResult(resultRef.current, addTrackedProp));
367
- return state;
368
- }
369
- function useInfiniteQuery(path, input, opts) {
370
- const { client, ssrState, prefetchInfiniteQuery, queryClient, abortOnUnmount } = useContext();
371
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'infinite');
372
- const defaultOpts = queryClient.getQueryDefaults(queryKey);
373
- const isInputSkipToken = input === reactQuery.skipToken;
374
- if (typeof window === 'undefined' && ssrState === 'prepass' && opts?.trpc?.ssr !== false && (opts?.enabled ?? defaultOpts?.enabled) !== false && !isInputSkipToken && !queryClient.getQueryCache().find({
375
- queryKey
376
- })) {
377
- void prefetchInfiniteQuery(queryKey, {
378
- ...defaultOpts,
379
- ...opts
380
- });
381
- }
382
- const ssrOpts = useSSRQueryOptionsIfNeeded(queryKey, {
383
- ...defaultOpts,
384
- ...opts
385
- });
386
- // request option should take priority over global
387
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? abortOnUnmount;
388
- const hook = reactQuery.useInfiniteQuery({
389
- ...ssrOpts,
390
- initialPageParam: opts.initialCursor ?? null,
391
- persister: opts.persister,
392
- queryKey: queryKey,
393
- queryFn: isInputSkipToken ? input : (queryFunctionContext)=>{
394
- const actualOpts = {
395
- ...ssrOpts,
396
- trpc: {
397
- ...ssrOpts?.trpc,
398
- ...shouldAbortOnUnmount ? {
399
- signal: queryFunctionContext.signal
400
- } : {
401
- signal: null
402
- }
403
- }
404
- };
405
- return client.query(...getClientArgs.getClientArgs(queryKey, actualOpts, {
406
- pageParam: queryFunctionContext.pageParam ?? opts.initialCursor,
407
- direction: queryFunctionContext.direction
408
- }));
409
- }
410
- }, queryClient);
411
- hook.trpc = trpcResult.useHookResult({
412
- path
413
- });
414
- return hook;
415
- }
416
- function usePrefetchInfiniteQuery(path, input, opts) {
417
- const context = useContext();
418
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'infinite');
419
- const defaultOpts = context.queryClient.getQueryDefaults(queryKey);
420
- const isInputSkipToken = input === reactQuery.skipToken;
421
- const ssrOpts = useSSRQueryOptionsIfNeeded(queryKey, {
422
- ...defaultOpts,
423
- ...opts
424
- });
425
- // request option should take priority over global
426
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? context.abortOnUnmount;
427
- reactQuery.usePrefetchInfiniteQuery({
428
- ...opts,
429
- initialPageParam: opts.initialCursor ?? null,
430
- queryKey,
431
- queryFn: isInputSkipToken ? input : (queryFunctionContext)=>{
432
- const actualOpts = {
433
- ...ssrOpts,
434
- trpc: {
435
- ...ssrOpts?.trpc,
436
- ...shouldAbortOnUnmount ? {
437
- signal: queryFunctionContext.signal
438
- } : {}
439
- }
440
- };
441
- return context.client.query(...getClientArgs.getClientArgs(queryKey, actualOpts, {
442
- pageParam: queryFunctionContext.pageParam ?? opts.initialCursor,
443
- direction: queryFunctionContext.direction
444
- }));
445
- }
446
- });
447
- }
448
- function useSuspenseInfiniteQuery(path, input, opts) {
449
- const context = useContext();
450
- const queryKey = getQueryKey.getQueryKeyInternal(path, input, 'infinite');
451
- const defaultOpts = context.queryClient.getQueryDefaults(queryKey);
452
- const ssrOpts = useSSRQueryOptionsIfNeeded(queryKey, {
453
- ...defaultOpts,
454
- ...opts
455
- });
456
- // request option should take priority over global
457
- const shouldAbortOnUnmount = opts?.trpc?.abortOnUnmount ?? context.abortOnUnmount;
458
- const hook = reactQuery.useSuspenseInfiniteQuery({
459
- ...opts,
460
- initialPageParam: opts.initialCursor ?? null,
461
- queryKey,
462
- queryFn: (queryFunctionContext)=>{
463
- const actualOpts = {
464
- ...ssrOpts,
465
- trpc: {
466
- ...ssrOpts?.trpc,
467
- ...shouldAbortOnUnmount ? {
468
- signal: queryFunctionContext.signal
469
- } : {}
470
- }
471
- };
472
- return context.client.query(...getClientArgs.getClientArgs(queryKey, actualOpts, {
473
- pageParam: queryFunctionContext.pageParam ?? opts.initialCursor,
474
- direction: queryFunctionContext.direction
475
- }));
476
- }
477
- }, context.queryClient);
478
- hook.trpc = trpcResult.useHookResult({
479
- path
480
- });
481
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
482
- return [
483
- hook.data,
484
- hook
485
- ];
486
- }
487
- const useQueries = (queriesCallback, options)=>{
488
- const { ssrState, queryClient, prefetchQuery, client } = useContext();
489
- const proxy = useQueriesProxy.createUseQueries(client);
490
- const queries = queriesCallback(proxy);
491
- if (typeof window === 'undefined' && ssrState === 'prepass') {
492
- for (const query of queries){
493
- const queryOption = query;
494
- if (queryOption.trpc?.ssr !== false && !queryClient.getQueryCache().find({
495
- queryKey: queryOption.queryKey
496
- })) {
497
- void prefetchQuery(queryOption.queryKey, queryOption);
498
- }
499
- }
500
- }
501
- return reactQuery.useQueries({
502
- queries: queries.map((query)=>({
503
- ...query,
504
- queryKey: query.queryKey
505
- })),
506
- combine: options?.combine
507
- }, queryClient);
508
- };
509
- const useSuspenseQueries = (queriesCallback)=>{
510
- const { queryClient, client } = useContext();
511
- const proxy = useQueriesProxy.createUseQueries(client);
512
- const queries = queriesCallback(proxy);
513
- const hook = reactQuery.useSuspenseQueries({
514
- queries: queries.map((query)=>({
515
- ...query,
516
- queryFn: query.queryFn,
517
- queryKey: query.queryKey
518
- }))
519
- }, queryClient);
520
- return [
521
- hook.map((h)=>h.data),
522
- hook
523
- ];
524
- };
525
- return {
526
- Provider: TRPCProvider,
527
- createClient,
528
- useContext,
529
- useUtils: useContext,
530
- useQuery,
531
- usePrefetchQuery,
532
- useSuspenseQuery,
533
- useQueries,
534
- useSuspenseQueries,
535
- useMutation,
536
- useSubscription,
537
- useInfiniteQuery,
538
- usePrefetchInfiniteQuery,
539
- useSuspenseInfiniteQuery
540
- };
541
- }
542
-
543
- exports.createRootHooks = createRootHooks;