{"version":3,"file":"queryClient.cjs","names":["#queryCache","QueryCache","#mutationCache","MutationCache","#defaultOptions","#queryDefaults","#mutationDefaults","#mountCount","#unsubscribeFocus","focusManager","#unsubscribeOnline","onlineManager","resolveQueryValue","functionalUpdate","notifyManager","noop","hashKey","partialMatchKey","hashQueryKeyByOptions","skipToken"],"sources":["../../src/queryClient.ts"],"sourcesContent":["import {\n  functionalUpdate,\n  hashKey,\n  hashQueryKeyByOptions,\n  noop,\n  partialMatchKey,\n  resolveQueryValue,\n  skipToken,\n} from './utils'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport type {\n  CancelOptions,\n  DefaultError,\n  DefaultOptions,\n  DefaultedQueryObserverOptions,\n  EnsureInfiniteQueryDataOptions,\n  EnsureQueryDataOptions,\n  FetchInfiniteQueryOptions,\n  FetchQueryOptions,\n  InferDataFromTag,\n  InferErrorFromTag,\n  InfiniteData,\n  InfiniteQueryExecuteOptions,\n  InvalidateOptions,\n  InvalidateQueryFilters,\n  MutationKey,\n  MutationObserverOptions,\n  MutationOptions,\n  OmitKeyof,\n  QueryClientConfig,\n  QueryExecuteOptions,\n  QueryKey,\n  QueryObserverOptions,\n  QueryOptions,\n  RefetchOptions,\n  RefetchQueryFilters,\n  ResetOptions,\n  SetDataOptions,\n} from './types'\nimport type { QueryState } from './query'\nimport type { MutationFilters, QueryFilters, Updater } from './utils'\n\n// TYPES\n\ninterface QueryDefaults {\n  queryKey: QueryKey\n  defaultOptions: OmitKeyof<QueryOptions<any, any, any>, 'queryKey'>\n}\n\ninterface MutationDefaults {\n  mutationKey: MutationKey\n  defaultOptions: MutationOptions<any, any, any, any>\n}\n\n// CLASS\n\nexport class QueryClient {\n  #queryCache: QueryCache\n  #mutationCache: MutationCache\n  #defaultOptions: DefaultOptions\n  #queryDefaults: Map<string, QueryDefaults>\n  #mutationDefaults: Map<string, MutationDefaults>\n  #mountCount: number\n  #unsubscribeFocus?: () => void\n  #unsubscribeOnline?: () => void\n\n  constructor(config: QueryClientConfig = {}) {\n    this.#queryCache = config.queryCache || new QueryCache()\n    this.#mutationCache = config.mutationCache || new MutationCache()\n    this.#defaultOptions = config.defaultOptions || {}\n    this.#queryDefaults = new Map()\n    this.#mutationDefaults = new Map()\n    this.#mountCount = 0\n  }\n\n  mount(): void {\n    this.#mountCount++\n    if (this.#mountCount !== 1) return\n\n    this.#unsubscribeFocus = focusManager.subscribe(async (focused) => {\n      if (focused) {\n        await this.resumePausedMutations()\n        this.#queryCache.onFocus()\n      }\n    })\n    this.#unsubscribeOnline = onlineManager.subscribe(async (online) => {\n      if (online) {\n        await this.resumePausedMutations()\n        this.#queryCache.onOnline()\n      }\n    })\n  }\n\n  unmount(): void {\n    this.#mountCount--\n    if (this.#mountCount !== 0) return\n\n    this.#unsubscribeFocus?.()\n    this.#unsubscribeFocus = undefined\n\n    this.#unsubscribeOnline?.()\n    this.#unsubscribeOnline = undefined\n  }\n\n  isFetching<TQueryFilters extends QueryFilters<any> = QueryFilters>(\n    filters?: TQueryFilters,\n  ): number {\n    return this.#queryCache.findAll({ ...filters, fetchStatus: 'fetching' })\n      .length\n  }\n\n  isMutating<\n    TMutationFilters extends MutationFilters<any, any> = MutationFilters,\n  >(filters?: TMutationFilters): number {\n    return this.#mutationCache.findAll({ ...filters, status: 'pending' }).length\n  }\n\n  /**\n   * Imperative (non-reactive) way to retrieve data for a QueryKey.\n   * Should only be used in callbacks or functions where reading the latest data is necessary, e.g. for optimistic updates.\n   *\n   * Hint: Do not use this function inside a component, because it won't receive updates.\n   * Use `useQuery` to create a `QueryObserver` that subscribes to changes.\n   */\n  getQueryData<\n    TQueryFnData = unknown,\n    TTaggedQueryKey extends QueryKey = QueryKey,\n    TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,\n  >(queryKey: TTaggedQueryKey): TInferredQueryFnData | undefined {\n    const options = this.defaultQueryOptions({ queryKey })\n\n    return this.#queryCache.get<TInferredQueryFnData>(options.queryHash)?.state\n      .data\n  }\n\n  /**\n   * @deprecated Use queryClient.query({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n   */\n  ensureQueryData<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n  >(\n    options: EnsureQueryDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n  ): Promise<TData> {\n    const defaultedOptions = this.defaultQueryOptions(options)\n    const query = this.#queryCache.build(this, defaultedOptions)\n    const cachedData = query.state.data\n\n    if (cachedData === undefined) {\n      return this.fetchQuery(options)\n    }\n\n    if (\n      options.revalidateIfStale &&\n      query.isStaleByTime(resolveQueryValue(defaultedOptions.staleTime, query))\n    ) {\n      void this.prefetchQuery(defaultedOptions)\n    }\n\n    return Promise.resolve(cachedData)\n  }\n\n  getQueriesData<\n    TQueryFnData = unknown,\n    TQueryFilters extends QueryFilters<any> = QueryFilters,\n  >(filters: TQueryFilters): Array<[QueryKey, TQueryFnData | undefined]> {\n    return this.#queryCache.findAll(filters).map(({ queryKey, state }) => {\n      const data = state.data as TQueryFnData | undefined\n      return [queryKey, data]\n    })\n  }\n\n  setQueryData<\n    TQueryFnData = unknown,\n    TTaggedQueryKey extends QueryKey = QueryKey,\n    TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,\n  >(\n    queryKey: TTaggedQueryKey,\n    updater: Updater<\n      NoInfer<TInferredQueryFnData> | undefined,\n      NoInfer<TInferredQueryFnData> | undefined\n    >,\n    options?: SetDataOptions,\n  ): NoInfer<TInferredQueryFnData> | undefined {\n    const defaultedOptions = this.defaultQueryOptions<\n      any,\n      any,\n      unknown,\n      any,\n      QueryKey\n    >({ queryKey })\n\n    const query = this.#queryCache.get<TInferredQueryFnData>(\n      defaultedOptions.queryHash,\n    )\n    const prevData = query?.state.data\n    const data = functionalUpdate(updater, prevData)\n\n    if (data === undefined) {\n      return undefined\n    }\n\n    return this.#queryCache\n      .build(this, defaultedOptions)\n      .setData(data, { ...options, manual: true })\n  }\n\n  setQueriesData<\n    TQueryFnData,\n    TQueryFilters extends QueryFilters<any> = QueryFilters,\n  >(\n    filters: TQueryFilters,\n    updater: Updater<\n      NoInfer<TQueryFnData> | undefined,\n      NoInfer<TQueryFnData> | undefined\n    >,\n    options?: SetDataOptions,\n  ): Array<[QueryKey, TQueryFnData | undefined]> {\n    return notifyManager.batch(() =>\n      this.#queryCache\n        .findAll(filters)\n        .map(({ queryKey }) => [\n          queryKey,\n          this.setQueryData<TQueryFnData>(queryKey, updater, options),\n        ]),\n    )\n  }\n\n  getQueryState<\n    TQueryFnData = unknown,\n    TError = DefaultError,\n    TTaggedQueryKey extends QueryKey = QueryKey,\n    TInferredQueryFnData = InferDataFromTag<TQueryFnData, TTaggedQueryKey>,\n    TInferredError = InferErrorFromTag<TError, TTaggedQueryKey>,\n  >(\n    queryKey: TTaggedQueryKey,\n  ): QueryState<TInferredQueryFnData, TInferredError> | undefined {\n    const options = this.defaultQueryOptions({ queryKey })\n    return this.#queryCache.get<TInferredQueryFnData, TInferredError>(\n      options.queryHash,\n    )?.state\n  }\n\n  removeQueries<TTaggedQueryKey extends QueryKey = QueryKey>(\n    filters?: QueryFilters<TTaggedQueryKey>,\n  ): void {\n    const queryCache = this.#queryCache\n    notifyManager.batch(() => {\n      queryCache.findAll(filters).forEach((query) => {\n        queryCache.remove(query)\n      })\n    })\n  }\n\n  resetQueries<TTaggedQueryKey extends QueryKey = QueryKey>(\n    filters?: QueryFilters<TTaggedQueryKey>,\n    options?: ResetOptions,\n  ): Promise<void> {\n    const queryCache = this.#queryCache\n\n    return notifyManager.batch(() => {\n      const matched = queryCache.findAll(filters)\n      const queriesToRefetch = new Set(matched)\n      matched.forEach((query) => {\n        query.reset()\n      })\n      return this.refetchQueries(\n        {\n          type: 'active',\n          predicate: (query) => queriesToRefetch.has(query),\n        },\n        options,\n      )\n    })\n  }\n\n  cancelQueries<TTaggedQueryKey extends QueryKey = QueryKey>(\n    filters?: QueryFilters<TTaggedQueryKey>,\n    cancelOptions: CancelOptions = {},\n  ): Promise<void> {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions }\n\n    const promises = notifyManager.batch(() =>\n      this.#queryCache\n        .findAll(filters)\n        .map((query) => query.cancel(defaultedCancelOptions)),\n    )\n\n    return Promise.all(promises).then(noop).catch(noop)\n  }\n\n  invalidateQueries<TTaggedQueryKey extends QueryKey = QueryKey>(\n    filters?: InvalidateQueryFilters<TTaggedQueryKey>,\n    options: InvalidateOptions = {},\n  ): Promise<void> {\n    return notifyManager.batch(() => {\n      this.#queryCache.findAll(filters).forEach((query) => {\n        query.invalidate()\n      })\n\n      if (filters?.refetchType === 'none') {\n        return Promise.resolve()\n      }\n      return this.refetchQueries(\n        {\n          ...filters,\n          type: filters?.refetchType ?? filters?.type ?? 'active',\n        },\n        options,\n      )\n    })\n  }\n\n  refetchQueries<TTaggedQueryKey extends QueryKey = QueryKey>(\n    filters?: RefetchQueryFilters<TTaggedQueryKey>,\n    options: RefetchOptions = {},\n  ): Promise<void> {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options.cancelRefetch ?? true,\n    }\n    const promises = notifyManager.batch(() =>\n      this.#queryCache\n        .findAll(filters)\n        .filter((query) => !query.isDisabled() && !query.isStatic())\n        .map((query) => {\n          let promise = query.fetch(undefined, fetchOptions)\n          if (!fetchOptions.throwOnError) {\n            promise = promise.catch(noop)\n          }\n          return query.state.fetchStatus === 'paused'\n            ? Promise.resolve()\n            : promise\n        }),\n    )\n\n    return Promise.all(promises).then(noop)\n  }\n\n  async query<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = never,\n  >(\n    options: QueryExecuteOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<TData> {\n    const defaultedOptions = this.defaultQueryOptions(options)\n\n    // https://github.com/tannerlinsley/react-query/issues/652\n    if (defaultedOptions.retry === undefined) {\n      defaultedOptions.retry = false\n    }\n\n    const query = this.#queryCache.build(this, defaultedOptions)\n\n    const isStale = query.isStaleByTime(\n      resolveQueryValue(defaultedOptions.staleTime, query),\n    )\n\n    const queryData = isStale\n      ? await query.fetch(defaultedOptions)\n      : (query.state.data as TQueryData)\n\n    const select = defaultedOptions.select\n\n    if (select) {\n      return select(queryData)\n    }\n\n    return queryData as unknown as TData\n  }\n\n  /**\n   * @deprecated Use queryClient.query(options) instead. This method will be removed in the next major version.\n   */\n  fetchQuery<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = never,\n  >(\n    options: FetchQueryOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<TData> {\n    const defaultedOptions = this.defaultQueryOptions(options)\n\n    // https://github.com/tannerlinsley/react-query/issues/652\n    if (defaultedOptions.retry === undefined) {\n      defaultedOptions.retry = false\n    }\n\n    const query = this.#queryCache.build(this, defaultedOptions)\n\n    return query.isStaleByTime(\n      resolveQueryValue(defaultedOptions.staleTime, query),\n    )\n      ? query.fetch(defaultedOptions)\n      : Promise.resolve(query.state.data as TData)\n  }\n\n  /**\n   * @deprecated Use queryClient.query(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n   */\n  prefetchQuery<\n    TQueryFnData = unknown,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n  >(\n    options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n  ): Promise<void> {\n    return this.fetchQuery(options).then(noop).catch(noop)\n  }\n\n  infiniteQuery<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = InfiniteData<TQueryFnData>,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = unknown,\n  >(\n    options: InfiniteQueryExecuteOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<\n    Array<TData> extends Array<InfiniteData<TQueryFnData>>\n      ? InfiniteData<TQueryFnData, TPageParam>\n      : TData\n  > {\n    options._type = 'infinite'\n    return this.query(options as any)\n  }\n\n  /**\n   * @deprecated Use queryClient.infiniteQuery(options) instead. This method will be removed in the next major version.\n   */\n  fetchInfiniteQuery<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = unknown,\n  >(\n    options: FetchInfiniteQueryOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<InfiniteData<TData, TPageParam>> {\n    options._type = 'infinite'\n    return this.fetchQuery(options as any)\n  }\n\n  /**\n   * @deprecated Use queryClient.infiniteQuery(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.\n   */\n  prefetchInfiniteQuery<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = unknown,\n  >(\n    options: FetchInfiniteQueryOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<void> {\n    return this.fetchInfiniteQuery(options).then(noop).catch(noop)\n  }\n\n  /**\n   * @deprecated Use queryClient.infiniteQuery({ ...options, staleTime: 'static' }) instead. This method will be removed in the next major version.\n   */\n  ensureInfiniteQueryData<\n    TQueryFnData,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = unknown,\n  >(\n    options: EnsureInfiniteQueryDataOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryKey,\n      TPageParam\n    >,\n  ): Promise<InfiniteData<TData, TPageParam>> {\n    options._type = 'infinite'\n\n    return this.ensureQueryData(options as any)\n  }\n\n  resumePausedMutations(): Promise<unknown> {\n    if (onlineManager.isOnline()) {\n      return this.#mutationCache.resumePausedMutations()\n    }\n    return Promise.resolve()\n  }\n\n  getQueryCache(): QueryCache {\n    return this.#queryCache\n  }\n\n  getMutationCache(): MutationCache {\n    return this.#mutationCache\n  }\n\n  getDefaultOptions(): DefaultOptions {\n    return this.#defaultOptions\n  }\n\n  setDefaultOptions(options: DefaultOptions): void {\n    this.#defaultOptions = options\n  }\n\n  setQueryDefaults<\n    TQueryFnData = unknown,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryData = TQueryFnData,\n  >(\n    queryKey: QueryKey,\n    options: Partial<\n      OmitKeyof<\n        QueryObserverOptions<TQueryFnData, TError, TData, TQueryData>,\n        'queryKey'\n      >\n    >,\n  ): void {\n    this.#queryDefaults.set(hashKey(queryKey), {\n      queryKey,\n      defaultOptions: options,\n    })\n  }\n\n  getQueryDefaults(\n    queryKey: QueryKey,\n  ): OmitKeyof<QueryObserverOptions<any, any, any, any, any>, 'queryKey'> {\n    const defaults = [...this.#queryDefaults.values()]\n\n    const result: OmitKeyof<\n      QueryObserverOptions<any, any, any, any, any>,\n      'queryKey'\n    > = {}\n\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(queryKey, queryDefault.queryKey)) {\n        Object.assign(result, queryDefault.defaultOptions)\n      }\n    })\n    return result\n  }\n\n  setMutationDefaults<\n    TData = unknown,\n    TError = DefaultError,\n    TVariables = void,\n    TOnMutateResult = unknown,\n  >(\n    mutationKey: MutationKey,\n    options: OmitKeyof<\n      MutationObserverOptions<TData, TError, TVariables, TOnMutateResult>,\n      'mutationKey'\n    >,\n  ): void {\n    this.#mutationDefaults.set(hashKey(mutationKey), {\n      mutationKey,\n      defaultOptions: options,\n    })\n  }\n\n  getMutationDefaults(\n    mutationKey: MutationKey,\n  ): OmitKeyof<MutationObserverOptions<any, any, any, any>, 'mutationKey'> {\n    const defaults = [...this.#mutationDefaults.values()]\n\n    const result: OmitKeyof<\n      MutationObserverOptions<any, any, any, any>,\n      'mutationKey'\n    > = {}\n\n    defaults.forEach((queryDefault) => {\n      if (partialMatchKey(mutationKey, queryDefault.mutationKey)) {\n        Object.assign(result, queryDefault.defaultOptions)\n      }\n    })\n\n    return result\n  }\n\n  defaultQueryOptions<\n    TQueryFnData = unknown,\n    TError = DefaultError,\n    TData = TQueryFnData,\n    TQueryData = TQueryFnData,\n    TQueryKey extends QueryKey = QueryKey,\n    TPageParam = never,\n  >(\n    options:\n      | QueryObserverOptions<\n          TQueryFnData,\n          TError,\n          TData,\n          TQueryData,\n          TQueryKey,\n          TPageParam\n        >\n      | DefaultedQueryObserverOptions<\n          TQueryFnData,\n          TError,\n          TData,\n          TQueryData,\n          TQueryKey\n        >,\n  ): DefaultedQueryObserverOptions<\n    TQueryFnData,\n    TError,\n    TData,\n    TQueryData,\n    TQueryKey\n  > {\n    if (options._defaulted) {\n      return options as DefaultedQueryObserverOptions<\n        TQueryFnData,\n        TError,\n        TData,\n        TQueryData,\n        TQueryKey\n      >\n    }\n\n    const defaultedOptions = {\n      ...this.#defaultOptions.queries,\n      ...this.getQueryDefaults(options.queryKey),\n      ...options,\n      _defaulted: true,\n    }\n\n    if (!defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashQueryKeyByOptions(\n        defaultedOptions.queryKey,\n        defaultedOptions,\n      )\n    }\n\n    // dependent default values\n    if (defaultedOptions.refetchOnReconnect === undefined) {\n      defaultedOptions.refetchOnReconnect =\n        defaultedOptions.networkMode !== 'always'\n    }\n    if (defaultedOptions.throwOnError === undefined) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense\n    }\n\n    if (!defaultedOptions.networkMode && defaultedOptions.persister) {\n      defaultedOptions.networkMode = 'offlineFirst'\n    }\n\n    if (defaultedOptions.queryFn === skipToken) {\n      defaultedOptions.enabled = false\n    }\n\n    return defaultedOptions as DefaultedQueryObserverOptions<\n      TQueryFnData,\n      TError,\n      TData,\n      TQueryData,\n      TQueryKey\n    >\n  }\n\n  defaultMutationOptions<T extends MutationOptions<any, any, any, any>>(\n    options?: T,\n  ): T {\n    if (options?._defaulted) {\n      return options\n    }\n    return {\n      ...this.#defaultOptions.mutations,\n      ...(options?.mutationKey &&\n        this.getMutationDefaults(options.mutationKey)),\n      ...options,\n      _defaulted: true,\n    } as T\n  }\n\n  clear(): void {\n    this.#queryCache.clear()\n    this.#mutationCache.clear()\n  }\n}\n"],"mappings":"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"}