@tanstack/query-core 4.12.0 → 4.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"queryObserver.mjs","sources":["../../src/queryObserver.ts"],"sourcesContent":["import type { DefaultedQueryObserverOptions, RefetchPageFilters } from './types'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\nimport type { Query, QueryState, Action, FetchOptions } from './query'\nimport type { QueryClient } from './queryClient'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { canFetch, isCancelledError } from './retryer'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n cache?: boolean\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n\n private client: QueryClient\n private currentQuery!: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n private currentQueryInitialState!: QueryState<TQueryData, TError>\n private currentResult!: QueryObserverResult<TData, TError>\n private currentResultState?: QueryState<TQueryData, TError>\n private currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n private previousQueryResult?: QueryObserverResult<TData, TError>\n private selectError: TError | null\n private selectFn?: (data: TQueryData) => TData\n private selectResult?: TData\n private staleTimeoutId?: ReturnType<typeof setTimeout>\n private refetchIntervalId?: ReturnType<typeof setInterval>\n private currentRefetchInterval?: number | false\n private trackedProps!: Set<keyof QueryObserverResult>\n\n constructor(\n client: QueryClient,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.client = client\n this.options = options\n this.trackedProps = new Set()\n this.selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.remove = this.remove.bind(this)\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch()\n }\n\n this.updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = []\n this.clearStaleTimeout()\n this.clearRefetchInterval()\n this.currentQuery.removeObserver(this)\n }\n\n setOptions(\n options?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.currentQuery\n\n this.options = this.client.defaultQueryOptions(options)\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.currentQuery,\n observer: this,\n })\n }\n\n if (\n typeof this.options.enabled !== 'undefined' &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n // Keep previous query key if the user does not supply one\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey\n }\n\n this.updateQuery()\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n this.options.staleTime !== prevOptions.staleTime)\n ) {\n this.updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.currentRefetchInterval)\n ) {\n this.updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.client.getQueryCache().build(this.client, options)\n\n return this.createResult(query, options)\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.currentQuery\n }\n\n remove(): void {\n this.client.getQueryCache().remove(this.currentQuery)\n }\n\n refetch<TPageData>({\n refetchPage,\n ...options\n }: RefetchOptions & RefetchPageFilters<TPageData> = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: { refetchPage },\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n\n const query = this.client\n .getQueryCache()\n .build(this.client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.currentResult\n })\n }\n\n private executeFetch(\n fetchOptions?: ObserverFetchOptions,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n private updateStaleTimeout(): void {\n this.clearStaleTimeout()\n\n if (\n isServer ||\n this.currentResult.isStale ||\n !isValidTimeout(this.options.staleTime)\n ) {\n return\n }\n\n const time = timeUntilStale(\n this.currentResult.dataUpdatedAt,\n this.options.staleTime,\n )\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n private computeRefetchInterval() {\n return typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.currentResult.data, this.currentQuery)\n : this.options.refetchInterval ?? false\n }\n\n private updateRefetchInterval(nextInterval: number | false): void {\n this.clearRefetchInterval()\n\n this.currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.currentRefetchInterval) ||\n this.currentRefetchInterval === 0\n ) {\n return\n }\n\n this.refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.executeFetch()\n }\n }, this.currentRefetchInterval)\n }\n\n private updateTimers(): void {\n this.updateStaleTimeout()\n this.updateRefetchInterval(this.computeRefetchInterval())\n }\n\n private clearStaleTimeout(): void {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId)\n this.staleTimeoutId = undefined\n }\n }\n\n private clearRefetchInterval(): void {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId)\n this.refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.currentQuery\n const prevOptions = this.options\n const prevResult = this.currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.currentResultState\n const prevResultOptions = this.currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.currentQueryInitialState\n const prevQueryResult = queryChange\n ? this.currentResult\n : this.previousQueryResult\n\n const { state } = query\n let { dataUpdatedAt, error, errorUpdatedAt, fetchStatus, status } = state\n let isPreviousData = false\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode)\n ? 'fetching'\n : 'paused'\n if (!dataUpdatedAt) {\n status = 'loading'\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle'\n }\n }\n\n // Keep previous data if needed\n if (\n options.keepPreviousData &&\n !state.dataUpdateCount &&\n prevQueryResult?.isSuccess &&\n status !== 'error'\n ) {\n data = prevQueryResult.data\n dataUpdatedAt = prevQueryResult.dataUpdatedAt\n status = prevQueryResult.status\n isPreviousData = true\n }\n // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (\n prevResult &&\n state.data === prevResultState?.data &&\n options.select === this.selectFn\n ) {\n data = this.selectResult\n } else {\n try {\n this.selectFn = options.select\n data = options.select(state.data)\n data = replaceData(prevResult?.data, data, options)\n this.selectResult = data\n this.selectError = null\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError)\n }\n this.selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = state.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n typeof options.placeholderData !== 'undefined' &&\n typeof data === 'undefined' &&\n status === 'loading'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (options.placeholderData as PlaceholderDataFunction<TQueryData>)()\n : options.placeholderData\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData)\n placeholderData = replaceData(\n prevResult?.data,\n placeholderData,\n options,\n )\n this.selectError = null\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError)\n }\n this.selectError = selectError as TError\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success'\n data = placeholderData as TData\n isPlaceholderData = true\n }\n }\n\n if (this.selectError) {\n error = this.selectError as any\n data = this.selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = fetchStatus === 'fetching'\n const isLoading = status === 'loading'\n const isError = status === 'error'\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount:\n state.dataUpdateCount > queryInitialState.dataUpdateCount ||\n state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.currentQuery, this.options)\n this.currentResultState = this.currentQuery.state\n this.currentResultOptions = this.options\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = { cache: true }\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n\n if (\n notifyOnChangeProps === 'all' ||\n (!notifyOnChangeProps && !this.trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(notifyOnChangeProps ?? this.trackedProps)\n\n if (this.options.useErrorBoundary) {\n includedProps.add('error')\n }\n\n return Object.keys(this.currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n private updateQuery(): void {\n const query = this.client.getQueryCache().build(this.client, this.options)\n\n if (query === this.currentQuery) {\n return\n }\n\n const prevQuery = this.currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.currentQuery = query\n this.currentQueryInitialState = query.state\n this.previousQueryResult = this.currentResult\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(action: Action<TData, TError>): void {\n const notifyOptions: NotifyOptions = {}\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true\n }\n\n this.updateResult(notifyOptions)\n\n if (this.hasListeners()) {\n this.updateTimers()\n }\n }\n\n private notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n this.options.onSuccess?.(this.currentResult.data!)\n this.options.onSettled?.(this.currentResult.data!, null)\n } else if (notifyOptions.onError) {\n this.options.onError?.(this.currentResult.error!)\n this.options.onSettled?.(undefined, this.currentResult.error!)\n }\n\n // Then trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n\n // Then the cache listeners\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: 'observerResultsUpdated',\n })\n }\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n !query.state.dataUpdatedAt &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.dataUpdatedAt > 0 &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: typeof options['refetchOnMount'] &\n typeof options['refetchOnWindowFocus'] &\n typeof options['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return query.isStaleByTime(options.staleTime)\n}\n"],"names":["QueryObserver","Subscribable","constructor","client","options","trackedProps","Set","selectError","bindMethods","setOptions","remove","bind","refetch","onSubscribe","listeners","length","currentQuery","addObserver","shouldFetchOnMount","executeFetch","updateTimers","onUnsubscribe","destroy","shouldFetchOnReconnect","shouldFetchOn","refetchOnReconnect","shouldFetchOnWindowFocus","refetchOnWindowFocus","clearStaleTimeout","clearRefetchInterval","removeObserver","notifyOptions","prevOptions","prevQuery","defaultQueryOptions","shallowEqualObjects","getQueryCache","notify","type","query","observer","enabled","Error","queryKey","updateQuery","mounted","hasListeners","shouldFetchOptionally","updateResult","staleTime","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","build","createResult","getCurrentResult","currentResult","trackResult","result","trackedResult","Object","keys","forEach","key","defineProperty","configurable","enumerable","get","add","getCurrentQuery","refetchPage","fetch","meta","fetchOptimistic","defaultedOptions","isFetchingOptimistic","then","fetchOptions","cancelRefetch","promise","throwOnError","catch","noop","isServer","isStale","isValidTimeout","time","timeUntilStale","dataUpdatedAt","timeout","staleTimeoutId","setTimeout","refetchInterval","data","nextInterval","refetchIntervalId","setInterval","refetchIntervalInBackground","focusManager","isFocused","clearTimeout","undefined","clearInterval","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","state","currentQueryInitialState","prevQueryResult","previousQueryResult","error","errorUpdatedAt","fetchStatus","status","isPreviousData","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","canFetch","networkMode","keepPreviousData","dataUpdateCount","isSuccess","select","selectFn","selectResult","replaceData","process","env","NODE_ENV","getLogger","placeholderData","Date","now","isFetching","isLoading","isError","isInitialLoading","failureCount","fetchFailureCount","errorUpdateCount","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","nextResult","defaultNotifyOptions","cache","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","useErrorBoundary","some","typedKey","changed","has","onQueryUpdate","action","onSuccess","manual","isCancelledError","onError","notifyManager","batch","onSettled","listener","shouldLoadOnMount","retryOnMount","refetchOnMount","field","value","suspense","isStaleByTime"],"mappings":"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"}
1
+ {"version":3,"file":"queryObserver.mjs","sources":["../../src/queryObserver.ts"],"sourcesContent":["import type { DefaultedQueryObserverOptions, RefetchPageFilters } from './types'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\nimport type { Query, QueryState, Action, FetchOptions } from './query'\nimport type { QueryClient } from './queryClient'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { canFetch, isCancelledError } from './retryer'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n cache?: boolean\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n\n private client: QueryClient\n private currentQuery!: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n private currentQueryInitialState!: QueryState<TQueryData, TError>\n private currentResult!: QueryObserverResult<TData, TError>\n private currentResultState?: QueryState<TQueryData, TError>\n private currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n private previousQueryResult?: QueryObserverResult<TData, TError>\n private selectError: TError | null\n private selectFn?: (data: TQueryData) => TData\n private selectResult?: TData\n private staleTimeoutId?: ReturnType<typeof setTimeout>\n private refetchIntervalId?: ReturnType<typeof setInterval>\n private currentRefetchInterval?: number | false\n private trackedProps!: Set<keyof QueryObserverResult>\n\n constructor(\n client: QueryClient,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.client = client\n this.options = options\n this.trackedProps = new Set()\n this.selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.remove = this.remove.bind(this)\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch()\n }\n\n this.updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = []\n this.clearStaleTimeout()\n this.clearRefetchInterval()\n this.currentQuery.removeObserver(this)\n }\n\n setOptions(\n options?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.currentQuery\n\n this.options = this.client.defaultQueryOptions(options)\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.currentQuery,\n observer: this,\n })\n }\n\n if (\n typeof this.options.enabled !== 'undefined' &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n // Keep previous query key if the user does not supply one\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey\n }\n\n this.updateQuery()\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.executeFetch()\n }\n\n // Update result\n this.updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n this.options.staleTime !== prevOptions.staleTime)\n ) {\n this.updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.currentRefetchInterval)\n ) {\n this.updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.client.getQueryCache().build(this.client, options)\n\n return this.createResult(query, options)\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.currentQuery\n }\n\n remove(): void {\n this.client.getQueryCache().remove(this.currentQuery)\n }\n\n refetch<TPageData>({\n refetchPage,\n ...options\n }: RefetchOptions & RefetchPageFilters<TPageData> = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: { refetchPage },\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n\n const query = this.client\n .getQueryCache()\n .build(this.client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.updateResult()\n return this.currentResult\n })\n }\n\n private executeFetch(\n fetchOptions?: ObserverFetchOptions,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n private updateStaleTimeout(): void {\n this.clearStaleTimeout()\n\n if (\n isServer ||\n this.currentResult.isStale ||\n !isValidTimeout(this.options.staleTime)\n ) {\n return\n }\n\n const time = timeUntilStale(\n this.currentResult.dataUpdatedAt,\n this.options.staleTime,\n )\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult()\n }\n }, timeout)\n }\n\n private computeRefetchInterval() {\n return typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(this.currentResult.data, this.currentQuery)\n : this.options.refetchInterval ?? false\n }\n\n private updateRefetchInterval(nextInterval: number | false): void {\n this.clearRefetchInterval()\n\n this.currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.currentRefetchInterval) ||\n this.currentRefetchInterval === 0\n ) {\n return\n }\n\n this.refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.executeFetch()\n }\n }, this.currentRefetchInterval)\n }\n\n private updateTimers(): void {\n this.updateStaleTimeout()\n this.updateRefetchInterval(this.computeRefetchInterval())\n }\n\n private clearStaleTimeout(): void {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId)\n this.staleTimeoutId = undefined\n }\n }\n\n private clearRefetchInterval(): void {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId)\n this.refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.currentQuery\n const prevOptions = this.options\n const prevResult = this.currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.currentResultState\n const prevResultOptions = this.currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.currentQueryInitialState\n const prevQueryResult = queryChange\n ? this.currentResult\n : this.previousQueryResult\n\n const { state } = query\n let { dataUpdatedAt, error, errorUpdatedAt, fetchStatus, status } = state\n let isPreviousData = false\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode)\n ? 'fetching'\n : 'paused'\n if (!dataUpdatedAt) {\n status = 'loading'\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle'\n }\n }\n\n // Keep previous data if needed\n if (\n options.keepPreviousData &&\n !state.dataUpdateCount &&\n prevQueryResult?.isSuccess &&\n status !== 'error'\n ) {\n data = prevQueryResult.data\n dataUpdatedAt = prevQueryResult.dataUpdatedAt\n status = prevQueryResult.status\n isPreviousData = true\n }\n // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (\n prevResult &&\n state.data === prevResultState?.data &&\n options.select === this.selectFn\n ) {\n data = this.selectResult\n } else {\n try {\n this.selectFn = options.select\n data = options.select(state.data)\n data = replaceData(prevResult?.data, data, options)\n this.selectResult = data\n this.selectError = null\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError)\n }\n this.selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = state.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n typeof options.placeholderData !== 'undefined' &&\n typeof data === 'undefined' &&\n status === 'loading'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (options.placeholderData as PlaceholderDataFunction<TQueryData>)()\n : options.placeholderData\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData)\n placeholderData = replaceData(\n prevResult?.data,\n placeholderData,\n options,\n )\n this.selectError = null\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError)\n }\n this.selectError = selectError as TError\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success'\n data = placeholderData as TData\n isPlaceholderData = true\n }\n }\n\n if (this.selectError) {\n error = this.selectError as any\n data = this.selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = fetchStatus === 'fetching'\n const isLoading = status === 'loading'\n const isError = status === 'error'\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount:\n state.dataUpdateCount > queryInitialState.dataUpdateCount ||\n state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.currentQuery, this.options)\n this.currentResultState = this.currentQuery.state\n this.currentResultOptions = this.options\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n this.currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = { cache: true }\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n\n if (\n notifyOnChangeProps === 'all' ||\n (!notifyOnChangeProps && !this.trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(notifyOnChangeProps ?? this.trackedProps)\n\n if (this.options.useErrorBoundary) {\n includedProps.add('error')\n }\n\n return Object.keys(this.currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n private updateQuery(): void {\n const query = this.client.getQueryCache().build(this.client, this.options)\n\n if (query === this.currentQuery) {\n return\n }\n\n const prevQuery = this.currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.currentQuery = query\n this.currentQueryInitialState = query.state\n this.previousQueryResult = this.currentResult\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(action: Action<TData, TError>): void {\n const notifyOptions: NotifyOptions = {}\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true\n }\n\n this.updateResult(notifyOptions)\n\n if (this.hasListeners()) {\n this.updateTimers()\n }\n }\n\n private notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n this.options.onSuccess?.(this.currentResult.data!)\n this.options.onSettled?.(this.currentResult.data!, null)\n } else if (notifyOptions.onError) {\n this.options.onError?.(this.currentResult.error!)\n this.options.onSettled?.(undefined, this.currentResult.error!)\n }\n\n // Then trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n\n // Then the cache listeners\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: 'observerResultsUpdated',\n })\n }\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n !query.state.dataUpdatedAt &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.dataUpdatedAt > 0 &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: typeof options['refetchOnMount'] &\n typeof options['refetchOnWindowFocus'] &\n typeof options['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return query.isStaleByTime(options.staleTime)\n}\n"],"names":["QueryObserver","Subscribable","constructor","client","options","trackedProps","Set","selectError","bindMethods","setOptions","remove","bind","refetch","onSubscribe","listeners","length","currentQuery","addObserver","shouldFetchOnMount","executeFetch","updateTimers","onUnsubscribe","destroy","shouldFetchOnReconnect","shouldFetchOn","refetchOnReconnect","shouldFetchOnWindowFocus","refetchOnWindowFocus","clearStaleTimeout","clearRefetchInterval","removeObserver","notifyOptions","prevOptions","prevQuery","defaultQueryOptions","shallowEqualObjects","getQueryCache","notify","type","query","observer","enabled","Error","queryKey","updateQuery","mounted","hasListeners","shouldFetchOptionally","updateResult","staleTime","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","build","createResult","getCurrentResult","currentResult","trackResult","result","trackedResult","Object","keys","forEach","key","defineProperty","configurable","enumerable","get","add","getCurrentQuery","refetchPage","fetch","meta","fetchOptimistic","defaultedOptions","isFetchingOptimistic","then","fetchOptions","cancelRefetch","promise","throwOnError","catch","noop","isServer","isStale","isValidTimeout","time","timeUntilStale","dataUpdatedAt","timeout","staleTimeoutId","setTimeout","refetchInterval","data","nextInterval","refetchIntervalId","setInterval","refetchIntervalInBackground","focusManager","isFocused","clearTimeout","undefined","clearInterval","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","state","currentQueryInitialState","prevQueryResult","previousQueryResult","error","errorUpdatedAt","fetchStatus","status","isPreviousData","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","canFetch","networkMode","keepPreviousData","dataUpdateCount","isSuccess","select","selectFn","selectResult","replaceData","process","env","NODE_ENV","getLogger","placeholderData","Date","now","isFetching","isLoading","isError","isInitialLoading","failureCount","fetchFailureCount","failureReason","fetchFailureReason","errorUpdateCount","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","nextResult","defaultNotifyOptions","cache","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","useErrorBoundary","some","typedKey","changed","has","onQueryUpdate","action","onSuccess","manual","isCancelledError","onError","notifyManager","batch","onSettled","listener","shouldLoadOnMount","retryOnMount","refetchOnMount","field","value","suspense","isStaleByTime"],"mappings":"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"}
@@ -219,6 +219,7 @@ export interface QueryObserverBaseResult<TData = unknown, TError = unknown> {
219
219
  error: TError | null;
220
220
  errorUpdatedAt: number;
221
221
  failureCount: number;
222
+ failureReason: TError | null;
222
223
  errorUpdateCount: number;
223
224
  isError: boolean;
224
225
  isFetched: boolean;
@@ -1112,9 +1112,11 @@
1112
1112
  this.isFetchingOptimistic = false;
1113
1113
  },
