@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 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
- mutationKey: (0, vue.computed)(() => getQueryKey(path, void 0)),
92
- mutationFn: async (payload) => trpc.mutation(joinedPath, payload, withVueQueryContext(splitTRPCOptions(firstArg).trpcOptions)),
93
- ...maybeToRefs(() => splitTRPCOptions(firstArg).options)
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
- queryKey: (0, vue.computed)(() => getQueryKey(path, (0, vue.toValue)(firstArg), "infinite")),
111
- queryFn: async ({ queryKey, pageParam, signal }) => trpc.query(joinedPath, {
112
- ...queryKey[1]?.input,
113
- cursor: pageParam
114
- }, {
115
- signal,
116
- ...withVueQueryContext(splitTRPCOptions(opts).trpcOptions)
117
- }),
118
- ...maybeToRefs(() => splitTRPCOptions(opts).options)
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, SkipToken, UseInfiniteQueryOptions, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType, UseQueriesResults, UseQueryOptions, UseQueryReturnType } from "@tanstack/vue-query";
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, UnwrapRef } from "vue";
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<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
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 UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TData = TQueryFnData, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<TQueries>, 'queryKey'> & {
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<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
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
- }>) => () => UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>>;
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<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, CursorType>>, 'queryKey' | keyof InitialPageParam> & {
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<UseMutationOptions<TData, TError, TVariables, TContext> & {
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, SkipToken, UseInfiniteQueryOptions, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType, UseQueriesResults, UseQueryOptions, UseQueryReturnType } from "@tanstack/vue-query";
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, UnwrapRef } from "vue";
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<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
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 UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TData = TQueryFnData, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<TQueries>, 'queryKey'> & {
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<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
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
- }>) => () => UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>>;
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<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey, CursorType>>, 'queryKey' | keyof InitialPageParam> & {
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<UseMutationOptions<TData, TError, TVariables, TContext> & {
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, toRefs } from "@vueuse/core";
6
- import { computed, isReactive, onScopeDispose, shallowRef, toValue, watch } from "vue";
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
- mutationKey: computed(() => getQueryKey(path, void 0)),
91
- mutationFn: async (payload) => trpc.mutation(joinedPath, payload, withVueQueryContext(splitTRPCOptions(firstArg).trpcOptions)),
92
- ...maybeToRefs(() => splitTRPCOptions(firstArg).options)
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
- queryKey: computed(() => getQueryKey(path, toValue(firstArg), "infinite")),
110
- queryFn: async ({ queryKey, pageParam, signal }) => trpc.query(joinedPath, {
111
- ...queryKey[1]?.input,
112
- cursor: pageParam
113
- }, {
114
- signal,
115
- ...withVueQueryContext(splitTRPCOptions(opts).trpcOptions)
116
- }),
117
- ...maybeToRefs(() => splitTRPCOptions(opts).options)
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.6.1",
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": "11",
44
+ "version": "12",
45
45
  "onFail": "warn"
46
46
  }
47
47
  },
48
48
  "peerDependencies": {
49
- "@tanstack/vue-query": "^5.92.9",
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.102.2",
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",