@tanstack/vue-query 5.48.0 → 5.48.2

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["import type { Ref, UnwrapRef } from 'vue-demi'\n\ntype Primitive = string | number | boolean | bigint | symbol | undefined | null\ntype UnwrapLeaf =\n | Primitive\n | Function\n | Date\n | Error\n | RegExp\n | Map<any, any>\n | WeakMap<any, any>\n | Set<any>\n | WeakSet<any>\n\nexport type MaybeRef<T> = Ref<T> | T\n\nexport type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T)\n\nexport type MaybeRefDeep<T> = MaybeRef<\n T extends Function\n ? T\n : T extends object\n ? {\n [Property in keyof T]: MaybeRefDeep<T[Property]>\n }\n : T\n>\n\nexport type NoUnknown<T> = Equal<unknown, T> extends true ? never : T\n\nexport type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA\n ? 1\n : 2) extends <T>() => T extends TTargetB ? 1 : 2\n ? true\n : false\n\nexport type DeepUnwrapRef<T> = T extends UnwrapLeaf\n ? T\n : T extends Ref<infer U>\n ? DeepUnwrapRef<U>\n : T extends {}\n ? {\n [Property in keyof T]: DeepUnwrapRef<T[Property]>\n }\n : UnwrapRef<T>\n\nexport type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any\n ? Omit<T, TKeyOfAny>\n : never\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["import type { ComputedRef, Ref, UnwrapRef } from 'vue-demi'\n\ntype Primitive = string | number | boolean | bigint | symbol | undefined | null\ntype UnwrapLeaf =\n | Primitive\n | Function\n | Date\n | Error\n | RegExp\n | Map<any, any>\n | WeakMap<any, any>\n | Set<any>\n | WeakSet<any>\n\nexport type MaybeRef<T> = Ref<T> | ComputedRef<T> | T\n\nexport type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T)\n\nexport type MaybeRefDeep<T> = MaybeRef<\n T extends Function\n ? T\n : T extends object\n ? {\n [Property in keyof T]: MaybeRefDeep<T[Property]>\n }\n : T\n>\n\nexport type NoUnknown<T> = Equal<unknown, T> extends true ? never : T\n\nexport type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA\n ? 1\n : 2) extends <T>() => T extends TTargetB ? 1 : 2\n ? true\n : false\n\nexport type DeepUnwrapRef<T> = T extends UnwrapLeaf\n ? T\n : T extends Ref<infer U>\n ? DeepUnwrapRef<U>\n : T extends {}\n ? {\n [Property in keyof T]: DeepUnwrapRef<T[Property]>\n }\n : UnwrapRef<T>\n\nexport type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any\n ? Omit<T, TKeyOfAny>\n : never\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,8 +1,8 @@
1
- import { Ref, UnwrapRef } from 'vue-demi';
1
+ import { Ref, ComputedRef, UnwrapRef } from 'vue-demi';
2
2
 
3
3
  type Primitive = string | number | boolean | bigint | symbol | undefined | null;
4
4
  type UnwrapLeaf = Primitive | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any>;
5
- type MaybeRef<T> = Ref<T> | T;
5
+ type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
6
6
  type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T);
7
7
  type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
8
8
  [Property in keyof T]: MaybeRefDeep<T[Property]>;
@@ -1,8 +1,8 @@
1
- import { Ref, UnwrapRef } from 'vue-demi';
1
+ import { Ref, ComputedRef, UnwrapRef } from 'vue-demi';
2
2
 
3
3
  type Primitive = string | number | boolean | bigint | symbol | undefined | null;
4
4
  type UnwrapLeaf = Primitive | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any>;
5
- type MaybeRef<T> = Ref<T> | T;
5
+ type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
6
6
  type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T);
7
7
  type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
