{"version":3,"file":"useSuspenseQueries.mjs","sources":["../../../src/react/useSuspenseQueries.ts"],"sourcesContent":["import { InfiniteData, InfiniteQuery, Query, QueryClient } from '../vanilla'\nimport { suspenseOptions } from './suspense'\nimport { useQueries } from './useQueries'\nimport {\n  UseSuspenseInfiniteQueryOptions,\n  UseSuspenseInfiniteQueryResult,\n  UseSuspenseQueryOptions,\n  UseSuspenseQueryResult,\n} from './useSuspenseQuery'\n\n// Avoid TS depth-limit error in case of large array literal\ntype MAXIMUM_DEPTH = 20\n\ntype GetSuspenseOptions<T> = T extends {\n  query: InfiniteQuery<infer TFetcherData, infer TVars, infer TError>\n  select: (data: any) => infer TData\n}\n  ? UseSuspenseInfiniteQueryOptions<TFetcherData, TVars, TError, TData>\n  : T extends {\n      query: InfiniteQuery<infer TFetcherData, infer TVars, infer TError>\n    }\n  ? UseSuspenseInfiniteQueryOptions<TFetcherData, TVars, TError>\n  : T extends {\n      query: Query<infer TFetcherData, infer TVars, infer TError>\n      select: (data: any) => infer TData\n    }\n  ? UseSuspenseQueryOptions<TFetcherData, TVars, TError, TData>\n  : T extends {\n      query: Query<infer TFetcherData, infer TVars, infer TError>\n    }\n  ? UseSuspenseQueryOptions<TFetcherData, TVars, TError, TFetcherData>\n  : UseSuspenseQueryOptions\n\ntype GetSuspenseResults<T> = T extends {\n  query: InfiniteQuery<any, any, infer TError>\n  select: (data: any) => infer TData\n}\n  ? UseSuspenseInfiniteQueryResult<TData, TError>\n  : T extends {\n      query: InfiniteQuery<infer TFetcherData, any, infer TError>\n    }\n  ? UseSuspenseInfiniteQueryResult<InfiniteData<TFetcherData>, TError>\n  : T extends {\n      query: Query<any, any, infer TError>\n      select: (data: any) => infer TData\n    }\n  ? UseSuspenseQueryResult<TData, TError>\n  : T extends {\n      query: Query<infer TFetcherData, any, infer TError>\n    }\n  ? UseSuspenseQueryResult<TFetcherData, TError>\n  : UseSuspenseQueryResult\n\n/**\n * QueriesOptions reducer recursively unwraps function arguments to infer/enforce type param\n */\nexport type SuspenseQueriesOptions<\n  T extends any[],\n  Result extends any[] = [],\n  Depth extends ReadonlyArray<number> = []\n> = Depth['length'] extends MAXIMUM_DEPTH\n  ? UseSuspenseQueryOptions[]\n  : T extends []\n  ? []\n  : T extends [infer Head]\n  ? [...Result, GetSuspenseOptions<Head>]\n  : T extends [infer Head, ...infer Tail]\n  ? SuspenseQueriesOptions<\n      [...Tail],\n      [...Result, GetSuspenseOptions<Head>],\n      [...Depth, 1]\n    >\n  : 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 UseSuspenseQueryOptions<\n      infer TFetcherData,\n      infer TVars,\n      infer TError\n    >[]\n  ? UseSuspenseQueryOptions<TFetcherData, TVars, TError>[]\n  : // Fallback\n    UseSuspenseQueryOptions[]\n\n/**\n * QueriesResults reducer recursively maps type param to results\n */\nexport type SuspenseQueriesResults<\n  T extends any[],\n  Result extends any[] = [],\n  Depth extends ReadonlyArray<number> = []\n> = Depth['length'] extends MAXIMUM_DEPTH\n  ? UseSuspenseQueryOptions[]\n  : T extends []\n  ? []\n  : T extends [infer Head]\n  ? [...Result, GetSuspenseResults<Head>]\n  : T extends [infer Head, ...infer Tail]\n  ? SuspenseQueriesResults<\n      [...Tail],\n      [...Result, GetSuspenseResults<Head>],\n      [...Depth, 1]\n    >\n  : T extends UseSuspenseQueryOptions<\n      infer TFetcherData,\n      any,\n      infer TError,\n      any\n    >[]\n  ? // Dynamic-size (homogenous) UseQueryOptions array: map directly to array of results\n    UseSuspenseQueryResult<TFetcherData, TError>[]\n  : // Fallback\n    UseSuspenseQueryResult[]\n\nexport function useSuspenseQueries<\n  T extends any[],\n  TCombinedResult = SuspenseQueriesResults<T>\n>(\n  options: {\n    queries: readonly [...SuspenseQueriesOptions<T>]\n    combine?: (result: SuspenseQueriesResults<T>) => TCombinedResult\n  },\n  queryClient?: QueryClient\n): TCombinedResult {\n  return useQueries(\n    {\n      ...options,\n      queries: options.queries.map(query => ({\n        ...query,\n        ...suspenseOptions,\n      })),\n    } as any,\n    queryClient\n  )\n}\n"],"names":["useSuspenseQueries","options","queryClient","useQueries","queries","map","query","suspenseOptions"],"mappings":";;;AAUA;;AA2CA;AACA;AACA;;AA8BA;AACA;AACA;;AA4BO,SAASA,kBAAkBA,CAIhCC,OAGC,EACDC,WAAyB,EACR;AACjB,EAAA,OAAOC,UAAU,CACf;AACE,IAAA,GAAGF,OAAO;IACVG,OAAO,EAAEH,OAAO,CAACG,OAAO,CAACC,GAAG,CAACC,KAAK,KAAK;AACrC,MAAA,GAAGA,KAAK;MACR,GAAGC,eAAAA;AACL,KAAC,CAAC,CAAA;GACH,EACDL,WACF,CAAC,CAAA;AACH;;;;"}