1114
1114
  onError,
1115
- onFail: () => {
1115
+ onFail: (failureCount, error) => {
1116
1116
  this.dispatch({
1117
- type: 'failed'
1117
+ type: 'failed',
1118
+ failureCount,
1119
+ error
1118
1120
  });
1119
1121
  },
1120
1122
  onPause: () => {
@@ -1142,7 +1144,8 @@
1142
1144
  switch (action.type) {
1143
1145
  case 'failed':
1144
1146
  return { ...state,
1145
- fetchFailureCount: state.fetchFailureCount + 1
1147
+ fetchFailureCount: action.failureCount,
1148
+ fetchFailureReason: action.error
1146
1149
  };
1147
1150
 
1148
1151
  case 'pause':
@@ -1158,6 +1161,7 @@
1158
1161
  case 'fetch':
1159
1162
  return { ...state,
1160
1163
  fetchFailureCount: 0,
1164
+ fetchFailureReason: null,
1161
1165
  fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,
1162
1166
  fetchStatus: canFetch(this.options.networkMode) ? 'fetching' : 'paused',
1163
1167
  ...(!state.dataUpdatedAt && {
@@ -1176,7 +1180,8 @@
1176
1180
  status: 'success',
1177
1181
  ...(!action.manual && {
1178
1182
  fetchStatus: 'idle',
1179
- fetchFailureCount: 0
1183
+ fetchFailureCount: 0,
1184
+ fetchFailureReason: null
1180
1185
  })
1181
1186
  };
1182
1187
 
@@ -1193,6 +1198,7 @@
1193
1198
  errorUpdateCount: state.errorUpdateCount + 1,
1194
1199
  errorUpdatedAt: Date.now(),
1195
1200
  fetchFailureCount: state.fetchFailureCount + 1,
1201
+ fetchFailureReason: error,
1196
1202
  fetchStatus: 'idle',
1197
1203
  status: 'error'
1198
1204
  };
@@ -1237,6 +1243,7 @@
1237
1243
  errorUpdateCount: 0,
1238
1244
  errorUpdatedAt: 0,
1239
1245
  fetchFailureCount: 0,
1246
+ fetchFailureReason: null,
1240
1247
  fetchMeta: null,
1241
1248
  isInvalidated: false,
1242
1249
  status: hasData ? 'success' : 'loading',
@@ -1441,9 +1448,11 @@
1441
1448
 
1442
1449
  return this.options.mutationFn(this.state.variables);
1443
1450
  },
1444
- onFail: () => {
1451
+ onFail: (failureCount, error) => {
1445
1452
  this.dispatch({
1446
- type: 'failed'
1453
+ type: 'failed',
1454
+ failureCount,
1455
+ error
1447
1456
  });
1448
1457
  },
1449
1458
  onPause: () => {
@@ -1526,7 +1535,8 @@
1526
1535
  switch (action.type) {
1527
1536
  case 'failed':
1528
1537
  return { ...state,
1529
- failureCount: state.failureCount + 1
1538
+ failureCount: action.failureCount,
1539
+ failureReason: action.error
1530
1540
  };
1531
1541
 
1532
1542
  case 'pause':
@@ -1543,6 +1553,8 @@
1543
1553
  return { ...state,
1544
1554
  context: action.context,
1545
1555
  data: undefined,
1556
+ failureCount: 0,
1557
+ failureReason: null,
1546
1558
  error: null,
1547
1559
  isPaused: !canFetch(this.options.networkMode),
1548
1560
  status: 'loading',
@@ -1552,6 +1564,8 @@
1552
1564
  case 'success':
1553
1565
  return { ...state,
1554
1566
  data: action.data,
1567
+ failureCount: 0,
1568
+ failureReason: null,
1555
1569
  error: null,
1556
1570
  status: 'success',
1557
1571
  isPaused: false
@@ -1562,6 +1576,7 @@
1562
1576
  data: undefined,
1563
1577
  error: action.error,
1564
1578
  failureCount: state.failureCount + 1,
1579
+ failureReason: action.error,
1565
1580
  isPaused: false,
1566
1581
  status: 'error'
1567
1582
  };
@@ -1593,6 +1608,7 @@
1593
1608
  data: undefined,
1594
1609
  error: null,
1595
1610
  failureCount: 0,
1611
+ failureReason: null,
1596
1612
  isPaused: false,
1597
1613
  status: 'idle',
1598
1614
  variables: undefined
@@ -2494,6 +2510,7 @@
2494
2510
  error,
2495
2511
  errorUpdatedAt,
2496
2512
  failureCount: state.fetchFailureCount,
2513
+ failureReason: state.fetchFailureReason,
2497
2514
  errorUpdateCount: state.errorUpdateCount,
2498
2515
  isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,
2499
2516
  isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,