@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
JavaScript
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