UNPKG

@openapi-qraft/react

Version:

OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.

41 lines (38 loc) 2.1 kB
import { composeInfiniteQueryKey } from './composeInfiniteQueryKey.js'; import { composeQueryKey } from './composeQueryKey.js'; import { prepareRequestFnParameters } from './prepareRequestFnParameters.js'; import { requestFnResponseRejecter } from './requestFnResponseRejecter.js'; import { requestFnResponseResolver } from './requestFnResponseResolver.js'; /** * Calls a query client fetch method with parameters and options, * and automatically composes the `QueryKey` based on the schema and parameters. */ function callQueryClientMethodWithQueryKey(qraftOptions, queryFilterMethod, schema, infinite, args) { const { requestFn: requestFnOption, baseUrl: baseUrlOption, queryFn: queryFnOption, parameters, ...options } = args[0] ?? {}; const queryClient = qraftOptions.queryClient; const baseUrl = baseUrlOption ?? qraftOptions.baseUrl; if (queryFnOption && requestFnOption) { throw new Error('callQueryClientMethodWithQueryKey: options.queryFn and options.requestFn are mutually exclusive'); } const requestFn = requestFnOption ?? qraftOptions.requestFn; if (options.queryKey && parameters) { throw new Error('callQueryClientMethodWithQueryKey: options.queryKey and options.parameters are mutually exclusive'); } const queryFn = queryFnOption ?? (requestFn ? function({ queryKey: [, queryParams], signal, meta, pageParam }) { const { parameters, body } = prepareRequestFnParameters(queryParams, pageParam, infinite); return requestFn(schema, { parameters: parameters, baseUrl, body, signal, meta }).then(requestFnResponseResolver, requestFnResponseRejecter); } : undefined); // @ts-expect-error - Too complex union to type return queryClient[queryFilterMethod]({ ...options, queryFn, queryKey: options.queryKey ?? (infinite ? composeInfiniteQueryKey(schema, parameters) : composeQueryKey(schema, parameters)) }); } export { callQueryClientMethodWithQueryKey }; //# sourceMappingURL=callQueryClientFetchMethod.js.map