UNPKG

react-query-kit

Version:

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

1 lines • 5.75 kB
{"version":3,"file":"router.mjs","sources":["../../src/router.ts"],"sourcesContent":["import { QueryKey } from '@tanstack/react-query'\n\nimport { createInfiniteQuery } from './createInfiniteQuery'\nimport { createMutation } from './createMutation'\nimport { createQuery } from './createQuery'\nimport { createSuspenseInfiniteQuery } from './createSuspenseInfiniteQuery'\nimport { createSuspenseQuery } from './createSuspenseQuery'\nimport type {\n CompatibleError,\n CreateRouter,\n RouterConfig,\n RouterInfiniteQuery,\n RouterInfiniteQueryOptions,\n RouterMutation,\n RouterMutationOptions,\n RouterQuery,\n RouterQueryOptions,\n} from './types'\n\ntype RouterNode = RouterConfig[string]\ntype RouterTypedNode = RouterNode & {\n _routerType: 'q' | 'inf' | 'm'\n}\n\nconst isRouterLeaf = (value: RouterNode): value is RouterTypedNode => {\n return !!value && typeof value._routerType === 'string'\n}\n\nconst buildRouter = (keys: QueryKey, config: RouterConfig) => {\n return Object.entries(config).reduce(\n (acc, [key, opts]) => {\n if (!isRouterLeaf(opts)) {\n acc[key] = buildRouter([...keys, key], opts)\n } else {\n const type = opts._routerType\n const options: any = {\n ...opts,\n [type === `m` ? `mutationKey` : `queryKey`]: [...keys, key],\n }\n\n if (type === `m`) {\n acc[key] = {\n useMutation: createMutation(options),\n ...createMutation(options),\n }\n return acc\n }\n\n acc[key] =\n type === `q`\n ? {\n useQuery: createQuery(options),\n useSuspenseQuery: createSuspenseQuery(options),\n ...createQuery(options),\n }\n : {\n useInfiniteQuery: createInfiniteQuery(options),\n useSuspenseInfiniteQuery: createSuspenseInfiniteQuery(options),\n ...createInfiniteQuery(options),\n }\n }\n\n return acc\n },\n {\n getKey: () => keys,\n } as any\n )\n}\n\nexport const router = <TConfig extends RouterConfig>(\n key: string | QueryKey,\n config: TConfig\n): CreateRouter<TConfig> => {\n return buildRouter(Array.isArray(key) ? key : [key], config)\n}\n\nfunction query<TFnData, TVariables = void, TError = CompatibleError>(\n options: RouterQueryOptions<TFnData, TVariables, TError>\n): RouterQuery<TFnData, TVariables, TError> {\n return {\n ...options,\n _routerType: 'q',\n }\n}\n\nfunction infiniteQuery<\n TFnData,\n TVariables = void,\n TError = CompatibleError,\n TPageParam = number\n>(\n options: RouterInfiniteQueryOptions<TFnData, TVariables, TError, TPageParam>\n): RouterInfiniteQuery<TFnData, TVariables, TError, TPageParam> {\n return { ...options, _routerType: 'inf' } as RouterInfiniteQuery<\n TFnData,\n TVariables,\n TError,\n TPageParam\n >\n}\n\nfunction mutation<\n TFnData = unknown,\n TVariables = void,\n TError = CompatibleError,\n TContext = unknown\n>(\n options: RouterMutationOptions<TFnData, TVariables, TError, TContext>\n): RouterMutation<TFnData, TVariables, TError, TContext> {\n return { ...options, _routerType: 'm' } as RouterMutation<\n TFnData,\n TVariables,\n TError,\n TContext\n >\n}\n\nrouter.query = query\nrouter.infiniteQuery = infiniteQuery\nrouter.mutation = mutation\n"],"names":["isRouterLeaf","value","_routerType","buildRouter","keys","config","Object","entries","reduce","acc","key","opts","type","options","useMutation","createMutation","useQuery","createQuery","useSuspenseQuery","createSuspenseQuery","useInfiniteQuery","createInfiniteQuery","useSuspenseInfiniteQuery","createSuspenseInfiniteQuery","getKey","router","Array","isArray","query","infiniteQuery","mutation"],"mappings":";;;;;;AAwBA,MAAMA,YAAY,GAAIC,KAAD,IAAiD;EACpE,OAAO,CAAC,CAACA,KAAF,IAAW,OAAOA,KAAK,CAACC,WAAb,KAA6B,QAA/C,CAAA;AACD,CAFD,CAAA;;AAIA,MAAMC,WAAW,GAAG,CAACC,IAAD,EAAiBC,MAAjB,KAA0C;AAC5D,EAAA,OAAOC,MAAM,CAACC,OAAP,CAAeF,MAAf,EAAuBG,MAAvB,CACL,CAACC,GAAD,EAAM,CAACC,GAAD,EAAMC,IAAN,CAAN,KAAsB;AACpB,IAAA,IAAI,CAACX,YAAY,CAACW,IAAD,CAAjB,EAAyB;AACvBF,MAAAA,GAAG,CAACC,GAAD,CAAH,GAAWP,WAAW,CAAC,CAAC,GAAGC,IAAJ,EAAUM,GAAV,CAAD,EAAiBC,IAAjB,CAAtB,CAAA;AACD,KAFD,MAEO;AACL,MAAA,MAAMC,IAAI,GAAGD,IAAI,CAACT,WAAlB,CAAA;AACA,MAAA,MAAMW,OAAY,GAAG,EACnB,GAAGF,IADgB;QAEnB,CAACC,IAAI,QAAJ,GAAD,aAAA,GAAA,UAAA,GAA6C,CAAC,GAAGR,IAAJ,EAAUM,GAAV,CAAA;OAF/C,CAAA;;MAKA,IAAIE,IAAI,QAAR,EAAkB;QAChBH,GAAG,CAACC,GAAD,CAAH,GAAW;AACTI,UAAAA,WAAW,EAAEC,cAAc,CAACF,OAAD,CADlB;UAET,GAAGE,cAAc,CAACF,OAAD,CAAA;SAFnB,CAAA;AAIA,QAAA,OAAOJ,GAAP,CAAA;AACD,OAAA;;AAEDA,MAAAA,GAAG,CAACC,GAAD,CAAH,GACEE,IAAI,QAAJ,GACI;AACEI,QAAAA,QAAQ,EAAEC,WAAW,CAACJ,OAAD,CADvB;AAEEK,QAAAA,gBAAgB,EAAEC,mBAAmB,CAACN,OAAD,CAFvC;QAGE,GAAGI,WAAW,CAACJ,OAAD,CAAA;AAHhB,OADJ,GAMI;AACEO,QAAAA,gBAAgB,EAAEC,mBAAmB,CAACR,OAAD,CADvC;AAEES,QAAAA,wBAAwB,EAAEC,2BAA2B,CAACV,OAAD,CAFvD;QAGE,GAAGQ,mBAAmB,CAACR,OAAD,CAAA;OAV9B,CAAA;AAYD,KAAA;;AAED,IAAA,OAAOJ,GAAP,CAAA;AACD,GAlCI,EAmCL;AACEe,IAAAA,MAAM,EAAE,MAAMpB,IAAAA;AADhB,GAnCK,CAAP,CAAA;AAuCD,CAxCD,CAAA;;MA0CaqB,MAAM,GAAG,CACpBf,GADoB,EAEpBL,MAFoB,KAGM;AAC1B,EAAA,OAAOF,WAAW,CAACuB,KAAK,CAACC,OAAN,CAAcjB,GAAd,CAAqBA,GAAAA,GAArB,GAA2B,CAACA,GAAD,CAA5B,EAAmCL,MAAnC,CAAlB,CAAA;AACD,EALM;;AAOP,SAASuB,KAAT,CACEf,OADF,EAE4C;EAC1C,OAAO,EACL,GAAGA,OADE;AAELX,IAAAA,WAAW,EAAE,GAAA;GAFf,CAAA;AAID,CAAA;;AAED,SAAS2B,aAAT,CAMEhB,OANF,EAOgE;EAC9D,OAAO,EAAE,GAAGA,OAAL;AAAcX,IAAAA,WAAW,EAAE,KAAA;GAAlC,CAAA;AAMD,CAAA;;AAED,SAAS4B,QAAT,CAMEjB,OANF,EAOyD;EACvD,OAAO,EAAE,GAAGA,OAAL;AAAcX,IAAAA,WAAW,EAAE,GAAA;GAAlC,CAAA;AAMD,CAAA;;AAEDuB,MAAM,CAACG,KAAP,GAAeA,KAAf,CAAA;AACAH,MAAM,CAACI,aAAP,GAAuBA,aAAvB,CAAA;AACAJ,MAAM,CAACK,QAAP,GAAkBA,QAAlB;;;;"}