@trpc/react-query 10.6.0 → 10.8.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.
Files changed (52) hide show
  1. package/dist/{createHooksInternal-10b1b7ef.mjs → createHooksInternal-9c1f8ad9.mjs} +25 -11
  2. package/dist/{createHooksInternal-860b8183.js → createHooksInternal-d8e5577b.js} +26 -9
  3. package/dist/createTRPCReact.d.ts +30 -9
  4. package/dist/createTRPCReact.d.ts.map +1 -1
  5. package/dist/{getArrayQueryKey-671d083c.js → getArrayQueryKey-4bdb5cc2.js} +6 -1
  6. package/dist/{getArrayQueryKey-30a7f2f6.mjs → getArrayQueryKey-86134f8b.mjs} +6 -1
  7. package/dist/index.js +2 -2
  8. package/dist/index.mjs +2 -2
  9. package/dist/internals/context.d.ts +35 -23
  10. package/dist/internals/context.d.ts.map +1 -1
  11. package/dist/internals/getArrayQueryKey.d.ts +9 -5
  12. package/dist/internals/getArrayQueryKey.d.ts.map +1 -1
  13. package/dist/internals/getClientArgs.d.ts +2 -0
  14. package/dist/internals/getClientArgs.d.ts.map +1 -0
  15. package/dist/internals/getQueryKey.d.ts.map +1 -1
  16. package/dist/internals/useHookResult.d.ts +10 -0
  17. package/dist/internals/useHookResult.d.ts.map +1 -0
  18. package/dist/shared/hooks/createHooksInternal.d.ts +19 -116
  19. package/dist/shared/hooks/createHooksInternal.d.ts.map +1 -1
  20. package/dist/shared/hooks/deprecated/createHooksInternal.d.ts +61 -0
  21. package/dist/shared/hooks/deprecated/createHooksInternal.d.ts.map +1 -0
  22. package/dist/shared/hooks/types.d.ts +78 -0
  23. package/dist/shared/hooks/types.d.ts.map +1 -0
  24. package/dist/shared/index.d.ts +12 -0
  25. package/dist/shared/index.d.ts.map +1 -1
  26. package/dist/shared/index.js +5 -2
  27. package/dist/shared/index.mjs +2 -2
  28. package/dist/shared/proxy/decorationProxy.d.ts.map +1 -1
  29. package/dist/shared/proxy/utilsProxy.d.ts +6 -5
  30. package/dist/shared/proxy/utilsProxy.d.ts.map +1 -1
  31. package/dist/ssg/index.js +1 -1
  32. package/dist/ssg/index.mjs +1 -1
  33. package/dist/ssg/ssgProxy.d.ts +3 -3
  34. package/dist/ssg/ssgProxy.d.ts.map +1 -1
  35. package/dist/utils/inferReactQueryProcedure.d.ts +1 -1
  36. package/dist/utils/inferReactQueryProcedure.d.ts.map +1 -1
  37. package/package.json +8 -6
  38. package/src/createTRPCReact.tsx +79 -24
  39. package/src/internals/context.tsx +53 -52
  40. package/src/internals/getArrayQueryKey.test.ts +11 -0
  41. package/src/internals/getArrayQueryKey.ts +11 -2
  42. package/src/internals/getClientArgs.ts +7 -0
  43. package/src/internals/getQueryKey.ts +2 -1
  44. package/src/internals/useHookResult.ts +18 -0
  45. package/src/shared/hooks/createHooksInternal.tsx +71 -309
  46. package/src/shared/hooks/deprecated/createHooksInternal.tsx +628 -0
  47. package/src/shared/hooks/types.ts +151 -0
  48. package/src/shared/index.ts +17 -0
  49. package/src/shared/proxy/decorationProxy.ts +7 -0
  50. package/src/shared/proxy/utilsProxy.ts +7 -3
  51. package/src/ssg/ssgProxy.ts +8 -4
  52. package/src/utils/inferReactQueryProcedure.ts +1 -1
