@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
|
@@ -4,7 +4,9 @@ var reactQuery = require('@tanstack/react-query');
|
|
|
4
4
|
var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import');
|
|
5
5
|
var utils = require('./utils.js');
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/ function trpcQueryOptions(args) {
|
|
8
10
|
const { query, path, queryKey, opts } = args;
|
|
9
11
|
const queryClient = utils.unwrapLazyArg(args.queryClient);
|
|
10
12
|
const inputIsSkipToken = queryKey[1]?.input === reactQuery.skipToken;
|
|
@@ -2,7 +2,9 @@ import { skipToken, queryOptions } from '@tanstack/react-query';
|
|
|
2
2
|
import { isAsyncIterable } from '@trpc/server/unstable-core-do-not-import';
|
|
3
3
|
import { unwrapLazyArg, createTRPCOptionsResult, getClientArgs, buildQueryFromAsyncIterable } from './utils.mjs';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/ function trpcQueryOptions(args) {
|
|
6
8
|
const { query, path, queryKey, opts } = args;
|
|
7
9
|
const queryClient = unwrapLazyArg(args.queryClient);
|
|
8
10
|
const inputIsSkipToken = queryKey[1]?.input === skipToken;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { SkipToken } from '@tanstack/react-query';
|
|
2
2
|
import type { TRPCClientErrorLike, TRPCUntypedClient } from '@trpc/client';
|
|
3
3
|
import type { TRPCConnectionState } from '@trpc/client/unstable-internals';
|
|
4
4
|
import type { Unsubscribable } from '@trpc/server/observable';
|
|
@@ -7,14 +7,15 @@ import type { ResolverDef, TRPCQueryKey, TRPCQueryOptionsResult } from './types'
|
|
|
7
7
|
interface BaseTRPCSubscriptionOptionsIn<TOutput, TError> {
|
|
8
8
|
enabled?: boolean;
|
|
9
9
|
onStarted?: () => void;
|
|
10
|
-
onData
|
|
10
|
+
onData?: (data: inferAsyncIterableYield<TOutput>) => void;
|
|
11
11
|
onError?: (err: TError) => void;
|
|
12
|
+
onConnectionStateChange?: (state: TRPCConnectionState<TError>) => void;
|
|
12
13
|
}
|
|
13
14
|
interface UnusedSkipTokenTRPCSubscriptionOptionsIn<TOutput, TError> {
|
|
14
15
|
onStarted?: () => void;
|
|
15
|
-
onData
|
|
16
|
+
onData?: (data: inferAsyncIterableYield<TOutput>) => void;
|
|
16
17
|
onError?: (err: TError) => void;
|
|
17
|
-
onConnectionStateChange
|
|
18
|
+
onConnectionStateChange?: (state: TRPCConnectionState<TError>) => void;
|
|
18
19
|
}
|
|
19
20
|
interface TRPCSubscriptionOptionsOut<TOutput, TError> extends UnusedSkipTokenTRPCSubscriptionOptionsIn<TOutput, TError>, TRPCQueryOptionsResult {
|
|
20
21
|
enabled: boolean;
|
|
@@ -56,22 +57,17 @@ export interface TRPCSubscriptionErrorResult<TOutput, TError> extends TRPCSubscr
|
|
|
56
57
|
error: TError;
|
|
57
58
|
}
|
|
58
59
|
export type TRPCSubscriptionResult<TOutput, TError> = TRPCSubscriptionIdleResult<TOutput> | TRPCSubscriptionConnectingResult<TOutput, TError> | TRPCSubscriptionErrorResult<TOutput, TError> | TRPCSubscriptionPendingResult<TOutput>;
|
|
60
|
+
type AnyTRPCSubscriptionOptionsIn = BaseTRPCSubscriptionOptionsIn<unknown, unknown> | UnusedSkipTokenTRPCSubscriptionOptionsIn<unknown, unknown>;
|
|
61
|
+
type AnyTRPCSubscriptionOptionsOut = TRPCSubscriptionOptionsOut<unknown, unknown>;
|
|
62
|
+
/**
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
59
65
|
export declare const trpcSubscriptionOptions: (args: {
|
|
60
66
|
subscribe: typeof TRPCUntypedClient.prototype.subscription;
|
|
61
67
|
path: readonly string[];
|
|
62
68
|
queryKey: TRPCQueryKey;
|
|
63
|
-
opts:
|
|
64
|
-
}) =>
|
|
65
|
-
enabled: boolean;
|
|
66
|
-
subscribe: (innerOpts: UnusedSkipTokenTRPCSubscriptionOptionsIn<any, TRPCClientErrorLike<any>>) => Unsubscribable;
|
|
67
|
-
queryKey: TRPCQueryKey;
|
|
68
|
-
trpc: {
|
|
69
|
-
path: string;
|
|
70
|
-
};
|
|
71
|
-
onStarted?: () => void;
|
|
72
|
-
onData?: ((data: unknown) => void) | undefined;
|
|
73
|
-
onError?: ((err: unknown) => void) | undefined;
|
|
74
|
-
};
|
|
69
|
+
opts: AnyTRPCSubscriptionOptionsIn;
|
|
70
|
+
}) => AnyTRPCSubscriptionOptionsOut;
|
|
75
71
|
export declare function useSubscription<TOutput, TError>(opts: TRPCSubscriptionOptionsOut<TOutput, TError>): TRPCSubscriptionResult<TOutput, TError>;
|
|
76
72
|
export {};
|
|
77
73
|
//# sourceMappingURL=subscriptionOptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptionOptions.d.ts","sourceRoot":"","sources":["../../src/internals/subscriptionOptions.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"subscriptionOptions.d.ts","sourceRoot":"","sources":["../../src/internals/subscriptionOptions.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,12 @@ function _interopNamespaceDefault(e) {
|
|
|
23
23
|
|
|
24
24
|
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/ const trpcSubscriptionOptions = (args)=>{
|
|
27
29
|
const { subscribe, path, queryKey, opts } = args;
|
|
28
30
|
const input = queryKey[1]?.input;
|
|
29
|
-
const enabled = opts
|
|
31
|
+
const enabled = 'enabled' in opts ? !!opts.enabled : input !== reactQuery.skipToken;
|
|
30
32
|
const _subscribe = (innerOpts)=>{
|
|
31
33
|
return subscribe(path.join('.'), input ?? undefined, innerOpts);
|
|
32
34
|
};
|
|
@@ -47,7 +49,9 @@ function useSubscription(opts) {
|
|
|
47
49
|
const addTrackedProp = React__namespace.useCallback((key)=>{
|
|
48
50
|
trackedProps.current.add(key);
|
|
49
51
|
}, []);
|
|
50
|
-
const currentSubscriptionRef = React__namespace.useRef()
|
|
52
|
+
const currentSubscriptionRef = React__namespace.useRef(()=>{
|
|
53
|
+
// noop
|
|
54
|
+
});
|
|
51
55
|
const reset = React__namespace.useCallback(()=>{
|
|
52
56
|
// unsubscribe from the previous subscription
|
|
53
57
|
currentSubscriptionRef.current?.();
|
|
@@ -2,10 +2,12 @@ import { hashKey, skipToken } from '@tanstack/react-query';
|
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { createTRPCOptionsResult } from './utils.mjs';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/ const trpcSubscriptionOptions = (args)=>{
|
|
6
8
|
const { subscribe, path, queryKey, opts } = args;
|
|
7
9
|
const input = queryKey[1]?.input;
|
|
8
|
-
const enabled = opts
|
|
10
|
+
const enabled = 'enabled' in opts ? !!opts.enabled : input !== skipToken;
|
|
9
11
|
const _subscribe = (innerOpts)=>{
|
|
10
12
|
return subscribe(path.join('.'), input ?? undefined, innerOpts);
|
|
11
13
|
};
|
|
@@ -26,7 +28,9 @@ function useSubscription(opts) {
|
|
|
26
28
|
const addTrackedProp = React.useCallback((key)=>{
|
|
27
29
|
trackedProps.current.add(key);
|
|
28
30
|
}, []);
|
|
29
|
-
const currentSubscriptionRef = React.useRef()
|
|
31
|
+
const currentSubscriptionRef = React.useRef(()=>{
|
|
32
|
+
// noop
|
|
33
|
+
});
|
|
30
34
|
const reset = React.useCallback(()=>{
|
|
31
35
|
// unsubscribe from the previous subscription
|
|
32
36
|
currentSubscriptionRef.current?.();
|
|
@@ -1,13 +1,22 @@
|
|
|
1
1
|
import type { TRPCRequestOptions } from '@trpc/client';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
2
5
|
export type ResolverDef = {
|
|
3
6
|
input: any;
|
|
4
7
|
output: any;
|
|
5
8
|
transformer: boolean;
|
|
6
9
|
errorShape: any;
|
|
7
10
|
};
|
|
11
|
+
/**
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
8
14
|
export type ExtractCursorType<TInput> = TInput extends {
|
|
9
15
|
cursor?: any;
|
|
10
16
|
} ? TInput['cursor'] : unknown;
|
|
17
|
+
/**
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
11
20
|
export interface TRPCReactRequestOptions extends Omit<TRPCRequestOptions, 'signal'> {
|
|
12
21
|
/**
|
|
13
22
|
* Opt out of SSR for this query by passing `ssr: false`
|
|
@@ -18,18 +27,30 @@ export interface TRPCReactRequestOptions extends Omit<TRPCRequestOptions, 'signa
|
|
|
18
27
|
*/
|
|
19
28
|
abortOnUnmount?: boolean;
|
|
20
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @public
|
|
32
|
+
*/
|
|
21
33
|
export interface TRPCQueryBaseOptions {
|
|
22
34
|
/**
|
|
23
35
|
* tRPC-related options
|
|
24
36
|
*/
|
|
25
37
|
trpc?: TRPCReactRequestOptions;
|
|
26
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
27
42
|
export interface TRPCQueryOptionsResult {
|
|
28
43
|
trpc: {
|
|
29
44
|
path: string;
|
|
30
45
|
};
|
|
31
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* @public
|
|
49
|
+
*/
|
|
32
50
|
export type QueryType = 'any' | 'infinite' | 'query';
|
|
51
|
+
/**
|
|
52
|
+
* @public
|
|
53
|
+
*/
|
|
33
54
|
export type TRPCQueryKey = [
|
|
34
55
|
readonly string[],
|
|
35
56
|
{
|
|
@@ -37,5 +58,8 @@ export type TRPCQueryKey = [
|
|
|
37
58
|
type?: Exclude<QueryType, 'any'>;
|
|
38
59
|
}?
|
|
39
60
|
];
|
|
61
|
+
/**
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
40
64
|
export type TRPCMutationKey = [readonly string[]];
|
|
41
65
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,IAAI,MAAM,SAAS;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GACnE,MAAM,CAAC,QAAQ,CAAC,GAChB,OAAO,CAAC;AAEZ,MAAM,WAAW,uBAEf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC1C;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,MAAM,EAAE;IACjB;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;KAAE,CAAC;CACvD,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/internals/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,GAAG,CAAC;IACZ,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,MAAM,IAAI,MAAM,SAAS;IAAE,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,GACnE,MAAM,CAAC,QAAQ,CAAC,GAChB,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,uBAEf,SAAQ,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC;IAC1C;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,CAAC,EAAE,uBAAuB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,MAAM,EAAE;IACjB;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;KAAE,CAAC;CACvD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { QueryClient } from '@tanstack/react-query';
|
|
2
2
|
import type { QueryType, TRPCMutationKey, TRPCQueryKey, TRPCQueryOptionsResult } from './types';
|
|
3
3
|
/**
|
|
4
4
|
* @internal
|
|
@@ -21,8 +21,16 @@ export declare function buildQueryFromAsyncIterable(asyncIterable: AsyncIterable
|
|
|
21
21
|
* To allow easy interactions with groups of related queries, such as
|
|
22
22
|
* invalidating all queries of a router, we use an array as the path when
|
|
23
23
|
* storing in tanstack query.
|
|
24
|
-
|
|
24
|
+
*
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
25
27
|
export declare function getQueryKeyInternal(path: readonly string[], input: unknown, type: QueryType): TRPCQueryKey;
|
|
28
|
+
/**
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
26
31
|
export declare function getMutationKeyInternal(path: readonly string[]): TRPCMutationKey;
|
|
32
|
+
/**
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
27
35
|
export declare function unwrapLazyArg<T>(valueOrLazy: T | (() => T)): T;
|
|
28
36
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/internals/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/internals/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAMjC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EACpC,QAAQ,EAAE,YAAY,EACtB,IAAI,EAAE,QAAQ,EACd,cAAc,CAAC,EAAE;IACf,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;CACnC,mCAYF;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,EACrC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,YAAY,sBAsBvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,SAAS,GACd,YAAY,CA0Cd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,eAAe,CAKjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAE9D"}
|
package/dist/internals/utils.js
CHANGED
|
@@ -57,7 +57,9 @@ var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import'
|
|
|
57
57
|
* To allow easy interactions with groups of related queries, such as
|
|
58
58
|
* invalidating all queries of a router, we use an array as the path when
|
|
59
59
|
* storing in tanstack query.
|
|
60
|
-
|
|
60
|
+
*
|
|
61
|
+
* @internal
|
|
62
|
+
*/ function getQueryKeyInternal(path, input, type) {
|
|
61
63
|
// Construct a query key that is easy to destructure and flexible for
|
|
62
64
|
// partial selecting etc.
|
|
63
65
|
// https://github.com/trpc/trpc/issues/3128
|
|
@@ -93,14 +95,18 @@ var unstableCoreDoNotImport = require('@trpc/server/unstable-core-do-not-import'
|
|
|
93
95
|
}
|
|
94
96
|
];
|
|
95
97
|
}
|
|
96
|
-
|
|
98
|
+
/**
|
|
99
|
+
* @internal
|
|
100
|
+
*/ function getMutationKeyInternal(path) {
|
|
97
101
|
// some parts of the path may be dot-separated, split them up
|
|
98
102
|
const splitPath = path.flatMap((part)=>part.split('.'));
|
|
99
103
|
return splitPath.length ? [
|
|
100
104
|
splitPath
|
|
101
105
|
] : [];
|
|
102
106
|
}
|
|
103
|
-
|
|
107
|
+
/**
|
|
108
|
+
* @internal
|
|
109
|
+
*/ function unwrapLazyArg(valueOrLazy) {
|
|
104
110
|
return unstableCoreDoNotImport.isFunction(valueOrLazy) ? valueOrLazy() : valueOrLazy;
|
|
105
111
|
}
|
|
106
112
|
|
package/dist/internals/utils.mjs
CHANGED
|
@@ -55,7 +55,9 @@ import { isObject, isFunction } from '@trpc/server/unstable-core-do-not-import';
|
|
|
55
55
|
* To allow easy interactions with groups of related queries, such as
|
|
56
56
|
* invalidating all queries of a router, we use an array as the path when
|
|
57
57
|
* storing in tanstack query.
|
|
58
|
-
|
|
58
|
+
*
|
|
59
|
+
* @internal
|
|
60
|
+
*/ function getQueryKeyInternal(path, input, type) {
|
|
59
61
|
// Construct a query key that is easy to destructure and flexible for
|
|
60
62
|
// partial selecting etc.
|
|
61
63
|
// https://github.com/trpc/trpc/issues/3128
|
|
@@ -91,14 +93,18 @@ import { isObject, isFunction } from '@trpc/server/unstable-core-do-not-import';
|
|
|
91
93
|
}
|
|
92
94
|
];
|
|
93
95
|
}
|
|
94
|
-
|
|
96
|
+
/**
|
|
97
|
+
* @internal
|
|
98
|
+
*/ function getMutationKeyInternal(path) {
|
|
95
99
|
// some parts of the path may be dot-separated, split them up
|
|
96
100
|
const splitPath = path.flatMap((part)=>part.split('.'));
|
|
97
101
|
return splitPath.length ? [
|
|
98
102
|
splitPath
|
|
99
103
|
] : [];
|
|
100
104
|
}
|
|
101
|
-
|
|
105
|
+
/**
|
|
106
|
+
* @internal
|
|
107
|
+
*/ function unwrapLazyArg(valueOrLazy) {
|
|
102
108
|
return isFunction(valueOrLazy) ? valueOrLazy() : valueOrLazy;
|
|
103
109
|
}
|
|
104
110
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/tanstack-react-query",
|
|
3
|
-
"version": "11.0.0-rc.
|
|
3
|
+
"version": "11.0.0-rc.781+df4d4ede3",
|
|
4
4
|
"description": "TanStack React Query Integration for tRPC",
|
|
5
5
|
"author": "juliusmarminge",
|
|
6
6
|
"license": "MIT",
|
|
@@ -49,23 +49,23 @@
|
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
51
|
"@tanstack/react-query": "^5.62.8",
|
|
52
|
-
"@trpc/client": "11.0.0-rc.
|
|
53
|
-
"@trpc/server": "11.0.0-rc.
|
|
52
|
+
"@trpc/client": "11.0.0-rc.781+df4d4ede3",
|
|
53
|
+
"@trpc/server": "11.0.0-rc.781+df4d4ede3",
|
|
54
54
|
"react": ">=18.2.0",
|
|
55
55
|
"react-dom": ">=18.2.0",
|
|
56
56
|
"typescript": ">=5.7.2"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@tanstack/react-query": "^5.66.0",
|
|
60
|
-
"@trpc/client": "11.0.0-rc.
|
|
61
|
-
"@trpc/server": "11.0.0-rc.
|
|
60
|
+
"@trpc/client": "11.0.0-rc.781+df4d4ede3",
|
|
61
|
+
"@trpc/server": "11.0.0-rc.781+df4d4ede3",
|
|
62
62
|
"@types/node": "^20.10.0",
|
|
63
|
-
"@types/react": "^
|
|
63
|
+
"@types/react": "^19.0.0",
|
|
64
64
|
"eslint": "^8.57.0",
|
|
65
65
|
"event-source-polyfill": "^1.0.31",
|
|
66
66
|
"konn": "^0.7.0",
|
|
67
67
|
"react": "^19.0.0",
|
|
68
|
-
"react-dom": "^
|
|
68
|
+
"react-dom": "^19.0.0",
|
|
69
69
|
"rollup": "^4.9.5",
|
|
70
70
|
"tsx": "^4.0.0",
|
|
71
71
|
"typescript": "^5.6.2",
|
|
@@ -79,5 +79,5 @@
|
|
|
79
79
|
"funding": [
|
|
80
80
|
"https://trpc.io/sponsor"
|
|
81
81
|
],
|
|
82
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "df4d4ede3492c91a0846f683ef2f1d0ffeed3b09"
|
|
83
83
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,13 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { QueryClient } from '@tanstack/react-query';
|
|
2
|
+
import type { CreateTRPCClient } from '@trpc/client';
|
|
3
3
|
import type { AnyTRPCRouter } from '@trpc/server';
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
type TRPCOptionsProxy,
|
|
8
|
-
} from './createOptionsProxy';
|
|
5
|
+
import type { TRPCOptionsProxy } from './createOptionsProxy';
|
|
6
|
+
import { createTRPCOptionsProxy } from './createOptionsProxy';
|
|
9
7
|
|
|
10
|
-
export
|
|
8
|
+
export interface CreateTRPCContextResult<TRouter extends AnyTRPCRouter> {
|
|
9
|
+
TRPCProvider: React.FC<{
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
queryClient: QueryClient;
|
|
12
|
+
trpcClient: CreateTRPCClient<TRouter>;
|
|
13
|
+
}>;
|
|
14
|
+
useTRPC: () => TRPCOptionsProxy<TRouter>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a set of type-safe provider-consumers
|
|
18
|
+
*
|
|
19
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/setup#3a-setup-the-trpc-context-provider
|
|
20
|
+
*/
|
|
21
|
+
export function createTRPCContext<
|
|
22
|
+
TRouter extends AnyTRPCRouter,
|
|
23
|
+
>(): CreateTRPCContextResult<TRouter> {
|
|
11
24
|
const TRPCContext = React.createContext<TRPCOptionsProxy<TRouter> | null>(
|
|
12
25
|
null,
|
|
13
26
|
);
|
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
import type { DataTag } from '@tanstack/react-query';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
getUntypedClient,
|
|
5
|
-
TRPCUntypedClient,
|
|
6
|
-
type CreateTRPCClient,
|
|
7
|
-
type TRPCRequestOptions,
|
|
8
|
-
} from '@trpc/client';
|
|
9
|
-
import {
|
|
10
|
-
type AnyProcedure,
|
|
11
|
-
type inferProcedureInput,
|
|
12
|
-
type inferRouterContext,
|
|
13
|
-
type inferTransformedProcedureOutput,
|
|
14
|
-
type ProcedureType,
|
|
15
|
-
} from '@trpc/server';
|
|
1
|
+
import type { DataTag, QueryClient, QueryFilters } from '@tanstack/react-query';
|
|
2
|
+
import type { CreateTRPCClient, TRPCRequestOptions } from '@trpc/client';
|
|
3
|
+
import { getUntypedClient, TRPCUntypedClient } from '@trpc/client';
|
|
16
4
|
import type {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
} from '@trpc/server
|
|
5
|
+
AnyTRPCProcedure,
|
|
6
|
+
AnyTRPCRootTypes,
|
|
7
|
+
AnyTRPCRouter,
|
|
8
|
+
inferProcedureInput,
|
|
9
|
+
inferRouterContext,
|
|
10
|
+
inferTransformedProcedureOutput,
|
|
11
|
+
TRPCProcedureType,
|
|
12
|
+
TRPCRouterRecord,
|
|
13
|
+
} from '@trpc/server';
|
|
14
|
+
import { callTRPCProcedure, createTRPCRecursiveProxy } from '@trpc/server';
|
|
15
|
+
import type { MaybePromise } from '@trpc/server/unstable-core-do-not-import';
|
|
26
16
|
import {
|
|
27
17
|
trpcInfiniteQueryOptions,
|
|
28
18
|
type TRPCInfiniteQueryOptions,
|
|
@@ -54,6 +44,7 @@ export interface DecorateQueryKeyable {
|
|
|
54
44
|
* Calculate the TanStack Query Key for a Route
|
|
55
45
|
*
|
|
56
46
|
* @see https://tanstack.com/query/latest/docs/framework/react/guides/query-keys
|
|
47
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#queryKey
|
|
57
48
|
*/
|
|
58
49
|
queryKey: () => TRPCQueryKey;
|
|
59
50
|
|
|
@@ -61,6 +52,7 @@ export interface DecorateQueryKeyable {
|
|
|
61
52
|
* Calculate a TanStack Query Filter for a Route
|
|
62
53
|
*
|
|
63
54
|
* @see https://tanstack.com/query/latest/docs/framework/react/guides/filters
|
|
55
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#queryFilter
|
|
64
56
|
*/
|
|
65
57
|
queryFilter: (input?: undefined, filters?: QueryFilters) => QueryFilters;
|
|
66
58
|
}
|
|
@@ -88,12 +80,18 @@ export interface DecorateQueryProcedure<TDef extends ResolverDef> {
|
|
|
88
80
|
};
|
|
89
81
|
|
|
90
82
|
/**
|
|
83
|
+
* Create a set of type-safe query options that can be passed to `useQuery`, `prefetchQuery` etc.
|
|
84
|
+
*
|
|
91
85
|
* @see https://tanstack.com/query/latest/docs/framework/react/reference/queryOptions#queryoptions
|
|
86
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#queryOptions
|
|
92
87
|
*/
|
|
93
88
|
queryOptions: TRPCQueryOptions<TDef>;
|
|
94
89
|
|
|
95
90
|
/**
|
|
91
|
+
* Create a set of type-safe infinite query options that can be passed to `useInfiniteQuery`, `prefetchInfiniteQuery` etc.
|
|
92
|
+
*
|
|
96
93
|
* @see https://tanstack.com/query/latest/docs/framework/react/reference/infiniteQueryOptions#infinitequeryoptions
|
|
94
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#infiniteQueryOptions
|
|
97
95
|
*/
|
|
98
96
|
infiniteQueryOptions: TRPCInfiniteQueryOptions<TDef>;
|
|
99
97
|
|
|
@@ -101,6 +99,7 @@ export interface DecorateQueryProcedure<TDef extends ResolverDef> {
|
|
|
101
99
|
* Calculate the TanStack Query Key for a Query Procedure
|
|
102
100
|
*
|
|
103
101
|
* @see https://tanstack.com/query/latest/docs/framework/react/guides/query-keys
|
|
102
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#queryKey
|
|
104
103
|
*/
|
|
105
104
|
queryKey: (
|
|
106
105
|
input?: TDef['input'],
|
|
@@ -110,6 +109,7 @@ export interface DecorateQueryProcedure<TDef extends ResolverDef> {
|
|
|
110
109
|
* Calculate a TanStack Query Filter for a Query Procedure
|
|
111
110
|
*
|
|
112
111
|
* @see https://tanstack.com/query/latest/docs/framework/react/guides/filters
|
|
112
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#queryFilter
|
|
113
113
|
*/
|
|
114
114
|
queryFilter: (
|
|
115
115
|
input?: TDef['input'],
|
|
@@ -132,25 +132,31 @@ export interface DecorateMutationProcedure<TDef extends ResolverDef> {
|
|
|
132
132
|
};
|
|
133
133
|
|
|
134
134
|
/**
|
|
135
|
-
*
|
|
135
|
+
* Create a set of type-safe mutation options that can be passed to `useMutation`
|
|
136
|
+
*
|
|
137
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#mutationOptions
|
|
136
138
|
*/
|
|
137
139
|
mutationOptions: TRPCMutationOptions<TDef>;
|
|
138
140
|
|
|
139
141
|
/**
|
|
140
142
|
* Calculate the TanStack Mutation Key for a Mutation Procedure
|
|
143
|
+
*
|
|
144
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#mutationKey
|
|
141
145
|
*/
|
|
142
146
|
mutationKey: () => TRPCMutationKey;
|
|
143
147
|
}
|
|
144
148
|
|
|
145
149
|
export interface DecorateSubscriptionProcedure<TDef extends ResolverDef> {
|
|
146
150
|
/**
|
|
147
|
-
*
|
|
151
|
+
* Create a set of type-safe subscription options that can be passed to `useSubscription`
|
|
152
|
+
*
|
|
153
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/usage#subscriptionOptions
|
|
148
154
|
*/
|
|
149
155
|
subscriptionOptions: TRPCSubscriptionOptions<TDef>;
|
|
150
156
|
}
|
|
151
157
|
|
|
152
158
|
export type DecorateProcedure<
|
|
153
|
-
TType extends
|
|
159
|
+
TType extends TRPCProcedureType,
|
|
154
160
|
TDef extends ResolverDef,
|
|
155
161
|
> = TType extends 'query'
|
|
156
162
|
? DecorateQueryProcedure<TDef>
|
|
@@ -164,13 +170,13 @@ export type DecorateProcedure<
|
|
|
164
170
|
* @internal
|
|
165
171
|
*/
|
|
166
172
|
export type DecoratedProcedureUtilsRecord<
|
|
167
|
-
TRoot extends
|
|
168
|
-
TRecord extends
|
|
173
|
+
TRoot extends AnyTRPCRootTypes,
|
|
174
|
+
TRecord extends TRPCRouterRecord,
|
|
169
175
|
> = {
|
|
170
176
|
[TKey in keyof TRecord]: TRecord[TKey] extends infer $Value
|
|
171
|
-
? $Value extends
|
|
177
|
+
? $Value extends TRPCRouterRecord
|
|
172
178
|
? DecoratedProcedureUtilsRecord<TRoot, $Value> & DecorateQueryKeyable
|
|
173
|
-
: $Value extends
|
|
179
|
+
: $Value extends AnyTRPCProcedure
|
|
174
180
|
? DecorateProcedure<
|
|
175
181
|
$Value['_def']['type'],
|
|
176
182
|
{
|
|
@@ -184,7 +190,7 @@ export type DecoratedProcedureUtilsRecord<
|
|
|
184
190
|
: never;
|
|
185
191
|
};
|
|
186
192
|
|
|
187
|
-
export type TRPCOptionsProxy<TRouter extends
|
|
193
|
+
export type TRPCOptionsProxy<TRouter extends AnyTRPCRouter> =
|
|
188
194
|
DecoratedProcedureUtilsRecord<
|
|
189
195
|
TRouter['_def']['_config']['$types'],
|
|
190
196
|
TRouter['_def']['record']
|
|
@@ -198,18 +204,22 @@ export interface TRPCOptionsProxyOptionsBase {
|
|
|
198
204
|
};
|
|
199
205
|
}
|
|
200
206
|
|
|
201
|
-
export interface TRPCOptionsProxyOptionsInternal<
|
|
207
|
+
export interface TRPCOptionsProxyOptionsInternal<
|
|
208
|
+
TRouter extends AnyTRPCRouter,
|
|
209
|
+
> {
|
|
202
210
|
router: TRouter;
|
|
203
211
|
ctx:
|
|
204
212
|
| inferRouterContext<TRouter>
|
|
205
213
|
| (() => MaybePromise<inferRouterContext<TRouter>>);
|
|
206
214
|
}
|
|
207
215
|
|
|
208
|
-
export interface TRPCOptionsProxyOptionsExternal<
|
|
216
|
+
export interface TRPCOptionsProxyOptionsExternal<
|
|
217
|
+
TRouter extends AnyTRPCRouter,
|
|
218
|
+
> {
|
|
209
219
|
client: TRPCUntypedClient<TRouter> | CreateTRPCClient<TRouter>;
|
|
210
220
|
}
|
|
211
221
|
|
|
212
|
-
export type TRPCOptionsProxyOptions<TRouter extends
|
|
222
|
+
export type TRPCOptionsProxyOptions<TRouter extends AnyTRPCRouter> =
|
|
213
223
|
TRPCOptionsProxyOptionsBase &
|
|
214
224
|
(
|
|
215
225
|
| TRPCOptionsProxyOptionsInternal<TRouter>
|
|
@@ -232,14 +242,20 @@ function getQueryType(method: UtilsMethods) {
|
|
|
232
242
|
return map[method];
|
|
233
243
|
}
|
|
234
244
|
|
|
235
|
-
|
|
245
|
+
/**
|
|
246
|
+
* Create a typed proxy from your router types. Can also be used on the server.
|
|
247
|
+
*
|
|
248
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/setup#3b-setup-without-react-context
|
|
249
|
+
* @see https://trpc.io/docs/client/tanstack-react-query/server-components#5-create-a-trpc-caller-for-server-components
|
|
250
|
+
*/
|
|
251
|
+
export function createTRPCOptionsProxy<TRouter extends AnyTRPCRouter>(
|
|
236
252
|
opts: TRPCOptionsProxyOptions<TRouter>,
|
|
237
253
|
): TRPCOptionsProxy<TRouter> {
|
|
238
|
-
const callIt = (type:
|
|
254
|
+
const callIt = (type: TRPCProcedureType): any => {
|
|
239
255
|
return (path: string, input: unknown, trpcOpts: TRPCRequestOptions) => {
|
|
240
256
|
if ('router' in opts) {
|
|
241
257
|
return Promise.resolve(unwrapLazyArg(opts.ctx)).then((ctx) =>
|
|
242
|
-
|
|
258
|
+
callTRPCProcedure({
|
|
243
259
|
router: opts.router,
|
|
244
260
|
path: path,
|
|
245
261
|
getRawInput: async () => input,
|
|
@@ -259,7 +275,7 @@ export function createTRPCOptionsProxy<TRouter extends AnyRouter>(
|
|
|
259
275
|
};
|
|
260
276
|
};
|
|
261
277
|
|
|
262
|
-
return
|
|
278
|
+
return createTRPCRecursiveProxy(({ args, path: _path }) => {
|
|
263
279
|
const path = [..._path];
|
|
264
280
|
const utilName = path.pop() as UtilsMethods;
|
|
265
281
|
const [arg1, arg2] = args as any[];
|