UNPKG

jotai-tanstack-query

Version:
1 lines • 31.1 kB
{"version":3,"file":"index.mjs","sources":["../src/utils.ts","../src/baseAtomWithQuery.ts","../src/atomWithQuery.ts","../src/atomWithQueries.ts","../src/atomWithSuspenseQuery.ts","../src/atomWithInfiniteQuery.ts","../src/atomWithMutation.ts","../src/atomWithSuspenseInfiniteQuery.ts","../src/atomWithMutationState.ts"],"sourcesContent":["import type {\n DefaultError,\n DefaultedQueryObserverOptions,\n Query,\n QueryKey,\n QueryObserverResult,\n ThrowOnError,\n} from '@tanstack/query-core'\n\nexport const shouldSuspend = (\n defaultedOptions:\n | DefaultedQueryObserverOptions<any, any, any, any, any>\n | undefined,\n result: QueryObserverResult<any, any>,\n isRestoring: boolean\n) => defaultedOptions?.suspense && willFetch(result, isRestoring)\n\nexport const willFetch = (\n result: QueryObserverResult<any, any>,\n isRestoring: boolean\n) => result.isPending && !isRestoring\n\nexport const getHasError = <\n TData,\n TError,\n TQueryFnData,\n TQueryData,\n TQueryKey extends QueryKey,\n>({\n result,\n throwOnError,\n query,\n}: {\n result: QueryObserverResult<TData, TError>\n throwOnError:\n | ThrowOnError<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n}) => {\n return (\n result.isError &&\n !result.isFetching &&\n shouldThrowError(throwOnError, [result.error, query])\n )\n}\n\nexport function shouldThrowError<T extends (...args: any[]) => boolean>(\n throwOnError: boolean | T | undefined,\n params: Parameters<T>\n): boolean {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof throwOnError === 'function') {\n return throwOnError(...params)\n }\n\n return !!throwOnError\n}\n\nexport const defaultThrowOnError = <\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n _error: TError,\n query: Query<TQueryFnData, TError, TData, TQueryKey>\n) => typeof query.state.data === 'undefined'\n\nexport const ensureStaleTime = (\n defaultedOptions: DefaultedQueryObserverOptions<any, any, any, any, any>\n) => {\n if (defaultedOptions.suspense) {\n if (typeof defaultedOptions.staleTime !== 'number') {\n return {\n ...defaultedOptions,\n staleTime: 1000,\n }\n }\n }\n\n return defaultedOptions\n}\n","import {\n QueryClient,\n type QueryKey,\n QueryObserver,\n type QueryObserverResult,\n notifyManager,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { BaseAtomWithQueryOptions } from './types'\nimport { ensureStaleTime, getHasError, shouldSuspend } from './utils'\n\nexport function baseAtomWithQuery<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n>(\n getOptions: (\n get: Getter\n ) => BaseAtomWithQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n Observer: typeof QueryObserver,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n): WritableAtom<\n | QueryObserverResult<TData, TError>\n | Promise<QueryObserverResult<TData, TError>>,\n [],\n void\n> {\n const refreshAtom = atom(0)\n const clientAtom = atom(getQueryClient)\n if (process.env.NODE_ENV !== 'production') {\n clientAtom.debugPrivate = true\n }\n\n const observerCacheAtom = atom(\n () =>\n new WeakMap<\n QueryClient,\n QueryObserver<TQueryFnData, TError, TData, TQueryData, TQueryKey>\n >()\n )\n if (process.env.NODE_ENV !== 'production') {\n observerCacheAtom.debugPrivate = true\n }\n\n const defaultedOptionsAtom = atom((get) => {\n const client = get(clientAtom)\n const options = getOptions(get)\n const defaultedOptions = client.defaultQueryOptions(options)\n\n const cache = get(observerCacheAtom)\n const cachedObserver = cache.get(client)\n\n defaultedOptions._optimisticResults = 'optimistic'\n\n if (cachedObserver) {\n cachedObserver.setOptions(defaultedOptions)\n }\n\n return ensureStaleTime(defaultedOptions)\n })\n if (process.env.NODE_ENV !== 'production') {\n defaultedOptionsAtom.debugPrivate = true\n }\n\n const observerAtom = atom((get) => {\n const client = get(clientAtom)\n const defaultedOptions = get(defaultedOptionsAtom)\n\n const observerCache = get(observerCacheAtom)\n\n const cachedObserver = observerCache.get(client)\n\n if (cachedObserver) return cachedObserver\n\n const newObserver = new Observer(client, defaultedOptions)\n observerCache.set(client, newObserver)\n\n return newObserver\n })\n if (process.env.NODE_ENV !== 'production') {\n observerAtom.debugPrivate = true\n }\n\n const dataAtom = atom((get) => {\n const observer = get(observerAtom)\n const defaultedOptions = get(defaultedOptionsAtom)\n const result = observer.getOptimisticResult(defaultedOptions)\n\n const resultAtom = atom(result)\n if (process.env.NODE_ENV !== 'production') {\n resultAtom.debugPrivate = true\n }\n\n resultAtom.onMount = (set) => {\n const unsubscribe = observer.subscribe(notifyManager.batchCalls(set))\n return () => {\n if (observer.getCurrentResult().isError) {\n observer.getCurrentQuery().reset()\n }\n unsubscribe()\n }\n }\n\n return resultAtom\n })\n if (process.env.NODE_ENV !== 'production') {\n dataAtom.debugPrivate = true\n }\n\n return atom(\n (get) => {\n get(refreshAtom)\n const observer = get(observerAtom)\n const defaultedOptions = get(defaultedOptionsAtom)\n\n const result = get(get(dataAtom))\n\n if (shouldSuspend(defaultedOptions, result, false)) {\n return observer.fetchOptimistic(defaultedOptions)\n }\n\n if (\n getHasError({\n result,\n query: observer.getCurrentQuery(),\n throwOnError: defaultedOptions.throwOnError,\n })\n ) {\n throw result.error\n }\n\n return result\n },\n (_get, set) => {\n set(refreshAtom, (c) => c + 1)\n }\n )\n}\n","import {\n type DefaultError,\n QueryClient,\n type QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport {\n AtomWithQueryOptions,\n AtomWithQueryResult,\n DefinedAtomWithQueryResult,\n DefinedInitialDataOptions,\n UndefinedInitialDataOptions,\n} from './types'\n\nexport function atomWithQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n getOptions: (\n get: Getter\n ) => UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<AtomWithQueryResult<TData, TError>, [], void>\nexport function atomWithQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n getOptions: (\n get: Getter\n ) => DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<DefinedAtomWithQueryResult<TData, TError>, [], void>\nexport function atomWithQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n getOptions: (\n get: Getter\n ) => AtomWithQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<AtomWithQueryResult<TData, TError>, [], void>\nexport function atomWithQuery(\n getOptions: (get: Getter) => AtomWithQueryOptions,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n) {\n return baseAtomWithQuery(getOptions, QueryObserver, getQueryClient)\n}\n","import {\n type DefaultError,\n QueryClient,\n QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport { AtomWithQueryOptions, AtomWithQueryResult } from './types'\n\nexport function atomWithQueries<TCombinedResult>(\n {\n queries,\n combine,\n }: {\n queries: Array<(get: Getter) => AtomWithQueryOptions>\n combine: (results: AtomWithQueryResult[]) => TCombinedResult\n },\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<TCombinedResult, [], void>\nexport function atomWithQueries<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n>(\n {\n queries,\n }: {\n queries: Array<(get: Getter) => AtomWithQueryOptions>\n },\n getQueryClient?: (get: Getter) => QueryClient\n): Array<WritableAtom<AtomWithQueryResult<TData, TError>, [], void>>\n\nexport function atomWithQueries(\n {\n queries,\n combine,\n }: {\n queries: Array<(get: Getter) => AtomWithQueryOptions>\n combine?: (results: AtomWithQueryResult[]) => any\n },\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n): any {\n if (!combine) {\n return queries.map((getOptions) =>\n baseAtomWithQuery(getOptions, QueryObserver, getQueryClient)\n )\n }\n\n const queryAtoms = queries.map((getOptions) =>\n baseAtomWithQuery(getOptions, QueryObserver, getQueryClient)\n )\n\n return atom((get) => {\n const results = queryAtoms.map((queryAtom) => {\n const result = get(queryAtom)\n return result as AtomWithQueryResult\n })\n return combine(results)\n })\n}\n","import {\n type DefaultError,\n QueryClient,\n type QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport {\n AtomWithSuspenseQueryOptions,\n AtomWithSuspenseQueryResult,\n} from './types'\nimport { defaultThrowOnError } from './utils'\n\nexport function atomWithSuspenseQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n getOptions: (\n get: Getter\n ) => AtomWithSuspenseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n): WritableAtom<AtomWithSuspenseQueryResult<TData, TError>, [], void> {\n const suspenseOptions = atom((get) => {\n const options = getOptions(get)\n return {\n ...options,\n suspense: true,\n enabled: true,\n throwOnError: defaultThrowOnError,\n }\n })\n\n return baseAtomWithQuery(\n (get: Getter) => get(suspenseOptions),\n QueryObserver,\n getQueryClient\n ) as WritableAtom<AtomWithSuspenseQueryResult<TData, TError>, [], void>\n}\n","import {\n type DefaultError,\n type InfiniteData,\n InfiniteQueryObserver,\n QueryClient,\n type QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport {\n AtomWithInfiniteQueryOptions,\n AtomWithInfiniteQueryResult,\n DefinedAtomWithInfiniteQueryResult,\n DefinedInitialDataInfiniteOptions,\n UndefinedInitialDataInfiniteOptions,\n} from './types'\n\nexport function atomWithInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n getOptions: (\n get: Getter\n ) => UndefinedInitialDataInfiniteOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<AtomWithInfiniteQueryResult<TData, TError>, [], void>\nexport function atomWithInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n getOptions: (\n get: Getter\n ) => DefinedInitialDataInfiniteOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<DefinedAtomWithInfiniteQueryResult<TData, TError>, [], void>\nexport function atomWithInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n getOptions: (\n get: Getter\n ) => AtomWithInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n getQueryClient?: (get: Getter) => QueryClient\n): WritableAtom<AtomWithInfiniteQueryResult<TData, TError>, [], void>\nexport function atomWithInfiniteQuery(\n getOptions: (get: Getter) => AtomWithInfiniteQueryOptions,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n) {\n return baseAtomWithQuery(\n getOptions,\n InfiniteQueryObserver as typeof QueryObserver,\n getQueryClient\n )\n}\n","import {\n MutationObserver,\n type MutationOptions,\n QueryClient,\n notifyManager,\n} from '@tanstack/query-core'\nimport { Atom, Getter, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { AtomWithMutationResult, MutateFunction } from './types'\nimport { shouldThrowError } from './utils'\n\nexport function atomWithMutation<\n TData = unknown,\n TVariables = void,\n TError = unknown,\n TContext = unknown,\n>(\n getOptions: (\n get: Getter\n ) => MutationOptions<TData, TError, TVariables, TContext>,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n): Atom<AtomWithMutationResult<TData, TError, TVariables, TContext>> {\n const IN_RENDER = Symbol()\n\n const optionsAtom = atom((get) => {\n const client = getQueryClient(get)\n const options = getOptions(get)\n return client.defaultMutationOptions(options)\n })\n if (process.env.NODE_ENV !== 'production') {\n optionsAtom.debugPrivate = true\n }\n\n const observerCacheAtom = atom(\n () =>\n new WeakMap<\n QueryClient,\n MutationObserver<TData, TError, TVariables, TContext>\n >()\n )\n if (process.env.NODE_ENV !== 'production') {\n observerCacheAtom.debugPrivate = true\n }\n\n const observerAtom = atom((get) => {\n const options = get(optionsAtom)\n const client = getQueryClient(get)\n const observerCache = get(observerCacheAtom)\n\n const observer = observerCache.get(client)\n\n if (observer) {\n ;(observer as any)[IN_RENDER] = true\n observer.setOptions(options)\n delete (observer as any)[IN_RENDER]\n\n return observer\n }\n\n const newObserver = new MutationObserver(client, options)\n observerCache.set(client, newObserver)\n\n return newObserver\n })\n if (process.env.NODE_ENV !== 'production') {\n observerAtom.debugPrivate = true\n }\n\n const dataAtom = atom((get) => {\n const observer = get(observerAtom)\n\n const currentResult = observer.getCurrentResult()\n const resultAtom = atom(currentResult)\n\n resultAtom.onMount = (set) => {\n observer.subscribe(notifyManager.batchCalls(set))\n return () => {\n observer.reset()\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n resultAtom.debugPrivate = true\n }\n\n return resultAtom\n })\n\n const mutateAtom = atom((get) => {\n const observer = get(observerAtom)\n const mutate: MutateFunction<TData, TError, TVariables, TContext> = (\n variables,\n options\n ) => {\n observer.mutate(variables, options).catch(noop)\n }\n\n return mutate\n })\n if (process.env.NODE_ENV !== 'production') {\n mutateAtom.debugPrivate = true\n }\n\n return atom((get) => {\n const observer = get(observerAtom)\n const resultAtom = get(dataAtom)\n\n const result = get(resultAtom)\n const mutate = get(mutateAtom)\n\n if (\n result.isError &&\n shouldThrowError(observer.options.throwOnError, [result.error])\n ) {\n throw result.error\n }\n\n return { ...result, mutate, mutateAsync: result.mutate }\n })\n}\n\nfunction noop() {}\n","import {\n type DefaultError,\n type InfiniteData,\n InfiniteQueryObserver,\n QueryClient,\n type QueryKey,\n QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport {\n AtomWithSuspenseInfiniteQueryOptions,\n AtomWithSuspenseInfiniteQueryResult,\n} from './types'\nimport { defaultThrowOnError } from './utils'\n\nexport function atomWithSuspenseInfiniteQuery<\n TQueryFnData,\n TError = DefaultError,\n TData = InfiniteData<TQueryFnData>,\n TQueryKey extends QueryKey = QueryKey,\n TPageParam = unknown,\n>(\n getOptions: (\n get: Getter\n ) => AtomWithSuspenseInfiniteQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryKey,\n TPageParam\n >,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n): WritableAtom<AtomWithSuspenseInfiniteQueryResult<TData, TError>, [], void> {\n const suspenseOptionsAtom = atom((get) => {\n const options = getOptions(get)\n return {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n }\n })\n\n return baseAtomWithQuery(\n (get: Getter) => get(suspenseOptionsAtom),\n InfiniteQueryObserver as typeof QueryObserver,\n getQueryClient\n ) as unknown as WritableAtom<\n AtomWithSuspenseInfiniteQueryResult<TData, TError>,\n [],\n void\n >\n}\n","import {\n type DefaultError,\n Mutation,\n MutationCache,\n type MutationFilters,\n type MutationState,\n QueryClient,\n} from '@tanstack/query-core'\nimport { Getter, atom } from 'jotai'\nimport { queryClientAtom } from './_queryClientAtom'\n\ntype MutationStateOptions<TResult = MutationState> = {\n filters?: MutationFilters\n select?: (\n mutation: Mutation<unknown, DefaultError, unknown, unknown>\n ) => TResult\n}\n\nfunction getResult<TResult = MutationState>(\n mutationCache: MutationCache,\n options: MutationStateOptions<TResult>\n): Array<TResult> {\n return mutationCache\n .findAll(options.filters)\n .map(\n (mutation): TResult =>\n (options.select\n ? options.select(\n mutation as Mutation<unknown, DefaultError, unknown, unknown>\n )\n : mutation.state) as TResult\n )\n}\n\nexport const atomWithMutationState = <TResult = MutationState>(\n getOptions: (get: Getter) => MutationStateOptions<TResult>,\n getQueryClient: (get: Getter) => QueryClient = (get) => get(queryClientAtom)\n) => {\n const resultsAtom = atom<TResult[]>([])\n if (process.env.NODE_ENV !== 'production') {\n resultsAtom.debugPrivate = true\n }\n\n const observableAtom = atom((get) => {\n const queryClient = getQueryClient(get)\n\n const mutationCache = queryClient.getMutationCache()\n resultsAtom.onMount = (set) => {\n const unsubscribe = mutationCache.subscribe(() => {\n set(getResult(getQueryClient(get).getMutationCache(), getOptions(get)))\n })\n return unsubscribe\n }\n })\n if (process.env.NODE_ENV !== 'production') {\n observableAtom.debugPrivate = true\n }\n\n return atom((get) => {\n get(observableAtom)\n return get(resultsAtom)\n })\n}\n"],"names":["shouldSuspend","defaultedOptions","result","isRestoring","suspense","willFetch","isPending","getHasError","throwOnError","query","isError","isFetching","shouldThrowError","error","params","defaultThrowOnError","_error","state","data","ensureStaleTime","staleTime","baseAtomWithQuery","getOptions","Observer","getQueryClient","get","queryClientAtom","refreshAtom","atom","clientAtom","process","env","NODE_ENV","debugPrivate","observerCacheAtom","WeakMap","defaultedOptionsAtom","client","options","defaultQueryOptions","cache","cachedObserver","_optimisticResults","setOptions","observerAtom","observerCache","newObserver","set","dataAtom","observer","getOptimisticResult","resultAtom","onMount","unsubscribe","subscribe","notifyManager","batchCalls","getCurrentResult","getCurrentQuery","reset","fetchOptimistic","_get","c","atomWithQuery","QueryObserver","atomWithQueries","queries","combine","map","queryAtoms","results","queryAtom","atomWithSuspenseQuery","suspenseOptions","enabled","atomWithInfiniteQuery","InfiniteQueryObserver","atomWithMutation","IN_RENDER","Symbol","optionsAtom","defaultMutationOptions","MutationObserver","currentResult","mutateAtom","mutate","variables","catch","noop","mutateAsync","atomWithSuspenseInfiniteQuery","suspenseOptionsAtom","getResult","mutationCache","findAll","filters","mutation","select","atomWithMutationState","resultsAtom","observableAtom","queryClient","getMutationCache"],"mappings":"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"}