@falcondev-oss/trpc-vue-query 0.6.1 → 0.7.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.
- package/dist/index.cjs +21 -17
- package/dist/index.d.cts +22 -8
- package/dist/index.d.mts +22 -8
- package/dist/index.mjs +23 -19
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -35,9 +35,6 @@ function splitTRPCOptions(opts) {
|
|
|
35
35
|
options
|
|
36
36
|
};
|
|
37
37
|
}
|
|
38
|
-
function maybeToRefs(obj) {
|
|
39
|
-
return (0, _vueuse_core.toRefs)((0, vue.isReactive)(obj) ? obj : (0, _vueuse_core.toRef)(obj));
|
|
40
|
-
}
|
|
41
38
|
function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
42
39
|
return (0, _trpc_server_unstable_core_do_not_import.createRecursiveProxy)(({ args, path: _path }) => {
|
|
43
40
|
const path = [name, ..._path];
|
|
@@ -87,10 +84,13 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
|
87
84
|
if (prop === "setQueryData") return queryClient.setQueryData(getQueryKey(path, (0, vue.toValue)(opts), "query"), firstArg);
|
|
88
85
|
if (prop === "key") return getQueryKey(path, (0, vue.toValue)(firstArg), "query");
|
|
89
86
|
if (prop === "mutate") return trpc.mutation(joinedPath, firstArg, opts);
|
|
90
|
-
if (prop === "useMutation") return (0, _tanstack_vue_query.useMutation)({
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
if (prop === "useMutation") return (0, _tanstack_vue_query.useMutation)(() => {
|
|
88
|
+
const { trpcOptions, options } = splitTRPCOptions(firstArg);
|
|
89
|
+
return {
|
|
90
|
+
mutationKey: getQueryKey(path, void 0),
|
|
91
|
+
mutationFn: async (payload) => trpc.mutation(joinedPath, payload, withVueQueryContext(trpcOptions)),
|
|
92
|
+
...options
|
|
93
|
+
};
|
|
94
94
|
});
|
|
95
95
|
if (prop === "subscribe") return trpc.subscription(joinedPath, firstArg, opts);
|
|
96
96
|
if (prop === "useSubscription") {
|
|
@@ -106,16 +106,20 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
|
106
106
|
}, true);
|
|
107
107
|
return subscription.value;
|
|
108
108
|
}
|
|
109
|
-
if (prop === "useInfiniteQuery") return (0, _tanstack_vue_query.useInfiniteQuery)({
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
109
|
+
if (prop === "useInfiniteQuery") return (0, _tanstack_vue_query.useInfiniteQuery)(() => {
|
|
110
|
+
const input = (0, vue.toValue)(firstArg);
|
|
111
|
+
const { trpcOptions, options } = splitTRPCOptions(opts);
|
|
112
|
+
return {
|
|
113
|
+
queryKey: getQueryKey(path, input, "infinite"),
|
|
114
|
+
queryFn: async ({ pageParam, signal }) => trpc.query(joinedPath, {
|
|
115
|
+
...input,
|
|
116
|
+
cursor: pageParam
|
|
117
|
+
}, {
|
|
118
|
+
signal,
|
|
119
|
+
...withVueQueryContext(trpcOptions)
|
|
120
|
+
}),
|
|
121
|
+
...options
|
|
122
|
+
};
|
|
119
123
|
});
|
|
120
124
|
throw new Error(`Method '.${prop}()' not supported`);
|
|
121
125
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { InfiniteData, InitialPageParam, QueryClient, QueryKey,
|
|
1
|
+
import { InfiniteData, InfiniteQueryObserverOptions, InitialPageParam, MutationOptions, QueryClient, QueryKey, QueryOptions, SkipToken, UseInfiniteQueryReturnType, UseMutationReturnType, UseQueriesResults, UseQueryReturnType } from "@tanstack/vue-query";
|
|
2
2
|
import { CreateTRPCClientOptions, OperationContext, TRPCClientErrorLike, TRPCRequestOptions } from "@trpc/client";
|
|
3
3
|
import { AnyTRPCMutationProcedure, AnyTRPCProcedure, AnyTRPCQueryProcedure, AnyTRPCRouter, AnyTRPCSubscriptionProcedure, inferProcedureInput, inferProcedureOutput, inferTransformedProcedureOutput } from "@trpc/server";
|
|
4
4
|
import { Unsubscribable } from "@trpc/server/observable";
|
|
5
|
-
import { MaybeRefOrGetter, Ref
|
|
5
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
6
6
|
//#region src/types.d.ts
|
|
7
7
|
type inferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : T;
|
|
8
|
+
/** Not re-exported from vue-query's root, so we restate it. */
|
|
9
|
+
type ShallowOption = {
|
|
10
|
+
shallow?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** vue-query's plain `QueryOptions` minus the key, which we build from the procedure path. */
|
|
13
|
+
type KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey> = Omit<QueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, 'queryKey'>;
|
|
14
|
+
/**
|
|
15
|
+
* vue-query has no plain `QueryOptions` counterpart for infinite queries, so we assemble one the
|
|
16
|
+
* same way it does: core observer options, whose `queryKey` is already plain, with `enabled`
|
|
17
|
+
* widened to a ref or getter.
|
|
18
|
+
*/
|
|
19
|
+
type PlainKeyInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey, TPageParam> = { [Property in keyof InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>]: Property extends 'enabled' ? MaybeRefOrGetter<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>[Property]> : InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>[Property]; } & ShallowOption;
|
|
8
20
|
type TRPCSubscriptionObserver<TValue, TError> = {
|
|
9
21
|
onStarted: (opts: {
|
|
10
22
|
context: OperationContext | undefined;
|
|
@@ -18,23 +30,25 @@ type ArrayElement<T> = T extends readonly unknown[] ? T[number] : never;
|
|
|
18
30
|
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
|
19
31
|
type Exact<Shape, T extends Shape> = Shape extends Primitive ? Shape : Shape extends object ? { [Key in keyof T]: Key extends keyof Shape ? T[Key] extends Date ? T[Key] : T[Key] extends unknown[] ? Array<Exact<ArrayElement<Shape[Key]>, ArrayElement<T[Key]>>> : T[Key] extends readonly unknown[] ? ReadonlyArray<Exact<ArrayElement<Shape[Key]>, ArrayElement<T[Key]>>> : T[Key] extends object ? Exact<Shape[Key], T[Key]> : T[Key] : never; } : Shape;
|
|
20
32
|
type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = TProcedure extends AnyTRPCQueryProcedure ? {
|
|
21
|
-
useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<
|
|
33
|
+
useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> & {
|
|
22
34
|
trpc?: TRPCRequestOptions;
|
|
23
35
|
queryKey?: TQueryKey;
|
|
24
36
|
}>) => UseQueryReturnType<TData, TError>;
|
|
25
37
|
useQueries: <TQueryFnData extends {
|
|
26
38
|
output: inferTransformedProcedureOutput<TRouter, TProcedure>;
|
|
27
39
|
input: inferProcedureInput<TProcedure>;
|
|
28
|
-
}, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends
|
|
40
|
+
}, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TData = TQueryFnData, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<TQueries & {
|
|
29
41
|
trpc?: TRPCRequestOptions;
|
|
30
42
|
queryKey?: never;
|
|
31
43
|
combine?: (result: UseQueriesResults<TQueries[]>) => TCombinedResult;
|
|
32
44
|
shallow?: boolean;
|
|
33
45
|
}>) => Readonly<Ref<TCombinedResult>>;
|
|
34
|
-
queryOptions: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<
|
|
46
|
+
queryOptions: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> & {
|
|
35
47
|
trpc?: TRPCRequestOptions;
|
|
36
48
|
queryKey?: TQueryKey;
|
|
37
|
-
}>) => () =>
|
|
49
|
+
}>) => () => KeylessQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> & {
|
|
50
|
+
queryKey: TQueryKey;
|
|
51
|
+
};
|
|
38
52
|
query: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: TRPCRequestOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
|
|
39
53
|
invalidate: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => Promise<void>;
|
|
40
54
|
setQueryData: <TInput extends inferProcedureInput<TProcedure>>(updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => ReturnType<QueryClient['setQueryData']>;
|
|
@@ -42,13 +56,13 @@ type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyT
|
|
|
42
56
|
} & (TProcedure['_def']['$types']['input'] extends {
|
|
43
57
|
cursor?: infer CursorType;
|
|
44
58
|
} ? {
|
|
45
|
-
useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData extends InfiniteData<any> = InfiniteData<TQueryFnData>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<
|
|
59
|
+
useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData extends InfiniteData<any> = InfiniteData<TQueryFnData>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<PlainKeyInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, CursorType>, 'queryKey' | keyof InitialPageParam> & {
|
|
46
60
|
trpc?: TRPCRequestOptions;
|
|
47
61
|
queryKey?: TQueryKey;
|
|
48
62
|
} & (undefined extends TProcedure['_def']['$types']['input']['cursor'] ? Partial<InitialPageParam<CursorType>> : InitialPageParam<CursorType>)>) => UseInfiniteQueryReturnType<TData, TError>;
|
|
49
63
|
} : object) : TProcedure extends AnyTRPCMutationProcedure ? {
|
|
50
64
|
mutate: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: TRPCRequestOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
|
|
51
|
-
useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<
|
|
65
|
+
useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<MutationOptions<TData, TError, TVariables, TContext> & {
|
|
52
66
|
trpc?: TRPCRequestOptions;
|
|
53
67
|
}>) => UseMutationReturnType<TData, TError, TVariables, TContext>;
|
|
54
68
|
} : TProcedure extends AnyTRPCSubscriptionProcedure ? {
|
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import { InfiniteData, InitialPageParam, QueryClient, QueryKey,
|
|
1
|
+
import { InfiniteData, InfiniteQueryObserverOptions, InitialPageParam, MutationOptions, QueryClient, QueryKey, QueryOptions, SkipToken, UseInfiniteQueryReturnType, UseMutationReturnType, UseQueriesResults, UseQueryReturnType } from "@tanstack/vue-query";
|
|
2
2
|
import { CreateTRPCClientOptions, OperationContext, TRPCClientErrorLike, TRPCRequestOptions } from "@trpc/client";
|
|
3
3
|
import { AnyTRPCMutationProcedure, AnyTRPCProcedure, AnyTRPCQueryProcedure, AnyTRPCRouter, AnyTRPCSubscriptionProcedure, inferProcedureInput, inferProcedureOutput, inferTransformedProcedureOutput } from "@trpc/server";
|
|
4
|
-
import { MaybeRefOrGetter, Ref
|
|
4
|
+
import { MaybeRefOrGetter, Ref } from "vue";
|
|
5
5
|
import { Unsubscribable } from "@trpc/server/observable";
|
|
6
6
|
//#region src/types.d.ts
|
|
7
7
|
type inferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : T;
|
|
8
|
+
/** Not re-exported from vue-query's root, so we restate it. */
|
|
9
|
+
type ShallowOption = {
|
|
10
|
+
shallow?: boolean;
|
|
11
|
+
};
|
|
12
|
+
/** vue-query's plain `QueryOptions` minus the key, which we build from the procedure path. */
|
|
13
|
+
type KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey extends QueryKey> = Omit<QueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, 'queryKey'>;
|
|
14
|
+
/**
|
|
15
|
+
* vue-query has no plain `QueryOptions` counterpart for infinite queries, so we assemble one the
|
|
16
|
+
* same way it does: core observer options, whose `queryKey` is already plain, with `enabled`
|
|
17
|
+
* widened to a ref or getter.
|
|
18
|
+
*/
|
|
19
|
+
type PlainKeyInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey extends QueryKey, TPageParam> = { [Property in keyof InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>]: Property extends 'enabled' ? MaybeRefOrGetter<InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>[Property]> : InfiniteQueryObserverOptions<TQueryFnData, TError, TData, TQueryKey, TPageParam>[Property]; } & ShallowOption;
|
|
8
20
|
type TRPCSubscriptionObserver<TValue, TError> = {
|
|
9
21
|
onStarted: (opts: {
|
|
10
22
|
context: OperationContext | undefined;
|
|
@@ -18,23 +30,25 @@ type ArrayElement<T> = T extends readonly unknown[] ? T[number] : never;
|
|
|
18
30
|
type Primitive = null | undefined | string | number | boolean | symbol | bigint;
|
|
19
31
|
type Exact<Shape, T extends Shape> = Shape extends Primitive ? Shape : Shape extends object ? { [Key in keyof T]: Key extends keyof Shape ? T[Key] extends Date ? T[Key] : T[Key] extends unknown[] ? Array<Exact<ArrayElement<Shape[Key]>, ArrayElement<T[Key]>>> : T[Key] extends readonly unknown[] ? ReadonlyArray<Exact<ArrayElement<Shape[Key]>, ArrayElement<T[Key]>>> : T[Key] extends object ? Exact<Shape[Key], T[Key]> : T[Key] : never; } : Shape;
|
|
20
32
|
type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = TProcedure extends AnyTRPCQueryProcedure ? {
|
|
21
|
-
useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<
|
|
33
|
+
useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> & {
|
|
22
34
|
trpc?: TRPCRequestOptions;
|
|
23
35
|
queryKey?: TQueryKey;
|
|
24
36
|
}>) => UseQueryReturnType<TData, TError>;
|
|
25
37
|
useQueries: <TQueryFnData extends {
|
|
26
38
|
output: inferTransformedProcedureOutput<TRouter, TProcedure>;
|
|
27
39
|
input: inferProcedureInput<TProcedure>;
|
|
28
|
-
}, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends
|
|
40
|
+
}, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TData = TQueryFnData, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<TQueries & {
|
|
29
41
|
trpc?: TRPCRequestOptions;
|
|
30
42
|
queryKey?: never;
|
|
31
43
|
combine?: (result: UseQueriesResults<TQueries[]>) => TCombinedResult;
|
|
32
44
|
shallow?: boolean;
|
|
33
45
|
}>) => Readonly<Ref<TCombinedResult>>;
|
|
34
|
-
queryOptions: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<
|
|
46
|
+
queryOptions: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData = TQueryFnData>(input: inferProcedureInput<TProcedure> extends void ? inferProcedureInput<TProcedure> | Ref<inferProcedureInput<TProcedure> | SkipToken> | (() => inferProcedureInput<TProcedure> | SkipToken) : Ref<Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken> | (() => Exact<inferProcedureInput<TProcedure>, TInput> | SkipToken), opts?: MaybeRefOrGetter<KeylessQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey> & {
|
|
35
47
|
trpc?: TRPCRequestOptions;
|
|
36
48
|
queryKey?: TQueryKey;
|
|
37
|
-
}>) => () =>
|
|
49
|
+
}>) => () => KeylessQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey> & {
|
|
50
|
+
queryKey: TQueryKey;
|
|
51
|
+
};
|
|
38
52
|
query: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: TRPCRequestOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
|
|
39
53
|
invalidate: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => Promise<void>;
|
|
40
54
|
setQueryData: <TInput extends inferProcedureInput<TProcedure>>(updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => ReturnType<QueryClient['setQueryData']>;
|
|
@@ -42,13 +56,13 @@ type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyT
|
|
|
42
56
|
} & (TProcedure['_def']['$types']['input'] extends {
|
|
43
57
|
cursor?: infer CursorType;
|
|
44
58
|
} ? {
|
|
45
|
-
useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData extends InfiniteData<any> = InfiniteData<TQueryFnData>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<
|
|
59
|
+
useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TData extends InfiniteData<any> = InfiniteData<TQueryFnData>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<PlainKeyInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, CursorType>, 'queryKey' | keyof InitialPageParam> & {
|
|
46
60
|
trpc?: TRPCRequestOptions;
|
|
47
61
|
queryKey?: TQueryKey;
|
|
48
62
|
} & (undefined extends TProcedure['_def']['$types']['input']['cursor'] ? Partial<InitialPageParam<CursorType>> : InitialPageParam<CursorType>)>) => UseInfiniteQueryReturnType<TData, TError>;
|
|
49
63
|
} : object) : TProcedure extends AnyTRPCMutationProcedure ? {
|
|
50
64
|
mutate: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: TRPCRequestOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
|
|
51
|
-
useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<
|
|
65
|
+
useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<MutationOptions<TData, TError, TVariables, TContext> & {
|
|
52
66
|
trpc?: TRPCRequestOptions;
|
|
53
67
|
}>) => UseMutationReturnType<TData, TError, TVariables, TContext>;
|
|
54
68
|
} : TProcedure extends AnyTRPCSubscriptionProcedure ? {
|
package/dist/index.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { queryOptions, skipToken, useInfiniteQuery, useMutation, useQueries, use
|
|
|
2
2
|
import { createTRPCUntypedClient } from "@trpc/client";
|
|
3
3
|
import { createTRPCFlatProxy } from "@trpc/server";
|
|
4
4
|
import { createRecursiveProxy } from "@trpc/server/unstable-core-do-not-import";
|
|
5
|
-
import { toRef
|
|
6
|
-
import { computed,
|
|
5
|
+
import { toRef } from "@vueuse/core";
|
|
6
|
+
import { computed, onScopeDispose, shallowRef, toValue, watch } from "vue";
|
|
7
7
|
//#region src/index.ts
|
|
8
8
|
function getQueryKey(path, input, type) {
|
|
9
9
|
const splitPath = path.flatMap((part) => part.split("."));
|
|
@@ -34,9 +34,6 @@ function splitTRPCOptions(opts) {
|
|
|
34
34
|
options
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
|
-
function maybeToRefs(obj) {
|
|
38
|
-
return toRefs(isReactive(obj) ? obj : toRef(obj));
|
|
39
|
-
}
|
|
40
37
|
function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
41
38
|
return createRecursiveProxy(({ args, path: _path }) => {
|
|
42
39
|
const path = [name, ..._path];
|
|
@@ -86,10 +83,13 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
|
86
83
|
if (prop === "setQueryData") return queryClient.setQueryData(getQueryKey(path, toValue(opts), "query"), firstArg);
|
|
87
84
|
if (prop === "key") return getQueryKey(path, toValue(firstArg), "query");
|
|
88
85
|
if (prop === "mutate") return trpc.mutation(joinedPath, firstArg, opts);
|
|
89
|
-
if (prop === "useMutation") return useMutation({
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
if (prop === "useMutation") return useMutation(() => {
|
|
87
|
+
const { trpcOptions, options } = splitTRPCOptions(firstArg);
|
|
88
|
+
return {
|
|
89
|
+
mutationKey: getQueryKey(path, void 0),
|
|
90
|
+
mutationFn: async (payload) => trpc.mutation(joinedPath, payload, withVueQueryContext(trpcOptions)),
|
|
91
|
+
...options
|
|
92
|
+
};
|
|
93
93
|
});
|
|
94
94
|
if (prop === "subscribe") return trpc.subscription(joinedPath, firstArg, opts);
|
|
95
95
|
if (prop === "useSubscription") {
|
|
@@ -105,16 +105,20 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
|
|
|
105
105
|
}, true);
|
|
106
106
|
return subscription.value;
|
|
107
107
|
}
|
|
108
|
-
if (prop === "useInfiniteQuery") return useInfiniteQuery({
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
108
|
+
if (prop === "useInfiniteQuery") return useInfiniteQuery(() => {
|
|
109
|
+
const input = toValue(firstArg);
|
|
110
|
+
const { trpcOptions, options } = splitTRPCOptions(opts);
|
|
111
|
+
return {
|
|
112
|
+
queryKey: getQueryKey(path, input, "infinite"),
|
|
113
|
+
queryFn: async ({ pageParam, signal }) => trpc.query(joinedPath, {
|
|
114
|
+
...input,
|
|
115
|
+
cursor: pageParam
|
|
116
|
+
}, {
|
|
117
|
+
signal,
|
|
118
|
+
...withVueQueryContext(trpcOptions)
|
|
119
|
+
}),
|
|
120
|
+
...options
|
|
121
|
+
};
|
|
118
122
|
});
|
|
119
123
|
throw new Error(`Method '.${prop}()' not supported`);
|
|
120
124
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@falcondev-oss/trpc-vue-query",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.7.0",
|
|
5
5
|
"description": "A tRPC wrapper around '@tanstack/vue-query'",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
@@ -41,12 +41,12 @@
|
|
|
41
41
|
},
|
|
42
42
|
"packageManager": {
|
|
43
43
|
"name": "pnpm",
|
|
44
|
-
"version": "
|
|
44
|
+
"version": "12",
|
|
45
45
|
"onFail": "warn"
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"@tanstack/vue-query": "^5.
|
|
49
|
+
"@tanstack/vue-query": "^5.102.0",
|
|
50
50
|
"@trpc/client": "^11.13.4",
|
|
51
51
|
"@trpc/server": "^11.13.4",
|
|
52
52
|
"vue": "^3.5.30"
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@commitlint/cli": "^21.2.2",
|
|
59
59
|
"@falcondev-oss/configs": "^6.0.6",
|
|
60
|
-
"@tanstack/vue-query": "^5.
|
|
60
|
+
"@tanstack/vue-query": "^5.103.2",
|
|
61
61
|
"@trpc/client": "11.18.0",
|
|
62
62
|
"@trpc/server": "11.18.0",
|
|
63
63
|
"@types/ws": "^8.18.1",
|