@openapi-qraft/react
Version:
OpenAPI client for React, providing type-safe requests and dynamic TanStack Query React Hooks via a modular, Proxy-based architecture.
43 lines (39 loc) • 2.27 kB
JavaScript
;
var composeInfiniteQueryKey = require('./composeInfiniteQueryKey.cjs');
var composeQueryKey = require('./composeQueryKey.cjs');
var prepareRequestFnParameters = require('./prepareRequestFnParameters.cjs');
var requestFnResponseRejecter = require('./requestFnResponseRejecter.cjs');
var requestFnResponseResolver = require('./requestFnResponseResolver.cjs');
/**
* 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.prepareRequestFnParameters(queryParams, pageParam, infinite);
return requestFn(schema, {
parameters: parameters,
baseUrl,
body,
signal,
meta
}).then(requestFnResponseResolver.requestFnResponseResolver, requestFnResponseRejecter.requestFnResponseRejecter);
} : undefined);
// @ts-expect-error - Too complex union to type
return queryClient[queryFilterMethod]({
...options,
queryFn,
queryKey: options.queryKey ?? (infinite ? composeInfiniteQueryKey.composeInfiniteQueryKey(schema, parameters) : composeQueryKey.composeQueryKey(schema, parameters))
});
}
exports.callQueryClientMethodWithQueryKey = callQueryClientMethodWithQueryKey;
//# sourceMappingURL=callQueryClientFetchMethod.cjs.map