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

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,15 +58,37 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
58
58
  if (prop === "query") {
59
59
  return trpc.query(joinedPath, firstArg, opts);
60
60
  }
61
+ function createQuery(_input, { trpcOptions, queryOptions }, { includeInput = false } = {}) {
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
+ const output = await trpc.query(joinedPath, input, {
67
+ signal,
68
+ ...trpcOptions
69
+ });
70
+ if (includeInput) return { output, input };
71
+ return output;
72
+ },
73
+ ...maybeToRefs(queryOptions)
74
+ });
75
+ }
61
76
  if (prop === "useQuery") {
62
77
  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
68
- }),
69
- ...maybeToRefs(queryOptions)
78
+ const input = firstArg;
79
+ return (0, import_vue_query.useQuery)(createQuery(input, { trpcOptions, queryOptions }));
80
+ }
81
+ if (prop === "useQueries") {
82
+ const { trpc: trpcOptions, combine, shallow, ...queryOptions } = opts;
83
+ const inputs = firstArg;
84
+ return (0, import_vue_query.useQueries)({
85
+ queries: (0, import_vue.computed)(
86
+ () => (0, import_core.toValue)(inputs).map(
87
+ (i) => createQuery(i, { trpcOptions, queryOptions }, { includeInput: true })
88
+ )
89
+ ),
90
+ combine,
91
+ ...maybeToRefs({ shallow })
70
92
  });
71
93
  }
72
94
  if (prop === "invalidate") {
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,15 +43,37 @@ function createVueQueryProxyDecoration(name, trpc, queryClient) {
41
43
  if (prop === "query") {
42
44
  return trpc.query(joinedPath, firstArg, opts);
43
45
  }
46
+ function createQuery(_input, { trpcOptions, queryOptions }, { includeInput = false } = {}) {
47
+ const input = toValue(_input);
48
+ return defineQueryOptions({
49
+ queryKey: computed(() => getQueryKey(path, input, "query")),
50
+ queryFn: async ({ signal }) => {
51
+ const output = await trpc.query(joinedPath, input, {
52
+ signal,
53
+ ...trpcOptions
54
+ });
55
+ if (includeInput) return { output, input };
56
+ return output;
57
+ },
58
+ ...maybeToRefs(queryOptions)
59
+ });
60
+ }
44
61
  if (prop === "useQuery") {
45
62
  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
51
- }),
52
- ...maybeToRefs(queryOptions)
63
+ const input = firstArg;
64
+ return useQuery(createQuery(input, { trpcOptions, queryOptions }));
65
+ }
66
+ if (prop === "useQueries") {
67
+ const { trpc: trpcOptions, combine, shallow, ...queryOptions } = opts;
68
+ const inputs = firstArg;
69
+ return useQueries({
70
+ queries: computed(
71
+ () => toValue(inputs).map(
72
+ (i) => createQuery(i, { trpcOptions, queryOptions }, { includeInput: true })
73
+ )
74
+ ),
75
+ combine,
76
+ ...maybeToRefs({ shallow })
53
77
  });
54
78
  }
55
79
  if (prop === "invalidate") {
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.11",
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
  },