@@ -0,0 +1,151 @@
1
+ import {
2
+ DefinedUseQueryResult,
3
+ DehydratedState,
4
+ InfiniteQueryObserverSuccessResult,
5
+ InitialDataFunction,
6
+ QueryObserverSuccessResult,
7
+ QueryOptions,
8
+ UseInfiniteQueryOptions,
9
+ UseInfiniteQueryResult,
10
+ UseMutationOptions,
11
+ UseMutationResult,
12
+ UseQueryOptions,
13
+ UseQueryResult,
14
+ } from '@tanstack/react-query';
15
+ import {
16
+ CreateTRPCClientOptions,
17
+ TRPCClient,
18
+ TRPCRequestOptions,
19
+ } from '@trpc/client';
20
+ import { AnyRouter } from '@trpc/server';
21
+ import { ReactNode } from 'react';
22
+ import { TRPCContextProps } from '../../internals/context';
23
+ import { TRPCHookResult } from '../../internals/useHookResult';
24
+
25
+ export type OutputWithCursor<TData, TCursor = any> = {
26
+ cursor: TCursor | null;
27
+ data: TData;
28
+ };
29
+
30
+ export interface TRPCReactRequestOptions
31
+ // For RQ, we use their internal AbortSignals instead of letting the user pass their own
32
+ extends Omit<TRPCRequestOptions, 'signal'> {
33
+ /**
34
+ * Opt out of SSR for this query by passing `ssr: false`
35
+ */
36
+ ssr?: boolean;
37
+ /**
38
+ * Opt out or into aborting request on unmount
39
+ */
40
+ abortOnUnmount?: boolean;
41
+ }
42
+
43
+ export interface TRPCUseQueryBaseOptions {
44
+ /**
45
+ * tRPC-related options
46
+ */
47
+ trpc?: TRPCReactRequestOptions;
48
+ }
49
+
50
+ export interface UseTRPCQueryOptions<TPath, TInput, TOutput, TData, TError>
51
+ extends UseQueryOptions<TOutput, TError, TData, [TPath, TInput]>,
52
+ TRPCUseQueryBaseOptions {}
53
+
54
+ /** @internal **/
55
+ export interface DefinedUseTRPCQueryOptions<
56
+ TPath,
57
+ TInput,
58
+ TOutput,
59
+ TData,
60
+ TError,
61
+ > extends UseTRPCQueryOptions<TPath, TInput, TOutput, TData, TError> {
62
+ initialData: TOutput | InitialDataFunction<TOutput>;
63
+ }
64
+
65
+ export interface TRPCQueryOptions<TPath, TInput, TData, TError>
66
+ extends QueryOptions<TData, TError, TData, [TPath, TInput]>,
67
+ TRPCUseQueryBaseOptions {}
68
+
69
+ export interface UseTRPCInfiniteQueryOptions<TPath, TInput, TOutput, TError>
70
+ extends UseInfiniteQueryOptions<
71
+ TOutput,
72
+ TError,
73
+ TOutput,
74
+ TOutput,
75
+ [TPath, TInput]
76
+ >,
77
+ TRPCUseQueryBaseOptions {}
78
+
79
+ export interface UseTRPCMutationOptions<
80
+ TInput,
81
+ TError,
82
+ TOutput,
83
+ TContext = unknown,
84
+ > extends UseMutationOptions<TOutput, TError, TInput, TContext>,
85
+ TRPCUseQueryBaseOptions {}
86
+
87
+ export interface UseTRPCSubscriptionOptions<TOutput, TError> {
88
+ enabled?: boolean;
89
+ onStarted?: () => void;
90
+ onData: (data: TOutput) => void;
91
+ onError?: (err: TError) => void;
92
+ }
93
+ export interface TRPCProviderProps<TRouter extends AnyRouter, TSSRContext>
94
+ extends TRPCContextProps<TRouter, TSSRContext> {
95
+ children: ReactNode;
96
+ }
97
+
98
+ export type TRPCProvider<TRouter extends AnyRouter, TSSRContext> = (
99
+ props: TRPCProviderProps<TRouter, TSSRContext>,
100
+ ) => JSX.Element;
101
+
102
+ export type UseDehydratedState<TRouter extends AnyRouter> = (
103
+ client: TRPCClient<TRouter>,
104
+ trpcState: DehydratedState | undefined,
105
+ ) => DehydratedState | undefined;
106
+
107
+ export type CreateClient<TRouter extends AnyRouter> = (
108
+ opts: CreateTRPCClientOptions<TRouter>,
109
+ ) => TRPCClient<TRouter>;
110
+
111
+ /**
112
+ * @internal
113
+ */
114
+ export type UseTRPCQueryResult<TData, TError> = UseQueryResult<TData, TError> &
115
+ TRPCHookResult;
116
+
117
+ /**
118
+ * @internal
119
+ */
120
+ export type DefinedUseTRPCQueryResult<TData, TError> = DefinedUseQueryResult<
121
+ TData,
122
+ TError
123
+ > &
124
+ TRPCHookResult;
125
+
126
+ /**
127
+ * @internal
128
+ */
129
+ export type UseTRPCQuerySuccessResult<TData, TError> =
130
+ QueryObserverSuccessResult<TData, TError> & TRPCHookResult;
131
+
132
+ /**
133
+ * @internal
134
+ */
135
+ export type UseTRPCInfiniteQueryResult<TData, TError> = UseInfiniteQueryResult<
136
+ TData,
137
+ TError
138
+ > &
139
+ TRPCHookResult;
140
+
141
+ /**
142
+ * @internal
143
+ */
144
+ export type UseTRPCInfiniteQuerySuccessResult<TData, TError> =
145
+ InfiniteQueryObserverSuccessResult<TData, TError> & TRPCHookResult;
146
+
147
+ /**
148
+ * @internal
149
+ */
150
+ export type UseTRPCMutationResult<TData, TError, TVariables, TContext> =
151
+ UseMutationResult<TData, TError, TVariables, TContext> & TRPCHookResult;
@@ -9,3 +9,20 @@ export type { TRPCUseQueries } from '../internals/useQueries';
9
9
  export * from './hooks/createHooksInternal';
