UNPKG

react-query-kit

Version:

🕊️ A toolkit for ReactQuery that make ReactQuery hooks more reusable and typesafe

78 lines (64 loc) • 2.05 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var createInfiniteQuery = require('./createInfiniteQuery.js'); var createMutation = require('./createMutation.js'); var createQuery = require('./createQuery.js'); var createSuspenseInfiniteQuery = require('./createSuspenseInfiniteQuery.js'); var createSuspenseQuery = require('./createSuspenseQuery.js'); const isRouterLeaf = value => { return !!value && typeof value._routerType === 'string'; }; const buildRouter = (keys, config) => { return Object.entries(config).reduce((acc, [key, opts]) => { if (!isRouterLeaf(opts)) { acc[key] = buildRouter([...keys, key], opts); } else { const type = opts._routerType; const options = { ...opts, [type === "m" ? "mutationKey" : "queryKey"]: [...keys, key] }; if (type === "m") { acc[key] = { useMutation: createMutation.createMutation(options), ...createMutation.createMutation(options) }; return acc; } acc[key] = type === "q" ? { useQuery: createQuery.createQuery(options), useSuspenseQuery: createSuspenseQuery.createSuspenseQuery(options), ...createQuery.createQuery(options) } : { useInfiniteQuery: createInfiniteQuery.createInfiniteQuery(options), useSuspenseInfiniteQuery: createSuspenseInfiniteQuery.createSuspenseInfiniteQuery(options), ...createInfiniteQuery.createInfiniteQuery(options) }; } return acc; }, { getKey: () => keys }); }; const router = (key, config) => { return buildRouter(Array.isArray(key) ? key : [key], config); }; function query(options) { return { ...options, _routerType: 'q' }; } function infiniteQuery(options) { return { ...options, _routerType: 'inf' }; } function mutation(options) { return { ...options, _routerType: 'm' }; } router.query = query; router.infiniteQuery = infiniteQuery; router.mutation = mutation; exports.router = router; //# sourceMappingURL=router.js.map