@trpc/react-query 11.0.0-alpha-tmp-issues-5851-take-two.496 → 11.0.0-alpha-tmp-subscription-connection-state.485

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 (39) hide show
  1. package/dist/bundle-analysis.json +64 -42
  2. package/dist/createTRPCReact.d.ts +3 -3
  3. package/dist/createTRPCReact.d.ts.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -0
  7. package/dist/index.mjs +1 -1
  8. package/dist/internals/context.d.ts +18 -2
  9. package/dist/internals/context.d.ts.map +1 -1
  10. package/dist/internals/getQueryKey.d.ts +8 -0
  11. package/dist/internals/getQueryKey.d.ts.map +1 -1
  12. package/dist/internals/getQueryKey.js +15 -0
  13. package/dist/internals/getQueryKey.mjs +14 -1
  14. package/dist/shared/hooks/createHooksInternal.d.ts +2 -2
  15. package/dist/shared/hooks/createHooksInternal.d.ts.map +1 -1
  16. package/dist/shared/hooks/createHooksInternal.js +67 -3
  17. package/dist/shared/hooks/createHooksInternal.mjs +68 -4
  18. package/dist/shared/hooks/types.d.ts +171 -2
  19. package/dist/shared/hooks/types.d.ts.map +1 -1
  20. package/dist/shared/hooks/types.js +133 -0
  21. package/dist/shared/hooks/types.mjs +126 -0
  22. package/dist/shared/index.js +7 -0
  23. package/dist/shared/index.mjs +1 -0
  24. package/dist/shared/proxy/utilsProxy.d.ts +12 -4
  25. package/dist/shared/proxy/utilsProxy.d.ts.map +1 -1
  26. package/dist/shared/proxy/utilsProxy.js +14 -2
  27. package/dist/shared/proxy/utilsProxy.mjs +15 -3
  28. package/dist/utils/createUtilityFunctions.d.ts.map +1 -1
  29. package/dist/utils/createUtilityFunctions.js +23 -0
  30. package/dist/utils/createUtilityFunctions.mjs +23 -0
  31. package/package.json +6 -6
  32. package/src/createTRPCReact.tsx +11 -2
  33. package/src/index.ts +1 -1
  34. package/src/internals/context.tsx +26 -1
  35. package/src/internals/getQueryKey.ts +21 -0
  36. package/src/shared/hooks/createHooksInternal.tsx +146 -18
  37. package/src/shared/hooks/types.ts +365 -1
  38. package/src/shared/proxy/utilsProxy.ts +47 -6
  39. package/src/utils/createUtilityFunctions.ts +26 -0
