@falcondev-oss/trpc-vue-query 0.5.0-rc.1 → 0.5.0-rc.10

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
@@ -58,17 +58,36 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
58
58
  if (prop === "query") {
59
59
  return trpc.query(joinedPath, firstArg, opts);
60
60
  }
61
- if (prop === "useQuery") {
62
- const { trpc: trpcOptions, ...queryOptions } = opts;
63
- return (0, import_vue_query.useQuery)({
64
- queryKey: (0, import_vue.computed)(() => getQueryKey(path, (0, import_core.toValue)(firstArg), "query")),
65
- queryFn: async ({ queryKey, signal }) => trpc.query(joinedPath, queryKey[1]?.input, {
66
- signal,
67
- ...trpcOptions
61
+ function createQuery(_input, { trpcOptions, queryOptions }) {
62
+ const input = (0, import_core.toValue)(_input);
63
+ return (0, import_vue_query.queryOptions)({
64
+ queryKey: (0, import_vue.computed)(() => getQueryKey(path, input, "query")),
65
+ queryFn: async ({ signal }) => ({
66
+ output: await trpc.query(joinedPath, input, {
67
+ signal,
68
+ ...trpcOptions
69
+ }),
70
+ input
68
71
  }),
69
72
  ...maybeToRefs(queryOptions)
70
73
  });
71
74
  }
75
+ if (prop === "useQuery") {
76
+ const { trpc: trpcOptions, ...queryOptions } = opts;
77
+ const input = firstArg;
78
+ return (0, import_vue_query.useQuery)(createQuery(input, { trpcOptions, queryOptions }));
79
+ }
80
+ if (prop === "useQueries") {
81
+ const { trpc: trpcOptions, combine, shallow, ...queryOptions } = opts;
82
+ const inputs = firstArg;
83
+ return (0, import_vue_query.useQueries)({
84
+ queries: (0, import_vue.computed)(
85
+ () => (0, import_core.toValue)(inputs).map((i) => createQuery(i, { trpcOptions, queryOptions }))
86
+ ),
87
+ combine,
88
+ ...maybeToRefs({ shallow })
89
+ });
90
+ }
72
91
  if (prop === "invalidate") {
73
92
  return queryClient.invalidateQueries({
74
93
  queryKey: getQueryKey(path, (0, import_core.toValue)(firstArg), "query")
package/dist/index.d.cts CHANGED
@@ -1,45 +1,58 @@
1
- import { QueryKey, UseQueryOptions, UseQueryReturnType, QueryClient, InfiniteData, UseInfiniteQueryOptions, InitialPageParam, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType } from '@tanstack/vue-query';
1
+ import { QueryKey, UseQueryOptions, UseQueryReturnType, UseQueriesResults, QueryClient, InfiniteData, UseInfiniteQueryOptions, InitialPageParam, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType } from '@tanstack/vue-query';
2
2
  import { TRPCClientErrorLike, TRPCRequestOptions, OperationContext, CreateTRPCClientOptions } from '@trpc/client';
3
3
  import { AnyTRPCRouter, AnyTRPCProcedure, AnyTRPCQueryProcedure, inferTransformedProcedureOutput, inferProcedureInput, AnyTRPCMutationProcedure, AnyTRPCSubscriptionProcedure, inferProcedureOutput } from '@trpc/server';
4
4
  import { Unsubscribable } from '@trpc/server/observable';
5
5
  import { ProcedureOptions } from '@trpc/server/unstable-core-do-not-import';
6
- import { MaybeRefOrGetter, UnwrapRef } from 'vue';
6
+ import { MaybeRefOrGetter, UnwrapRef, Ref } from 'vue';
7
7
 
8
+ type inferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : T;
8
9
  type TRPCSubscriptionObserver<TValue, TError> = {
9
10
  onStarted: (opts: {
10
11
  context: OperationContext | undefined;
11
12
  }) => void;
12
- onData: (value: TValue) => void;
13
+ onData: (value: inferAsyncIterableYield<TValue>) => void;
13
14
  onError: (err: TError) => void;
14
15
  onStopped: () => void;
15
16
  onComplete: () => void;
16
17
  };
17
- type Resolver<TRouter extends AnyTRPCRouter, TProcedure extends AnyTRPCProcedure> = (input: inferProcedureInput<TProcedure>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
18
- type SubscriptionResolver<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = (input: inferProcedureInput<TProcedure>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
18
+ type ArrayElement<T> = T extends readonly unknown[] ? T[number] : never;
19
+ type Primitive = null | undefined | string | number | boolean | symbol | bigint;
20
+ type Exact<Shape, T extends Shape> = Shape extends Primitive ? Shape : Shape extends object ? {
21
+ [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;
22
+ } : Shape;
19
23
  type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = TProcedure extends AnyTRPCQueryProcedure ? {
20
- useQuery: <TQueryFnData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(input: MaybeRefOrGetter<inferProcedureInput<TProcedure>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
24
+ useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TData extends TQueryFnData, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
21
25
  trpc?: TRPCRequestOptions;
22
26
  queryKey?: TQueryKey;
23
27
  }>) => UseQueryReturnType<TData, TError>;
24
- query: Resolver<TRouter, TProcedure>;
25
- invalidate: (input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => Promise<void>;
26
- setQueryData: (updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => ReturnType<QueryClient['setQueryData']>;
27
- key: (input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => QueryKey;
28
+ useQueries: <TQueryFnData extends {
29
+ output: inferTransformedProcedureOutput<TRouter, TProcedure>;
30
+ input: inferProcedureInput<TProcedure>;
31
+ }, TError extends TRPCClientErrorLike<TRouter>, TData extends TQueryFnData, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<TQueries>, 'queryKey'> & {
32
+ trpc?: TRPCRequestOptions;
33
+ queryKey?: never;
34
+ combine?: (result: UseQueriesResults<TQueries[]>) => TCombinedResult;
35
+ shallow?: boolean;
36
+ }>) => Readonly<Ref<TCombinedResult>>;
37
+ query: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
38
+ invalidate: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => Promise<void>;
39
+ setQueryData: <TInput extends inferProcedureInput<TProcedure>>(updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => ReturnType<QueryClient['setQueryData']>;
40
+ key: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => QueryKey;
28
41
  } & (TProcedure['_def']['$types']['input'] extends {
29
42
  cursor?: infer CursorType;
30
43
  } ? {
31
- useInfiniteQuery: <TQueryFnData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TData = InfiniteData<TQueryFnData>, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(input: MaybeRefOrGetter<Omit<inferProcedureInput<TProcedure>, 'cursor'>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey' | keyof InitialPageParam> & {
44
+ useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TData extends InfiniteData<TQueryFnData>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey' | keyof InitialPageParam> & {
32
45
  trpc?: TRPCRequestOptions;
33
46
  queryKey?: TQueryKey;
34
47
  } & (undefined extends TProcedure['_def']['$types']['input']['cursor'] ? Partial<InitialPageParam<CursorType>> : InitialPageParam<CursorType>)>) => UseInfiniteQueryReturnType<TData, TError>;
35
48
  } : object) : TProcedure extends AnyTRPCMutationProcedure ? {
36
- mutate: Resolver<TRouter, TProcedure>;
49
+ mutate: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
37
50
  useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<UseMutationOptions<TData, TError, TVariables, TContext> & {
38
51
  trpc?: TRPCRequestOptions;
39
52
  }>) => UseMutationReturnType<TData, TError, TVariables, TContext>;
40
53
  } : TProcedure extends AnyTRPCSubscriptionProcedure ? {
41
- subscribe: SubscriptionResolver<TProcedure, TRouter>;
42
- useSubscription: (input: MaybeRefOrGetter<inferProcedureInput<TProcedure>>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
54
+ subscribe: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
55
+ useSubscription: <TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
43
56
  } : never;
44
57
  /**
45
58
  * @internal
@@ -53,9 +66,10 @@ type TRPCQueryKey = [readonly string[], {
53
66
  input?: unknown;
54
67
  type?: QueryType;
55
68
  }?];
69
+
56
70
  declare function createTRPCVueQueryClient<TRouter extends AnyTRPCRouter>({ trpc, queryClient, }: {
57
71
  queryClient: QueryClient;
58
72
  trpc: CreateTRPCClientOptions<TRouter>;
59
73
  }): DecoratedProcedureRecord<TRouter["_def"]["record"], TRouter>;
60
74
 
61
- export { type TRPCQueryKey, createTRPCVueQueryClient };
75
+ export { type Exact, type TRPCQueryKey, createTRPCVueQueryClient };
package/dist/index.d.ts CHANGED
@@ -1,45 +1,58 @@
1
- import { QueryKey, UseQueryOptions, UseQueryReturnType, QueryClient, InfiniteData, UseInfiniteQueryOptions, InitialPageParam, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType } from '@tanstack/vue-query';
1
+ import { QueryKey, UseQueryOptions, UseQueryReturnType, UseQueriesResults, QueryClient, InfiniteData, UseInfiniteQueryOptions, InitialPageParam, UseInfiniteQueryReturnType, UseMutationOptions, UseMutationReturnType } from '@tanstack/vue-query';
2
2
  import { TRPCClientErrorLike, TRPCRequestOptions, OperationContext, CreateTRPCClientOptions } from '@trpc/client';
3
3
  import { AnyTRPCRouter, AnyTRPCProcedure, AnyTRPCQueryProcedure, inferTransformedProcedureOutput, inferProcedureInput, AnyTRPCMutationProcedure, AnyTRPCSubscriptionProcedure, inferProcedureOutput } from '@trpc/server';
4
4
  import { Unsubscribable } from '@trpc/server/observable';
5
5
  import { ProcedureOptions } from '@trpc/server/unstable-core-do-not-import';
6
- import { MaybeRefOrGetter, UnwrapRef } from 'vue';
6
+ import { MaybeRefOrGetter, UnwrapRef, Ref } from 'vue';
7
7
 
8
+ type inferAsyncIterableYield<T> = T extends AsyncIterable<infer U> ? U : T;
8
9
  type TRPCSubscriptionObserver<TValue, TError> = {
9
10
  onStarted: (opts: {
10
11
  context: OperationContext | undefined;
11
12
  }) => void;
12
- onData: (value: TValue) => void;
13
+ onData: (value: inferAsyncIterableYield<TValue>) => void;
13
14
  onError: (err: TError) => void;
14
15
  onStopped: () => void;
15
16
  onComplete: () => void;
16
17
  };
17
- type Resolver<TRouter extends AnyTRPCRouter, TProcedure extends AnyTRPCProcedure> = (input: inferProcedureInput<TProcedure>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
18
- type SubscriptionResolver<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = (input: inferProcedureInput<TProcedure>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
18
+ type ArrayElement<T> = T extends readonly unknown[] ? T[number] : never;
19
+ type Primitive = null | undefined | string | number | boolean | symbol | bigint;
20
+ type Exact<Shape, T extends Shape> = Shape extends Primitive ? Shape : Shape extends object ? {
21
+ [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;
22
+ } : Shape;
19
23
  type DecorateProcedure<TProcedure extends AnyTRPCProcedure, TRouter extends AnyTRPCRouter> = TProcedure extends AnyTRPCQueryProcedure ? {
20
- useQuery: <TQueryFnData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TData = TQueryFnData, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(input: MaybeRefOrGetter<inferProcedureInput<TProcedure>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
24
+ useQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TData extends TQueryFnData, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey'> & {
21
25
  trpc?: TRPCRequestOptions;
22
26
  queryKey?: TQueryKey;
23
27
  }>) => UseQueryReturnType<TData, TError>;
24
- query: Resolver<TRouter, TProcedure>;
25
- invalidate: (input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => Promise<void>;
26
- setQueryData: (updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => ReturnType<QueryClient['setQueryData']>;
27
- key: (input?: MaybeRefOrGetter<inferProcedureInput<TProcedure>>) => QueryKey;
28
+ useQueries: <TQueryFnData extends {
29
+ output: inferTransformedProcedureOutput<TRouter, TProcedure>;
30
+ input: inferProcedureInput<TProcedure>;
31
+ }, TError extends TRPCClientErrorLike<TRouter>, TData extends TQueryFnData, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>, TQueries extends UseQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>, TCombinedResult = UseQueriesResults<TQueries[]>>(inputs: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>[]>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<TQueries>, 'queryKey'> & {
32
+ trpc?: TRPCRequestOptions;
33
+ queryKey?: never;
34
+ combine?: (result: UseQueriesResults<TQueries[]>) => TCombinedResult;
35
+ shallow?: boolean;
36
+ }>) => Readonly<Ref<TCombinedResult>>;
37
+ query: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
38
+ invalidate: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => Promise<void>;
39
+ setQueryData: <TInput extends inferProcedureInput<TProcedure>>(updater: inferTransformedProcedureOutput<TRouter, TProcedure>, input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => ReturnType<QueryClient['setQueryData']>;
40
+ key: <TInput extends inferProcedureInput<TProcedure>>(input?: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>) => QueryKey;
28
41
  } & (TProcedure['_def']['$types']['input'] extends {
29
42
  cursor?: infer CursorType;
30
43
  } ? {
31
- useInfiniteQuery: <TQueryFnData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TData = InfiniteData<TQueryFnData>, TQueryData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(input: MaybeRefOrGetter<Omit<inferProcedureInput<TProcedure>, 'cursor'>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey' | keyof InitialPageParam> & {
44
+ useInfiniteQuery: <TQueryFnData extends inferTransformedProcedureOutput<TRouter, TProcedure>, TError extends TRPCClientErrorLike<TRouter>, TData extends InfiniteData<TQueryFnData>, TQueryData extends TQueryFnData, TQueryKey extends QueryKey, TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<Omit<inferProcedureInput<TProcedure>, 'cursor'>, TInput>>, opts?: MaybeRefOrGetter<Omit<UnwrapRef<UseInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>>, 'queryKey' | keyof InitialPageParam> & {
32
45
  trpc?: TRPCRequestOptions;
33
46
  queryKey?: TQueryKey;
34
47
  } & (undefined extends TProcedure['_def']['$types']['input']['cursor'] ? Partial<InitialPageParam<CursorType>> : InitialPageParam<CursorType>)>) => UseInfiniteQueryReturnType<TData, TError>;
35
48
  } : object) : TProcedure extends AnyTRPCMutationProcedure ? {
36
- mutate: Resolver<TRouter, TProcedure>;
49
+ mutate: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts?: ProcedureOptions) => Promise<inferTransformedProcedureOutput<TRouter, TProcedure>>;
37
50
  useMutation: <TData = inferTransformedProcedureOutput<TRouter, TProcedure>, TError = TRPCClientErrorLike<TRouter>, TVariables = inferProcedureInput<TProcedure>, TContext = unknown>(opts?: MaybeRefOrGetter<UseMutationOptions<TData, TError, TVariables, TContext> & {
38
51
  trpc?: TRPCRequestOptions;
39
52
  }>) => UseMutationReturnType<TData, TError, TVariables, TContext>;
40
53
  } : TProcedure extends AnyTRPCSubscriptionProcedure ? {
41
- subscribe: SubscriptionResolver<TProcedure, TRouter>;
42
- useSubscription: (input: MaybeRefOrGetter<inferProcedureInput<TProcedure>>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
54
+ subscribe: <TInput extends inferProcedureInput<TProcedure>>(input: Exact<inferProcedureInput<TProcedure>, TInput>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
55
+ useSubscription: <TInput extends inferProcedureInput<TProcedure>>(input: MaybeRefOrGetter<Exact<inferProcedureInput<TProcedure>, TInput>>, opts: ProcedureOptions & Partial<TRPCSubscriptionObserver<inferProcedureOutput<TProcedure>, TRPCClientErrorLike<TRouter>>>) => Unsubscribable;
43
56
  } : never;
44
57
  /**
45
58
  * @internal
@@ -53,9 +66,10 @@ type TRPCQueryKey = [readonly string[], {
53
66
  input?: unknown;
54
67
  type?: QueryType;
55
68
  }?];
69
+
56
70
  declare function createTRPCVueQueryClient<TRouter extends AnyTRPCRouter>({ trpc, queryClient, }: {
57
71
  queryClient: QueryClient;
58
72
  trpc: CreateTRPCClientOptions<TRouter>;
59
73
  }): DecoratedProcedureRecord<TRouter["_def"]["record"], TRouter>;
60
74
 
61
- export { type TRPCQueryKey, createTRPCVueQueryClient };
75
+ export { type Exact, type TRPCQueryKey, createTRPCVueQueryClient };
package/dist/index.mjs CHANGED
@@ -1,8 +1,10 @@
1
1
  // src/index.ts
2
2
  import {
3
+ queryOptions as defineQueryOptions,
3
4
  skipToken,
4
5
  useInfiniteQuery,
5
6
  useMutation,
7
+ useQueries,
6
8
  useQuery
7
9
  } from "@tanstack/vue-query";
8
10
  import {
@@ -41,17 +43,36 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
41
43
  if (prop === "query") {
42
44
  return trpc.query(joinedPath, firstArg, opts);
43
45
  }
44
- if (prop === "useQuery") {
45
- const { trpc: trpcOptions, ...queryOptions } = opts;
46
- return useQuery({
47
- queryKey: computed(() => getQueryKey(path, toValue(firstArg), "query")),
48
- queryFn: async ({ queryKey, signal }) => trpc.query(joinedPath, queryKey[1]?.input, {
49
- signal,
50
- ...trpcOptions
46
+ function createQuery(_input, { trpcOptions, queryOptions }) {
47
+ const input = toValue(_input);
48
+ return defineQueryOptions({
49
+ queryKey: computed(() => getQueryKey(path, input, "query")),
50
+ queryFn: async ({ signal }) => ({
51
+ output: await trpc.query(joinedPath, input, {
52
+ signal,
53
+ ...trpcOptions
54
+ }),
55
+ input
51
56
  }),
52
57
  ...maybeToRefs(queryOptions)
53
58
  });
54
59
  }
60
+ if (prop === "useQuery") {
61
+ const { trpc: trpcOptions, ...queryOptions } = opts;
62
+ const input = firstArg;
63
+ return useQuery(createQuery(input, { trpcOptions, queryOptions }));
64
+ }
65
+ if (prop === "useQueries") {
66
+ const { trpc: trpcOptions, combine, shallow, ...queryOptions } = opts;
67
+ const inputs = firstArg;
68
+ return useQueries({
69
+ queries: computed(
70
+ () => toValue(inputs).map((i) => createQuery(i, { trpcOptions, queryOptions }))
71
+ ),
72
+ combine,
73
+ ...maybeToRefs({ shallow })
74
+ });
75
+ }
55
76
  if (prop === "invalidate") {
56
77
  return queryClient.invalidateQueries({
57
78
  queryKey: getQueryKey(path, toValue(firstArg), "query")
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.5.0-rc.1",
4
+ "version": "0.5.0-rc.10",
5
5
  "description": "A tRPC wrapper around '@tanstack/vue-query'",
6
6
  "license": "MIT",
7
7
  "repository": "github:falcondev-oss/trpc-vue-query",
@@ -27,8 +27,8 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@tanstack/vue-query": "^5.22.2",
30
- "@trpc/client": "^10.45.1",
31
- "@trpc/server": "^10.45.1",
30
+ "@trpc/client": "next",
31
+ "@trpc/server": "next",
32
32
  "vue": "^3.4.19"
33
33
  },
34
34
  "dependencies": {
@@ -41,14 +41,14 @@
41
41
  "@louishaftmann/eslint-config": "^4.0.3",
42
42
  "@louishaftmann/lintstaged-config": "^4.0.3",
43
43
  "@louishaftmann/prettier-config": "^4.0.3",
44
- "@tanstack/vue-query": "^5.56.2",
45
- "@trpc/client": "11.0.0-rc.490",
46
- "@trpc/server": "11.0.0-rc.490",
44
+ "@tanstack/vue-query": "^5.59.6",
45
+ "@trpc/client": "11.0.0-rc.566",
46
+ "@trpc/server": "11.0.0-rc.566",
47
47
  "@types/eslint": "^9.6.1",
48
48
  "@types/eslint__eslintrc": "^2.1.2",
49
49
  "@types/ws": "^8.5.12",
50
- "@vitest/ui": "^2.1.1",
51
- "eslint": "^9.11.0",
50
+ "@vitest/ui": "^2.1.2",
51
+ "eslint": "^9.12.0",
52
52
  "husky": "^9.1.6",
53
53
  "lint-staged": "^15.2.10",
54
54
  "prettier": "^3.3.3",
@@ -56,9 +56,9 @@
56
56
  "tsup": "^8.3.0",
57
57
  "tsx": "^4.19.1",
58
58
  "type-fest": "^4.26.1",
59
- "typescript": "^5.6.2",
60
- "vitest": "^2.1.1",
61
- "vue": "^3.5.7",
59
+ "typescript": "^5.6.3",
60
+ "vitest": "^2.1.2",
61
+ "vue": "^3.5.11",
62
62
  "ws": "^8.18.0",
63
63
  "zod": "^3.23.8"
64
64
  },