8
8
  [Property in keyof T]: MaybeRefDeep<T[Property]>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, DistributiveOmit, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = DistributiveOmit<\n UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetOptions<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetResults<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesOptions<\n [...Tail],\n [...TResult, GetOptions<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesResults<\n [...Tail],\n [...TResult, GetResults<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAgC;AAChC,sBAOO;AAEP,4BAA+B;AAC/B,mBAA+B;AA2NxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,KAAC,iCAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,mBAAe,sCAAe;AAE7C,QAAM,uBAAmB;AAAA,IAAS,UAChC,6BAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,YAAQ,4BAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,sCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,aAAO,0BAAS,KAAK;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetUseQueryOptionsForUseQueries<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetUseQueryResult<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n TQueryFnData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryOptionsForUseQueries<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesOptions<\n [...Tails],\n [...TResults, GetUseQueryOptionsForUseQueries<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryResult<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesResults<\n [...Tails],\n [...TResults, GetUseQueryResult<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAgC;AAChC,sBAOO;AAEP,4BAA+B;AAC/B,mBAA+B;AA4OxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,KAAC,iCAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,mBAAe,sCAAe;AAE7C,QAAM,uBAAmB;AAAA,IAAS,UAChC,6BAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,YAAQ,4BAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,sCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,aAAO,0BAAS,KAAK;AACvB;","names":[]}
@@ -1,15 +1,13 @@
1
1
  import { Ref } from 'vue-demi';
2
- import { QueryObserverResult, DefaultError, QueryKey, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
2
+ import { QueryObserverResult, DefaultError, QueryKey, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
3
3
  import { U as UseQueryOptions } from './useQuery-DyulwJ8i.cjs';
4
4
  import { QueryClient } from './queryClient.cjs';
5
- import { MaybeRefDeep, DistributiveOmit, DeepUnwrapRef } from './types.cjs';
5
+ import { MaybeRefDeep, DeepUnwrapRef } from './types.cjs';
6
6
 
7
- type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = DistributiveOmit<UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>, 'placeholderData'> & {
8
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
9
- };
7
+ type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>;
10
8
  type MAXIMUM_DEPTH = 20;
11
9
  type SkipTokenForUseQueries = symbol;
12
- type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
10
+ type GetUseQueryOptionsForUseQueries<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
13
11
  queryFnData: infer TQueryFnData;
14
12
  error?: infer TError;
15
13
  data: infer TData;
@@ -23,11 +21,14 @@ type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
23
21
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
24
22
  select?: (data: any) => infer TData;
25
23
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
26
- } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : UseQueryOptionsForUseQueries;
24
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : T extends {
25
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
26
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
27
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TQueryFnData, TQueryKey> : UseQueryOptionsForUseQueries;
27
28
  type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
28
29
  initialData?: infer TInitialData;
29
30
  } ? unknown extends TInitialData ? QueryObserverResult<TData, TError> : TInitialData extends TData ? DefinedQueryObserverResult<TData, TError> : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? QueryObserverResult<TData, TError> : TInitialDataResult extends TData ? DefinedQueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError>;
30
- type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
+ type GetUseQueryResult<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
32
  queryFnData: any;
32
33
  error?: infer TError;
33
34
  data: infer TData;
@@ -41,15 +42,18 @@ type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError,
41
42
  queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
42
43
  select?: (data: any) => infer TData;
43
44
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
44
- } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
+ } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
46
+ queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
47
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
48
+ } ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
49
  /**
46
50
  * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
47
51
  */
48
- type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesOptions<[
49
- ...Tail
52
+ type UseQueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryOptionsForUseQueries<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesOptions<[
53
+ ...Tails
50
54
  ], [
51
- ...TResult,
52
- GetOptions<Head>
55
+ ...TResults,
56
+ GetUseQueryOptionsForUseQueries<Head>
53
57
  ], [
54
58
  ...TDepth,
55
59
  1
@@ -57,11 +61,11 @@ type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TD
57
61
  /**
58
62
  * UseQueriesResults reducer recursively maps type param to results
59
63
  */
60
- type UseQueriesResults<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesResults<[
61
- ...Tail
64
+ type UseQueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesResults<[
65
+ ...Tails
62
66
  ], [
63
- ...TResult,
64
- GetResults<Head>
67
+ ...TResults,
68
+ GetUseQueryResult<Head>
65
69
  ], [
66
70
  ...TDepth,
67
71
  1
@@ -1,15 +1,13 @@
1
1
  import { Ref } from 'vue-demi';
2
- import { QueryObserverResult, DefaultError, QueryKey, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
2
+ import { QueryObserverResult, DefaultError, QueryKey, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
3
3
  import { U as UseQueryOptions } from './useQuery-JLP2sK49.js';
4
4
  import { QueryClient } from './queryClient.js';
5
- import { MaybeRefDeep, DistributiveOmit, DeepUnwrapRef } from './types.js';
5
+ import { MaybeRefDeep, DeepUnwrapRef } from './types.js';
6
6
 
7
- type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = DistributiveOmit<UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>, 'placeholderData'> & {
8
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
9
- };
7
+ type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>;
10
8
  type MAXIMUM_DEPTH = 20;
11
9
  type SkipTokenForUseQueries = symbol;
12
- type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
10
+ type GetUseQueryOptionsForUseQueries<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
13
11
  queryFnData: infer TQueryFnData;
14
12
  error?: infer TError;
15
13
  data: infer TData;
@@ -23,11 +21,14 @@ type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
23
21
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
24
22
  select?: (data: any) => infer TData;
25
23
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
26
- } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : UseQueryOptionsForUseQueries;
24
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : T extends {
25
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
26
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
27
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TQueryFnData, TQueryKey> : UseQueryOptionsForUseQueries;
27
28
  type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
28
29
  initialData?: infer TInitialData;
29
30
  } ? unknown extends TInitialData ? QueryObserverResult<TData, TError> : TInitialData extends TData ? DefinedQueryObserverResult<TData, TError> : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? QueryObserverResult<TData, TError> : TInitialDataResult extends TData ? DefinedQueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError>;
30
- type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
+ type GetUseQueryResult<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
32
  queryFnData: any;
32
33
  error?: infer TError;
33
34
  data: infer TData;
@@ -41,15 +42,18 @@ type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError,
41
42
  queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
42
43
  select?: (data: any) => infer TData;
43
44
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
44
- } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
+ } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
46
+ queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
47
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
48
+ } ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
49
  /**
46
50
  * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
47
51
  */
48
- type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesOptions<[
49
- ...Tail
52
+ type UseQueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryOptionsForUseQueries<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesOptions<[
53
+ ...Tails
50
54
  ], [
51
- ...TResult,
52
- GetOptions<Head>
55
+ ...TResults,
56
+ GetUseQueryOptionsForUseQueries<Head>
53
57
  ], [
54
58
  ...TDepth,
55
59
  1
@@ -57,11 +61,11 @@ type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TD
57
61
  /**
58
62
  * UseQueriesResults reducer recursively maps type param to results
59
63
  */
60
- type UseQueriesResults<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesResults<[
61
- ...Tail
64
+ type UseQueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesResults<[
65
+ ...Tails
62
66
  ], [
63
- ...TResult,
64
- GetResults<Head>
67
+ ...TResults,
68
+ GetUseQueryResult<Head>
65
69
  ], [
66
70
  ...TDepth,
67
71
  1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, DistributiveOmit, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = DistributiveOmit<\n UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetOptions<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetResults<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesOptions<\n [...Tail],\n [...TResult, GetOptions<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesResults<\n [...Tail],\n [...TResult, GetResults<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";AAAA,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA2NxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,gBAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,eAAe,eAAe;AAE7C,QAAM,mBAAmB;AAAA,IAAS,MAChC,eAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,QAAQ,WAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,iBAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,SAAS,KAAK;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetUseQueryOptionsForUseQueries<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetUseQueryResult<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n TQueryFnData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryOptionsForUseQueries<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesOptions<\n [...Tails],\n [...TResults, GetUseQueryOptionsForUseQueries<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryResult<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesResults<\n [...Tails],\n [...TResults, GetUseQueryResult<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";AAAA,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA4OxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,gBAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,eAAe,eAAe;AAE7C,QAAM,mBAAmB;AAAA,IAAS,MAChC,eAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,QAAQ,WAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,iBAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,SAAS,KAAK;AACvB;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["import type { Ref, UnwrapRef } from 'vue-demi'\n\ntype Primitive = string | number | boolean | bigint | symbol | undefined | null\ntype UnwrapLeaf =\n | Primitive\n | Function\n | Date\n | Error\n | RegExp\n | Map<any, any>\n | WeakMap<any, any>\n | Set<any>\n | WeakSet<any>\n\nexport type MaybeRef<T> = Ref<T> | T\n\nexport type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T)\n\nexport type MaybeRefDeep<T> = MaybeRef<\n T extends Function\n ? T\n : T extends object\n ? {\n [Property in keyof T]: MaybeRefDeep<T[Property]>\n }\n : T\n>\n\nexport type NoUnknown<T> = Equal<unknown, T> extends true ? never : T\n\nexport type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA\n ? 1\n : 2) extends <T>() => T extends TTargetB ? 1 : 2\n ? true\n : false\n\nexport type DeepUnwrapRef<T> = T extends UnwrapLeaf\n ? T\n : T extends Ref<infer U>\n ? DeepUnwrapRef<U>\n : T extends {}\n ? {\n [Property in keyof T]: DeepUnwrapRef<T[Property]>\n }\n : UnwrapRef<T>\n\nexport type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any\n ? Omit<T, TKeyOfAny>\n : never\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
1
+ {"version":3,"sources":["../../src/types.ts"],"sourcesContent":["import type { ComputedRef, Ref, UnwrapRef } from 'vue-demi'\n\ntype Primitive = string | number | boolean | bigint | symbol | undefined | null\ntype UnwrapLeaf =\n | Primitive\n | Function\n | Date\n | Error\n | RegExp\n | Map<any, any>\n | WeakMap<any, any>\n | Set<any>\n | WeakSet<any>\n\nexport type MaybeRef<T> = Ref<T> | ComputedRef<T> | T\n\nexport type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T)\n\nexport type MaybeRefDeep<T> = MaybeRef<\n T extends Function\n ? T\n : T extends object\n ? {\n [Property in keyof T]: MaybeRefDeep<T[Property]>\n }\n : T\n>\n\nexport type NoUnknown<T> = Equal<unknown, T> extends true ? never : T\n\nexport type Equal<TTargetA, TTargetB> = (<T>() => T extends TTargetA\n ? 1\n : 2) extends <T>() => T extends TTargetB ? 1 : 2\n ? true\n : false\n\nexport type DeepUnwrapRef<T> = T extends UnwrapLeaf\n ? T\n : T extends Ref<infer U>\n ? DeepUnwrapRef<U>\n : T extends {}\n ? {\n [Property in keyof T]: DeepUnwrapRef<T[Property]>\n }\n : UnwrapRef<T>\n\nexport type DistributiveOmit<T, TKeyOfAny extends keyof any> = T extends any\n ? Omit<T, TKeyOfAny>\n : never\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1,8 +1,8 @@
1
- import { Ref, UnwrapRef } from 'vue-demi';
1
+ import { Ref, ComputedRef, UnwrapRef } from 'vue-demi';
2
2
 
3
3
  type Primitive = string | number | boolean | bigint | symbol | undefined | null;
4
4
  type UnwrapLeaf = Primitive | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any>;
5
- type MaybeRef<T> = Ref<T> | T;
5
+ type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
6
6
  type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T);
7
7
  type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
8
8
  [Property in keyof T]: MaybeRefDeep<T[Property]>;
@@ -1,8 +1,8 @@
1
- import { Ref, UnwrapRef } from 'vue-demi';
1
+ import { Ref, ComputedRef, UnwrapRef } from 'vue-demi';
2
2
 
3
3
  type Primitive = string | number | boolean | bigint | symbol | undefined | null;
4
4
  type UnwrapLeaf = Primitive | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any>;
5
- type MaybeRef<T> = Ref<T> | T;
5
+ type MaybeRef<T> = Ref<T> | ComputedRef<T> | T;
6
6
  type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T);
7
7
  type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
8
8
  [Property in keyof T]: MaybeRefDeep<T[Property]>;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, DistributiveOmit, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = DistributiveOmit<\n UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetOptions<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetResults<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesOptions<\n [...Tail],\n [...TResult, GetOptions<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesResults<\n [...Tail],\n [...TResult, GetResults<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAgC;AAChC,sBAOO;AAEP,4BAA+B;AAC/B,mBAA+B;AA2NxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,KAAC,iCAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,mBAAe,sCAAe;AAE7C,QAAM,uBAAmB;AAAA,IAAS,UAChC,6BAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,YAAQ,4BAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,sCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,aAAO,0BAAS,KAAK;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetUseQueryOptionsForUseQueries<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetUseQueryResult<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n TQueryFnData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryOptionsForUseQueries<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesOptions<\n [...Tails],\n [...TResults, GetUseQueryOptionsForUseQueries<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryResult<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesResults<\n [...Tails],\n [...TResults, GetUseQueryResult<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAgC;AAChC,sBAOO;AAEP,4BAA+B;AAC/B,mBAA+B;AA4OxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,KAAC,iCAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,mBAAe,sCAAe;AAE7C,QAAM,uBAAmB;AAAA,IAAS,UAChC,6BAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,YAAQ,4BAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,sCAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,aAAO,0BAAS,KAAK;AACvB;","names":[]}
@@ -1,15 +1,13 @@
1
1
  import { Ref } from 'vue-demi';
2
- import { QueryObserverResult, DefaultError, QueryKey, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
2
+ import { QueryObserverResult, DefaultError, QueryKey, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
3
3
  import { U as UseQueryOptions } from './useQuery-DyulwJ8i.cjs';
4
4
  import { QueryClient } from './queryClient.cjs';
5
- import { MaybeRefDeep, DistributiveOmit, DeepUnwrapRef } from './types.cjs';
5
+ import { MaybeRefDeep, DeepUnwrapRef } from './types.cjs';
6
6
 
7
- type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = DistributiveOmit<UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>, 'placeholderData'> & {
8
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
9
- };
7
+ type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>;
10
8
  type MAXIMUM_DEPTH = 20;
11
9
  type SkipTokenForUseQueries = symbol;
12
- type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
10
+ type GetUseQueryOptionsForUseQueries<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
13
11
  queryFnData: infer TQueryFnData;
14
12
  error?: infer TError;
15
13
  data: infer TData;
@@ -23,11 +21,14 @@ type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
23
21
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
24
22
  select?: (data: any) => infer TData;
25
23
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
26
- } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : UseQueryOptionsForUseQueries;
24
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : T extends {
25
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
26
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
27
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TQueryFnData, TQueryKey> : UseQueryOptionsForUseQueries;
27
28
  type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
28
29
  initialData?: infer TInitialData;
29
30
  } ? unknown extends TInitialData ? QueryObserverResult<TData, TError> : TInitialData extends TData ? DefinedQueryObserverResult<TData, TError> : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? QueryObserverResult<TData, TError> : TInitialDataResult extends TData ? DefinedQueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError>;
30
- type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
+ type GetUseQueryResult<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
32
  queryFnData: any;
32
33
  error?: infer TError;
33
34
  data: infer TData;
@@ -41,15 +42,18 @@ type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError,
41
42
  queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
42
43
  select?: (data: any) => infer TData;
43
44
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
44
- } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
+ } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
46
+ queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
47
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
48
+ } ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
49
  /**
46
50
  * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
47
51
  */
48
- type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesOptions<[
49
- ...Tail
52
+ type UseQueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryOptionsForUseQueries<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesOptions<[
53
+ ...Tails
50
54
  ], [
51
- ...TResult,
52
- GetOptions<Head>
55
+ ...TResults,
56
+ GetUseQueryOptionsForUseQueries<Head>
53
57
  ], [
54
58
  ...TDepth,
55
59
  1
@@ -57,11 +61,11 @@ type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TD
57
61
  /**
58
62
  * UseQueriesResults reducer recursively maps type param to results
59
63
  */
60
- type UseQueriesResults<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesResults<[
61
- ...Tail
64
+ type UseQueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesResults<[
65
+ ...Tails
62
66
  ], [
63
- ...TResult,
64
- GetResults<Head>
67
+ ...TResults,
68
+ GetUseQueryResult<Head>
65
69
  ], [
66
70
  ...TDepth,
67
71
  1
@@ -1,15 +1,13 @@
1
1
  import { Ref } from 'vue-demi';
2
- import { QueryObserverResult, DefaultError, QueryKey, QueriesPlaceholderDataFunction, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
2
+ import { QueryObserverResult, DefaultError, QueryKey, QueryFunction, ThrowOnError, DefinedQueryObserverResult } from '@tanstack/query-core';
3
3
  import { U as UseQueryOptions } from './useQuery-JLP2sK49.js';
4
4
  import { QueryClient } from './queryClient.js';
5
- import { MaybeRefDeep, DistributiveOmit, DeepUnwrapRef } from './types.js';
5
+ import { MaybeRefDeep, DeepUnwrapRef } from './types.js';
6
6
 
7
- type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = DistributiveOmit<UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>, 'placeholderData'> & {
8
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>;
9
- };
7
+ type UseQueryOptionsForUseQueries<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>;
10
8
  type MAXIMUM_DEPTH = 20;
11
9
  type SkipTokenForUseQueries = symbol;
12
- type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
10
+ type GetUseQueryOptionsForUseQueries<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
13
11
  queryFnData: infer TQueryFnData;
14
12
  error?: infer TError;
15
13
  data: infer TData;
@@ -23,11 +21,14 @@ type GetOptions<T> = T extends UseQueryOptions ? DeepUnwrapRef<T> : T extends {
23
21
  queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
24
22
  select?: (data: any) => infer TData;
25
23
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
26
- } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : UseQueryOptionsForUseQueries;
24
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, unknown extends TError ? DefaultError : TError, unknown extends TData ? TQueryFnData : TData, TQueryKey> : T extends {
25
+ queryFn?: QueryFunction<infer TQueryFnData, infer TQueryKey> | SkipTokenForUseQueries;
26
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
27
+ } ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TQueryFnData, TQueryKey> : UseQueryOptionsForUseQueries;
27
28
  type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
28
29
  initialData?: infer TInitialData;
29
30
  } ? unknown extends TInitialData ? QueryObserverResult<TData, TError> : TInitialData extends TData ? DefinedQueryObserverResult<TData, TError> : TInitialData extends () => infer TInitialDataResult ? unknown extends TInitialDataResult ? QueryObserverResult<TData, TError> : TInitialDataResult extends TData ? DefinedQueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError> : QueryObserverResult<TData, TError>;
30
- type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
+ type GetUseQueryResult<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError, infer TData, any, any> ? GetDefinedOrUndefinedQueryResult<T, undefined extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
31
32
  queryFnData: any;
32
33
  error?: infer TError;
33
34
  data: infer TData;
@@ -41,15 +42,18 @@ type GetResults<T> = T extends UseQueryOptions<infer TQueryFnData, infer TError,
41
42
  queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
42
43
  select?: (data: any) => infer TData;
43
44
  throwOnError?: ThrowOnError<any, infer TError, any, any>;
44
- } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
+ } ? GetDefinedOrUndefinedQueryResult<T, unknown extends TData ? TQueryFnData : TData, unknown extends TError ? DefaultError : TError> : T extends {
46
+ queryFn?: QueryFunction<infer TQueryFnData, any> | SkipTokenForUseQueries;
47
+ throwOnError?: ThrowOnError<any, infer TError, any, any>;
48
+ } ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, unknown extends TError ? DefaultError : TError> : QueryObserverResult;
45
49
  /**
46
50
  * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
47
51
  */
48
- type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetOptions<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesOptions<[
49
- ...Tail
52
+ type UseQueriesOptions<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<UseQueryOptionsForUseQueries> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryOptionsForUseQueries<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesOptions<[
53
+ ...Tails
50
54
  ], [
51
- ...TResult,
52
- GetOptions<Head>
55
+ ...TResults,
56
+ GetUseQueryOptionsForUseQueries<Head>
53
57
  ], [
54
58
  ...TDepth,
55
59
  1
@@ -57,11 +61,11 @@ type UseQueriesOptions<T extends Array<any>, TResult extends Array<any> = [], TD
57
61
  /**
58
62
  * UseQueriesResults reducer recursively maps type param to results
59
63
  */
60
- type UseQueriesResults<T extends Array<any>, TResult extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResult, GetResults<Head>] : T extends [infer Head, ...infer Tail] ? UseQueriesResults<[
61
- ...Tail
64
+ type UseQueriesResults<T extends Array<any>, TResults extends Array<any> = [], TDepth extends ReadonlyArray<number> = []> = TDepth['length'] extends MAXIMUM_DEPTH ? Array<QueryObserverResult> : T extends [] ? [] : T extends [infer Head] ? [...TResults, GetUseQueryResult<Head>] : T extends [infer Head, ...infer Tails] ? UseQueriesResults<[
65
+ ...Tails
62
66
  ], [
63
- ...TResult,
64
- GetResults<Head>
67
+ ...TResults,
68
+ GetUseQueryResult<Head>
65
69
  ], [
66
70
  ...TDepth,
67
71
  1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueriesPlaceholderDataFunction,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, DistributiveOmit, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = DistributiveOmit<\n UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>,\n 'placeholderData'\n> & {\n placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>\n}\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetOptions<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetResults<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetOptions<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesOptions<\n [...Tail],\n [...TResult, GetOptions<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResult extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResult, GetResults<Head>]\n : T extends [infer Head, ...infer Tail]\n ? UseQueriesResults<\n [...Tail],\n [...TResult, GetResults<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";AAAA,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA2NxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,gBAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,eAAe,eAAe;AAE7C,QAAM,mBAAmB;AAAA,IAAS,MAChC,eAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,QAAQ,WAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,iBAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,SAAS,KAAK;AACvB;","names":[]}
1
+ {"version":3,"sources":["../../src/useQueries.ts"],"sourcesContent":["import { QueriesObserver } from '@tanstack/query-core'\nimport {\n computed,\n getCurrentScope,\n onScopeDispose,\n readonly,\n shallowRef,\n watch,\n} from 'vue-demi'\n\nimport { useQueryClient } from './useQueryClient'\nimport { cloneDeepUnref } from './utils'\nimport type { Ref } from 'vue-demi'\nimport type {\n DefaultError,\n DefinedQueryObserverResult,\n QueriesObserverOptions,\n QueryFunction,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\nimport type { UseQueryOptions } from './useQuery'\nimport type { QueryClient } from './queryClient'\nimport type { DeepUnwrapRef, MaybeRefDeep } from './types'\n\n// This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.\n// `placeholderData` function does not have a parameter\ntype UseQueryOptionsForUseQueries<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\n// Widen the type of the symbol to enable type inference even if skipToken is not immutable.\ntype SkipTokenForUseQueries = symbol\n\ntype GetUseQueryOptionsForUseQueries<T> =\n // Part 1: if UseQueryOptions are already being sent through, then just return T\n T extends UseQueryOptions\n ? DeepUnwrapRef<T>\n : // Part 2: responsible for applying explicit type parameter to function arguments, if object { queryFnData: TQueryFnData, error: TError, data: TData }\n T extends {\n queryFnData: infer TQueryFnData\n error?: infer TError\n data: infer TData\n }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? UseQueryOptionsForUseQueries<unknown, TError, TData>\n : // Part 3: responsible for applying explicit type parameter to function arguments, if tuple [TQueryFnData, TError, TData]\n T extends [infer TQueryFnData, infer TError, infer TData]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError, TData>\n : T extends [infer TQueryFnData, infer TError]\n ? UseQueryOptionsForUseQueries<TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? UseQueryOptionsForUseQueries<TQueryFnData>\n : // Part 4: responsible for inferring and enforcing type if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n unknown extends TError ? DefaultError : TError,\n unknown extends TData ? TQueryFnData : TData,\n TQueryKey\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, infer TQueryKey>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TQueryFnData,\n TQueryKey\n >\n : // Fallback\n UseQueryOptionsForUseQueries\n\n// A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult\ntype GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {\n initialData?: infer TInitialData\n}\n ? unknown extends TInitialData\n ? QueryObserverResult<TData, TError>\n : TInitialData extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : TInitialData extends () => infer TInitialDataResult\n ? unknown extends TInitialDataResult\n ? QueryObserverResult<TData, TError>\n : TInitialDataResult extends TData\n ? DefinedQueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n : QueryObserverResult<TData, TError>\n\ntype GetUseQueryResult<T> =\n // Part 1: if using UseQueryOptions then the types are already set\n T extends UseQueryOptions<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any,\n any\n >\n ? GetDefinedOrUndefinedQueryResult<\n T,\n undefined extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : // Part 2: responsible for mapping explicit type parameter to function result, if object\n T extends { queryFnData: any; error?: infer TError; data: infer TData }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends { queryFnData: infer TQueryFnData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends { data: infer TData; error?: infer TError }\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : // Part 3: responsible for mapping explicit type parameter to function result, if tuple\n T extends [any, infer TError, infer TData]\n ? GetDefinedOrUndefinedQueryResult<T, TData, TError>\n : T extends [infer TQueryFnData, infer TError]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData, TError>\n : T extends [infer TQueryFnData]\n ? GetDefinedOrUndefinedQueryResult<T, TQueryFnData>\n : // Part 4: responsible for mapping inferred type to results, if no explicit parameter was provided\n T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n select?: (data: any) => infer TData\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n : T extends {\n queryFn?:\n | QueryFunction<infer TQueryFnData, any>\n | SkipTokenForUseQueries\n throwOnError?: ThrowOnError<any, infer TError, any, any>\n }\n ? GetDefinedOrUndefinedQueryResult<\n T,\n TQueryFnData,\n unknown extends TError ? DefaultError : TError\n >\n : // Fallback\n QueryObserverResult\n\n/**\n * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type UseQueriesOptions<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<UseQueryOptionsForUseQueries>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryOptionsForUseQueries<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesOptions<\n [...Tails],\n [...TResults, GetUseQueryOptionsForUseQueries<Head>],\n [...TDepth, 1]\n >\n : ReadonlyArray<unknown> extends T\n ? T\n : // If T is *some* array but we couldn't assign unknown[] to it, then it must hold some known/homogenous type!\n // use this to infer the param types in the case of Array.map() argument\n T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n infer TQueryKey\n >\n >\n ? Array<\n UseQueryOptionsForUseQueries<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n >\n >\n : // Fallback\n Array<UseQueryOptionsForUseQueries>\n\n/**\n * UseQueriesResults reducer recursively maps type param to results\n */\nexport type UseQueriesResults<\n T extends Array<any>,\n TResults extends Array<any> = [],\n TDepth extends ReadonlyArray<number> = [],\n> = TDepth['length'] extends MAXIMUM_DEPTH\n ? Array<QueryObserverResult>\n : T extends []\n ? []\n : T extends [infer Head]\n ? [...TResults, GetUseQueryResult<Head>]\n : T extends [infer Head, ...infer Tails]\n ? UseQueriesResults<\n [...Tails],\n [...TResults, GetUseQueryResult<Head>],\n [...TDepth, 1]\n >\n : T extends Array<\n UseQueryOptionsForUseQueries<\n infer TQueryFnData,\n infer TError,\n infer TData,\n any\n >\n >\n ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n Array<\n QueryObserverResult<\n unknown extends TData ? TQueryFnData : TData,\n unknown extends TError ? DefaultError : TError\n >\n >\n : // Fallback\n Array<QueryObserverResult>\n\ntype UseQueriesOptionsArg<T extends Array<any>> = readonly [\n ...UseQueriesOptions<T>,\n]\n\nexport function useQueries<\n T extends Array<any>,\n TCombinedResult = UseQueriesResults<T>,\n>(\n {\n queries,\n ...options\n }: {\n queries: MaybeRefDeep<UseQueriesOptionsArg<T>>\n combine?: (result: UseQueriesResults<T>) => TCombinedResult\n },\n queryClient?: QueryClient,\n): Readonly<Ref<TCombinedResult>> {\n if (process.env.NODE_ENV === 'development') {\n if (!getCurrentScope()) {\n console.warn(\n 'vue-query composable like \"useQuery()\" should only be used inside a \"setup()\" function or a running effect scope. They might otherwise lead to memory leaks.',\n )\n }\n }\n\n const client = queryClient || useQueryClient()\n\n const defaultedQueries = computed(() =>\n cloneDeepUnref(queries as MaybeRefDeep<UseQueriesOptionsArg<any>>).map(\n (queryOptions) => {\n if (typeof queryOptions.enabled === 'function') {\n queryOptions.enabled = queryOptions.enabled()\n }\n\n const defaulted = client.defaultQueryOptions(queryOptions)\n defaulted._optimisticResults = client.isRestoring.value\n ? 'isRestoring'\n : 'optimistic'\n\n return defaulted\n },\n ),\n )\n\n const observer = new QueriesObserver<TCombinedResult>(\n client,\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResult] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n const state = shallowRef(getCombinedResult())\n\n let unsubscribe = () => {\n // noop\n }\n\n watch(\n client.isRestoring,\n (isRestoring) => {\n if (!isRestoring) {\n unsubscribe()\n unsubscribe = observer.subscribe(() => {\n const [, getCombinedResultRestoring] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultRestoring()\n })\n // Subscription would not fire for persisted results\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n }\n },\n { immediate: true },\n )\n\n watch(\n defaultedQueries,\n () => {\n observer.setQueries(\n defaultedQueries.value,\n options as QueriesObserverOptions<TCombinedResult>,\n )\n const [, getCombinedResultPersisted] = observer.getOptimisticResult(\n defaultedQueries.value,\n (options as QueriesObserverOptions<TCombinedResult>).combine,\n )\n state.value = getCombinedResultPersisted()\n },\n { flush: 'sync' },\n )\n\n onScopeDispose(() => {\n unsubscribe()\n })\n\n return readonly(state) as Readonly<Ref<TCombinedResult>>\n}\n"],"mappings":";AAAA,SAAS,uBAAuB;AAChC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AA4OxB,SAAS,WAId;AAAA,EACE;AAAA,EACA,GAAG;AACL,GAIA,aACgC;AAChC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,CAAC,gBAAgB,GAAG;AACtB,cAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,QAAM,SAAS,eAAe,eAAe;AAE7C,QAAM,mBAAmB;AAAA,IAAS,MAChC,eAAe,OAAkD,EAAE;AAAA,MACjE,CAAC,iBAAiB;AAChB,YAAI,OAAO,aAAa,YAAY,YAAY;AAC9C,uBAAa,UAAU,aAAa,QAAQ;AAAA,QAC9C;AAEA,cAAM,YAAY,OAAO,oBAAoB,YAAY;AACzD,kBAAU,qBAAqB,OAAO,YAAY,QAC9C,gBACA;AAEJ,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,IAAI;AAAA,IACnB;AAAA,IACA,iBAAiB;AAAA,IACjB;AAAA,EACF;AACA,QAAM,CAAC,EAAE,iBAAiB,IAAI,SAAS;AAAA,IACrC,iBAAiB;AAAA,IAChB,QAAoD;AAAA,EACvD;AACA,QAAM,QAAQ,WAAW,kBAAkB,CAAC;AAE5C,MAAI,cAAc,MAAM;AAAA,EAExB;AAEA;AAAA,IACE,OAAO;AAAA,IACP,CAAC,gBAAgB;AACf,UAAI,CAAC,aAAa;AAChB,oBAAY;AACZ,sBAAc,SAAS,UAAU,MAAM;AACrC,gBAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,YAC9C,iBAAiB;AAAA,YAChB,QAAoD;AAAA,UACvD;AACA,gBAAM,QAAQ,2BAA2B;AAAA,QAC3C,CAAC;AAED,cAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,UAC9C,iBAAiB;AAAA,UAChB,QAAoD;AAAA,QACvD;AACA,cAAM,QAAQ,2BAA2B;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,EAAE,WAAW,KAAK;AAAA,EACpB;AAEA;AAAA,IACE;AAAA,IACA,MAAM;AACJ,eAAS;AAAA,QACP,iBAAiB;AAAA,QACjB;AAAA,MACF;AACA,YAAM,CAAC,EAAE,0BAA0B,IAAI,SAAS;AAAA,QAC9C,iBAAiB;AAAA,QAChB,QAAoD;AAAA,MACvD;AACA,YAAM,QAAQ,2BAA2B;AAAA,IAC3C;AAAA,IACA,EAAE,OAAO,OAAO;AAAA,EAClB;AAEA,iBAAe,MAAM;AACnB,gBAAY;AAAA,EACd,CAAC;AAED,SAAO,SAAS,KAAK;AACvB;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tanstack/vue-query",
3
- "version": "5.48.0",
3
+ "version": "5.48.2",
4
4
  "description": "Hooks for managing, caching and syncing asynchronous and remote data in Vue",
5
5
  "author": "Damian Osipiuk",
6
6
  "license": "MIT",
@@ -142,4 +142,81 @@ describe('UseQueries config object overload', () => {
142
142
  expectTypeOf(queriesState[0].data).toEqualTypeOf<string | undefined>()
143
143
  })
144
144
  })
145
+
146
+ // Fix #7270
147
+ it('should have proper type inference with different options provided', () => {
148
+ const numbers = [1, 2, 3]
149
+ const queryKey = (n: number) => [n]
150
+ const queryFn = (n: number) => () => Promise.resolve(n)
151
+ const select = (data: number) => data.toString()
152
+
153
+ const queries = numbers.map((n) => ({
154
+ queryKey: [n],
155
+ queryFn: () => Promise.resolve(n),
156
+ select: (data: number) => data.toString(),
157
+ }))
158
+
159
+ const queriesWithoutSelect = numbers.map((n) => ({
160
+ queryKey: queryKey(n),
161
+ queryFn: queryFn(n),
162
+ }))
163
+
164
+ const queriesWithQueryOptions = numbers.map((n) =>
165
+ queryOptions({
166
+ queryKey: queryKey(n),
167
+ queryFn: queryFn(n),
168
+ select,
169
+ }),
170
+ )
171
+
172
+ const queriesWithQueryOptionsWithoutSelect = numbers.map((n) =>
173
+ queryOptions({
174
+ queryKey: queryKey(n),
175
+ queryFn: queryFn(n),
176
+ }),
177
+ )
178
+
179
+ const query1 = useQueries({ queries: queries })
180
+ expectTypeOf(query1.value).toEqualTypeOf<
181
+ Array<QueryObserverResult<string, Error>>
182
+ >()
183
+
184
+ const query2 = useQueries({ queries: queriesWithoutSelect })
185
+ expectTypeOf(query2.value).toEqualTypeOf<
186
+ Array<QueryObserverResult<number, Error>>
187
+ >()
188
+
189
+ const query3 = useQueries({ queries: queriesWithQueryOptions })
190
+ expectTypeOf(query3.value).toEqualTypeOf<
191
+ Array<QueryObserverResult<string, Error>>
192
+ >()
193
+
194
+ const query4 = useQueries({ queries: queriesWithQueryOptionsWithoutSelect })
195
+ expectTypeOf(query4.value).toEqualTypeOf<
196
+ Array<QueryObserverResult<number, Error>>
197
+ >()
198
+
199
+ const queryCombine = useQueries({
200
+ queries: queries,
201
+ combine: (data) => {
202
+ return data.reduce((acc, i) => {
203
+ acc.push(i.data ?? '')
204
+ return acc
205
+ }, [] as Array<string>)
206
+ },
207
+ })
208
+ expectTypeOf(queryCombine.value).toEqualTypeOf<Array<string>>()
209
+
210
+ const queryCombineWithoutSelect = useQueries({
211
+ queries: queriesWithoutSelect,
212
+ combine: (data) => {
213
+ return data.reduce((acc, i) => {
214
+ acc.push(i.data ?? 0)
215
+ return acc
216
+ }, [] as Array<number>)
217
+ },
218
+ })
219
+
220
+ expectTypeOf(queryCombineWithoutSelect.value).toEqualTypeOf<Array<number>>()
221
+ })
145
222
  })
@@ -1,12 +1,12 @@
1
1
  import { describe, expectTypeOf, it } from 'vitest'
2
- import { reactive } from 'vue-demi'
2
+ import { computed, reactive, ref } from 'vue-demi'
3
3
  import { useQuery } from '../useQuery'
4
4
  import { queryOptions } from '../queryOptions'
5
5
  import { simpleFetcher } from './test-utils'
6
6
  import type { OmitKeyof } from '..'
7
7
  import type { UseQueryOptions } from '../useQuery'
8
8
 
9
- describe('initialData', () => {
9
+ describe('useQuery', () => {
10
10
  describe('Config object overload', () => {
11
11
  it('TData should always be defined when initialData is provided as an object', () => {
12
12
  const { data } = reactive(
@@ -225,4 +225,47 @@ describe('initialData', () => {
225
225
  }
226
226
  })
227
227
  })
228
+
229
+ describe('accept ref options', () => {
230
+ it('should accept ref options', () => {
231
+ const options = ref({
232
+ queryKey: ['key'],
233
+ queryFn: simpleFetcher,
234
+ })
235
+
236
+ const query = reactive(useQuery(options))
237
+
238
+ if (query.isSuccess) {
239
+ expectTypeOf(query.data).toEqualTypeOf<string>()
240
+ }
241
+ })
242
+
243
+ it('should accept computed options', () => {
244
+ const options = computed(() => ({
245
+ queryKey: ['key'],
246
+ queryFn: simpleFetcher,
247
+ }))
248
+
249
+ const query = reactive(useQuery(options))
250
+
251
+ if (query.isSuccess) {
252
+ expectTypeOf(query.data).toEqualTypeOf<string>()
253
+ }
254
+ })
255
+
256
+ it('should accept computed query options', () => {
257
+ const options = computed(() =>
258
+ queryOptions({
259
+ queryKey: ['key'],
260
+ queryFn: simpleFetcher,
261
+ }),
262
+ )
263
+
264
+ const query = reactive(useQuery(options))
265
+
266
+ if (query.isSuccess) {
267
+ expectTypeOf(query.data).toEqualTypeOf<string>()
268
+ }
269
+ })
270
+ })
228
271
  })
package/src/types.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Ref, UnwrapRef } from 'vue-demi'
1
+ import type { ComputedRef, Ref, UnwrapRef } from 'vue-demi'
2
2
 
3
3
  type Primitive = string | number | boolean | bigint | symbol | undefined | null
4
4
  type UnwrapLeaf =
@@ -12,7 +12,7 @@ type UnwrapLeaf =
12
12
  | Set<any>
13
13
  | WeakSet<any>
14
14
 
15
- export type MaybeRef<T> = Ref<T> | T
15
+ export type MaybeRef<T> = Ref<T> | ComputedRef<T> | T
16
16
 
17
17
  export type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T)
18
18
 
package/src/useQueries.ts CHANGED
@@ -15,7 +15,6 @@ import type {
15
15
  DefaultError,
16
16
  DefinedQueryObserverResult,
17
17
  QueriesObserverOptions,
18
- QueriesPlaceholderDataFunction,
19
18
  QueryFunction,
20
19
  QueryKey,
21
20
  QueryObserverResult,
@@ -23,7 +22,7 @@ import type {
23
22
  } from '@tanstack/query-core'
24
23
  import type { UseQueryOptions } from './useQuery'
25
24
  import type { QueryClient } from './queryClient'
26
- import type { DeepUnwrapRef, DistributiveOmit, MaybeRefDeep } from './types'
25
+ import type { DeepUnwrapRef, MaybeRefDeep } from './types'
27
26
 
28
27
  // This defines the `UseQueryOptions` that are accepted in `QueriesOptions` & `GetOptions`.
29
28
  // `placeholderData` function does not have a parameter
@@ -32,12 +31,7 @@ type UseQueryOptionsForUseQueries<
32
31
  TError = unknown,
33
32
  TData = TQueryFnData,
34
33
  TQueryKey extends QueryKey = QueryKey,
35
- > = DistributiveOmit<
36
- UseQueryOptions<TQueryFnData, TError, TData, unknown, TQueryKey>,
37
- 'placeholderData'
38
- > & {
39
- placeholderData?: TQueryFnData | QueriesPlaceholderDataFunction<TQueryFnData>
40
- }
34
+ > = UseQueryOptions<TQueryFnData, TError, TData, TQueryFnData, TQueryKey>
41
35
 
42
36
  // Avoid TS depth-limit error in case of large array literal
43
37
  type MAXIMUM_DEPTH = 20
@@ -45,7 +39,7 @@ type MAXIMUM_DEPTH = 20
45
39
  // Widen the type of the symbol to enable type inference even if skipToken is not immutable.
46
40
  type SkipTokenForUseQueries = symbol
47
41
 
48
- type GetOptions<T> =
42
+ type GetUseQueryOptionsForUseQueries<T> =
49
43
  // Part 1: if UseQueryOptions are already being sent through, then just return T
50
44
  T extends UseQueryOptions
51
45
  ? DeepUnwrapRef<T>
@@ -81,8 +75,20 @@ type GetOptions<T> =
81
75
  unknown extends TData ? TQueryFnData : TData,
82
76
  TQueryKey
83
77
  >
84
- : // Fallback
85
- UseQueryOptionsForUseQueries
78
+ : T extends {
79
+ queryFn?:
80
+ | QueryFunction<infer TQueryFnData, infer TQueryKey>
81
+ | SkipTokenForUseQueries
82
+ throwOnError?: ThrowOnError<any, infer TError, any, any>
83
+ }
84
+ ? UseQueryOptionsForUseQueries<
85
+ TQueryFnData,
86
+ TError,
87
+ TQueryFnData,
88
+ TQueryKey
89
+ >
90
+ : // Fallback
91
+ UseQueryOptionsForUseQueries
86
92
 
87
93
  // A defined initialData setting should return a DefinedQueryObserverResult rather than QueryObserverResult
88
94
  type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
@@ -101,7 +107,7 @@ type GetDefinedOrUndefinedQueryResult<T, TData, TError = unknown> = T extends {
101
107
  : QueryObserverResult<TData, TError>
102
108
  : QueryObserverResult<TData, TError>
103
109
 
104
- type GetResults<T> =
110
+ type GetUseQueryResult<T> =
105
111
  // Part 1: if using UseQueryOptions then the types are already set
106
112
  T extends UseQueryOptions<
107
113
  infer TQueryFnData,
@@ -142,26 +148,37 @@ type GetResults<T> =
142
148
  unknown extends TData ? TQueryFnData : TData,
143
149
  unknown extends TError ? DefaultError : TError
144
150
  >
145
- : // Fallback
146
- QueryObserverResult
151
+ : T extends {
152
+ queryFn?:
153
+ | QueryFunction<infer TQueryFnData, any>
154
+ | SkipTokenForUseQueries
155
+ throwOnError?: ThrowOnError<any, infer TError, any, any>
156
+ }
157
+ ? GetDefinedOrUndefinedQueryResult<
158
+ T,
159
+ TQueryFnData,
160
+ unknown extends TError ? DefaultError : TError
161
+ >
162
+ : // Fallback
163
+ QueryObserverResult
147
164
 
148
165
  /**
149
166
  * UseQueriesOptions reducer recursively unwraps function arguments to infer/enforce type param
150
167
  */
151
168
  export type UseQueriesOptions<
152
169
  T extends Array<any>,
153
- TResult extends Array<any> = [],
170
+ TResults extends Array<any> = [],
154
171
  TDepth extends ReadonlyArray<number> = [],
155
172
  > = TDepth['length'] extends MAXIMUM_DEPTH
156
173
  ? Array<UseQueryOptionsForUseQueries>
157
174
  : T extends []
158
175
  ? []
159
176
  : T extends [infer Head]
160
- ? [...TResult, GetOptions<Head>]
161
- : T extends [infer Head, ...infer Tail]
177
+ ? [...TResults, GetUseQueryOptionsForUseQueries<Head>]
178
+ : T extends [infer Head, ...infer Tails]
162
179
  ? UseQueriesOptions<
163
- [...Tail],
164
- [...TResult, GetOptions<Head>],
180
+ [...Tails],
181
+ [...TResults, GetUseQueryOptionsForUseQueries<Head>],
165
182
  [...TDepth, 1]
166
183
  >
167
184
  : ReadonlyArray<unknown> extends T
@@ -192,18 +209,18 @@ export type UseQueriesOptions<
192
209
  */
193
210
  export type UseQueriesResults<
194
211
  T extends Array<any>,
195
- TResult extends Array<any> = [],
212
+ TResults extends Array<any> = [],
196
213
  TDepth extends ReadonlyArray<number> = [],
197
214
  > = TDepth['length'] extends MAXIMUM_DEPTH
198
215
  ? Array<QueryObserverResult>
199
216
  : T extends []
200
217
  ? []
201
218
  : T extends [infer Head]
202
- ? [...TResult, GetResults<Head>]
203
- : T extends [infer Head, ...infer Tail]
219
+ ? [...TResults, GetUseQueryResult<Head>]
220
+ : T extends [infer Head, ...infer Tails]
204
221
  ? UseQueriesResults<
205
- [...Tail],
206
- [...TResult, GetResults<Head>],
222
+ [...Tails],
223
+ [...TResults, GetUseQueryResult<Head>],
207
224
  [...TDepth, 1]
208
225
  >
209
226
  : T extends Array<