@@ -1 +1 @@
1
- {"version":3,"file":"utilsProxy.d.ts","sourceRoot":"","sources":["../../../src/shared/proxy/utilsProxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilsProxy.d.ts","sourceRoot":"","sources":["../../../src/shared/proxy/utilsProxy.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,9 @@ const getQueryType = (utilName)=>{
19
19
  case 'getInfiniteData':
20
20
  case 'setInfiniteData':
21
21
  return 'infinite';
22
+ case 'setMutationDefaults':
23
+ case 'getMutationDefaults':
24
+ case 'isMutating':
22
25
  case 'cancel':
23
26
  case 'invalidate':
24
27
  case 'refetch':
@@ -41,7 +44,9 @@ const getQueryType = (utilName)=>{
41
44
  const queryType = getQueryType(utilName);
42
45
  const queryKey = getQueryKey.getQueryKeyInternal(path, input, queryType);
43
46
  const contextMap = {
44
- fetch: ()=>context.fetchQuery(queryKey, ...args),
47
+ /**
48
+ * DecorateQueryProcedure
49
+ */ fetch: ()=>context.fetchQuery(queryKey, ...args),
45
50
  fetchInfinite: ()=>context.fetchInfiniteQuery(queryKey, args[0]),
46
51
  prefetch: ()=>context.prefetchQuery(queryKey, ...args),
47
52
  prefetchInfinite: ()=>context.prefetchInfiniteQuery(queryKey, args[0]),
@@ -58,7 +63,14 @@ const getQueryType = (utilName)=>{
58
63
  context.setInfiniteQueryData(queryKey, args[0], args[1]);
59
64
  },
60
65
  getData: ()=>context.getQueryData(queryKey),
61
- getInfiniteData: ()=>context.getInfiniteQueryData(queryKey)
66
+ getInfiniteData: ()=>context.getInfiniteQueryData(queryKey),
67
+ /**
68
+ * DecorateMutationProcedure
69
+ */ setMutationDefaults: ()=>context.setMutationDefaults(getQueryKey.getMutationKeyInternal(path), input),
70
+ getMutationDefaults: ()=>context.getMutationDefaults(getQueryKey.getMutationKeyInternal(path)),
71
+ isMutating: ()=>context.isMutating({
72
+ mutationKey: getQueryKey.getMutationKeyInternal(path)
73
+ })
62
74
  };
63
75
  return contextMap[utilName]();
64
76
  });
@@ -1,7 +1,7 @@
1
1
  import { createTRPCClientProxy } from '@trpc/client';
2
2
  import { createFlatProxy, createRecursiveProxy } from '@trpc/server/unstable-core-do-not-import';
3
3
  import { contextProps } from '../../internals/context.mjs';
4
- import { getQueryKeyInternal } from '../../internals/getQueryKey.mjs';
4
+ import { getQueryKeyInternal, getMutationKeyInternal } from '../../internals/getQueryKey.mjs';
5
5
 
6
6
  const getQueryType = (utilName)=>{
7
7
  switch(utilName){
@@ -17,6 +17,9 @@ const getQueryType = (utilName)=>{
17
17
  case 'getInfiniteData':
18
18
  case 'setInfiniteData':
19
19
  return 'infinite';
20
+ case 'setMutationDefaults':
21
+ case 'getMutationDefaults':
22
+ case 'isMutating':
20
23
  case 'cancel':
21
24
  case 'invalidate':
22
25
  case 'refetch':
@@ -39,7 +42,9 @@ const getQueryType = (utilName)=>{
39
42
  const queryType = getQueryType(utilName);
40
43
  const queryKey = getQueryKeyInternal(path, input, queryType);
41
44
  const contextMap = {
42
- fetch: ()=>context.fetchQuery(queryKey, ...args),
45
+ /**
46
+ * DecorateQueryProcedure
47
+ */ fetch: ()=>context.fetchQuery(queryKey, ...args),
43
48
  fetchInfinite: ()=>context.fetchInfiniteQuery(queryKey, args[0]),
44
49
  prefetch: ()=>context.prefetchQuery(queryKey, ...args),
45
50
  prefetchInfinite: ()=>context.prefetchInfiniteQuery(queryKey, args[0]),
@@ -56,7 +61,14 @@ const getQueryType = (utilName)=>{
56
61
  context.setInfiniteQueryData(queryKey, args[0], args[1]);
57
62
  },
58
63
  getData: ()=>context.getQueryData(queryKey),
59
- getInfiniteData: ()=>context.getInfiniteQueryData(queryKey)
64
+ getInfiniteData: ()=>context.getInfiniteQueryData(queryKey),
65
+ /**
66
+ * DecorateMutationProcedure
67
+ */ setMutationDefaults: ()=>context.setMutationDefaults(getMutationKeyInternal(path), input),
68
+ getMutationDefaults: ()=>context.getMutationDefaults(getMutationKeyInternal(path)),
69
+ isMutating: ()=>context.isMutating({
70
+ mutationKey: getMutationKeyInternal(path)
71
+ })
60
72
  };
61
73
  return contextMap[utilName]();
62
74
  });
@@ -1 +1 @@
1
- {"version":3,"file":"createUtilityFunctions.d.ts","sourceRoot":"","sources":["../../src/utils/createUtilityFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS,SAAS;IAChE;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/D;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACrC,cAAc,CAAC,OAAO,CAAC,CA0HzB"}
1
+ {"version":3,"file":"createUtilityFunctions.d.ts","sourceRoot":"","sources":["../../src/utils/createUtilityFunctions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAoB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAE1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,MAAM,WAAW,uBAAuB,CAAC,OAAO,SAAS,SAAS;IAChE;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC/D;;OAEG;IACH,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACrC,cAAc,CAAC,OAAO,CAAC,CAoJzB"}
@@ -100,6 +100,29 @@ var getClientArgs = require('../internals/getClientArgs.js');
100
100
  },
101
101
  getInfiniteQueryData: (queryKey)=>{
102
102
  return queryClient.getQueryData(queryKey);
103
+ },
104
+ setMutationDefaults: (mutationKey, options)=>{
105
+ const path = mutationKey[0];
106
+ const canonicalMutationFn = (input)=>{
107
+ return untypedClient.mutation(...getClientArgs.getClientArgs([
108
+ path,
109
+ {
110
+ input
111
+ }
112
+ ], opts));
113
+ };
114
+ return queryClient.setMutationDefaults(mutationKey, typeof options === 'function' ? options({
115
+ canonicalMutationFn
116
+ }) : options);
117
+ },
118
+ getMutationDefaults: (mutationKey)=>{
119
+ return queryClient.getMutationDefaults(mutationKey);
120
+ },
121
+ isMutating: (filters)=>{
122
+ return queryClient.isMutating({
123
+ ...filters,
124
+ exact: true
125
+ });
103
126
  }
104
127
  };
105
128
  }
@@ -98,6 +98,29 @@ import { getClientArgs } from '../internals/getClientArgs.mjs';
98
98
  },
99
99
  getInfiniteQueryData: (queryKey)=>{
100
100
  return queryClient.getQueryData(queryKey);
101
+ },
102
+ setMutationDefaults: (mutationKey, options)=>{
103
+ const path = mutationKey[0];
104
+ const canonicalMutationFn = (input)=>{
105
+ return untypedClient.mutation(...getClientArgs([
106
+ path,
107
+ {
108
+ input
109
+ }
110
+ ], opts));
111
+ };
112
+ return queryClient.setMutationDefaults(mutationKey, typeof options === 'function' ? options({
113
+ canonicalMutationFn
114
+ }) : options);
115
+ },
116
+ getMutationDefaults: (mutationKey)=>{
117
+ return queryClient.getMutationDefaults(mutationKey);
118
+ },
119
+ isMutating: (filters)=>{
120
+ return queryClient.isMutating({
121
+ ...filters,
122
+ exact: true
123
+ });
101
124
  }
102
125
  };
103
126
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/react-query",
3
- "version": "11.0.0-alpha-tmp-issues-5851-take-two.496+f0729daa3",
3
+ "version": "11.0.0-alpha-tmp-subscription-connection-state.485+386eae02c",
4
4
  "description": "The tRPC React library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -64,15 +64,15 @@
64
64
  },
