{"version":3,"file":"index.modern.mjs","sources":["../src/queryClientAtom.ts","../src/utils.ts","../src/baseAtomWithQuery.ts","../src/atomWithQuery.ts","../src/atomWithSuspenseQuery.ts","../src/atomWithInfiniteQuery.ts","../src/atomWithMutation.ts","../src/atomWithSuspenseInfiniteQuery.ts","../src/atomWithMutationState.ts"],"sourcesContent":["import { QueryClient } from '@tanstack/query-core'\nimport { atom } from 'jotai/vanilla'\n\nexport const queryClientAtom = atom(new QueryClient())\n\nif (process.env.NODE_ENV !== 'production') {\n  queryClientAtom.debugPrivate = true\n}\n","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  QueryKey,\n  QueryObserver,\n  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        listeners: false,\n      })\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  DefaultError,\n  QueryClient,\n  QueryKey,\n  QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom } from 'jotai'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport { queryClientAtom } from './queryClientAtom'\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  DefaultError,\n  QueryClient,\n  QueryKey,\n  QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport { queryClientAtom } from './queryClientAtom'\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  DefaultError,\n  InfiniteData,\n  InfiniteQueryObserver,\n  QueryClient,\n  QueryKey,\n  QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom } from 'jotai'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport { queryClientAtom } from './queryClientAtom'\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    TQueryFnData,\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  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\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noop() {}\n","import {\n  DefaultError,\n  InfiniteData,\n  InfiniteQueryObserver,\n  QueryClient,\n  QueryKey,\n  QueryObserver,\n} from '@tanstack/query-core'\nimport { Getter, WritableAtom, atom } from 'jotai'\nimport { baseAtomWithQuery } from './baseAtomWithQuery'\nimport { queryClientAtom } from './queryClientAtom'\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    TQueryFnData,\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  DefaultError,\n  Mutation,\n  MutationCache,\n  MutationFilters,\n  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":["queryClientAtom","atom","QueryClient","process","env","NODE_ENV","debugPrivate","shouldSuspend","defaultedOptions","result","isRestoring","suspense","willFetch","isPending","getHasError","throwOnError","query","isError","isFetching","shouldThrowError","error","params","defaultThrowOnError","_error","state","data","ensureStaleTime","staleTime","_extends","baseAtomWithQuery","getOptions","Observer","getQueryClient","get","refreshAtom","clientAtom","observerCacheAtom","WeakMap","defaultedOptionsAtom","client","options","defaultQueryOptions","cachedObserver","_optimisticResults","setOptions","listeners","observerAtom","observerCache","newObserver","set","dataAtom","observer","getOptimisticResult","resultAtom","onMount","unsubscribe","subscribe","notifyManager","batchCalls","getCurrentResult","getCurrentQuery","reset","fetchOptimistic","_get","c","atomWithQuery","QueryObserver","atomWithSuspenseQuery","suspenseOptions","enabled","atomWithInfiniteQuery","InfiniteQueryObserver","atomWithMutation","IN_RENDER","Symbol","optionsAtom","defaultMutationOptions","MutationObserver","currentResult","mutateAtom","mutate","variables","catch","noop","mutateAsync","atomWithSuspenseInfiniteQuery","suspenseOptionsAtom","atomWithMutationState","resultsAtom","observableAtom","mutationCache","getMutationCache","findAll","filters","map","mutation","select","getResult"],"mappings":"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"}