@tanstack/query-core 4.3.3 → 4.3.6
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.
- package/build/lib/index.d.ts +1 -1
- package/build/lib/index.js +1 -0
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +1 -1
- package/build/lib/mutation.js +1 -1
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/query.js +1 -1
- package/build/lib/query.js.map +1 -1
- package/build/lib/queryClient.js +1 -1
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/tests/focusManager.test.d.ts +1 -0
- package/build/lib/tests/hydration.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryBehavior.test.d.ts +1 -0
- package/build/lib/tests/infiniteQueryObserver.test.d.ts +1 -0
- package/build/lib/tests/mutationCache.test.d.ts +1 -0
- package/build/lib/tests/mutationObserver.test.d.ts +1 -0
- package/build/lib/tests/mutations.test.d.ts +1 -0
- package/build/lib/tests/notifyManager.test.d.ts +1 -0
- package/build/lib/tests/onlineManager.test.d.ts +1 -0
- package/build/lib/tests/queriesObserver.test.d.ts +1 -0
- package/build/lib/tests/query.test.d.ts +1 -0
- package/build/lib/tests/queryCache.test.d.ts +1 -0
- package/build/lib/tests/queryClient.test.d.ts +1 -0
- package/build/lib/tests/queryObserver.test.d.ts +1 -0
- package/build/lib/tests/utils.d.ts +24 -0
- package/build/lib/tests/utils.test.d.ts +1 -0
- package/build/umd/index.development.js +1 -0
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/tests/focusManager.test.tsx +1 -1
- package/src/tests/hydration.test.tsx +1 -1
- package/src/tests/infiniteQueryBehavior.test.tsx +1 -1
- package/src/tests/infiniteQueryObserver.test.tsx +1 -1
- package/src/tests/mutationCache.test.tsx +1 -6
- package/src/tests/mutationObserver.test.tsx +1 -1
- package/src/tests/mutations.test.tsx +1 -6
- package/src/tests/notifyManager.test.tsx +1 -1
- package/src/tests/onlineManager.test.tsx +1 -1
- package/src/tests/queriesObserver.test.tsx +1 -6
- package/src/tests/query.test.tsx +1 -1
- package/src/tests/queryCache.test.tsx +1 -1
- package/src/tests/queryClient.test.tsx +1 -6
- package/src/tests/queryObserver.test.tsx +1 -1
- package/src/tests/utils.test.tsx +1 -1
- package/src/tests/utils.ts +78 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.development.js","sources":["../../src/subscribable.ts","../../src/utils.ts","../../src/focusManager.ts","../../src/onlineManager.ts","../../src/retryer.ts","../../src/logger.ts","../../src/notifyManager.ts","../../src/removable.ts","../../src/query.ts","../../src/queryCache.ts","../../src/mutation.ts","../../src/mutationCache.ts","../../src/infiniteQueryBehavior.ts","../../src/queryClient.ts","../../src/queryObserver.ts","../../src/queriesObserver.ts","../../src/infiniteQueryObserver.ts","../../src/mutationObserver.ts","../../src/hydration.ts"],"sourcesContent":["type Listener = () => void\n\nexport class Subscribable<TListener extends Function = Listener> {\n protected listeners: TListener[]\n\n constructor() {\n this.listeners = []\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.push(listener as TListener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners = this.listeners.filter((x) => x !== listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.length > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationFunction,\n MutationKey,\n MutationOptions,\n QueryFunction,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Include or exclude fetching mutations\n */\n fetching?: boolean\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined'\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nexport function replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function parseQueryArgs<\n TOptions extends QueryOptions<any, any, any, TQueryKey>,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1: TQueryKey | TOptions,\n arg2?: QueryFunction<any, TQueryKey> | TOptions,\n arg3?: TOptions,\n): TOptions {\n if (!isQueryKey(arg1)) {\n return arg1 as TOptions\n }\n\n if (typeof arg2 === 'function') {\n return { ...arg3, queryKey: arg1, queryFn: arg2 } as TOptions\n }\n\n return { ...arg2, queryKey: arg1 } as TOptions\n}\n\nexport function parseMutationArgs<\n TOptions extends MutationOptions<any, any, any, any>,\n>(\n arg1: MutationKey | MutationFunction<any, any> | TOptions,\n arg2?: MutationFunction<any, any> | TOptions,\n arg3?: TOptions,\n): TOptions {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return { ...arg3, mutationKey: arg1, mutationFn: arg2 } as TOptions\n }\n return { ...arg2, mutationKey: arg1 } as TOptions\n }\n\n if (typeof arg1 === 'function') {\n return { ...arg2, mutationFn: arg1 } as TOptions\n }\n\n return { ...arg1 } as TOptions\n}\n\nexport function parseFilterArgs<\n TFilters extends QueryFilters,\n TOptions = unknown,\n>(\n arg1?: QueryKey | TFilters,\n arg2?: TFilters | TOptions,\n arg3?: TOptions,\n): [TFilters, TOptions | undefined] {\n return (\n isQueryKey(arg1) ? [{ ...arg2, queryKey: arg1 }, arg3] : [arg1 || {}, arg2]\n ) as [TFilters, TOptions]\n}\n\nexport function parseMutationFilterArgs<\n TFilters extends MutationFilters,\n TOptions = unknown,\n>(\n arg1?: QueryKey | TFilters,\n arg2?: TFilters | TOptions,\n arg3?: TOptions,\n): [TFilters, TOptions | undefined] {\n return (\n isQueryKey(arg1)\n ? [{ ...arg2, mutationKey: arg1 }, arg3]\n : [arg1 || {}, arg2]\n ) as [TFilters, TOptions]\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, fetching, predicate, mutationKey } = filters\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (\n hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)\n ) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (\n typeof fetching === 'boolean' &&\n (mutation.state.status === 'loading') !== fetching\n ) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashQueryKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashQueryKey(queryKey: QueryKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean {\n return partialDeepEqual(a, b)\n}\n\n/**\n * Checks if `b` partially matches with `a`.\n */\nexport function partialDeepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialDeepEqual(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function isQueryKey(value: unknown): value is QueryKey {\n return Array.isArray(value)\n}\n\nexport function isError(value: any): value is Error {\n return value instanceof Error\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function getAbortController(): AbortController | undefined {\n if (typeof AbortController === 'function') {\n return new AbortController()\n }\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n // Use prev data if an isDataEqual function is defined and returns `true`\n if (options.isDataEqual?.(prevData, data)) {\n return prevData as TData\n } else if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n private focused?: boolean\n private cleanup?: () => void\n\n private setup: SetupFn\n\n constructor() {\n super()\n this.setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', listener, false)\n window.addEventListener('focus', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n window.removeEventListener('focus', listener)\n }\n }\n }\n }\n\n protected onSubscribe(): void {\n if (!this.cleanup) {\n this.setEventListener(this.setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.cleanup?.()\n this.cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.setup = setup\n this.cleanup?.()\n this.cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n this.focused = focused\n\n if (focused) {\n this.onFocus()\n }\n }\n\n onFocus(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isFocused(): boolean {\n if (typeof this.focused === 'boolean') {\n return this.focused\n }\n\n // document global can be unavailable in react native\n if (typeof document === 'undefined') {\n return true\n }\n\n return [undefined, 'visible', 'prerender'].includes(\n document.visibilityState,\n )\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setOnline: (online?: boolean) => void,\n) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n private online?: boolean\n private cleanup?: () => void\n\n private setup: SetupFn\n\n constructor() {\n super()\n this.setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline()\n // Listen to online\n window.addEventListener('online', listener, false)\n window.addEventListener('offline', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener)\n window.removeEventListener('offline', listener)\n }\n }\n }\n }\n\n protected onSubscribe(): void {\n if (!this.cleanup) {\n this.setEventListener(this.setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.cleanup?.()\n this.cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.setup = setup\n this.cleanup?.()\n this.cleanup = setup((online?: boolean) => {\n if (typeof online === 'boolean') {\n this.setOnline(online)\n } else {\n this.onOnline()\n }\n })\n }\n\n setOnline(online?: boolean): void {\n this.online = online\n\n if (online) {\n this.onOnline()\n }\n }\n\n onOnline(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isOnline(): boolean {\n if (typeof this.online === 'boolean') {\n return this.online\n }\n\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.onLine === 'undefined'\n ) {\n return true\n }\n\n return navigator.onLine\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { sleep } from './utils'\nimport { CancelOptions, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig<TData = unknown, TError = unknown> {\n fn: () => TData | Promise<TData>\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue<TError>\n retryDelay?: RetryDelayValue<TError>\n networkMode: NetworkMode | undefined\n}\n\nexport interface Retryer<TData = unknown> {\n promise: Promise<TData>\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => void\n cancelRetry: () => void\n continueRetry: () => void\n}\n\nexport type RetryValue<TError> = boolean | number | ShouldRetryFunction<TError>\n\ntype ShouldRetryFunction<TError> = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue<TError> = number | RetryDelayFunction<TError>\n\ntype RetryDelayFunction<TError = unknown> = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer<TData = unknown, TError = unknown>(\n config: RetryerConfig<TData, TError>,\n): Retryer<TData> {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n let promiseResolve: (data: TData) => void\n let promiseReject: (error: TError) => void\n\n const promise = new Promise<TData>((outerResolve, outerReject) => {\n promiseResolve = outerResolve\n promiseReject = outerReject\n })\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const shouldPause = () =>\n !focusManager.isFocused() ||\n (config.networkMode !== 'always' && !onlineManager.isOnline())\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n promiseResolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n promiseReject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || !shouldPause()) {\n return continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // Execute query\n try {\n promiseOrValue = config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? 3\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n if (shouldPause()) {\n return pause()\n }\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n // Start loop\n if (canFetch(config.networkMode)) {\n run()\n } else {\n pause().then(run)\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.()\n },\n cancelRetry,\n continueRetry,\n }\n}\n","export interface Logger {\n log: LogFunction\n warn: LogFunction\n error: LogFunction\n}\n\ntype LogFunction = (...args: any[]) => void\n\nexport const defaultLogger: Logger = console\n","import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n cacheTime!: number\n private gcTimeout?: ReturnType<typeof setTimeout>\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.cacheTime)\n }\n }\n\n protected updateCacheTime(newCacheTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no cache time is set\n this.cacheTime = Math.max(\n this.cacheTime || 0,\n newCacheTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout)\n this.gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","import { getAbortController, noop, replaceData, timeUntilStale } from './utils'\nimport type {\n InitialDataFunction,\n QueryKey,\n QueryOptions,\n QueryStatus,\n QueryFunctionContext,\n QueryMeta,\n CancelOptions,\n SetDataOptions,\n FetchStatus,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport { defaultLogger, Logger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Retryer, isCancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n logger?: Logger\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryState<TData = unknown, TError = unknown> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchMeta: any\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal?: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: any\n}\n\ninterface FailedAction {\n type: 'failed'\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: any\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: QueryState<TData, TError>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n initialState: QueryState<TData, TError>\n revertState?: QueryState<TData, TError>\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n isFetchingOptimistic?: boolean\n\n private cache: QueryCache\n private logger: Logger\n private promise?: Promise<TData>\n private retryer?: Retryer<TData>\n private observers: QueryObserver<any, any, any, any, any>[]\n private defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n private abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.abortSignalConsumed = false\n this.defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.cache = config.cache\n this.logger = config.logger || defaultLogger\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.initialState = config.state || getDefaultState(this.options)\n this.state = this.initialState\n this.meta = config.meta\n }\n\n private setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\n\n this.meta = options?.meta\n\n this.updateCacheTime(this.options.cacheTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: QueryState<TData, TError>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.promise\n this.retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n this.observers.some((observer) => observer.getCurrentResult().isStale)\n )\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({ revert: true })\n } else {\n this.retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions,\n ): Promise<TData> {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({ silent: true })\n } else if (this.promise) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.retryer?.continueRetry()\n // Return current promise if we are already fetching\n return this.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (!Array.isArray(this.options.queryKey)) {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = getAbortController()\n\n // Create query function context\n const queryFnContext: QueryFunctionContext<TQueryKey> = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta,\n }\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true\n return abortController.signal\n }\n return undefined\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject('Missing queryFn')\n }\n this.abortSignalConsumed = false\n return this.options.queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const context: FetchContext<TQueryFnData, TError, TData, TQueryKey> = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n meta: this.meta,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(context)\n\n // Store state in case the current fetch needs to be reverted\n this.revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.cache.config.onError?.(error, this as Query<any, any, any, any>)\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.retryer = createRetryer({\n fn: context.fetchFn as () => TData,\n abort: abortController?.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n onError(new Error('Query data cannot be undefined') as any)\n return\n }\n\n this.setData(data as TData)\n\n // Notify cache callback\n this.cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: () => {\n this.dispatch({ type: 'failed' })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n })\n\n this.promise = this.retryer.promise\n\n return this.promise\n }\n\n private dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: state.fetchFailureCount + 1,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n fetchFailureCount: 0,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading',\n }),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action)\n })\n\n this.cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasInitialData = typeof options.initialData !== 'undefined'\n\n const initialDataUpdatedAt = hasInitialData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n const hasData = typeof data !== 'undefined'\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle',\n }\n}\n","import {\n QueryFilters,\n hashQueryKeyByOptions,\n matchQuery,\n parseFilterArgs,\n} from './utils'\nimport { Action, Query, QueryState } from './query'\nimport type { QueryKey, QueryOptions } from './types'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryAdded {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ntype QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n config: QueryCacheConfig\n\n private queries: Query<any, any, any, any>[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(\n client: QueryClient,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta,\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueyKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueyKey> | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n arg1: QueryKey,\n arg2?: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(queryKey?: QueryKey, filters?: QueryFilters): Query[]\n findAll(filters?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import type { MutationOptions, MutationStatus, MutationMeta } from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport { defaultLogger, Logger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { canFetch, Retryer, createRetryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n logger?: Logger\n defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n meta?: MutationMeta\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n}\n\ninterface FailedAction {\n type: 'failed'\n}\n\ninterface LoadingAction<TVariables, TContext> {\n type: 'loading'\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError, TVariables, TContext> {\n type: 'setState'\n state: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction\n | LoadingAction<TVariables, TContext>\n | PauseAction\n | SetStateAction<TData, TError, TVariables, TContext>\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options: MutationOptions<TData, TError, TVariables, TContext>\n mutationId: number\n meta: MutationMeta | undefined\n\n private observers: MutationObserver<TData, TError, TVariables, TContext>[]\n private mutationCache: MutationCache\n private logger: Logger\n private retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.options = {\n ...config.defaultOptions,\n ...config.options,\n }\n this.mutationId = config.mutationId\n this.mutationCache = config.mutationCache\n this.logger = config.logger || defaultLogger\n this.observers = []\n this.state = config.state || getDefaultState()\n this.meta = config.meta\n\n this.updateCacheTime(this.options.cacheTime)\n this.scheduleGc()\n }\n\n setState(state: MutationState<TData, TError, TVariables, TContext>): void {\n this.dispatch({ type: 'setState', state })\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.observers = this.observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc()\n } else {\n this.mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<TData> {\n if (this.retryer) {\n this.retryer.continue()\n return this.retryer.promise\n }\n return this.execute()\n }\n\n async execute(): Promise<TData> {\n const executeMutation = () => {\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found')\n }\n return this.options.mutationFn(this.state.variables!)\n },\n onFail: () => {\n this.dispatch({ type: 'failed' })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n })\n\n return this.retryer.promise\n }\n\n const restored = this.state.status === 'loading'\n try {\n if (!restored) {\n this.dispatch({ type: 'loading', variables: this.options.variables! })\n // Notify cache callback\n this.mutationCache.config.onMutate?.(\n this.state.variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(this.state.variables!)\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables,\n })\n }\n }\n const data = await executeMutation()\n\n // Notify cache callback\n this.mutationCache.config.onSuccess?.(\n data,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(\n data,\n this.state.variables!,\n this.state.context!,\n )\n\n await this.options.onSettled?.(\n data,\n null,\n this.state.variables!,\n this.state.context,\n )\n\n this.dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n this.mutationCache.config.onError?.(\n error,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n\n await this.options.onError?.(\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n throw error\n } finally {\n this.dispatch({ type: 'error', error: error as TError })\n }\n }\n }\n\n private dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: state.failureCount + 1,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'loading':\n return {\n ...state,\n context: action.context,\n data: undefined,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error',\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n }\n}\n","import { MutationObserver } from './mutationObserver'\nimport type { MutationOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport { notifyManager } from './notifyManager'\nimport { Action, Mutation, MutationState } from './mutation'\nimport { matchMutation, MutationFilters, noop } from './utils'\nimport { Subscribable } from './subscribable'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventMutationAdded {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated {\n type: 'updated'\n mutation: Mutation<any, any, any, any>\n action: Action<any, any, any, any>\n}\n\ntype MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable<MutationCacheListener> {\n config: MutationCacheConfig\n\n private mutations: Mutation<any, any, any, any>[]\n private mutationId: number\n\n constructor(config?: MutationCacheConfig) {\n super()\n this.config = config || {}\n this.mutations = []\n this.mutationId = 0\n }\n\n build<TData, TError, TVariables, TContext>(\n client: QueryClient,\n options: MutationOptions<TData, TError, TVariables, TContext>,\n state?: MutationState<TData, TError, TVariables, TContext>,\n ): Mutation<TData, TError, TVariables, TContext> {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey\n ? client.getMutationDefaults(options.mutationKey)\n : undefined,\n meta: options.meta,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation<any, any, any, any>): void {\n this.mutations.push(mutation)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation<any, any, any, any>): void {\n this.mutations = this.mutations.filter((x) => x !== mutation)\n this.notify({ type: 'removed', mutation })\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.mutations.forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Mutation[] {\n return this.mutations\n }\n\n find<TData = unknown, TError = unknown, TVariables = any, TContext = unknown>(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.mutations.find((mutation) => matchMutation(filters, mutation))\n }\n\n findAll(filters: MutationFilters): Mutation[] {\n return this.mutations.filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<void> {\n const pausedMutations = this.mutations.filter((x) => x.state.isPaused)\n return notifyManager.batch(() =>\n pausedMutations.reduce(\n (promise, mutation) =>\n promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve(),\n ),\n )\n }\n}\n","import type { QueryBehavior } from './query'\n\nimport type {\n InfiniteData,\n QueryFunctionContext,\n QueryOptions,\n RefetchQueryFilters,\n} from './types'\n\nexport function infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n>(): QueryBehavior<TQueryFnData, TError, InfiniteData<TData>> {\n return {\n onFetch: (context) => {\n context.fetchFn = () => {\n const refetchPage: RefetchQueryFilters['refetchPage'] | undefined =\n context.fetchOptions?.meta?.refetchPage\n const fetchMore = context.fetchOptions?.meta?.fetchMore\n const pageParam = fetchMore?.pageParam\n const isFetchingNextPage = fetchMore?.direction === 'forward'\n const isFetchingPreviousPage = fetchMore?.direction === 'backward'\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n let newPageParams = oldPageParams\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal?.aborted) {\n cancelled = true\n } else {\n context.signal?.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n // Get query function\n const queryFn =\n context.options.queryFn || (() => Promise.reject('Missing queryFn'))\n\n const buildNewPages = (\n pages: unknown[],\n param: unknown,\n page: unknown,\n previous?: boolean,\n ) => {\n newPageParams = previous\n ? [param, ...newPageParams]\n : [...newPageParams, param]\n return previous ? [page, ...pages] : [...pages, page]\n }\n\n // Create function to fetch a page\n const fetchPage = (\n pages: unknown[],\n manual?: boolean,\n param?: unknown,\n previous?: boolean,\n ): Promise<unknown[]> => {\n if (cancelled) {\n return Promise.reject('Cancelled')\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages)\n }\n\n const queryFnContext: QueryFunctionContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const queryFnResult = queryFn(queryFnContext)\n\n const promise = Promise.resolve(queryFnResult).then((page) =>\n buildNewPages(pages, param, page, previous),\n )\n\n return promise\n }\n\n let promise: Promise<unknown[]>\n\n // Fetch first page?\n if (!oldPages.length) {\n promise = fetchPage([])\n }\n\n // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getNextPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param)\n }\n\n // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getPreviousPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param, true)\n }\n\n // Refetch pages\n else {\n newPageParams = []\n\n const manual = typeof context.options.getNextPageParam === 'undefined'\n\n const shouldFetchFirstPage =\n refetchPage && oldPages[0]\n ? refetchPage(oldPages[0], 0, oldPages)\n : true\n\n // Fetch first page\n promise = shouldFetchFirstPage\n ? fetchPage([], manual, oldPageParams[0])\n : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0]))\n\n // Fetch remaining pages\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then((pages) => {\n const shouldFetchNextPage =\n refetchPage && oldPages[i]\n ? refetchPage(oldPages[i], i, oldPages)\n : true\n\n if (shouldFetchNextPage) {\n const param = manual\n ? oldPageParams[i]\n : getNextPageParam(context.options, pages)\n return fetchPage(pages, manual, param)\n }\n return Promise.resolve(\n buildNewPages(pages, oldPageParams[i], oldPages[i]),\n )\n })\n }\n }\n\n const finalPromise = promise.then((pages) => ({\n pages,\n pageParams: newPageParams,\n }))\n\n return finalPromise\n }\n },\n }\n}\n\nexport function getNextPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getNextPageParam?.(pages[pages.length - 1], pages)\n}\n\nexport function getPreviousPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getPreviousPageParam?.(pages[0], pages)\n}\n\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasNextPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages)\n return (\n typeof nextPageParam !== 'undefined' &&\n nextPageParam !== null &&\n nextPageParam !== false\n )\n }\n}\n\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasPreviousPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages)\n return (\n typeof previousPageParam !== 'undefined' &&\n previousPageParam !== null &&\n previousPageParam !== false\n )\n }\n}\n","import {\n QueryFilters,\n Updater,\n hashQueryKey,\n noop,\n parseFilterArgs,\n parseQueryArgs,\n partialMatchKey,\n hashQueryKeyByOptions,\n MutationFilters,\n functionalUpdate,\n} from './utils'\nimport type {\n QueryClientConfig,\n DefaultOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryFunction,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n ResetQueryFilters,\n SetDataOptions,\n} from './types'\nimport type { QueryState } from './query'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport { CancelOptions, DefaultedQueryObserverOptions } from './types'\nimport { defaultLogger, Logger } from './logger'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: QueryOptions<any, any, any>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions<any, any, any, any>\n}\n\n// CLASS\n\nexport class QueryClient {\n private queryCache: QueryCache\n private mutationCache: MutationCache\n private logger: Logger\n private defaultOptions: DefaultOptions\n private queryDefaults: QueryDefaults[]\n private mutationDefaults: MutationDefaults[]\n private unsubscribeFocus?: () => void\n private unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.queryCache = config.queryCache || new QueryCache()\n this.mutationCache = config.mutationCache || new MutationCache()\n this.logger = config.logger || defaultLogger\n this.defaultOptions = config.defaultOptions || {}\n this.queryDefaults = []\n this.mutationDefaults = []\n }\n\n mount(): void {\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations()\n this.queryCache.onFocus()\n }\n })\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations()\n this.queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.unsubscribeFocus?.()\n this.unsubscribeOnline?.()\n }\n\n isFetching(filters?: QueryFilters): number\n isFetching(queryKey?: QueryKey, filters?: QueryFilters): number\n isFetching(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): number {\n const [filters] = parseFilterArgs(arg1, arg2)\n filters.fetchStatus = 'fetching'\n return this.queryCache.findAll(filters).length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.mutationCache.findAll({ ...filters, fetching: true }).length\n }\n\n getQueryData<TData = unknown>(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): TData | undefined {\n return this.queryCache.find<TData>(queryKey, filters)?.state.data\n }\n\n getQueriesData<TData = unknown>(queryKey: QueryKey): [QueryKey, TData][]\n getQueriesData<TData = unknown>(filters: QueryFilters): [QueryKey, TData][]\n getQueriesData<TData = unknown>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n ): [QueryKey, TData][] {\n return this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey, state }) => {\n const data = state.data as TData\n return [queryKey, data]\n })\n }\n\n setQueryData<TData>(\n queryKey: QueryKey,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): TData | undefined {\n const query = this.queryCache.find<TData>(queryKey)\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (typeof data === 'undefined') {\n return undefined\n }\n\n const parsedOptions = parseQueryArgs(queryKey)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n return this.queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData<TData>(\n queryKey: QueryKey,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][]\n\n setQueriesData<TData>(\n filters: QueryFilters,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][]\n\n setQueriesData<TData>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][] {\n return notifyManager.batch(() =>\n this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData<TData>(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<TData = unknown, TError = undefined>(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): QueryState<TData, TError> | undefined {\n return this.queryCache.find<TData, TError>(queryKey, filters)?.state\n }\n\n removeQueries(filters?: QueryFilters): void\n removeQueries(queryKey?: QueryKey, filters?: QueryFilters): void\n removeQueries(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): void {\n const [filters] = parseFilterArgs(arg1, arg2)\n const queryCache = this.queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries<TPageData = unknown>(\n filters?: ResetQueryFilters<TPageData>,\n options?: ResetOptions,\n ): Promise<void>\n resetQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: ResetQueryFilters<TPageData>,\n options?: ResetOptions,\n ): Promise<void>\n resetQueries(\n arg1?: QueryKey | ResetQueryFilters,\n arg2?: ResetQueryFilters | ResetOptions,\n arg3?: ResetOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n const queryCache = this.queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(filters?: QueryFilters, options?: CancelOptions): Promise<void>\n cancelQueries(\n queryKey?: QueryKey,\n filters?: QueryFilters,\n options?: CancelOptions,\n ): Promise<void>\n cancelQueries(\n arg1?: QueryKey | QueryFilters,\n arg2?: QueryFilters | CancelOptions,\n arg3?: CancelOptions,\n ): Promise<void> {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3)\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true\n }\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .map((query) => query.cancel(cancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries<TPageData = unknown>(\n filters?: InvalidateQueryFilters<TPageData>,\n options?: InvalidateOptions,\n ): Promise<void>\n invalidateQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: InvalidateQueryFilters<TPageData>,\n options?: InvalidateOptions,\n ): Promise<void>\n invalidateQueries(\n arg1?: QueryKey | InvalidateQueryFilters,\n arg2?: InvalidateQueryFilters | InvalidateOptions,\n arg3?: InvalidateOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\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 const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries<TPageData = unknown>(\n filters?: RefetchQueryFilters<TPageData>,\n options?: RefetchOptions,\n ): Promise<void>\n refetchQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: RefetchQueryFilters<TPageData>,\n options?: RefetchOptions,\n ): Promise<void>\n refetchQueries(\n arg1?: QueryKey | RefetchQueryFilters,\n arg2?: RefetchQueryFilters | RefetchOptions,\n arg3?: RefetchOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) =>\n query.fetch(undefined, {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n meta: { refetchPage: filters.refetchPage },\n }),\n ),\n )\n\n let promise = Promise.all(promises).then(noop)\n\n if (!options?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false\n }\n\n const query = this.queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(defaultedOptions.staleTime)\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void> {\n return this.fetchQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n parsedOptions.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData\n >()\n return this.fetchQuery(parsedOptions)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void> {\n return this.fetchInfiniteQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n resumePausedMutations(): Promise<void> {\n return this.mutationCache.resumePausedMutations()\n }\n\n getQueryCache(): QueryCache {\n return this.queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.mutationCache\n }\n\n getLogger(): Logger {\n return this.logger\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 queryKey: QueryKey,\n options: QueryObserverOptions<unknown, any, any, any>,\n ): void {\n const result = this.queryDefaults.find(\n (x) => hashQueryKey(queryKey) === hashQueryKey(x.queryKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.queryDefaults.push({ queryKey, defaultOptions: options })\n }\n }\n\n getQueryDefaults(\n queryKey?: QueryKey,\n ): QueryObserverOptions<any, any, any, any, any> | undefined {\n if (!queryKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.queryDefaults.find((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several query defaults match with key '${JSON.stringify(\n queryKey,\n )}'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: MutationObserverOptions<any, any, any, any>,\n ): void {\n const result = this.mutationDefaults.find(\n (x) => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.mutationDefaults.push({ mutationKey, defaultOptions: options })\n }\n }\n\n getMutationDefaults(\n mutationKey?: MutationKey,\n ): MutationObserverOptions<any, any, any, any> | undefined {\n if (!mutationKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.mutationDefaults.find((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several mutation defaults match with key '${JSON.stringify(\n mutationKey,\n )}'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n defaultQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n >(\n options?:\n | QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\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 && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense\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 ...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","import { 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\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\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: isFetching,\n isRefetching: isFetching && status !== 'loading',\n isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: status === 'error' && 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","import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport { NotifyOptions, QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n","import type {\n DefaultedInfiniteQueryObserverOptions,\n FetchNextPageOptions,\n FetchPreviousPageOptions,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport {\n NotifyOptions,\n ObserverFetchOptions,\n QueryObserver,\n} from './queryObserver'\nimport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior,\n} from './infiniteQueryBehavior'\nimport { Query } from './query'\n\ntype InfiniteQueryObserverListener<TData, TError> = (\n result: InfiniteQueryObserverResult<TData, TError>,\n) => void\n\nexport class InfiniteQueryObserver<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends QueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TData>,\n InfiniteData<TQueryData>,\n TQueryKey\n> {\n // Type override\n subscribe!: (\n listener?: InfiniteQueryObserverListener<TData, TError>,\n ) => () => void\n\n // Type override\n getCurrentResult!: () => InfiniteQueryObserverResult<TData, TError>\n\n // Type override\n protected fetch!: (\n fetchOptions: ObserverFetchOptions,\n ) => Promise<InfiniteQueryObserverResult<TData, TError>>\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n client: QueryClient,\n options: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super(client, options)\n }\n\n protected bindMethods(): void {\n super.bindMethods()\n this.fetchNextPage = this.fetchNextPage.bind(this)\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this)\n }\n\n setOptions(\n options?: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n super.setOptions(\n {\n ...options,\n behavior: infiniteQueryBehavior(),\n },\n notifyOptions,\n )\n }\n\n getOptimisticResult(\n options: DefaultedInfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): InfiniteQueryObserverResult<TData, TError> {\n options.behavior = infiniteQueryBehavior()\n return super.getOptimisticResult(options) as InfiniteQueryObserverResult<\n TData,\n TError\n >\n }\n\n fetchNextPage({ pageParam, ...options }: FetchNextPageOptions = {}): Promise<\n InfiniteQueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: 'forward', pageParam },\n },\n })\n }\n\n fetchPreviousPage({\n pageParam,\n ...options\n }: FetchPreviousPageOptions = {}): Promise<\n InfiniteQueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: 'backward', pageParam },\n },\n })\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, InfiniteData<TQueryData>, TQueryKey>,\n options: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): InfiniteQueryObserverResult<TData, TError> {\n const { state } = query\n const result = super.createResult(query, options)\n return {\n ...result,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data?.pages),\n hasPreviousPage: hasPreviousPage(options, state.data?.pages),\n isFetchingNextPage:\n state.fetchStatus === 'fetching' &&\n state.fetchMeta?.fetchMore?.direction === 'forward',\n isFetchingPreviousPage:\n state.fetchStatus === 'fetching' &&\n state.fetchMeta?.fetchMore?.direction === 'backward',\n }\n }\n}\n","import { Action, getDefaultState, Mutation } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverBaseResult,\n MutationObserverResult,\n MutationObserverOptions,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\ninterface NotifyOptions {\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n private client: QueryClient\n private currentResult!: MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n private currentMutation?: Mutation<TData, TError, TVariables, TContext>\n private mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.client = client\n this.setOptions(options)\n this.bindMethods()\n this.updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.updateResult()\n\n // Determine which callbacks to trigger\n const notifyOptions: NotifyOptions = {\n listeners: true,\n }\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true\n } else if (action.type === 'error') {\n notifyOptions.onError = true\n }\n\n this.notify(notifyOptions)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.currentResult\n }\n\n reset(): void {\n this.currentMutation = undefined\n this.updateResult()\n this.notify({ listeners: true })\n }\n\n mutate(\n variables?: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.mutateOptions = options\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this)\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, {\n ...this.options,\n variables:\n typeof variables !== 'undefined' ? variables : this.options.variables,\n })\n\n this.currentMutation.addObserver(this)\n\n return this.currentMutation.execute()\n }\n\n private updateResult(): void {\n const state = this.currentMutation\n ? this.currentMutation.state\n : getDefaultState<TData, TError, TVariables, TContext>()\n\n const result: MutationObserverBaseResult<\n TData,\n TError,\n TVariables,\n TContext\n > = {\n ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n }\n\n this.currentResult = result as MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n }\n\n private notify(options: NotifyOptions) {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions) {\n if (options.onSuccess) {\n this.mutateOptions.onSuccess?.(\n this.currentResult.data!,\n this.currentResult.variables!,\n this.currentResult.context!,\n )\n this.mutateOptions.onSettled?.(\n this.currentResult.data!,\n null,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n } else if (options.onError) {\n this.mutateOptions.onError?.(\n this.currentResult.error!,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n this.mutateOptions.onSettled?.(\n undefined,\n this.currentResult.error,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n if (options.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n })\n }\n}\n","import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n dehydrateMutations?: boolean\n dehydrateQueries?: boolean\n shouldDehydrateMutation?: ShouldDehydrateMutationFunction\n shouldDehydrateQuery?: ShouldDehydrateQueryFunction\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\nexport type ShouldDehydrateQueryFunction = (query: Query) => boolean\n\nexport type ShouldDehydrateMutationFunction = (mutation: Mutation) => boolean\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n }\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(query: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nfunction defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nfunction defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const mutations: DehydratedMutation[] = []\n const queries: DehydratedQuery[] = []\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation =\n options.shouldDehydrateMutation || defaultShouldDehydrateMutation\n\n client\n .getMutationCache()\n .getAll()\n .forEach((mutation) => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation))\n }\n })\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery =\n options.shouldDehydrateQuery || defaultShouldDehydrateQuery\n\n client\n .getQueryCache()\n .getAll()\n .forEach((query) => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query))\n }\n })\n }\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\n\n const mutationCache = client.getMutationCache()\n const queryCache = client.getQueryCache()\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = (dehydratedState as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\n\n queries.forEach((dehydratedQuery) => {\n const query = queryCache.get(dehydratedQuery.queryHash)\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) {\n query.setState(dehydratedQuery.state)\n }\n return\n }\n\n // Restore query\n queryCache.build(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQuery.state,\n )\n })\n}\n"],"names":["Subscribable","constructor","listeners","subscribe","bind","listener","push","onSubscribe","filter","x","onUnsubscribe","hasListeners","length","isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","difference","array1","array2","indexOf","replaceAt","array","index","copy","slice","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","parseQueryArgs","arg1","arg2","arg3","isQueryKey","queryKey","queryFn","parseMutationArgs","mutationKey","mutationFn","parseFilterArgs","parseMutationFilterArgs","matchQuery","filters","query","type","exact","fetchStatus","predicate","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","fetching","hashQueryKey","status","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","partialDeepEqual","some","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","prot","prototype","hasOwnProperty","toString","call","isError","Error","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","getAbortController","AbortController","replaceData","prevData","data","isDataEqual","structuralSharing","FocusManager","setup","onFocus","addEventListener","removeEventListener","cleanup","setEventListener","focused","setFocused","forEach","isFocused","document","includes","visibilityState","focusManager","OnlineManager","onOnline","online","setOnline","isOnline","navigator","onLine","onlineManager","defaultRetryDelay","failureCount","min","canFetch","networkMode","CancelledError","revert","silent","isCancelledError","createRetryer","config","isRetryCancelled","isResolved","continueFn","promiseResolve","promiseReject","promise","outerResolve","outerReject","cancel","cancelOptions","reject","abort","cancelRetry","continueRetry","shouldPause","onSuccess","onError","pause","continueResolve","onPause","onContinue","run","promiseOrValue","fn","error","catch","retry","retryDelay","delay","shouldRetry","onFail","continue","defaultLogger","console","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","batch","flush","schedule","batchCalls","args","originalQueue","setNotifyFunction","setBatchNotifyFunction","notifyManager","Removable","destroy","clearGcTimeout","scheduleGc","cacheTime","gcTimeout","optionalRemove","updateCacheTime","newCacheTime","clearTimeout","Query","abortSignalConsumed","defaultOptions","setOptions","observers","cache","logger","initialState","getDefaultState","meta","remove","setData","newData","dispatch","dataUpdatedAt","manual","setState","setStateOptions","retryer","reset","observer","enabled","isDisabled","getObserversCount","isInvalidated","getCurrentResult","isStaleByTime","find","shouldFetchOnWindowFocus","refetch","cancelRefetch","shouldFetchOnReconnect","addObserver","notify","removeObserver","invalidate","fetch","fetchOptions","abortController","queryFnContext","pageParam","addSignalProperty","object","defineProperty","enumerable","get","signal","fetchFn","context","behavior","onFetch","revertState","fetchMeta","isFetchingOptimistic","action","reducer","fetchFailureCount","dataUpdateCount","errorUpdateCount","errorUpdatedAt","onQueryUpdate","initialData","hasInitialData","initialDataUpdatedAt","hasData","QueryCache","queries","queriesMap","build","client","getLogger","defaultQueryOptions","getQueryDefaults","add","queryInMap","clear","getAll","findAll","event","Mutation","mutationId","mutationCache","execute","executeMutation","variables","restored","onMutate","onSettled","process","isPaused","onMutationUpdate","MutationCache","mutations","defaultMutationOptions","getMutationDefaults","resumePausedMutations","pausedMutations","infiniteQueryBehavior","refetchPage","fetchMore","isFetchingNextPage","direction","isFetchingPreviousPage","oldPages","pages","oldPageParams","pageParams","newPageParams","cancelled","aborted","buildNewPages","param","page","previous","fetchPage","queryFnResult","getNextPageParam","getPreviousPageParam","shouldFetchFirstPage","shouldFetchNextPage","finalPromise","hasNextPage","nextPageParam","hasPreviousPage","previousPageParam","QueryClient","queryCache","queryDefaults","mutationDefaults","mount","unsubscribeFocus","unsubscribeOnline","unmount","isFetching","isMutating","getQueryData","getQueriesData","queryKeyOrFilters","getQueryCache","map","setQueryData","parsedOptions","defaultedOptions","setQueriesData","getQueryState","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","promises","all","invalidateQueries","refetchType","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","getMutationCache","getDefaultOptions","setDefaultOptions","setQueryDefaults","firstMatchingDefaults","matchingDefaults","setMutationDefaults","_defaulted","refetchOnReconnect","useErrorBoundary","suspense","QueryObserver","trackedProps","Set","selectError","bindMethods","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","refetchOnWindowFocus","clearStaleTimeout","clearRefetchInterval","notifyOptions","prevOptions","prevQuery","updateQuery","mounted","shouldFetchOptionally","updateResult","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","currentResult","trackResult","trackedResult","configurable","getCurrentQuery","fetchOptimistic","time","staleTimeoutId","refetchInterval","nextInterval","refetchIntervalId","setInterval","refetchIntervalInBackground","clearInterval","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","isSuccess","select","selectFn","selectResult","placeholderData","isLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","typedKey","changed","has","shouldLoadOnMount","retryOnMount","refetchOnMount","field","QueriesObserver","observersMap","setQueries","onUpdate","prevObservers","newObserverMatches","findMatchingObservers","match","defaultedQueryOptions","newObservers","newObserversMap","fromEntries","newResult","hasIndexChange","matchingObservers","flatMap","matchedQueryHashes","unmatchedQueries","unmatchedObservers","prevObserver","getObserver","currentObserver","newOrReusedObservers","previouslyUsedObserver","sortMatchesByOrderOfQueries","concat","InfiniteQueryObserver","fetchNextPage","fetchPreviousPage","MutationObserver","mutate","currentMutation","mutateOptions","isIdle","dehydrateMutation","dehydrateQuery","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","dehydrate","dehydrateMutations","shouldDehydrateMutation","dehydrateQueries","shouldDehydrateQuery","hydrate","dehydratedState","dehydratedMutation","dehydratedQuery"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.development.js","sources":["../../src/subscribable.ts","../../src/utils.ts","../../src/focusManager.ts","../../src/onlineManager.ts","../../src/retryer.ts","../../src/logger.ts","../../src/notifyManager.ts","../../src/removable.ts","../../src/query.ts","../../src/queryCache.ts","../../src/mutation.ts","../../src/mutationCache.ts","../../src/infiniteQueryBehavior.ts","../../src/queryClient.ts","../../src/queryObserver.ts","../../src/queriesObserver.ts","../../src/infiniteQueryObserver.ts","../../src/mutationObserver.ts","../../src/hydration.ts"],"sourcesContent":["type Listener = () => void\n\nexport class Subscribable<TListener extends Function = Listener> {\n protected listeners: TListener[]\n\n constructor() {\n this.listeners = []\n this.subscribe = this.subscribe.bind(this)\n }\n\n subscribe(listener: TListener): () => void {\n this.listeners.push(listener as TListener)\n\n this.onSubscribe()\n\n return () => {\n this.listeners = this.listeners.filter((x) => x !== listener)\n this.onUnsubscribe()\n }\n }\n\n hasListeners(): boolean {\n return this.listeners.length > 0\n }\n\n protected onSubscribe(): void {\n // Do nothing\n }\n\n protected onUnsubscribe(): void {\n // Do nothing\n }\n}\n","import type { Mutation } from './mutation'\nimport type { Query } from './query'\nimport type {\n FetchStatus,\n MutationFunction,\n MutationKey,\n MutationOptions,\n QueryFunction,\n QueryKey,\n QueryOptions,\n} from './types'\n\n// TYPES\n\nexport interface QueryFilters {\n /**\n * Filter to active queries, inactive queries or all queries\n */\n type?: QueryTypeFilter\n /**\n * Match query key exactly\n */\n exact?: boolean\n /**\n * Include queries matching this predicate function\n */\n predicate?: (query: Query) => boolean\n /**\n * Include queries matching this query key\n */\n queryKey?: QueryKey\n /**\n * Include or exclude stale queries\n */\n stale?: boolean\n /**\n * Include queries matching their fetchStatus\n */\n fetchStatus?: FetchStatus\n}\n\nexport interface MutationFilters {\n /**\n * Match mutation key exactly\n */\n exact?: boolean\n /**\n * Include mutations matching this predicate function\n */\n predicate?: (mutation: Mutation<any, any, any>) => boolean\n /**\n * Include mutations matching this mutation key\n */\n mutationKey?: MutationKey\n /**\n * Include or exclude fetching mutations\n */\n fetching?: boolean\n}\n\nexport type DataUpdateFunction<TInput, TOutput> = (input: TInput) => TOutput\n\nexport type Updater<TInput, TOutput> =\n | TOutput\n | DataUpdateFunction<TInput, TOutput>\n\nexport type QueryTypeFilter = 'all' | 'active' | 'inactive'\n\n// UTILS\n\nexport const isServer = typeof window === 'undefined'\n\nexport function noop(): undefined {\n return undefined\n}\n\nexport function functionalUpdate<TInput, TOutput>(\n updater: Updater<TInput, TOutput>,\n input: TInput,\n): TOutput {\n return typeof updater === 'function'\n ? (updater as DataUpdateFunction<TInput, TOutput>)(input)\n : updater\n}\n\nexport function isValidTimeout(value: unknown): value is number {\n return typeof value === 'number' && value >= 0 && value !== Infinity\n}\n\nexport function difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nexport function replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\nexport function timeUntilStale(updatedAt: number, staleTime?: number): number {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0)\n}\n\nexport function parseQueryArgs<\n TOptions extends QueryOptions<any, any, any, TQueryKey>,\n TQueryKey extends QueryKey = QueryKey,\n>(\n arg1: TQueryKey | TOptions,\n arg2?: QueryFunction<any, TQueryKey> | TOptions,\n arg3?: TOptions,\n): TOptions {\n if (!isQueryKey(arg1)) {\n return arg1 as TOptions\n }\n\n if (typeof arg2 === 'function') {\n return { ...arg3, queryKey: arg1, queryFn: arg2 } as TOptions\n }\n\n return { ...arg2, queryKey: arg1 } as TOptions\n}\n\nexport function parseMutationArgs<\n TOptions extends MutationOptions<any, any, any, any>,\n>(\n arg1: MutationKey | MutationFunction<any, any> | TOptions,\n arg2?: MutationFunction<any, any> | TOptions,\n arg3?: TOptions,\n): TOptions {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return { ...arg3, mutationKey: arg1, mutationFn: arg2 } as TOptions\n }\n return { ...arg2, mutationKey: arg1 } as TOptions\n }\n\n if (typeof arg1 === 'function') {\n return { ...arg2, mutationFn: arg1 } as TOptions\n }\n\n return { ...arg1 } as TOptions\n}\n\nexport function parseFilterArgs<\n TFilters extends QueryFilters,\n TOptions = unknown,\n>(\n arg1?: QueryKey | TFilters,\n arg2?: TFilters | TOptions,\n arg3?: TOptions,\n): [TFilters, TOptions | undefined] {\n return (\n isQueryKey(arg1) ? [{ ...arg2, queryKey: arg1 }, arg3] : [arg1 || {}, arg2]\n ) as [TFilters, TOptions]\n}\n\nexport function parseMutationFilterArgs<\n TFilters extends MutationFilters,\n TOptions = unknown,\n>(\n arg1?: QueryKey | TFilters,\n arg2?: TFilters | TOptions,\n arg3?: TOptions,\n): [TFilters, TOptions | undefined] {\n return (\n isQueryKey(arg1)\n ? [{ ...arg2, mutationKey: arg1 }, arg3]\n : [arg1 || {}, arg2]\n ) as [TFilters, TOptions]\n}\n\nexport function matchQuery(\n filters: QueryFilters,\n query: Query<any, any, any, any>,\n): boolean {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale,\n } = filters\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive()\n if (type === 'active' && !isActive) {\n return false\n }\n if (type === 'inactive' && isActive) {\n return false\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false\n }\n\n if (\n typeof fetchStatus !== 'undefined' &&\n fetchStatus !== query.state.fetchStatus\n ) {\n return false\n }\n\n if (predicate && !predicate(query)) {\n return false\n }\n\n return true\n}\n\nexport function matchMutation(\n filters: MutationFilters,\n mutation: Mutation<any, any>,\n): boolean {\n const { exact, fetching, predicate, mutationKey } = filters\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false\n }\n if (exact) {\n if (\n hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)\n ) {\n return false\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false\n }\n }\n\n if (\n typeof fetching === 'boolean' &&\n (mutation.state.status === 'loading') !== fetching\n ) {\n return false\n }\n\n if (predicate && !predicate(mutation)) {\n return false\n }\n\n return true\n}\n\nexport function hashQueryKeyByOptions<TQueryKey extends QueryKey = QueryKey>(\n queryKey: TQueryKey,\n options?: QueryOptions<any, any, any, TQueryKey>,\n): string {\n const hashFn = options?.queryKeyHashFn || hashQueryKey\n return hashFn(queryKey)\n}\n\n/**\n * Default query keys hash function.\n * Hashes the value into a stable hash.\n */\nexport function hashQueryKey(queryKey: QueryKey): string {\n return JSON.stringify(queryKey, (_, val) =>\n isPlainObject(val)\n ? Object.keys(val)\n .sort()\n .reduce((result, key) => {\n result[key] = val[key]\n return result\n }, {} as any)\n : val,\n )\n}\n\n/**\n * Checks if key `b` partially matches with key `a`.\n */\nexport function partialMatchKey(a: QueryKey, b: QueryKey): boolean {\n return partialDeepEqual(a, b)\n}\n\n/**\n * Checks if `b` partially matches with `a`.\n */\nexport function partialDeepEqual(a: any, b: any): boolean {\n if (a === b) {\n return true\n }\n\n if (typeof a !== typeof b) {\n return false\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some((key) => !partialDeepEqual(a[key], b[key]))\n }\n\n return false\n}\n\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\nexport function replaceEqualDeep<T>(a: unknown, b: T): T\nexport function replaceEqualDeep(a: any, b: any): any {\n if (a === b) {\n return a\n }\n\n const array = isPlainArray(a) && isPlainArray(b)\n\n if (array || (isPlainObject(a) && isPlainObject(b))) {\n const aSize = array ? a.length : Object.keys(a).length\n const bItems = array ? b : Object.keys(b)\n const bSize = bItems.length\n const copy: any = array ? [] : {}\n\n let equalItems = 0\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i]\n copy[key] = replaceEqualDeep(a[key], b[key])\n if (copy[key] === a[key]) {\n equalItems++\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy\n }\n\n return b\n}\n\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\nexport function shallowEqualObjects<T>(a: T, b: T): boolean {\n if ((a && !b) || (b && !a)) {\n return false\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false\n }\n }\n\n return true\n}\n\nexport function isPlainArray(value: unknown) {\n return Array.isArray(value) && value.length === Object.keys(value).length\n}\n\n// Copied from: https://github.com/jonschlinkert/is-plain-object\nexport function isPlainObject(o: any): o is Object {\n if (!hasObjectPrototype(o)) {\n return false\n }\n\n // If has modified constructor\n const ctor = o.constructor\n if (typeof ctor === 'undefined') {\n return true\n }\n\n // If has modified prototype\n const prot = ctor.prototype\n if (!hasObjectPrototype(prot)) {\n return false\n }\n\n // If constructor does not have an Object-specific method\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false\n }\n\n // Most likely a plain Object\n return true\n}\n\nfunction hasObjectPrototype(o: any): boolean {\n return Object.prototype.toString.call(o) === '[object Object]'\n}\n\nexport function isQueryKey(value: unknown): value is QueryKey {\n return Array.isArray(value)\n}\n\nexport function isError(value: any): value is Error {\n return value instanceof Error\n}\n\nexport function sleep(timeout: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, timeout)\n })\n}\n\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\nexport function scheduleMicrotask(callback: () => void) {\n sleep(0).then(callback)\n}\n\nexport function getAbortController(): AbortController | undefined {\n if (typeof AbortController === 'function') {\n return new AbortController()\n }\n}\n\nexport function replaceData<\n TData,\n TOptions extends QueryOptions<any, any, any, any>,\n>(prevData: TData | undefined, data: TData, options: TOptions): TData {\n // Use prev data if an isDataEqual function is defined and returns `true`\n if (options.isDataEqual?.(prevData, data)) {\n return prevData as TData\n } else if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data)\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data)\n }\n return data\n}\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n private focused?: boolean\n private cleanup?: () => void\n\n private setup: SetupFn\n\n constructor() {\n super()\n this.setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', listener, false)\n window.addEventListener('focus', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n window.removeEventListener('focus', listener)\n }\n }\n }\n }\n\n protected onSubscribe(): void {\n if (!this.cleanup) {\n this.setEventListener(this.setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.cleanup?.()\n this.cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.setup = setup\n this.cleanup?.()\n this.cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n this.focused = focused\n\n if (focused) {\n this.onFocus()\n }\n }\n\n onFocus(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isFocused(): boolean {\n if (typeof this.focused === 'boolean') {\n return this.focused\n }\n\n // document global can be unavailable in react native\n if (typeof document === 'undefined') {\n return true\n }\n\n return [undefined, 'visible', 'prerender'].includes(\n document.visibilityState,\n )\n }\n}\n\nexport const focusManager = new FocusManager()\n","import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setOnline: (online?: boolean) => void,\n) => (() => void) | undefined\n\nexport class OnlineManager extends Subscribable {\n private online?: boolean\n private cleanup?: () => void\n\n private setup: SetupFn\n\n constructor() {\n super()\n this.setup = (onOnline) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline()\n // Listen to online\n window.addEventListener('online', listener, false)\n window.addEventListener('offline', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener)\n window.removeEventListener('offline', listener)\n }\n }\n }\n }\n\n protected onSubscribe(): void {\n if (!this.cleanup) {\n this.setEventListener(this.setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.cleanup?.()\n this.cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.setup = setup\n this.cleanup?.()\n this.cleanup = setup((online?: boolean) => {\n if (typeof online === 'boolean') {\n this.setOnline(online)\n } else {\n this.onOnline()\n }\n })\n }\n\n setOnline(online?: boolean): void {\n this.online = online\n\n if (online) {\n this.onOnline()\n }\n }\n\n onOnline(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isOnline(): boolean {\n if (typeof this.online === 'boolean') {\n return this.online\n }\n\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.onLine === 'undefined'\n ) {\n return true\n }\n\n return navigator.onLine\n }\n}\n\nexport const onlineManager = new OnlineManager()\n","import { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { sleep } from './utils'\nimport { CancelOptions, NetworkMode } from './types'\n\n// TYPES\n\ninterface RetryerConfig<TData = unknown, TError = unknown> {\n fn: () => TData | Promise<TData>\n abort?: () => void\n onError?: (error: TError) => void\n onSuccess?: (data: TData) => void\n onFail?: (failureCount: number, error: TError) => void\n onPause?: () => void\n onContinue?: () => void\n retry?: RetryValue<TError>\n retryDelay?: RetryDelayValue<TError>\n networkMode: NetworkMode | undefined\n}\n\nexport interface Retryer<TData = unknown> {\n promise: Promise<TData>\n cancel: (cancelOptions?: CancelOptions) => void\n continue: () => void\n cancelRetry: () => void\n continueRetry: () => void\n}\n\nexport type RetryValue<TError> = boolean | number | ShouldRetryFunction<TError>\n\ntype ShouldRetryFunction<TError> = (\n failureCount: number,\n error: TError,\n) => boolean\n\nexport type RetryDelayValue<TError> = number | RetryDelayFunction<TError>\n\ntype RetryDelayFunction<TError = unknown> = (\n failureCount: number,\n error: TError,\n) => number\n\nfunction defaultRetryDelay(failureCount: number) {\n return Math.min(1000 * 2 ** failureCount, 30000)\n}\n\nexport function canFetch(networkMode: NetworkMode | undefined): boolean {\n return (networkMode ?? 'online') === 'online'\n ? onlineManager.isOnline()\n : true\n}\n\nexport class CancelledError {\n revert?: boolean\n silent?: boolean\n constructor(options?: CancelOptions) {\n this.revert = options?.revert\n this.silent = options?.silent\n }\n}\n\nexport function isCancelledError(value: any): value is CancelledError {\n return value instanceof CancelledError\n}\n\nexport function createRetryer<TData = unknown, TError = unknown>(\n config: RetryerConfig<TData, TError>,\n): Retryer<TData> {\n let isRetryCancelled = false\n let failureCount = 0\n let isResolved = false\n let continueFn: ((value?: unknown) => void) | undefined\n let promiseResolve: (data: TData) => void\n let promiseReject: (error: TError) => void\n\n const promise = new Promise<TData>((outerResolve, outerReject) => {\n promiseResolve = outerResolve\n promiseReject = outerReject\n })\n\n const cancel = (cancelOptions?: CancelOptions): void => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions))\n\n config.abort?.()\n }\n }\n const cancelRetry = () => {\n isRetryCancelled = true\n }\n\n const continueRetry = () => {\n isRetryCancelled = false\n }\n\n const shouldPause = () =>\n !focusManager.isFocused() ||\n (config.networkMode !== 'always' && !onlineManager.isOnline())\n\n const resolve = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onSuccess?.(value)\n continueFn?.()\n promiseResolve(value)\n }\n }\n\n const reject = (value: any) => {\n if (!isResolved) {\n isResolved = true\n config.onError?.(value)\n continueFn?.()\n promiseReject(value)\n }\n }\n\n const pause = () => {\n return new Promise((continueResolve) => {\n continueFn = (value) => {\n if (isResolved || !shouldPause()) {\n return continueResolve(value)\n }\n }\n config.onPause?.()\n }).then(() => {\n continueFn = undefined\n if (!isResolved) {\n config.onContinue?.()\n }\n })\n }\n\n // Create loop function\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return\n }\n\n let promiseOrValue: any\n\n // Execute query\n try {\n promiseOrValue = config.fn()\n } catch (error) {\n promiseOrValue = Promise.reject(error)\n }\n\n Promise.resolve(promiseOrValue)\n .then(resolve)\n .catch((error) => {\n // Stop if the fetch is already resolved\n if (isResolved) {\n return\n }\n\n // Do we need to retry the request?\n const retry = config.retry ?? 3\n const retryDelay = config.retryDelay ?? defaultRetryDelay\n const delay =\n typeof retryDelay === 'function'\n ? retryDelay(failureCount, error)\n : retryDelay\n const shouldRetry =\n retry === true ||\n (typeof retry === 'number' && failureCount < retry) ||\n (typeof retry === 'function' && retry(failureCount, error))\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error)\n return\n }\n\n failureCount++\n\n // Notify on fail\n config.onFail?.(failureCount, error)\n\n // Delay\n sleep(delay)\n // Pause if the document is not visible or when the device is offline\n .then(() => {\n if (shouldPause()) {\n return pause()\n }\n })\n .then(() => {\n if (isRetryCancelled) {\n reject(error)\n } else {\n run()\n }\n })\n })\n }\n\n // Start loop\n if (canFetch(config.networkMode)) {\n run()\n } else {\n pause().then(run)\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n continueFn?.()\n },\n cancelRetry,\n continueRetry,\n }\n}\n","export interface Logger {\n log: LogFunction\n warn: LogFunction\n error: LogFunction\n}\n\ntype LogFunction = (...args: any[]) => void\n\nexport const defaultLogger: Logger = console\n","import { scheduleMicrotask } from './utils'\n\n// TYPES\n\ntype NotifyCallback = () => void\n\ntype NotifyFunction = (callback: () => void) => void\n\ntype BatchNotifyFunction = (callback: () => void) => void\n\nexport function createNotifyManager() {\n let queue: NotifyCallback[] = []\n let transactions = 0\n let notifyFn: NotifyFunction = (callback) => {\n callback()\n }\n let batchNotifyFn: BatchNotifyFunction = (callback: () => void) => {\n callback()\n }\n\n const batch = <T>(callback: () => T): T => {\n let result\n transactions++\n try {\n result = callback()\n } finally {\n transactions--\n if (!transactions) {\n flush()\n }\n }\n return result\n }\n\n const schedule = (callback: NotifyCallback): void => {\n if (transactions) {\n queue.push(callback)\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback)\n })\n }\n }\n\n /**\n * All calls to the wrapped function will be batched.\n */\n const batchCalls = <T extends Function>(callback: T): T => {\n return ((...args: any[]) => {\n schedule(() => {\n callback(...args)\n })\n }) as any\n }\n\n const flush = (): void => {\n const originalQueue = queue\n queue = []\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach((callback) => {\n notifyFn(callback)\n })\n })\n })\n }\n }\n\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n const setNotifyFunction = (fn: NotifyFunction) => {\n notifyFn = fn\n }\n\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n const setBatchNotifyFunction = (fn: BatchNotifyFunction) => {\n batchNotifyFn = fn\n }\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction,\n } as const\n}\n\n// SINGLETON\nexport const notifyManager = createNotifyManager()\n","import { isServer, isValidTimeout } from './utils'\n\nexport abstract class Removable {\n cacheTime!: number\n private gcTimeout?: ReturnType<typeof setTimeout>\n\n destroy(): void {\n this.clearGcTimeout()\n }\n\n protected scheduleGc(): void {\n this.clearGcTimeout()\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove()\n }, this.cacheTime)\n }\n }\n\n protected updateCacheTime(newCacheTime: number | undefined): void {\n // Default to 5 minutes (Infinity for server-side) if no cache time is set\n this.cacheTime = Math.max(\n this.cacheTime || 0,\n newCacheTime ?? (isServer ? Infinity : 5 * 60 * 1000),\n )\n }\n\n protected clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout)\n this.gcTimeout = undefined\n }\n }\n\n protected abstract optionalRemove(): void\n}\n","import { getAbortController, noop, replaceData, timeUntilStale } from './utils'\nimport type {\n InitialDataFunction,\n QueryKey,\n QueryOptions,\n QueryStatus,\n QueryFunctionContext,\n QueryMeta,\n CancelOptions,\n SetDataOptions,\n FetchStatus,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport { defaultLogger, Logger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Retryer, isCancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n logger?: Logger\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryState<TData = unknown, TError = unknown> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchMeta: any\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal?: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: any\n}\n\ninterface FailedAction {\n type: 'failed'\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: any\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: QueryState<TData, TError>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n initialState: QueryState<TData, TError>\n revertState?: QueryState<TData, TError>\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n isFetchingOptimistic?: boolean\n\n private cache: QueryCache\n private logger: Logger\n private promise?: Promise<TData>\n private retryer?: Retryer<TData>\n private observers: QueryObserver<any, any, any, any, any>[]\n private defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n private abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.abortSignalConsumed = false\n this.defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.cache = config.cache\n this.logger = config.logger || defaultLogger\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.initialState = config.state || getDefaultState(this.options)\n this.state = this.initialState\n this.meta = config.meta\n }\n\n private setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\n\n this.meta = options?.meta\n\n this.updateCacheTime(this.options.cacheTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: QueryState<TData, TError>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.promise\n this.retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n this.observers.some((observer) => observer.getCurrentResult().isStale)\n )\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({ revert: true })\n } else {\n this.retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions,\n ): Promise<TData> {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({ silent: true })\n } else if (this.promise) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.retryer?.continueRetry()\n // Return current promise if we are already fetching\n return this.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (!Array.isArray(this.options.queryKey)) {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = getAbortController()\n\n // Create query function context\n const queryFnContext: QueryFunctionContext<TQueryKey> = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta,\n }\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true\n return abortController.signal\n }\n return undefined\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject('Missing queryFn')\n }\n this.abortSignalConsumed = false\n return this.options.queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const context: FetchContext<TQueryFnData, TError, TData, TQueryKey> = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n meta: this.meta,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(context)\n\n // Store state in case the current fetch needs to be reverted\n this.revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.cache.config.onError?.(error, this as Query<any, any, any, any>)\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.retryer = createRetryer({\n fn: context.fetchFn as () => TData,\n abort: abortController?.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n onError(new Error('Query data cannot be undefined') as any)\n return\n }\n\n this.setData(data as TData)\n\n // Notify cache callback\n this.cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: () => {\n this.dispatch({ type: 'failed' })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n })\n\n this.promise = this.retryer.promise\n\n return this.promise\n }\n\n private dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: state.fetchFailureCount + 1,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n fetchFailureCount: 0,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading',\n }),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action)\n })\n\n this.cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasInitialData = typeof options.initialData !== 'undefined'\n\n const initialDataUpdatedAt = hasInitialData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n const hasData = typeof data !== 'undefined'\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle',\n }\n}\n","import {\n QueryFilters,\n hashQueryKeyByOptions,\n matchQuery,\n parseFilterArgs,\n} from './utils'\nimport { Action, Query, QueryState } from './query'\nimport type { QueryKey, QueryOptions } from './types'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n}\n\ninterface QueryHashMap {\n [hash: string]: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryAdded {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated {\n type: 'observerOptionsUpdated'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ntype QueryCacheNotifyEvent =\n | NotifyEventQueryAdded\n | NotifyEventQueryRemoved\n | NotifyEventQueryUpdated\n | NotifyEventQueryObserverAdded\n | NotifyEventQueryObserverRemoved\n | NotifyEventQueryObserverResultsUpdated\n | NotifyEventQueryObserverOptionsUpdated\n\ntype QueryCacheListener = (event: QueryCacheNotifyEvent) => void\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n config: QueryCacheConfig\n\n private queries: Query<any, any, any, any>[]\n private queriesMap: QueryHashMap\n\n constructor(config?: QueryCacheConfig) {\n super()\n this.config = config || {}\n this.queries = []\n this.queriesMap = {}\n }\n\n build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(\n client: QueryClient,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n state?: QueryState<TData, TError>,\n ): Query<TQueryFnData, TError, TData, TQueryKey> {\n const queryKey = options.queryKey!\n const queryHash =\n options.queryHash ?? hashQueryKeyByOptions(queryKey, options)\n let query = this.get<TQueryFnData, TError, TData, TQueryKey>(queryHash)\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta,\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query\n this.queries.push(query)\n this.notify({\n type: 'added',\n query,\n })\n }\n }\n\n remove(query: Query<any, any, any, any>): void {\n const queryInMap = this.queriesMap[query.queryHash]\n\n if (queryInMap) {\n query.destroy()\n\n this.queries = this.queries.filter((x) => x !== query)\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash]\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueyKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueyKey> | undefined {\n return this.queriesMap[queryHash]\n }\n\n getAll(): Query[] {\n return this.queries\n }\n\n find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(\n arg1: QueryKey,\n arg2?: QueryFilters,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const [filters] = parseFilterArgs(arg1, arg2)\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.queries.find((query) => matchQuery(filters, query))\n }\n\n findAll(queryKey?: QueryKey, filters?: QueryFilters): Query[]\n findAll(filters?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[]\n findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[] {\n const [filters] = parseFilterArgs(arg1, arg2)\n return Object.keys(filters).length > 0\n ? this.queries.filter((query) => matchQuery(filters, query))\n : this.queries\n }\n\n notify(event: QueryCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n onFocus(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.queries.forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n","import type { MutationOptions, MutationStatus, MutationMeta } from './types'\nimport type { MutationCache } from './mutationCache'\nimport type { MutationObserver } from './mutationObserver'\nimport { defaultLogger, Logger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport { Removable } from './removable'\nimport { canFetch, Retryer, createRetryer } from './retryer'\n\n// TYPES\n\ninterface MutationConfig<TData, TError, TVariables, TContext> {\n mutationId: number\n mutationCache: MutationCache\n options: MutationOptions<TData, TError, TVariables, TContext>\n logger?: Logger\n defaultOptions?: MutationOptions<TData, TError, TVariables, TContext>\n state?: MutationState<TData, TError, TVariables, TContext>\n meta?: MutationMeta\n}\n\nexport interface MutationState<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> {\n context: TContext | undefined\n data: TData | undefined\n error: TError | null\n failureCount: number\n isPaused: boolean\n status: MutationStatus\n variables: TVariables | undefined\n}\n\ninterface FailedAction {\n type: 'failed'\n}\n\ninterface LoadingAction<TVariables, TContext> {\n type: 'loading'\n variables?: TVariables\n context?: TContext\n}\n\ninterface SuccessAction<TData> {\n type: 'success'\n data: TData\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError, TVariables, TContext> {\n type: 'setState'\n state: MutationState<TData, TError, TVariables, TContext>\n}\n\nexport type Action<TData, TError, TVariables, TContext> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction\n | LoadingAction<TVariables, TContext>\n | PauseAction\n | SetStateAction<TData, TError, TVariables, TContext>\n | SuccessAction<TData>\n\n// CLASS\n\nexport class Mutation<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Removable {\n state: MutationState<TData, TError, TVariables, TContext>\n options: MutationOptions<TData, TError, TVariables, TContext>\n mutationId: number\n meta: MutationMeta | undefined\n\n private observers: MutationObserver<TData, TError, TVariables, TContext>[]\n private mutationCache: MutationCache\n private logger: Logger\n private retryer?: Retryer<TData>\n\n constructor(config: MutationConfig<TData, TError, TVariables, TContext>) {\n super()\n\n this.options = {\n ...config.defaultOptions,\n ...config.options,\n }\n this.mutationId = config.mutationId\n this.mutationCache = config.mutationCache\n this.logger = config.logger || defaultLogger\n this.observers = []\n this.state = config.state || getDefaultState()\n this.meta = config.meta\n\n this.updateCacheTime(this.options.cacheTime)\n this.scheduleGc()\n }\n\n setState(state: MutationState<TData, TError, TVariables, TContext>): void {\n this.dispatch({ type: 'setState', state })\n }\n\n addObserver(observer: MutationObserver<any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the mutation from being garbage collected\n this.clearGcTimeout()\n\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer,\n })\n }\n }\n\n removeObserver(observer: MutationObserver<any, any, any, any>): void {\n this.observers = this.observers.filter((x) => x !== observer)\n\n this.scheduleGc()\n\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer,\n })\n }\n\n protected optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc()\n } else {\n this.mutationCache.remove(this)\n }\n }\n }\n\n continue(): Promise<TData> {\n if (this.retryer) {\n this.retryer.continue()\n return this.retryer.promise\n }\n return this.execute()\n }\n\n async execute(): Promise<TData> {\n const executeMutation = () => {\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found')\n }\n return this.options.mutationFn(this.state.variables!)\n },\n onFail: () => {\n this.dispatch({ type: 'failed' })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: this.options.retry ?? 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode,\n })\n\n return this.retryer.promise\n }\n\n const restored = this.state.status === 'loading'\n try {\n if (!restored) {\n this.dispatch({ type: 'loading', variables: this.options.variables! })\n // Notify cache callback\n this.mutationCache.config.onMutate?.(\n this.state.variables,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n const context = await this.options.onMutate?.(this.state.variables!)\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables,\n })\n }\n }\n const data = await executeMutation()\n\n // Notify cache callback\n this.mutationCache.config.onSuccess?.(\n data,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n await this.options.onSuccess?.(\n data,\n this.state.variables!,\n this.state.context!,\n )\n\n await this.options.onSettled?.(\n data,\n null,\n this.state.variables!,\n this.state.context,\n )\n\n this.dispatch({ type: 'success', data })\n return data\n } catch (error) {\n try {\n // Notify cache callback\n this.mutationCache.config.onError?.(\n error,\n this.state.variables,\n this.state.context,\n this as Mutation<unknown, unknown, unknown, unknown>,\n )\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n\n await this.options.onError?.(\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n\n await this.options.onSettled?.(\n undefined,\n error as TError,\n this.state.variables!,\n this.state.context,\n )\n throw error\n } finally {\n this.dispatch({ type: 'error', error: error as TError })\n }\n }\n }\n\n private dispatch(action: Action<TData, TError, TVariables, TContext>): void {\n const reducer = (\n state: MutationState<TData, TError, TVariables, TContext>,\n ): MutationState<TData, TError, TVariables, TContext> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n failureCount: state.failureCount + 1,\n }\n case 'pause':\n return {\n ...state,\n isPaused: true,\n }\n case 'continue':\n return {\n ...state,\n isPaused: false,\n }\n case 'loading':\n return {\n ...state,\n context: action.context,\n data: undefined,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables,\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false,\n }\n case 'error':\n return {\n ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error',\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onMutationUpdate(action)\n })\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action,\n })\n })\n }\n}\n\nexport function getDefaultState<\n TData,\n TError,\n TVariables,\n TContext,\n>(): MutationState<TData, TError, TVariables, TContext> {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined,\n }\n}\n","import { MutationObserver } from './mutationObserver'\nimport type { MutationOptions } from './types'\nimport type { QueryClient } from './queryClient'\nimport { notifyManager } from './notifyManager'\nimport { Action, Mutation, MutationState } from './mutation'\nimport { matchMutation, MutationFilters, noop } from './utils'\nimport { Subscribable } from './subscribable'\n\n// TYPES\n\ninterface MutationCacheConfig {\n onError?: (\n error: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (\n data: unknown,\n variables: unknown,\n context: unknown,\n mutation: Mutation<unknown, unknown, unknown>,\n ) => void\n onMutate?: (\n variables: unknown,\n mutation: Mutation<unknown, unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventMutationAdded {\n type: 'added'\n mutation: Mutation<any, any, any, any>\n}\ninterface NotifyEventMutationRemoved {\n type: 'removed'\n mutation: Mutation<any, any, any, any>\n}\n\ninterface NotifyEventMutationObserverAdded {\n type: 'observerAdded'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverRemoved {\n type: 'observerRemoved'\n mutation: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any>\n}\n\ninterface NotifyEventMutationObserverOptionsUpdated {\n type: 'observerOptionsUpdated'\n mutation?: Mutation<any, any, any, any>\n observer: MutationObserver<any, any, any, any>\n}\n\ninterface NotifyEventMutationUpdated {\n type: 'updated'\n mutation: Mutation<any, any, any, any>\n action: Action<any, any, any, any>\n}\n\ntype MutationCacheNotifyEvent =\n | NotifyEventMutationAdded\n | NotifyEventMutationRemoved\n | NotifyEventMutationObserverAdded\n | NotifyEventMutationObserverRemoved\n | NotifyEventMutationObserverOptionsUpdated\n | NotifyEventMutationUpdated\n\ntype MutationCacheListener = (event: MutationCacheNotifyEvent) => void\n\n// CLASS\n\nexport class MutationCache extends Subscribable<MutationCacheListener> {\n config: MutationCacheConfig\n\n private mutations: Mutation<any, any, any, any>[]\n private mutationId: number\n\n constructor(config?: MutationCacheConfig) {\n super()\n this.config = config || {}\n this.mutations = []\n this.mutationId = 0\n }\n\n build<TData, TError, TVariables, TContext>(\n client: QueryClient,\n options: MutationOptions<TData, TError, TVariables, TContext>,\n state?: MutationState<TData, TError, TVariables, TContext>,\n ): Mutation<TData, TError, TVariables, TContext> {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey\n ? client.getMutationDefaults(options.mutationKey)\n : undefined,\n meta: options.meta,\n })\n\n this.add(mutation)\n\n return mutation\n }\n\n add(mutation: Mutation<any, any, any, any>): void {\n this.mutations.push(mutation)\n this.notify({ type: 'added', mutation })\n }\n\n remove(mutation: Mutation<any, any, any, any>): void {\n this.mutations = this.mutations.filter((x) => x !== mutation)\n this.notify({ type: 'removed', mutation })\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.mutations.forEach((mutation) => {\n this.remove(mutation)\n })\n })\n }\n\n getAll(): Mutation[] {\n return this.mutations\n }\n\n find<TData = unknown, TError = unknown, TVariables = any, TContext = unknown>(\n filters: MutationFilters,\n ): Mutation<TData, TError, TVariables, TContext> | undefined {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.mutations.find((mutation) => matchMutation(filters, mutation))\n }\n\n findAll(filters: MutationFilters): Mutation[] {\n return this.mutations.filter((mutation) => matchMutation(filters, mutation))\n }\n\n notify(event: MutationCacheNotifyEvent) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(event)\n })\n })\n }\n\n resumePausedMutations(): Promise<void> {\n const pausedMutations = this.mutations.filter((x) => x.state.isPaused)\n return notifyManager.batch(() =>\n pausedMutations.reduce(\n (promise, mutation) =>\n promise.then(() => mutation.continue().catch(noop)),\n Promise.resolve(),\n ),\n )\n }\n}\n","import type { QueryBehavior } from './query'\n\nimport type {\n InfiniteData,\n QueryFunctionContext,\n QueryOptions,\n RefetchQueryFilters,\n} from './types'\n\nexport function infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n>(): QueryBehavior<TQueryFnData, TError, InfiniteData<TData>> {\n return {\n onFetch: (context) => {\n context.fetchFn = () => {\n const refetchPage: RefetchQueryFilters['refetchPage'] | undefined =\n context.fetchOptions?.meta?.refetchPage\n const fetchMore = context.fetchOptions?.meta?.fetchMore\n const pageParam = fetchMore?.pageParam\n const isFetchingNextPage = fetchMore?.direction === 'forward'\n const isFetchingPreviousPage = fetchMore?.direction === 'backward'\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n let newPageParams = oldPageParams\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal?.aborted) {\n cancelled = true\n } else {\n context.signal?.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n // Get query function\n const queryFn =\n context.options.queryFn || (() => Promise.reject('Missing queryFn'))\n\n const buildNewPages = (\n pages: unknown[],\n param: unknown,\n page: unknown,\n previous?: boolean,\n ) => {\n newPageParams = previous\n ? [param, ...newPageParams]\n : [...newPageParams, param]\n return previous ? [page, ...pages] : [...pages, page]\n }\n\n // Create function to fetch a page\n const fetchPage = (\n pages: unknown[],\n manual?: boolean,\n param?: unknown,\n previous?: boolean,\n ): Promise<unknown[]> => {\n if (cancelled) {\n return Promise.reject('Cancelled')\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages)\n }\n\n const queryFnContext: QueryFunctionContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const queryFnResult = queryFn(queryFnContext)\n\n const promise = Promise.resolve(queryFnResult).then((page) =>\n buildNewPages(pages, param, page, previous),\n )\n\n return promise\n }\n\n let promise: Promise<unknown[]>\n\n // Fetch first page?\n if (!oldPages.length) {\n promise = fetchPage([])\n }\n\n // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getNextPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param)\n }\n\n // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getPreviousPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param, true)\n }\n\n // Refetch pages\n else {\n newPageParams = []\n\n const manual = typeof context.options.getNextPageParam === 'undefined'\n\n const shouldFetchFirstPage =\n refetchPage && oldPages[0]\n ? refetchPage(oldPages[0], 0, oldPages)\n : true\n\n // Fetch first page\n promise = shouldFetchFirstPage\n ? fetchPage([], manual, oldPageParams[0])\n : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0]))\n\n // Fetch remaining pages\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then((pages) => {\n const shouldFetchNextPage =\n refetchPage && oldPages[i]\n ? refetchPage(oldPages[i], i, oldPages)\n : true\n\n if (shouldFetchNextPage) {\n const param = manual\n ? oldPageParams[i]\n : getNextPageParam(context.options, pages)\n return fetchPage(pages, manual, param)\n }\n return Promise.resolve(\n buildNewPages(pages, oldPageParams[i], oldPages[i]),\n )\n })\n }\n }\n\n const finalPromise = promise.then((pages) => ({\n pages,\n pageParams: newPageParams,\n }))\n\n return finalPromise\n }\n },\n }\n}\n\nexport function getNextPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getNextPageParam?.(pages[pages.length - 1], pages)\n}\n\nexport function getPreviousPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getPreviousPageParam?.(pages[0], pages)\n}\n\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasNextPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages)\n return (\n typeof nextPageParam !== 'undefined' &&\n nextPageParam !== null &&\n nextPageParam !== false\n )\n }\n}\n\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasPreviousPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages)\n return (\n typeof previousPageParam !== 'undefined' &&\n previousPageParam !== null &&\n previousPageParam !== false\n )\n }\n}\n","import {\n QueryFilters,\n Updater,\n hashQueryKey,\n noop,\n parseFilterArgs,\n parseQueryArgs,\n partialMatchKey,\n hashQueryKeyByOptions,\n MutationFilters,\n functionalUpdate,\n} from './utils'\nimport type {\n QueryClientConfig,\n DefaultOptions,\n FetchInfiniteQueryOptions,\n FetchQueryOptions,\n InfiniteData,\n InvalidateOptions,\n InvalidateQueryFilters,\n MutationKey,\n MutationObserverOptions,\n MutationOptions,\n QueryFunction,\n QueryKey,\n QueryObserverOptions,\n QueryOptions,\n RefetchOptions,\n RefetchQueryFilters,\n ResetOptions,\n ResetQueryFilters,\n SetDataOptions,\n} from './types'\nimport type { QueryState } from './query'\nimport { QueryCache } from './queryCache'\nimport { MutationCache } from './mutationCache'\nimport { focusManager } from './focusManager'\nimport { onlineManager } from './onlineManager'\nimport { notifyManager } from './notifyManager'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport { CancelOptions, DefaultedQueryObserverOptions } from './types'\nimport { defaultLogger, Logger } from './logger'\n\n// TYPES\n\ninterface QueryDefaults {\n queryKey: QueryKey\n defaultOptions: QueryOptions<any, any, any>\n}\n\ninterface MutationDefaults {\n mutationKey: MutationKey\n defaultOptions: MutationOptions<any, any, any, any>\n}\n\n// CLASS\n\nexport class QueryClient {\n private queryCache: QueryCache\n private mutationCache: MutationCache\n private logger: Logger\n private defaultOptions: DefaultOptions\n private queryDefaults: QueryDefaults[]\n private mutationDefaults: MutationDefaults[]\n private unsubscribeFocus?: () => void\n private unsubscribeOnline?: () => void\n\n constructor(config: QueryClientConfig = {}) {\n this.queryCache = config.queryCache || new QueryCache()\n this.mutationCache = config.mutationCache || new MutationCache()\n this.logger = config.logger || defaultLogger\n this.defaultOptions = config.defaultOptions || {}\n this.queryDefaults = []\n this.mutationDefaults = []\n }\n\n mount(): void {\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations()\n this.queryCache.onFocus()\n }\n })\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations()\n this.queryCache.onOnline()\n }\n })\n }\n\n unmount(): void {\n this.unsubscribeFocus?.()\n this.unsubscribeOnline?.()\n }\n\n isFetching(filters?: QueryFilters): number\n isFetching(queryKey?: QueryKey, filters?: QueryFilters): number\n isFetching(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): number {\n const [filters] = parseFilterArgs(arg1, arg2)\n filters.fetchStatus = 'fetching'\n return this.queryCache.findAll(filters).length\n }\n\n isMutating(filters?: MutationFilters): number {\n return this.mutationCache.findAll({ ...filters, fetching: true }).length\n }\n\n getQueryData<TData = unknown>(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): TData | undefined {\n return this.queryCache.find<TData>(queryKey, filters)?.state.data\n }\n\n getQueriesData<TData = unknown>(queryKey: QueryKey): [QueryKey, TData][]\n getQueriesData<TData = unknown>(filters: QueryFilters): [QueryKey, TData][]\n getQueriesData<TData = unknown>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n ): [QueryKey, TData][] {\n return this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey, state }) => {\n const data = state.data as TData\n return [queryKey, data]\n })\n }\n\n setQueryData<TData>(\n queryKey: QueryKey,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): TData | undefined {\n const query = this.queryCache.find<TData>(queryKey)\n const prevData = query?.state.data\n const data = functionalUpdate(updater, prevData)\n\n if (typeof data === 'undefined') {\n return undefined\n }\n\n const parsedOptions = parseQueryArgs(queryKey)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n return this.queryCache\n .build(this, defaultedOptions)\n .setData(data, { ...options, manual: true })\n }\n\n setQueriesData<TData>(\n queryKey: QueryKey,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][]\n\n setQueriesData<TData>(\n filters: QueryFilters,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][]\n\n setQueriesData<TData>(\n queryKeyOrFilters: QueryKey | QueryFilters,\n updater: Updater<TData | undefined, TData | undefined>,\n options?: SetDataOptions,\n ): [QueryKey, TData | undefined][] {\n return notifyManager.batch(() =>\n this.getQueryCache()\n .findAll(queryKeyOrFilters)\n .map(({ queryKey }) => [\n queryKey,\n this.setQueryData<TData>(queryKey, updater, options),\n ]),\n )\n }\n\n getQueryState<TData = unknown, TError = undefined>(\n queryKey: QueryKey,\n filters?: QueryFilters,\n ): QueryState<TData, TError> | undefined {\n return this.queryCache.find<TData, TError>(queryKey, filters)?.state\n }\n\n removeQueries(filters?: QueryFilters): void\n removeQueries(queryKey?: QueryKey, filters?: QueryFilters): void\n removeQueries(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): void {\n const [filters] = parseFilterArgs(arg1, arg2)\n const queryCache = this.queryCache\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n queryCache.remove(query)\n })\n })\n }\n\n resetQueries<TPageData = unknown>(\n filters?: ResetQueryFilters<TPageData>,\n options?: ResetOptions,\n ): Promise<void>\n resetQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: ResetQueryFilters<TPageData>,\n options?: ResetOptions,\n ): Promise<void>\n resetQueries(\n arg1?: QueryKey | ResetQueryFilters,\n arg2?: ResetQueryFilters | ResetOptions,\n arg3?: ResetOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n const queryCache = this.queryCache\n\n const refetchFilters: RefetchQueryFilters = {\n type: 'active',\n ...filters,\n }\n\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach((query) => {\n query.reset()\n })\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n cancelQueries(filters?: QueryFilters, options?: CancelOptions): Promise<void>\n cancelQueries(\n queryKey?: QueryKey,\n filters?: QueryFilters,\n options?: CancelOptions,\n ): Promise<void>\n cancelQueries(\n arg1?: QueryKey | QueryFilters,\n arg2?: QueryFilters | CancelOptions,\n arg3?: CancelOptions,\n ): Promise<void> {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3)\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true\n }\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .map((query) => query.cancel(cancelOptions)),\n )\n\n return Promise.all(promises).then(noop).catch(noop)\n }\n\n invalidateQueries<TPageData = unknown>(\n filters?: InvalidateQueryFilters<TPageData>,\n options?: InvalidateOptions,\n ): Promise<void>\n invalidateQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: InvalidateQueryFilters<TPageData>,\n options?: InvalidateOptions,\n ): Promise<void>\n invalidateQueries(\n arg1?: QueryKey | InvalidateQueryFilters,\n arg2?: InvalidateQueryFilters | InvalidateOptions,\n arg3?: InvalidateOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\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 const refetchFilters: RefetchQueryFilters = {\n ...filters,\n type: filters.refetchType ?? filters.type ?? 'active',\n }\n return this.refetchQueries(refetchFilters, options)\n })\n }\n\n refetchQueries<TPageData = unknown>(\n filters?: RefetchQueryFilters<TPageData>,\n options?: RefetchOptions,\n ): Promise<void>\n refetchQueries<TPageData = unknown>(\n queryKey?: QueryKey,\n filters?: RefetchQueryFilters<TPageData>,\n options?: RefetchOptions,\n ): Promise<void>\n refetchQueries(\n arg1?: QueryKey | RefetchQueryFilters,\n arg2?: RefetchQueryFilters | RefetchOptions,\n arg3?: RefetchOptions,\n ): Promise<void> {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3)\n\n const promises = notifyManager.batch(() =>\n this.queryCache\n .findAll(filters)\n .filter((query) => !query.isDisabled())\n .map((query) =>\n query.fetch(undefined, {\n ...options,\n cancelRefetch: options?.cancelRefetch ?? true,\n meta: { refetchPage: filters.refetchPage },\n }),\n ),\n )\n\n let promise = Promise.all(promises).then(noop)\n\n if (!options?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData>\n fetchQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<TData> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n const defaultedOptions = this.defaultQueryOptions(parsedOptions)\n\n // https://github.com/tannerlinsley/react-query/issues/652\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false\n }\n\n const query = this.queryCache.build(this, defaultedOptions)\n\n return query.isStaleByTime(defaultedOptions.staleTime)\n ? query.fetch(defaultedOptions)\n : Promise.resolve(query.state.data as TData)\n }\n\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void> {\n return this.fetchQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>>\n fetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<InfiniteData<TData>> {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3)\n parsedOptions.behavior = infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData\n >()\n return this.fetchQuery(parsedOptions)\n }\n\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryKey: TQueryKey,\n queryFn: QueryFunction<TQueryFnData, TQueryKey>,\n options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void>\n prefetchInfiniteQuery<\n TQueryFnData,\n TError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n arg1:\n | TQueryKey\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg2?:\n | QueryFunction<TQueryFnData, TQueryKey>\n | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): Promise<void> {\n return this.fetchInfiniteQuery(arg1 as any, arg2 as any, arg3)\n .then(noop)\n .catch(noop)\n }\n\n resumePausedMutations(): Promise<void> {\n return this.mutationCache.resumePausedMutations()\n }\n\n getQueryCache(): QueryCache {\n return this.queryCache\n }\n\n getMutationCache(): MutationCache {\n return this.mutationCache\n }\n\n getLogger(): Logger {\n return this.logger\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 queryKey: QueryKey,\n options: QueryObserverOptions<unknown, any, any, any>,\n ): void {\n const result = this.queryDefaults.find(\n (x) => hashQueryKey(queryKey) === hashQueryKey(x.queryKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.queryDefaults.push({ queryKey, defaultOptions: options })\n }\n }\n\n getQueryDefaults(\n queryKey?: QueryKey,\n ): QueryObserverOptions<any, any, any, any, any> | undefined {\n if (!queryKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.queryDefaults.find((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter((x) =>\n partialMatchKey(queryKey, x.queryKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several query defaults match with key '${JSON.stringify(\n queryKey,\n )}'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n setMutationDefaults(\n mutationKey: MutationKey,\n options: MutationObserverOptions<any, any, any, any>,\n ): void {\n const result = this.mutationDefaults.find(\n (x) => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey),\n )\n if (result) {\n result.defaultOptions = options\n } else {\n this.mutationDefaults.push({ mutationKey, defaultOptions: options })\n }\n }\n\n getMutationDefaults(\n mutationKey?: MutationKey,\n ): MutationObserverOptions<any, any, any, any> | undefined {\n if (!mutationKey) {\n return undefined\n }\n\n // Get the first matching defaults\n const firstMatchingDefaults = this.mutationDefaults.find((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n\n // Additional checks and error in dev mode\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter((x) =>\n partialMatchKey(mutationKey, x.mutationKey),\n )\n // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n if (matchingDefaults.length > 1) {\n this.logger.error(\n `[QueryClient] Several mutation defaults match with key '${JSON.stringify(\n mutationKey,\n )}'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.`,\n )\n }\n }\n\n return firstMatchingDefaults?.defaultOptions\n }\n\n defaultQueryOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey extends QueryKey,\n >(\n options?:\n | QueryObserverOptions<TQueryFnData, TError, TData, TQueryData, TQueryKey>\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 && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(\n defaultedOptions.queryKey,\n defaultedOptions,\n )\n }\n\n // dependent default values\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect =\n defaultedOptions.networkMode !== 'always'\n }\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense\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 ...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","import { 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\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\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: isFetching,\n isRefetching: isFetching && status !== 'loading',\n isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: status === 'error' && 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","import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport { NotifyOptions, QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n","import type {\n DefaultedInfiniteQueryObserverOptions,\n FetchNextPageOptions,\n FetchPreviousPageOptions,\n InfiniteData,\n InfiniteQueryObserverOptions,\n InfiniteQueryObserverResult,\n QueryKey,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport {\n NotifyOptions,\n ObserverFetchOptions,\n QueryObserver,\n} from './queryObserver'\nimport {\n hasNextPage,\n hasPreviousPage,\n infiniteQueryBehavior,\n} from './infiniteQueryBehavior'\nimport { Query } from './query'\n\ntype InfiniteQueryObserverListener<TData, TError> = (\n result: InfiniteQueryObserverResult<TData, TError>,\n) => void\n\nexport class InfiniteQueryObserver<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends QueryObserver<\n TQueryFnData,\n TError,\n InfiniteData<TData>,\n InfiniteData<TQueryData>,\n TQueryKey\n> {\n // Type override\n subscribe!: (\n listener?: InfiniteQueryObserverListener<TData, TError>,\n ) => () => void\n\n // Type override\n getCurrentResult!: () => InfiniteQueryObserverResult<TData, TError>\n\n // Type override\n protected fetch!: (\n fetchOptions: ObserverFetchOptions,\n ) => Promise<InfiniteQueryObserverResult<TData, TError>>\n\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(\n client: QueryClient,\n options: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super(client, options)\n }\n\n protected bindMethods(): void {\n super.bindMethods()\n this.fetchNextPage = this.fetchNextPage.bind(this)\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this)\n }\n\n setOptions(\n options?: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n super.setOptions(\n {\n ...options,\n behavior: infiniteQueryBehavior(),\n },\n notifyOptions,\n )\n }\n\n getOptimisticResult(\n options: DefaultedInfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): InfiniteQueryObserverResult<TData, TError> {\n options.behavior = infiniteQueryBehavior()\n return super.getOptimisticResult(options) as InfiniteQueryObserverResult<\n TData,\n TError\n >\n }\n\n fetchNextPage({ pageParam, ...options }: FetchNextPageOptions = {}): Promise<\n InfiniteQueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: 'forward', pageParam },\n },\n })\n }\n\n fetchPreviousPage({\n pageParam,\n ...options\n }: FetchPreviousPageOptions = {}): Promise<\n InfiniteQueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n meta: {\n fetchMore: { direction: 'backward', pageParam },\n },\n })\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, InfiniteData<TQueryData>, TQueryKey>,\n options: InfiniteQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): InfiniteQueryObserverResult<TData, TError> {\n const { state } = query\n const result = super.createResult(query, options)\n return {\n ...result,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, state.data?.pages),\n hasPreviousPage: hasPreviousPage(options, state.data?.pages),\n isFetchingNextPage:\n state.fetchStatus === 'fetching' &&\n state.fetchMeta?.fetchMore?.direction === 'forward',\n isFetchingPreviousPage:\n state.fetchStatus === 'fetching' &&\n state.fetchMeta?.fetchMore?.direction === 'backward',\n }\n }\n}\n","import { Action, getDefaultState, Mutation } from './mutation'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type {\n MutateOptions,\n MutationObserverBaseResult,\n MutationObserverResult,\n MutationObserverOptions,\n} from './types'\nimport { shallowEqualObjects } from './utils'\n\n// TYPES\n\ntype MutationObserverListener<TData, TError, TVariables, TContext> = (\n result: MutationObserverResult<TData, TError, TVariables, TContext>,\n) => void\n\ninterface NotifyOptions {\n listeners?: boolean\n onError?: boolean\n onSuccess?: boolean\n}\n\n// CLASS\n\nexport class MutationObserver<\n TData = unknown,\n TError = unknown,\n TVariables = void,\n TContext = unknown,\n> extends Subscribable<\n MutationObserverListener<TData, TError, TVariables, TContext>\n> {\n options!: MutationObserverOptions<TData, TError, TVariables, TContext>\n\n private client: QueryClient\n private currentResult!: MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n private currentMutation?: Mutation<TData, TError, TVariables, TContext>\n private mutateOptions?: MutateOptions<TData, TError, TVariables, TContext>\n\n constructor(\n client: QueryClient,\n options: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n super()\n\n this.client = client\n this.setOptions(options)\n this.bindMethods()\n this.updateResult()\n }\n\n protected bindMethods(): void {\n this.mutate = this.mutate.bind(this)\n this.reset = this.reset.bind(this)\n }\n\n setOptions(\n options?: MutationObserverOptions<TData, TError, TVariables, TContext>,\n ) {\n const prevOptions = this.options\n this.options = this.client.defaultMutationOptions(options)\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this,\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.currentMutation?.removeObserver(this)\n }\n }\n\n onMutationUpdate(action: Action<TData, TError, TVariables, TContext>): void {\n this.updateResult()\n\n // Determine which callbacks to trigger\n const notifyOptions: NotifyOptions = {\n listeners: true,\n }\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true\n } else if (action.type === 'error') {\n notifyOptions.onError = true\n }\n\n this.notify(notifyOptions)\n }\n\n getCurrentResult(): MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n > {\n return this.currentResult\n }\n\n reset(): void {\n this.currentMutation = undefined\n this.updateResult()\n this.notify({ listeners: true })\n }\n\n mutate(\n variables?: TVariables,\n options?: MutateOptions<TData, TError, TVariables, TContext>,\n ): Promise<TData> {\n this.mutateOptions = options\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this)\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, {\n ...this.options,\n variables:\n typeof variables !== 'undefined' ? variables : this.options.variables,\n })\n\n this.currentMutation.addObserver(this)\n\n return this.currentMutation.execute()\n }\n\n private updateResult(): void {\n const state = this.currentMutation\n ? this.currentMutation.state\n : getDefaultState<TData, TError, TVariables, TContext>()\n\n const result: MutationObserverBaseResult<\n TData,\n TError,\n TVariables,\n TContext\n > = {\n ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset,\n }\n\n this.currentResult = result as MutationObserverResult<\n TData,\n TError,\n TVariables,\n TContext\n >\n }\n\n private notify(options: NotifyOptions) {\n notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions) {\n if (options.onSuccess) {\n this.mutateOptions.onSuccess?.(\n this.currentResult.data!,\n this.currentResult.variables!,\n this.currentResult.context!,\n )\n this.mutateOptions.onSettled?.(\n this.currentResult.data!,\n null,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n } else if (options.onError) {\n this.mutateOptions.onError?.(\n this.currentResult.error!,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n this.mutateOptions.onSettled?.(\n undefined,\n this.currentResult.error,\n this.currentResult.variables!,\n this.currentResult.context,\n )\n }\n }\n\n // Then trigger the listeners\n if (options.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.currentResult)\n })\n }\n })\n }\n}\n","import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n dehydrateMutations?: boolean\n dehydrateQueries?: boolean\n shouldDehydrateMutation?: ShouldDehydrateMutationFunction\n shouldDehydrateQuery?: ShouldDehydrateQueryFunction\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\nexport type ShouldDehydrateQueryFunction = (query: Query) => boolean\n\nexport type ShouldDehydrateMutationFunction = (mutation: Mutation) => boolean\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n }\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(query: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nfunction defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nfunction defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const mutations: DehydratedMutation[] = []\n const queries: DehydratedQuery[] = []\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation =\n options.shouldDehydrateMutation || defaultShouldDehydrateMutation\n\n client\n .getMutationCache()\n .getAll()\n .forEach((mutation) => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation))\n }\n })\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery =\n options.shouldDehydrateQuery || defaultShouldDehydrateQuery\n\n client\n .getQueryCache()\n .getAll()\n .forEach((query) => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query))\n }\n })\n }\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\n\n const mutationCache = client.getMutationCache()\n const queryCache = client.getQueryCache()\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = (dehydratedState as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\n\n queries.forEach((dehydratedQuery) => {\n const query = queryCache.get(dehydratedQuery.queryHash)\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) {\n query.setState(dehydratedQuery.state)\n }\n return\n }\n\n // Restore query\n queryCache.build(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQuery.state,\n )\n })\n}\n"],"names":["Subscribable","constructor","listeners","subscribe","bind","listener","push","onSubscribe","filter","x","onUnsubscribe","hasListeners","length","isServer","window","noop","undefined","functionalUpdate","updater","input","isValidTimeout","value","Infinity","difference","array1","array2","indexOf","replaceAt","array","index","copy","slice","timeUntilStale","updatedAt","staleTime","Math","max","Date","now","parseQueryArgs","arg1","arg2","arg3","isQueryKey","queryKey","queryFn","parseMutationArgs","mutationKey","mutationFn","parseFilterArgs","parseMutationFilterArgs","matchQuery","filters","query","type","exact","fetchStatus","predicate","stale","queryHash","hashQueryKeyByOptions","options","partialMatchKey","isActive","isStale","state","matchMutation","mutation","fetching","hashQueryKey","status","hashFn","queryKeyHashFn","JSON","stringify","_","val","isPlainObject","Object","keys","sort","reduce","result","key","a","b","partialDeepEqual","some","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","equalItems","i","shallowEqualObjects","Array","isArray","o","hasObjectPrototype","ctor","prot","prototype","hasOwnProperty","toString","call","isError","Error","sleep","timeout","Promise","resolve","setTimeout","scheduleMicrotask","callback","then","getAbortController","AbortController","replaceData","prevData","data","isDataEqual","structuralSharing","FocusManager","setup","onFocus","addEventListener","removeEventListener","cleanup","setEventListener","focused","setFocused","forEach","isFocused","document","includes","visibilityState","focusManager","OnlineManager","onOnline","online","setOnline","isOnline","navigator","onLine","onlineManager","defaultRetryDelay","failureCount","min","canFetch","networkMode","CancelledError","revert","silent","isCancelledError","createRetryer","config","isRetryCancelled","isResolved","continueFn","promiseResolve","promiseReject","promise","outerResolve","outerReject","cancel","cancelOptions","reject","abort","cancelRetry","continueRetry","shouldPause","onSuccess","onError","pause","continueResolve","onPause","onContinue","run","promiseOrValue","fn","error","catch","retry","retryDelay","delay","shouldRetry","onFail","continue","defaultLogger","console","createNotifyManager","queue","transactions","notifyFn","batchNotifyFn","batch","flush","schedule","batchCalls","args","originalQueue","setNotifyFunction","setBatchNotifyFunction","notifyManager","Removable","destroy","clearGcTimeout","scheduleGc","cacheTime","gcTimeout","optionalRemove","updateCacheTime","newCacheTime","clearTimeout","Query","abortSignalConsumed","defaultOptions","setOptions","observers","cache","logger","initialState","getDefaultState","meta","remove","setData","newData","dispatch","dataUpdatedAt","manual","setState","setStateOptions","retryer","reset","observer","enabled","isDisabled","getObserversCount","isInvalidated","getCurrentResult","isStaleByTime","find","shouldFetchOnWindowFocus","refetch","cancelRefetch","shouldFetchOnReconnect","addObserver","notify","removeObserver","invalidate","fetch","fetchOptions","abortController","queryFnContext","pageParam","addSignalProperty","object","defineProperty","enumerable","get","signal","fetchFn","context","behavior","onFetch","revertState","fetchMeta","isFetchingOptimistic","action","reducer","fetchFailureCount","dataUpdateCount","errorUpdateCount","errorUpdatedAt","onQueryUpdate","initialData","hasInitialData","initialDataUpdatedAt","hasData","QueryCache","queries","queriesMap","build","client","getLogger","defaultQueryOptions","getQueryDefaults","add","queryInMap","clear","getAll","findAll","event","Mutation","mutationId","mutationCache","execute","executeMutation","variables","restored","onMutate","onSettled","process","isPaused","onMutationUpdate","MutationCache","mutations","defaultMutationOptions","getMutationDefaults","resumePausedMutations","pausedMutations","infiniteQueryBehavior","refetchPage","fetchMore","isFetchingNextPage","direction","isFetchingPreviousPage","oldPages","pages","oldPageParams","pageParams","newPageParams","cancelled","aborted","buildNewPages","param","page","previous","fetchPage","queryFnResult","getNextPageParam","getPreviousPageParam","shouldFetchFirstPage","shouldFetchNextPage","finalPromise","hasNextPage","nextPageParam","hasPreviousPage","previousPageParam","QueryClient","queryCache","queryDefaults","mutationDefaults","mount","unsubscribeFocus","unsubscribeOnline","unmount","isFetching","isMutating","getQueryData","getQueriesData","queryKeyOrFilters","getQueryCache","map","setQueryData","parsedOptions","defaultedOptions","setQueriesData","getQueryState","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","promises","all","invalidateQueries","refetchType","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","getMutationCache","getDefaultOptions","setDefaultOptions","setQueryDefaults","firstMatchingDefaults","matchingDefaults","setMutationDefaults","_defaulted","refetchOnReconnect","useErrorBoundary","suspense","QueryObserver","trackedProps","Set","selectError","bindMethods","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","refetchOnWindowFocus","clearStaleTimeout","clearRefetchInterval","notifyOptions","prevOptions","prevQuery","updateQuery","mounted","shouldFetchOptionally","updateResult","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","currentResult","trackResult","trackedResult","configurable","getCurrentQuery","fetchOptimistic","time","staleTimeoutId","refetchInterval","nextInterval","refetchIntervalId","setInterval","refetchIntervalInBackground","clearInterval","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","isSuccess","select","selectFn","selectResult","placeholderData","isLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","typedKey","changed","has","shouldLoadOnMount","retryOnMount","refetchOnMount","field","QueriesObserver","observersMap","setQueries","onUpdate","prevObservers","newObserverMatches","findMatchingObservers","match","defaultedQueryOptions","newObservers","newObserversMap","fromEntries","newResult","hasIndexChange","matchingObservers","flatMap","matchedQueryHashes","unmatchedQueries","unmatchedObservers","prevObserver","getObserver","currentObserver","newOrReusedObservers","previouslyUsedObserver","sortMatchesByOrderOfQueries","concat","InfiniteQueryObserver","fetchNextPage","fetchPreviousPage","MutationObserver","mutate","currentMutation","mutateOptions","isIdle","dehydrateMutation","dehydrateQuery","defaultShouldDehydrateMutation","defaultShouldDehydrateQuery","dehydrate","dehydrateMutations","shouldDehydrateMutation","dehydrateQueries","shouldDehydrateQuery","hydrate","dehydratedState","dehydratedMutation","dehydratedQuery"],"mappings":"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"}
|