65
65
  "peerDependencies": {
66
66
  "@tanstack/react-query": "^5.49.2",
67
- "@trpc/client": "11.0.0-alpha-tmp-issues-5851-take-two.496+f0729daa3",
68
- "@trpc/server": "11.0.0-alpha-tmp-issues-5851-take-two.496+f0729daa3",
67
+ "@trpc/client": "11.0.0-alpha-tmp-subscription-connection-state.485+386eae02c",
68
+ "@trpc/server": "11.0.0-alpha-tmp-subscription-connection-state.485+386eae02c",
69
69
  "react": ">=18.2.0",
70
70
  "react-dom": ">=18.2.0"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@tanstack/react-query": "^5.49.2",
74
- "@trpc/client": "11.0.0-alpha-tmp-issues-5851-take-two.496+f0729daa3",
75
- "@trpc/server": "11.0.0-alpha-tmp-issues-5851-take-two.496+f0729daa3",
74
+ "@trpc/client": "11.0.0-alpha-tmp-subscription-connection-state.485+386eae02c",
75
+ "@trpc/server": "11.0.0-alpha-tmp-subscription-connection-state.485+386eae02c",
76
76
  "@types/express": "^4.17.17",
77
77
  "@types/node": "^20.10.0",
78
78
  "@types/react": "^18.3.1",
@@ -92,5 +92,5 @@
92
92
  "funding": [
93
93
  "https://trpc.io/sponsor"
94
94
  ],
95
- "gitHead": "f0729daa3e95b1f21cd082e04c21377b550f5625"
95
+ "gitHead": "386eae02c675ba0fe0feda78188b6975e56d0e49"
96
96
  }
