react-query-kit
Version:
🕊️ A toolkit for ReactQuery that make ReactQuery hooks more reusable and typesafe
59 lines (48 loc) • 1.88 kB
JavaScript
import { withMiddleware, getKey, ReactQuery } from './utils.mjs';
const createBaseQuery = (defaultOptions, useRQHook, overrideOptions) => {
if (process.env.NODE_ENV !== 'production') {
// @ts-ignore
if (defaultOptions.useDefaultOptions) {
console.error('[Bug] useDefaultOptions is not supported, please use middleware instead.');
} // @ts-ignore
if (defaultOptions.queryFn) {
console.error('[Bug] queryFn is not supported, please use fetcher instead.');
}
}
const getQueryOptions = (fetcherFn, variables) => {
return {
queryFn: variables && variables === ReactQuery.skipToken ? ReactQuery.skipToken : context => fetcherFn(variables, context),
queryKey: getKey(defaultOptions.queryKey, variables)
};
};
const getKey$1 = variables => getKey(defaultOptions.queryKey, variables);
const getOptions = variables => {
return { ...defaultOptions,
...getQueryOptions(defaultOptions.fetcher, variables)
};
};
const getFetchOptions = variables => {
return { ...getQueryOptions(defaultOptions.fetcher, variables),
queryKeyHashFn: defaultOptions.queryKeyHashFn,
getPreviousPageParam: defaultOptions.getPreviousPageParam,
getNextPageParam: defaultOptions.getNextPageParam,
initialPageParam: defaultOptions.initialPageParam,
staleTime: defaultOptions.staleTime,
gcTime: defaultOptions.gcTime
};
};
const useBaseHook = (options, queryClient) => {
return useRQHook({ ...options,
...getQueryOptions(options.fetcher, options.variables),
...overrideOptions
}, queryClient);
};
return Object.assign(withMiddleware(useBaseHook, defaultOptions, 'queries'), {
fetcher: defaultOptions.fetcher,
getKey: getKey$1,
getOptions,
getFetchOptions
});
};
export { createBaseQuery };
//# sourceMappingURL=createBaseQuery.mjs.map