10
10
  export * from './queryClient';
11
11
  export * from './types';
12
+ export * from './hooks/types';
13
+
14
+ export {
15
+ /**
16
+ * @deprecated this is an internal function
17
+ */
18
+ getClientArgs,
19
+ } from '../internals/getClientArgs';
20
+
21
+ export {
22
+ /**
23
+ * @deprecated
24
+ */
25
+ TRPCContext,
26
+ } from './../internals/context';
27
+
28
+ export * from '../internals/context';
@@ -1,5 +1,6 @@
1
1
  import { AnyRouter } from '@trpc/server';
2
2
  import { createRecursiveProxy } from '@trpc/server/shared';
3
+ import { getArrayQueryKey } from '../../internals/getArrayQueryKey';
3
4
  import { getQueryKey } from '../../internals/getQueryKey';
4
5
  import { CreateReactQueryHooks } from '../hooks/createHooksInternal';
5
6
 
@@ -28,6 +29,12 @@ export function createReactProxyDecoration<
28
29
  const [input, ...rest] = args;
29
30
 
30
31
  const queryKey = getQueryKey(path, input);
32
+
33
+ // Expose queryKey helper
34
+ if (lastArg === 'getQueryKey') {
35
+ return getArrayQueryKey(queryKey, (rest[0] as any) ?? 'any');
36
+ }
37
+
31
38
  if (lastArg.startsWith('useSuspense')) {
32
39
  const opts = rest[0] || {};
33
40
  const fn =
@@ -15,6 +15,7 @@ import {
15
15
  AnyRouter,
16
16
  Filter,
17
17
  ProcedureOptions,
18
+ ProtectedIntersection,
18
19
  inferProcedureInput,
19
20
  } from '@trpc/server';
20
21
  import {
@@ -24,11 +25,11 @@ import {
24
25
  } from '@trpc/server/shared';
25
26
  import {
26
27
  DecoratedProxyTRPCContextProps,
27
- TRPCContextState,
28
28
  TRPCFetchInfiniteQueryOptions,
29
29
  TRPCFetchQueryOptions,
30
30
  contextProps,
31
31
  } from '../../internals/context';
32
+ import { TRPCContextState } from '../../internals/context';
32
33
  import { getQueryKey } from '../../internals/getQueryKey';
33
34
 
34
35
  type DecorateProcedure<
@@ -171,6 +172,7 @@ type DecorateRouter = {
171
172
  * @link https://react-query.tanstack.com/guides/query-invalidation
172
173
  */
173
174
  invalidate(
175
+ input?: undefined,
174
176
  filters?: InvalidateQueryFilters,
175
177
  options?: InvalidateOptions,
176
178
  ): Promise<void>;
@@ -195,8 +197,10 @@ type AnyDecoratedProcedure = DecorateProcedure<any, any>;
195
197
  export type CreateReactUtilsProxy<
196
198
  TRouter extends AnyRouter,
197
199
  TSSRContext,
198
- > = DecoratedProcedureUtilsRecord<TRouter> &
199
- DecoratedProxyTRPCContextProps<TRouter, TSSRContext>;
200
+ > = ProtectedIntersection<
201
+ DecoratedProxyTRPCContextProps<TRouter, TSSRContext>,
202
+ DecoratedProcedureUtilsRecord<TRouter>
203
+ >;
200
204
 
201
205
  /**
202
206
  * @internal
@@ -9,6 +9,7 @@ import {
9
9
  AnyQueryProcedure,
10
10
  AnyRouter,
11
11
  Filter,
12
+ ProtectedIntersection,
12
13
  inferHandlerInput,
13
14
  } from '@trpc/server';
14
15
  import {
@@ -67,10 +68,13 @@ export function createProxySSGHelpers<TRouter extends AnyRouter>(
67
68
  ) {
68
69
  const helpers = createSSGHelpers(opts);
69
70
 
70
- type CreateProxySSGHelpers = {
71
- queryClient: QueryClient;
72
- dehydrate: (opts?: DehydrateOptions) => DehydratedState;
73
- } & DecoratedProcedureSSGRecord<TRouter>;
71
+ type CreateProxySSGHelpers = ProtectedIntersection<
72
+ {
73
+ queryClient: QueryClient;
74
+ dehydrate: (opts?: DehydrateOptions) => DehydratedState;
75
+ },
76
+ DecoratedProcedureSSGRecord<TRouter>
77
+ >;
74
78
 
75
79
  return createFlatProxy<CreateProxySSGHelpers>((key) => {
76
80
  if (key === 'queryClient') {
@@ -6,7 +6,7 @@ import {
6
6
  AnyRouter,
7
7
  inferProcedureInput,
8
8
  } from '@trpc/server';
9
- import { inferTransformedProcedureOutput } from '@trpc/server/dist/shared';
9
+ import { inferTransformedProcedureOutput } from '@trpc/server/shared';
10
10
  import { UseTRPCMutationOptions, UseTRPCQueryOptions } from '../shared';
11
11
 
12
12
  type InferQueryOptions<