{"version":3,"file":"callQueryClientFetchMethod.cjs","sources":["../../../src/lib/callQueryClientFetchMethod.ts"],"sourcesContent":["import type { QueryClient } from '@tanstack/react-query';\nimport type { CreateAPIQueryClientOptions } from '../qraftAPIClient.js';\nimport type { OperationSchema, RequestFn } from './requestFn.js';\nimport { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js';\nimport { composeQueryKey } from './composeQueryKey.js';\nimport { requestFnResponseRejecter } from './requestFnResponseRejecter.js';\nimport { requestFnResponseResolver } from './requestFnResponseResolver.js';\nimport { shelfMerge } from './shelfMerge.js';\n\n/**\n * Calls a query client fetch method with parameters and options,\n * and automatically composes the `QueryKey` based on the schema and parameters.\n */\nexport function callQueryClientMethodWithQueryKey<\n  QFMethod extends QueryKeyMethods,\n>(\n  qraftOptions: CreateAPIQueryClientOptions,\n  queryFilterMethod: QFMethod,\n  schema: OperationSchema,\n  infinite: boolean,\n  args: QueryClientMethodArgs<QFMethod>\n): ReturnType<(typeof QueryClient.prototype)[QFMethod]> {\n  const {\n    requestFn: requestFnOption,\n    baseUrl: baseUrlOption,\n    queryFn: queryFnOption,\n    parameters,\n    ...options\n  } = args[0] ?? {};\n\n  const queryClient = qraftOptions.queryClient;\n  const baseUrl = baseUrlOption ?? qraftOptions.baseUrl;\n\n  if (queryFnOption && requestFnOption) {\n    throw new Error(\n      'callQueryClientMethodWithQueryKey: options.queryFn and options.requestFn are mutually exclusive'\n    );\n  }\n\n  const requestFn = requestFnOption ?? qraftOptions.requestFn;\n\n  if (options.queryKey && parameters) {\n    throw new Error(\n      'callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive'\n    );\n  }\n\n  const queryFn =\n    queryFnOption ??\n    (requestFn\n      ? // @ts-expect-error - Too complex union to type\n        function ({ queryKey: [, queryParams], signal, meta, pageParam }) {\n          return requestFn(schema, {\n            parameters: infinite\n              ? (shelfMerge(2, queryParams, pageParam) as never)\n              : queryParams,\n            baseUrl,\n            signal,\n            meta,\n          }).then(requestFnResponseResolver, requestFnResponseRejecter);\n        }\n      : undefined);\n\n  // @ts-expect-error - Too complex union to type\n  return queryClient[queryFilterMethod]({\n    ...options,\n    queryFn,\n    queryKey:\n      options.queryKey ??\n      (infinite\n        ? composeInfiniteQueryKey(schema, parameters)\n        : composeQueryKey(schema, parameters)),\n  });\n}\n\ntype QueryClientMethodArgs<QMethod extends keyof QueryClientPrototype> = [\n  options: Parameters<QueryClientPrototype[QMethod]>[0] & {\n    parameters?: unknown;\n    baseUrl?: string;\n    requestFn?: RequestFn<unknown, unknown>;\n  },\n  queryClient: QueryClient,\n];\n\ntype QueryKeyMethods =\n  | QueryKeyMethod<'fetchQuery'>\n  | QueryKeyMethod<'prefetchQuery'>\n  | QueryKeyMethod<'ensureQueryData'>\n  | QueryKeyMethod<'fetchInfiniteQuery'>\n  | QueryKeyMethod<'prefetchInfiniteQuery'>\n  | QueryKeyMethod<'ensureInfiniteQueryData'>;\n\ntype QueryClientPrototype = typeof QueryClient.prototype;\n\ntype QueryKeyMethod<QFMethod extends keyof typeof QueryClient.prototype> =\n  QFMethod;\n"],"names":["callQueryClientMethodWithQueryKey","qraftOptions","queryFilterMethod","schema","infinite","args","requestFn","requestFnOption","baseUrl","baseUrlOption","queryFn","queryFnOption","parameters","options","queryClient","Error","queryKey","queryParams","signal","meta","pageParam","shelfMerge","then","requestFnResponseResolver","requestFnResponseRejecter","undefined","composeInfiniteQueryKey","composeQueryKey"],"mappings":";;;;;;;;AASA;;;IAIO,SAASA,iCAAAA,CAGdC,YAAyC,EACzCC,iBAA2B,EAC3BC,MAAuB,EACvBC,QAAiB,EACjBC,IAAqC,EAAA;AAErC,IAAA,MAAM,EACJC,SAAWC,EAAAA,eAAe,EAC1BC,OAASC,EAAAA,aAAa,EACtBC,OAASC,EAAAA,aAAa,EACtBC,UAAU,EACV,GAAGC,OACJ,EAAA,GAAGR,IAAI,CAAC,CAAA,CAAE,IAAI,EAAC,CAAA;IAEhB,MAAMS,WAAAA,GAAcb,aAAaa,WAAW,CAAA;IAC5C,MAAMN,OAAAA,GAAUC,aAAiBR,IAAAA,YAAAA,CAAaO,OAAO,CAAA;AAErD,IAAA,IAAIG,iBAAiBJ,eAAiB,EAAA;AACpC,QAAA,MAAM,IAAIQ,KACR,CAAA,iGAAA,CAAA,CAAA;AAEJ,KAAA;IAEA,MAAMT,SAAAA,GAAYC,eAAmBN,IAAAA,YAAAA,CAAaK,SAAS,CAAA;IAE3D,IAAIO,OAAAA,CAAQG,QAAQ,IAAIJ,UAAY,EAAA;AAClC,QAAA,MAAM,IAAIG,KACR,CAAA,mGAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAML,OACJC,GAAAA,aAAAA,KACCL,SAAAA,GAEG,SAAU,EAAEU,QAAAA,EAAU,GAAGC,WAAAA,CAAY,EAAEC,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,EAAA;AAC9D,QAAA,OAAOd,UAAUH,MAAQ,EAAA;AACvBS,YAAAA,UAAAA,EAAYR,QACPiB,GAAAA,qBAAAA,CAAW,CAAGJ,EAAAA,WAAAA,EAAaG,SAC5BH,CAAAA,GAAAA,WAAAA;AACJT,YAAAA,OAAAA;AACAU,YAAAA,MAAAA;AACAC,YAAAA,IAAAA;SACCG,CAAAA,CAAAA,IAAI,CAACC,mDAA2BC,EAAAA,mDAAAA,CAAAA,CAAAA;AACrC,KAAA,GACAC,SAAQ,CAAA,CAAA;;IAGd,OAAOX,WAAW,CAACZ,iBAAAA,CAAkB,CAAC;AACpC,QAAA,GAAGW,OAAO;AACVH,QAAAA,OAAAA;QACAM,QACEH,EAAAA,OAAAA,CAAQG,QAAQ,KACfZ,QAAAA,GACGsB,gDAAwBvB,MAAQS,EAAAA,UAAAA,CAAAA,GAChCe,+BAAgBxB,CAAAA,MAAAA,EAAQS,UAAU,CAAA,CAAA;AAC1C,KAAA,CAAA,CAAA;AACF;;;;"}