@@ -32,6 +32,7 @@ import type {
32
32
  UseTRPCQueryOptions,
33
33
  UseTRPCQueryResult,
34
34
  UseTRPCSubscriptionOptions,
35
+ UseTRPCSubscriptionResult,
35
36
  UseTRPCSuspenseInfiniteQueryOptions,
36
37
  UseTRPCSuspenseInfiniteQueryResult,
37
38
  UseTRPCSuspenseQueryOptions,
@@ -180,7 +181,11 @@ interface ProcedureUseSubscription<TDef extends ResolverDef> {
180
181
  (
181
182
  input: TDef['input'],
182
183
  opts: UseTRPCSubscriptionOptions<TDef['output'], TRPCClientErrorLike<TDef>>,
183
- ): void;
184
+ ): UseTRPCSubscriptionResult<
185
+ TDef['input'],
186
+ TDef['output'],
187
+ TRPCClientErrorLike<TDef>
188
+ >;
184
189
 
185
190
  // With skip token
186
191
  (
@@ -189,7 +194,11 @@ interface ProcedureUseSubscription<TDef extends ResolverDef> {
189
194
  UseTRPCSubscriptionOptions<TDef['output'], TRPCClientErrorLike<TDef>>,
190
195
  'enabled'
191
196
  >,
192
- ): void;
197
+ ): UseTRPCSubscriptionResult<
198
+ TDef['input'],
199
+ TDef['output'],
200
+ TRPCClientErrorLike<TDef>
201
+ >;
193
202
  }
194
203
  /**
195
204
  * @internal
package/src/index.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export * from '@trpc/client';
2
2
 
3
- export { getQueryKey } from './internals/getQueryKey';
3
+ export { getQueryKey, getMutationKey } from './internals/getQueryKey';
4
4
  export {
5
5
  createTRPCReact,
6
6
  type CreateTRPCReact,
@@ -5,6 +5,7 @@ import type {
5
5
  InfiniteData,
6
6
  InvalidateOptions,
7
7
  InvalidateQueryFilters,
8
+ MutationOptions,
8
9
  QueryClient,
9
10
  QueryFilters,
10
11
  QueryKey,
@@ -26,7 +27,7 @@ import type {
26
27
  } from '@trpc/server/unstable-core-do-not-import';
27
28
  import * as React from 'react';
28
29
  import type { ExtractCursorType } from '../shared';
29
- import type { TRPCQueryKey } from './getQueryKey';
30
+ import type { TRPCMutationKey, TRPCQueryKey } from './getQueryKey';
30
31
 
31
32
  export type TRPCFetchQueryOptions<TOutput, TError> = DistributiveOmit<
32
33
  FetchQueryOptions<TOutput, TError>,
@@ -240,5 +241,29 @@ export interface TRPCQueryUtils<TRouter extends AnyRouter> {
240
241
  getInfiniteQueryData: (
241
242
  queryKey: TRPCQueryKey,
242
243
  ) => InfiniteData<unknown> | undefined;
244
+
245
+ /**
246
+ * @link https://tanstack.com/query/latest/docs/reference/QueryClient/#queryclientsetmutationdefaults
247
+ */
248
+ setMutationDefaults: (
249
+ mutationKey: TRPCMutationKey,
250
+ options:
251
+ | MutationOptions
252
+ | ((args: {
253
+ canonicalMutationFn: (input: unknown) => Promise<unknown>;
254
+ }) => MutationOptions),
255
+ ) => void;
256
+
257
+ /**
258
+ * @link https://tanstack.com/query/latest/docs/reference/QueryClient#queryclientgetmutationdefaults
259
+ */
260
+ getMutationDefaults: (
261
+ mutationKey: TRPCMutationKey,
262
+ ) => MutationOptions | undefined;
263
+
264
+ /**
265
+ * @link https://tanstack.com/query/latest/docs/reference/QueryClient#queryclientismutating
266
+ */
267
+ isMutating: (filters: { mutationKey: TRPCMutationKey }) => number;
243
268
  }
