{"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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"}