244
269
  export const TRPCContext = React.createContext?.(null as any);
@@ -13,6 +13,8 @@ export type TRPCQueryKey = [
13
13
  { input?: unknown; type?: Exclude<QueryType, 'any'> }?,
14
14
  ];
15
15
 
16
+ export type TRPCMutationKey = [readonly string[]]; // = [TRPCQueryKey[0]]
17
+
16
18
  type ProcedureOrRouter =
17
19
  | DecoratedMutation<any>
18
20
  | DecoratedQuery<any>
@@ -36,6 +38,8 @@ export function getQueryKeyInternal(
36
38
  const splitPath = path.flatMap((part) => part.split('.'));
37
39
 
38
40
  if (!input && (!type || type === 'any')) {
41
+ // this matches also all mutations (see `getMutationKeyInternal`)
42
+
39
43
  // for `utils.invalidate()` to match all queries (including vanilla react-query)
40
44
  // we don't want nested array if path is empty, i.e. `[]` instead of `[[]]`
41
45
  return splitPath.length ? [splitPath] : ([] as unknown as TRPCQueryKey);
@@ -69,6 +73,10 @@ export function getQueryKeyInternal(
69
73
  ];
70
74
  }
71
75
 
76
+ export function getMutationKeyInternal(path: readonly string[]) {
77
+ return getQueryKeyInternal(path, undefined, 'any') as TRPCMutationKey;
78
+ }
79
+
72
80
  type GetInfiniteQueryInput<
73
81
  TProcedureInput,
74
82
  TInputWithoutCursorAndDirection = Omit<
@@ -115,3 +123,16 @@ export type QueryKeyKnown<TInput, TType extends Exclude<QueryType, 'any'>> = [
115
123
  string[],
116
124
  { input?: GetQueryProcedureInput<TInput>; type: TType }?,
117
125
  ];
126
+
127
+ /**
128
+ * Method to extract the mutation key for a procedure
129
+ * @param procedure - procedure
130
+ * @link https://trpc.io/docs/v11/getQueryKey#mutations
131
+ */
132
+ export function getMutationKey<TProcedure extends DecoratedMutation<any>>(
133
+ procedure: TProcedure,
134
+ ) {
135
+ // @ts-expect-error - we don't expose _def on the type layer
136
+ const path = procedure._def().path as string[];
137
+ return getMutationKeyInternal(path);
138
+ }
@@ -19,7 +19,10 @@ import type { SSRState, TRPCContextState } from '../../internals/context';
19
19
  import { TRPCContext } from '../../internals/context';
20
20
  import { getClientArgs } from '../../internals/getClientArgs';
21
21
  import type { TRPCQueryKey } from '../../internals/getQueryKey';
22
- import { getQueryKeyInternal } from '../../internals/getQueryKey';
22
+ import {
23
+ getMutationKeyInternal,
24
+ getQueryKeyInternal,
25
+ } from '../../internals/getQueryKey';
23
26
  import { useHookResult } from '../../internals/useHookResult';
24
27
  import type {
25
28
  TRPCUseQueries,
@@ -28,23 +31,46 @@ import type {
28
31
  import { createUtilityFunctions } from '../../utils/createUtilityFunctions';
29
32
  import { createUseQueries } from '../proxy/useQueriesProxy';
30
33
  import type { CreateTRPCReactOptions, UseMutationOverride } from '../types';
31
- import type {
32
- CreateClient,
33
- TRPCProvider,
34
- TRPCQueryOptions,
35
- UseTRPCInfiniteQueryOptions,
36
- UseTRPCInfiniteQueryResult,
37
- UseTRPCMutationOptions,
38
- UseTRPCMutationResult,
39
- UseTRPCQueryOptions,
40
- UseTRPCQueryResult,
41
- UseTRPCSubscriptionOptions,
42
- UseTRPCSuspenseInfiniteQueryOptions,
43
- UseTRPCSuspenseInfiniteQueryResult,
44
- UseTRPCSuspenseQueryOptions,
45
- UseTRPCSuspenseQueryResult,
34
+ // import type { restartSubscriptionFn } from './types';
35
+ import {
36
+ getConnectingResult,
37
+ getErrorResult,
38
+ getIdleResult,
39
+ getPendingResult,
40
+ getStartingResult,
41
+ type CreateClient,
42
+ type TRPCProvider,
43
+ type TRPCQueryOptions,
44
+ type UseTRPCInfiniteQueryOptions,
45
+ type UseTRPCInfiniteQueryResult,
46
+ type UseTRPCMutationOptions,
47
+ type UseTRPCMutationResult,
48
+ type UseTRPCQueryOptions,
49
+ type UseTRPCQueryResult,
50
+ type UseTRPCSubscriptionOptions,
51
+ type UseTRPCSubscriptionResult,
52
+ type UseTRPCSuspenseInfiniteQueryOptions,
53
+ type UseTRPCSuspenseInfiniteQueryResult,
54
+ type UseTRPCSuspenseQueryOptions,
55
+ type UseTRPCSuspenseQueryResult,
46
56
  } from './types';
47
57
 
58
+ const trackResult = <
59
+ T extends UseTRPCSubscriptionResult<unknown, unknown, unknown>,
60
+ >(
61
+ result: T,
62
+ onTrackResult: (key: keyof T) => void,
63
+ ): T => {
64
+ const trackedResult = new Proxy(result, {
65
+ get(target, prop) {
66
+ onTrackResult(prop as keyof T);
67
+ return target[prop as keyof T];
68
+ },
69
+ });
70
+
71
+ return trackedResult;
72
+ };
73
+
48
74
  /**
49
75
  * @internal
50
76
  */
@@ -267,7 +293,7 @@ export function createRootHooks<
267
293
  const { client } = useContext();
268
294
  const queryClient = useQueryClient();
269
295
 
270
- const mutationKey = [path];
296
+ const mutationKey = getMutationKeyInternal(path);
271
297
 
272
298
  const defaultOpts = queryClient.defaultMutationOptions(
273
299
  queryClient.getMutationDefaults(mutationKey),
@@ -306,9 +332,69 @@ export function createRootHooks<
306
332
  path: readonly string[],
307
333
  input: unknown,
308
334
  opts: UseTRPCSubscriptionOptions<unknown, TError>,
309
- ) {
335
+ ): UseTRPCSubscriptionResult<unknown, unknown, TError> {
310
336
  const enabled = opts?.enabled ?? input !== skipToken;
311
337
  const queryKey = hashKey(getQueryKeyInternal(path, input, 'any'));
338
+
339
+ const trackedProps = React.useRef(
340
+ new Set<keyof UseTRPCSubscriptionResult<unknown, unknown, TError>>([]),
341
+ );
342
+
343
+ const addTrackedProp = React.useCallback(
344
+ (key: keyof UseTRPCSubscriptionResult<unknown, unknown, TError>) => {
345
+ trackedProps.current.add(key);
346
+ },
347
+ [],
348
+ );
349
+
350
+ // const restart = React.useRef<restartSubscriptionFn<unknown>>(() => {
351
+ // throw new Error('not implemented');
352
+ // });
353
+
354
+ const currentResult = React.useRef<
355
+ UseTRPCSubscriptionResult<unknown, unknown, TError>
356
+ >(
357
+ enabled
358
+ ? getStartingResult(/* restart.current */)
359
+ : getIdleResult(/* restart.current */),
360
+ );
361
+
362
+ const [subscriptionState, setSubscriptionState] = React.useState(
363
+ trackResult(currentResult.current, addTrackedProp),
364
+ );
365
+
366
+ const updateSubscriptionState = React.useCallback(
367
+ (
368
+ opts:
369
+ | UseTRPCSubscriptionResult<unknown, unknown, TError>
370
+ | ((
371
+ prev: UseTRPCSubscriptionResult<unknown, unknown, TError>,
372
+ ) => UseTRPCSubscriptionResult<unknown, unknown, TError>),
373
+ ) => {
374
+ const oldResult = currentResult.current;
375
+
376
+ const newResult =
377
+ typeof opts === 'function' ? opts(currentResult.current) : opts;
378
+
379
+ currentResult.current = newResult;
380
+
381
+ let shouldUpdate = false;
382
+
383
+ for (const key of trackedProps.current) {
384
+ if (oldResult[key] !== newResult[key]) {
385
+ shouldUpdate = true;
386
+ break;
387
+ }
388
+ }
389
+
390
+ if (shouldUpdate) {
391
+ setSubscriptionState(trackResult(newResult, addTrackedProp));
392
+ return;
393
+ }
394
+ },
395
+ [addTrackedProp],
396
+ );
397
+
312
398
  const { client } = useContext();
313
399
 
314
400
  const optsRef = React.useRef<typeof opts>(opts);
@@ -319,6 +405,7 @@ export function createRootHooks<
319
405
  return;
320
406
  }
321
407
  let isStopped = false;
408
+
322
409
  const subscription = client.subscription(
323
410
  path.join('.'),
324
411
  input ?? undefined,
@@ -331,6 +418,14 @@ export function createRootHooks<
331
418
  onData: (data) => {
332
419
  if (!isStopped) {
333
420
  optsRef.current.onData(data);
421
+
422
+ updateSubscriptionState((prev) => {
423
+ if (prev.isPending) {
424
+ return getPendingResult(prev, data);
425
+ }
426
+
427
+ return prev;
428
+ });
334
429
  }
335
430
  },
336
431
  onError: (err) => {
@@ -338,14 +433,47 @@ export function createRootHooks<
338
433
  optsRef.current.onError?.(err);
339
434
  }
340
435
  },
436
+ onStateChange: (state) => {
437
+ if (state.state === 'idle') {
438
+ updateSubscriptionState(getIdleResult(/* restart.current */));
439
+
440
+ return;
441
+ }
442
+
443
+ if (state.state === 'connecting') {
444
+ updateSubscriptionState((prev) => {
445
+ return getConnectingResult(prev, state.data ?? null);
446
+ });
447
+
448
+ return;
449
+ }
450
+
451
+ if (state.state === 'pending') {
452
+ updateSubscriptionState((prev) => getPendingResult(prev));
453
+ }
454
+
455
+ if (state.state === 'error') {
456
+ updateSubscriptionState((prev) => {
457
+ return getErrorResult(prev, state.data);
458
+ });
459
+ }
460
+ },
341
461
  },
342
462
  );
463
+
464
+ // const effectRestart = restart.current;
465
+
343
466
  return () => {
344
467
  isStopped = true;
345
468
  subscription.unsubscribe();
469
+
470
+ updateSubscriptionState(getIdleResult(/* effectRestart */));
346
471
  };
472
+
347
473
  // eslint-disable-next-line react-hooks/exhaustive-deps
348
474
  }, [queryKey, enabled]);
475
+
476
+ return subscriptionState;
349
477
  }
350
478
 
351
479
  function useInfiniteQuery(