@tanstack/query-core 5.0.0-alpha.49 → 5.0.0-alpha.50
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/focusManager.js +15 -31
- package/build/lib/focusManager.js.map +1 -1
- package/build/lib/hydration.js +4 -7
- package/build/lib/hydration.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.js +4 -5
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/infiniteQueryObserver.js +2 -3
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/mutation.js +102 -127
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/mutationCache.js +17 -30
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/mutationObserver.js +51 -81
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/onlineManager.js +14 -29
- package/build/lib/onlineManager.js.map +1 -1
- package/build/lib/queriesObserver.js +79 -125
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/query.js +161 -210
- package/build/lib/query.js.map +1 -1
- package/build/lib/queryCache.js +10 -15
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryClient.js +61 -98
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/queryObserver.js +197 -297
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/removable.js +6 -13
- package/build/lib/removable.js.map +1 -1
- package/build/lib/retryer.js +14 -15
- package/build/lib/retryer.js.map +1 -1
- package/build/lib/utils.js +1 -1
- package/build/lib/utils.js.map +1 -1
- package/package.json +1 -2
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js +0 -16
- package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
- package/build/umd/index.development.js +0 -2691
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -2
- package/build/umd/index.production.js.map +0 -1
package/build/lib/query.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sources":["../../src/query.ts"],"sourcesContent":["import { 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 DefaultError,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport { notifyManager } from './notifyManager'\nimport type { Retryer } from './retryer'\nimport { 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 options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n}\n\nexport interface QueryState<TData = unknown, TError = DefaultError> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\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}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: FetchMeta\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\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: Partial<QueryState<TData, TError>>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\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 = DefaultError,\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 state: QueryState<TData, TError>\n isFetchingOptimistic?: boolean\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #promise?: Promise<TData>\n #retryer?: Retryer<TData>\n #observers: QueryObserver<any, any, any, any, any>[]\n #defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n #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.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = config.state || getDefaultState(this.options)\n this.state = this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n #setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\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: Partial<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(\n (observer) => observer.options.enabled !== false,\n )\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 observer?.refetch({ cancelRefetch: false })\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 observer?.refetch({ cancelRefetch: false })\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 (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.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 = new AbortController()\n\n // Create query function context\n const queryFnContext: Omit<QueryFunctionContext<TQueryKey>, 'signal'> = {\n queryKey: this.queryKey,\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 this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(new Error('Missing queryFn'))\n }\n this.#abortSignalConsumed = false\n return this.options.queryFn(\n queryFnContext as QueryFunctionContext<TQueryKey>,\n )\n }\n\n // Trigger behavior hook\n const context: Omit<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n )\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?.(\n error as any,\n this as Query<any, any, any, any>,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query<any, any, any, any>,\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 () => Promise<TData>,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query<any, any, any, any>,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\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 #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: action.failureCount,\n fetchFailureReason: action.error,\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 fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'pending',\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 fetchFailureReason: null,\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 fetchFailureReason: error as TError,\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()\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 hasData = typeof data !== 'undefined'\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\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 fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n"],"names":["_initialState","_classPrivateFieldLooseKey","_revertState","_cache","_promise","_retryer","_observers","_defaultOptions","_abortSignalConsumed","_setOptions","_dispatch","Query","Removable","constructor","config","Object","defineProperty","value","_dispatch2","_setOptions2","writable","_classPrivateFieldLooseBase","defaultOptions","options","cache","queryKey","queryHash","state","getDefaultState","scheduleGc","meta","optionalRemove","length","fetchStatus","remove","setData","newData","data","replaceData","type","dataUpdatedAt","updatedAt","manual","setState","setStateOptions","cancel","_classPrivateFieldLoo","promise","then","noop","catch","Promise","resolve","destroy","silent","reset","isActive","some","observer","enabled","isDisabled","getObserversCount","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","onFocus","_classPrivateFieldLoo2","find","x","shouldFetchOnWindowFocus","refetch","cancelRefetch","continue","onOnline","_classPrivateFieldLoo3","shouldFetchOnReconnect","addObserver","indexOf","push","clearGcTimeout","notify","query","removeObserver","filter","revert","cancelRetry","invalidate","fetch","fetchOptions","_this$options$behavio","_context$fetchOptions","_classPrivateFieldLoo4","continueRetry","queryFn","process","env","NODE_ENV","Array","isArray","console","error","abortController","AbortController","queryFnContext","addSignalProperty","object","enumerable","get","signal","fetchFn","reject","Error","context","behavior","onFetch","fetchMeta","_context$fetchOptions2","onError","isCancelledError","_classPrivateFieldLoo5","_classPrivateFieldLoo6","_classPrivateFieldLoo7","_classPrivateFieldLoo8","call","onSettled","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","_classPrivateFieldLoo9","_classPrivateFieldLoo10","_classPrivateFieldLoo11","_classPrivateFieldLoo12","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","updateGcTime","gcTime","action","reducer","_action$meta","_action$dataUpdatedAt","fetchFailureCount","fetchFailureReason","canFetch","status","dataUpdateCount","Date","now","errorUpdateCount","errorUpdatedAt","notifyManager","batch","forEach","onQueryUpdate","initialData","hasData","initialDataUpdatedAt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","sources":["../../src/query.ts"],"sourcesContent":["import { 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 DefaultError,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport { notifyManager } from './notifyManager'\nimport type { Retryer } from './retryer'\nimport { 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 options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n}\n\nexport interface QueryState<TData = unknown, TError = DefaultError> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: FetchMeta | null\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}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: FetchMeta\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: FetchMeta\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: Partial<QueryState<TData, TError>>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\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 = DefaultError,\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 state: QueryState<TData, TError>\n isFetchingOptimistic?: boolean\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #promise?: Promise<TData>\n #retryer?: Retryer<TData>\n #observers: QueryObserver<any, any, any, any, any>[]\n #defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n #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.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = config.state || getDefaultState(this.options)\n this.state = this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n #setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n this.updateGcTime(this.options.gcTime)\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: Partial<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(\n (observer) => observer.options.enabled !== false,\n )\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 observer?.refetch({ cancelRefetch: false })\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 observer?.refetch({ cancelRefetch: false })\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 (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n console.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 = new AbortController()\n\n // Create query function context\n const queryFnContext: Omit<QueryFunctionContext<TQueryKey>, 'signal'> = {\n queryKey: this.queryKey,\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 this.#abortSignalConsumed = true\n return abortController.signal\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(new Error('Missing queryFn'))\n }\n this.#abortSignalConsumed = false\n return this.options.queryFn(\n queryFnContext as QueryFunctionContext<TQueryKey>,\n )\n }\n\n // Trigger behavior hook\n const context: Omit<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(\n context as FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n )\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?.(\n error as any,\n this as Query<any, any, any, any>,\n )\n this.#cache.config.onSettled?.(\n this.state.data,\n error as any,\n this as Query<any, any, any, any>,\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 () => Promise<TData>,\n abort: abortController.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n console.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error(`${this.queryHash} data is undefined`) as any)\n return\n }\n\n this.setData(data)\n\n // Notify cache callback\n this.#cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n this.#cache.config.onSettled?.(\n data,\n this.state.error as any,\n this as Query<any, any, any, any>,\n )\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.#dispatch({ type: 'failed', failureCount, error })\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 #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: action.failureCount,\n fetchFailureReason: action.error,\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 fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'pending',\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 fetchFailureReason: null,\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 fetchFailureReason: error as TError,\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()\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 hasData = typeof data !== 'undefined'\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\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 fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'pending',\n fetchStatus: 'idle',\n }\n}\n"],"names":["Query","Removable","constructor","config","defaultOptions","options","cache","queryKey","queryHash","state","getDefaultState","scheduleGc","meta","#setOptions","updateGcTime","gcTime","optionalRemove","length","fetchStatus","remove","setData","newData","data","replaceData","type","dataUpdatedAt","updatedAt","manual","setState","setStateOptions","cancel","promise","then","noop","catch","Promise","resolve","destroy","silent","reset","isActive","some","observer","enabled","isDisabled","getObserversCount","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","onFocus","find","x","shouldFetchOnWindowFocus","refetch","cancelRefetch","continue","onOnline","shouldFetchOnReconnect","addObserver","indexOf","push","clearGcTimeout","notify","query","removeObserver","filter","revert","cancelRetry","invalidate","fetch","fetchOptions","continueRetry","queryFn","process","env","NODE_ENV","Array","isArray","console","error","abortController","AbortController","queryFnContext","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","fetchFn","reject","Error","context","behavior","onFetch","fetchMeta","onError","isCancelledError","onSettled","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","#dispatch","action","reducer","fetchFailureCount","fetchFailureReason","canFetch","status","dataUpdateCount","Date","now","revertState","errorUpdateCount","errorUpdatedAt","notifyManager","batch","forEach","onQueryUpdate","initialData","hasData","initialDataUpdatedAt"],"mappings":"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"}
|
package/build/lib/queryCache.js
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
4
3
|
var utils = require('./utils.js');
|
|
5
4
|
var query = require('./query.js');
|
|
6
5
|
var notifyManager = require('./notifyManager.js');
|
|
7
6
|
var subscribable = require('./subscribable.js');
|
|
8
7
|
|
|
9
8
|
// TYPES
|
|
10
|
-
|
|
9
|
+
|
|
11
10
|
// CLASS
|
|
12
11
|
|
|
13
12
|
class QueryCache extends subscribable.Subscribable {
|
|
13
|
+
#queries;
|
|
14
14
|
constructor(config = {}) {
|
|
15
15
|
super();
|
|
16
|
-
Object.defineProperty(this, _queries, {
|
|
17
|
-
writable: true,
|
|
18
|
-
value: void 0
|
|
19
|
-
});
|
|
20
16
|
this.config = config;
|
|
21
|
-
|
|
17
|
+
this.#queries = new Map();
|
|
22
18
|
}
|
|
23
19
|
build(client, options, state) {
|
|
24
|
-
var _options$queryHash;
|
|
25
20
|
const queryKey = options.queryKey;
|
|
26
|
-
const queryHash =
|
|
21
|
+
const queryHash = options.queryHash ?? utils.hashQueryKeyByOptions(queryKey, options);
|
|
27
22
|
let query$1 = this.get(queryHash);
|
|
28
23
|
if (!query$1) {
|
|
29
24
|
query$1 = new query.Query({
|
|
@@ -39,8 +34,8 @@ class QueryCache extends subscribable.Subscribable {
|
|
|
39
34
|
return query$1;
|
|
40
35
|
}
|
|
41
36
|
add(query) {
|
|
42
|
-
if (!
|
|
43
|
-
|
|
37
|
+
if (!this.#queries.has(query.queryHash)) {
|
|
38
|
+
this.#queries.set(query.queryHash, query);
|
|
44
39
|
this.notify({
|
|
45
40
|
type: 'added',
|
|
46
41
|
query
|
|
@@ -48,11 +43,11 @@ class QueryCache extends subscribable.Subscribable {
|
|
|
48
43
|
}
|
|
49
44
|
}
|
|
50
45
|
remove(query) {
|
|
51
|
-
const queryInMap =
|
|
46
|
+
const queryInMap = this.#queries.get(query.queryHash);
|
|
52
47
|
if (queryInMap) {
|
|
53
48
|
query.destroy();
|
|
54
49
|
if (queryInMap === query) {
|
|
55
|
-
|
|
50
|
+
this.#queries.delete(query.queryHash);
|
|
56
51
|
}
|
|
57
52
|
this.notify({
|
|
58
53
|
type: 'removed',
|
|
@@ -68,10 +63,10 @@ class QueryCache extends subscribable.Subscribable {
|
|
|
68
63
|
});
|
|
69
64
|
}
|
|
70
65
|
get(queryHash) {
|
|
71
|
-
return
|
|
66
|
+
return this.#queries.get(queryHash);
|
|
72
67
|
}
|
|
73
68
|
getAll() {
|
|
74
|
-
return [...
|
|
69
|
+
return [...this.#queries.values()];
|
|
75
70
|
}
|
|
76
71
|
find(filters) {
|
|
77
72
|
const defaultedFilters = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryCache.js","sources":["../../src/queryCache.ts"],"sourcesContent":["import type { QueryFilters } from './utils'\nimport { hashQueryKeyByOptions, matchQuery } from './utils'\nimport type { Action, QueryState } from './query'\nimport { Query } from './query'\nimport type {\n NotifyEvent,\n QueryKey,\n QueryOptions,\n DefaultError,\n WithRequired,\n} from './types'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\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\nexport interface QueryStore {\n has: (queryKey: string) => boolean\n set: (queryKey: string, query: Query) => void\n get: (queryKey: string) => Query | undefined\n delete: (queryKey: string) => void\n values: () => IterableIterator<Query>\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map<string, Query>()\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 queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\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.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.#queries.get(queryHash) as\n | Query<TQueryFnData, TError, TData, TQueryKey>\n | undefined\n }\n\n getAll(): Query[] {\n return [...this.#queries.values()]\n }\n\n find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: WithRequired<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query<TQueryFnData, TError, TData> | undefined\n }\n\n findAll(filters: QueryFilters = {}): Query[] {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : 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.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"names":["_queries","_classPrivateFieldLooseKey","QueryCache","Subscribable","constructor","config","Object","defineProperty","writable","value","_classPrivateFieldLooseBase","Map","build","client","options","state","_options$queryHash","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","defaultQueryOptions","defaultOptions","getQueryDefaults","add","has","set","notify","type","remove","queryInMap","destroy","delete","clear","notifyManager","batch","getAll","forEach","values","find","filters","defaultedFilters","exact","matchQuery","findAll","queries","keys","length","filter","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queryCache.js","sources":["../../src/queryCache.ts"],"sourcesContent":["import type { QueryFilters } from './utils'\nimport { hashQueryKeyByOptions, matchQuery } from './utils'\nimport type { Action, QueryState } from './query'\nimport { Query } from './query'\nimport type {\n NotifyEvent,\n QueryKey,\n QueryOptions,\n DefaultError,\n WithRequired,\n} from './types'\nimport { notifyManager } from './notifyManager'\nimport type { QueryClient } from './queryClient'\nimport { Subscribable } from './subscribable'\nimport type { QueryObserver } from './queryObserver'\n\n// TYPES\n\ninterface QueryCacheConfig {\n onError?: (\n error: DefaultError,\n query: Query<unknown, unknown, unknown>,\n ) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n onSettled?: (\n data: unknown | undefined,\n error: DefaultError | null,\n query: Query<unknown, unknown, unknown>,\n ) => void\n}\n\ninterface NotifyEventQueryAdded extends NotifyEvent {\n type: 'added'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryRemoved extends NotifyEvent {\n type: 'removed'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryUpdated extends NotifyEvent {\n type: 'updated'\n query: Query<any, any, any, any>\n action: Action<any, any>\n}\n\ninterface NotifyEventQueryObserverAdded extends NotifyEvent {\n type: 'observerAdded'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverRemoved extends NotifyEvent {\n type: 'observerRemoved'\n query: Query<any, any, any, any>\n observer: QueryObserver<any, any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverResultsUpdated extends NotifyEvent {\n type: 'observerResultsUpdated'\n query: Query<any, any, any, any>\n}\n\ninterface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {\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\nexport interface QueryStore {\n has: (queryKey: string) => boolean\n set: (queryKey: string, query: Query) => void\n get: (queryKey: string) => Query | undefined\n delete: (queryKey: string) => void\n values: () => IterableIterator<Query>\n}\n\n// CLASS\n\nexport class QueryCache extends Subscribable<QueryCacheListener> {\n #queries: QueryStore\n\n constructor(public config: QueryCacheConfig = {}) {\n super()\n this.#queries = new Map<string, Query>()\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 queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey),\n })\n this.add(query)\n }\n\n return query\n }\n\n add(query: Query<any, any, any, any>): void {\n if (!this.#queries.has(query.queryHash)) {\n this.#queries.set(query.queryHash, query)\n\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.#queries.get(query.queryHash)\n\n if (queryInMap) {\n query.destroy()\n\n if (queryInMap === query) {\n this.#queries.delete(query.queryHash)\n }\n\n this.notify({ type: 'removed', query })\n }\n }\n\n clear(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n this.remove(query)\n })\n })\n }\n\n get<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | undefined {\n return this.#queries.get(queryHash) as\n | Query<TQueryFnData, TError, TData, TQueryKey>\n | undefined\n }\n\n getAll(): Query[] {\n return [...this.#queries.values()]\n }\n\n find<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData>(\n filters: WithRequired<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n const defaultedFilters = { exact: true, ...filters }\n\n return this.getAll().find((query) =>\n matchQuery(defaultedFilters, query),\n ) as Query<TQueryFnData, TError, TData> | undefined\n }\n\n findAll(filters: QueryFilters = {}): Query[] {\n const queries = this.getAll()\n return Object.keys(filters).length > 0\n ? queries.filter((query) => matchQuery(filters, query))\n : 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.getAll().forEach((query) => {\n query.onFocus()\n })\n })\n }\n\n onOnline(): void {\n notifyManager.batch(() => {\n this.getAll().forEach((query) => {\n query.onOnline()\n })\n })\n }\n}\n"],"names":["QueryCache","Subscribable","constructor","config","Map","build","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","defaultQueryOptions","defaultOptions","getQueryDefaults","add","has","set","notify","type","remove","queryInMap","destroy","delete","clear","notifyManager","batch","getAll","forEach","values","find","filters","defaultedFilters","exact","matchQuery","findAll","queries","Object","keys","length","filter","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
|
package/build/lib/queryClient.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
|
|
4
3
|
var utils = require('./utils.js');
|
|
5
4
|
var queryCache = require('./queryCache.js');
|
|
6
5
|
var mutationCache = require('./mutationCache.js');
|
|
@@ -10,99 +9,66 @@ var notifyManager = require('./notifyManager.js');
|
|
|
10
9
|
var infiniteQueryBehavior = require('./infiniteQueryBehavior.js');
|
|
11
10
|
|
|
12
11
|
// TYPES
|
|
13
|
-
|
|
14
|
-
var _mutationCache = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mutationCache");
|
|
15
|
-
var _defaultOptions = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("defaultOptions");
|
|
16
|
-
var _queryDefaults = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("queryDefaults");
|
|
17
|
-
var _mutationDefaults = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mutationDefaults");
|
|
18
|
-
var _mountCount = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("mountCount");
|
|
19
|
-
var _unsubscribeFocus = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("unsubscribeFocus");
|
|
20
|
-
var _unsubscribeOnline = /*#__PURE__*/_rollupPluginBabelHelpers.classPrivateFieldLooseKey("unsubscribeOnline");
|
|
12
|
+
|
|
21
13
|
// CLASS
|
|
22
14
|
|
|
23
15
|
class QueryClient {
|
|
16
|
+
#queryCache;
|
|
17
|
+
#mutationCache;
|
|
18
|
+
#defaultOptions;
|
|
19
|
+
#queryDefaults;
|
|
20
|
+
#mutationDefaults;
|
|
21
|
+
#mountCount;
|
|
22
|
+
#unsubscribeFocus;
|
|
23
|
+
#unsubscribeOnline;
|
|
24
24
|
constructor(config = {}) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
value: void 0
|
|
32
|
-
});
|
|
33
|
-
Object.defineProperty(this, _defaultOptions, {
|
|
34
|
-
writable: true,
|
|
35
|
-
value: void 0
|
|
36
|
-
});
|
|
37
|
-
Object.defineProperty(this, _queryDefaults, {
|
|
38
|
-
writable: true,
|
|
39
|
-
value: void 0
|
|
40
|
-
});
|
|
41
|
-
Object.defineProperty(this, _mutationDefaults, {
|
|
42
|
-
writable: true,
|
|
43
|
-
value: void 0
|
|
44
|
-
});
|
|
45
|
-
Object.defineProperty(this, _mountCount, {
|
|
46
|
-
writable: true,
|
|
47
|
-
value: void 0
|
|
48
|
-
});
|
|
49
|
-
Object.defineProperty(this, _unsubscribeFocus, {
|
|
50
|
-
writable: true,
|
|
51
|
-
value: void 0
|
|
52
|
-
});
|
|
53
|
-
Object.defineProperty(this, _unsubscribeOnline, {
|
|
54
|
-
writable: true,
|
|
55
|
-
value: void 0
|
|
56
|
-
});
|
|
57
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _queryCache)[_queryCache] = config.queryCache || new queryCache.QueryCache();
|
|
58
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationCache)[_mutationCache] = config.mutationCache || new mutationCache.MutationCache();
|
|
59
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _defaultOptions)[_defaultOptions] = config.defaultOptions || {};
|
|
60
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _queryDefaults)[_queryDefaults] = new Map();
|
|
61
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mutationDefaults)[_mutationDefaults] = new Map();
|
|
62
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _mountCount)[_mountCount] = 0;
|
|
25
|
+
this.#queryCache = config.queryCache || new queryCache.QueryCache();
|
|
26
|
+
this.#mutationCache = config.mutationCache || new mutationCache.MutationCache();
|
|
27
|
+
this.#defaultOptions = config.defaultOptions || {};
|
|
28
|
+
this.#queryDefaults = new Map();
|
|
29
|
+
this.#mutationDefaults = new Map();
|
|
30
|
+
this.#mountCount = 0;
|
|
63
31
|
}
|
|
64
32
|
mount() {
|
|
65
|
-
|
|
66
|
-
if (
|
|
67
|
-
|
|
33
|
+
this.#mountCount++;
|
|
34
|
+
if (this.#mountCount !== 1) return;
|
|
35
|
+
this.#unsubscribeFocus = focusManager.focusManager.subscribe(() => {
|
|
68
36
|
if (focusManager.focusManager.isFocused()) {
|
|
69
37
|
this.resumePausedMutations();
|
|
70
|
-
|
|
38
|
+
this.#queryCache.onFocus();
|
|
71
39
|
}
|
|
72
40
|
});
|
|
73
|
-
|
|
41
|
+
this.#unsubscribeOnline = onlineManager.onlineManager.subscribe(() => {
|
|
74
42
|
if (onlineManager.onlineManager.isOnline()) {
|
|
75
43
|
this.resumePausedMutations();
|
|
76
|
-
|
|
44
|
+
this.#queryCache.onOnline();
|
|
77
45
|
}
|
|
78
46
|
});
|
|
79
47
|
}
|
|
80
48
|
unmount() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _unsubscribeOnline)[_unsubscribeOnline] = undefined;
|
|
49
|
+
this.#mountCount--;
|
|
50
|
+
if (this.#mountCount !== 0) return;
|
|
51
|
+
this.#unsubscribeFocus?.();
|
|
52
|
+
this.#unsubscribeFocus = undefined;
|
|
53
|
+
this.#unsubscribeOnline?.();
|
|
54
|
+
this.#unsubscribeOnline = undefined;
|
|
88
55
|
}
|
|
89
56
|
isFetching(filters) {
|
|
90
|
-
return
|
|
57
|
+
return this.#queryCache.findAll({
|
|
91
58
|
...filters,
|
|
92
59
|
fetchStatus: 'fetching'
|
|
93
60
|
}).length;
|
|
94
61
|
}
|
|
95
62
|
isMutating(filters) {
|
|
96
|
-
return
|
|
63
|
+
return this.#mutationCache.findAll({
|
|
97
64
|
...filters,
|
|
98
65
|
status: 'pending'
|
|
99
66
|
}).length;
|
|
100
67
|
}
|
|
101
68
|
getQueryData(queryKey) {
|
|
102
|
-
|
|
103
|
-
return (_classPrivateFieldLoo5 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _queryCache)[_queryCache].find({
|
|
69
|
+
return this.#queryCache.find({
|
|
104
70
|
queryKey
|
|
105
|
-
})
|
|
71
|
+
})?.state.data;
|
|
106
72
|
}
|
|
107
73
|
ensureQueryData(options) {
|
|
108
74
|
const cachedData = this.getQueryData(options.queryKey);
|
|
@@ -118,10 +84,10 @@ class QueryClient {
|
|
|
118
84
|
});
|
|
119
85
|
}
|
|
120
86
|
setQueryData(queryKey, updater, options) {
|
|
121
|
-
const query =
|
|
87
|
+
const query = this.#queryCache.find({
|
|
122
88
|
queryKey
|
|
123
89
|
});
|
|
124
|
-
const prevData = query
|
|
90
|
+
const prevData = query?.state.data;
|
|
125
91
|
const data = utils.functionalUpdate(updater, prevData);
|
|
126
92
|
if (typeof data === 'undefined') {
|
|
127
93
|
return undefined;
|
|
@@ -129,7 +95,7 @@ class QueryClient {
|
|
|
129
95
|
const defaultedOptions = this.defaultQueryOptions({
|
|
130
96
|
queryKey
|
|
131
97
|
});
|
|
132
|
-
return
|
|
98
|
+
return this.#queryCache.build(this, defaultedOptions).setData(data, {
|
|
133
99
|
...options,
|
|
134
100
|
manual: true
|
|
135
101
|
});
|
|
@@ -140,13 +106,12 @@ class QueryClient {
|
|
|
140
106
|
}) => [queryKey, this.setQueryData(queryKey, updater, options)]));
|
|
141
107
|
}
|
|
142
108
|
getQueryState(queryKey) {
|
|
143
|
-
|
|
144
|
-
return (_classPrivateFieldLoo6 = _rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _queryCache)[_queryCache].find({
|
|
109
|
+
return this.#queryCache.find({
|
|
145
110
|
queryKey
|
|
146
|
-
})
|
|
111
|
+
})?.state;
|
|
147
112
|
}
|
|
148
113
|
removeQueries(filters) {
|
|
149
|
-
const queryCache =
|
|
114
|
+
const queryCache = this.#queryCache;
|
|
150
115
|
notifyManager.notifyManager.batch(() => {
|
|
151
116
|
queryCache.findAll(filters).forEach(query => {
|
|
152
117
|
queryCache.remove(query);
|
|
@@ -154,7 +119,7 @@ class QueryClient {
|
|
|
154
119
|
});
|
|
155
120
|
}
|
|
156
121
|
resetQueries(filters, options) {
|
|
157
|
-
const queryCache =
|
|
122
|
+
const queryCache = this.#queryCache;
|
|
158
123
|
const refetchFilters = {
|
|
159
124
|
type: 'active',
|
|
160
125
|
...filters
|
|
@@ -171,13 +136,12 @@ class QueryClient {
|
|
|
171
136
|
revert: true,
|
|
172
137
|
...cancelOptions
|
|
173
138
|
};
|
|
174
|
-
const promises = notifyManager.notifyManager.batch(() =>
|
|
139
|
+
const promises = notifyManager.notifyManager.batch(() => this.#queryCache.findAll(filters).map(query => query.cancel(defaultedCancelOptions)));
|
|
175
140
|
return Promise.all(promises).then(utils.noop).catch(utils.noop);
|
|
176
141
|
}
|
|
177
142
|
invalidateQueries(filters = {}, options = {}) {
|
|
178
143
|
return notifyManager.notifyManager.batch(() => {
|
|
179
|
-
|
|
180
|
-
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _queryCache)[_queryCache].findAll(filters).forEach(query => {
|
|
144
|
+
this.#queryCache.findAll(filters).forEach(query => {
|
|
181
145
|
query.invalidate();
|
|
182
146
|
});
|
|
183
147
|
if (filters.refetchType === 'none') {
|
|
@@ -185,18 +149,17 @@ class QueryClient {
|
|
|
185
149
|
}
|
|
186
150
|
const refetchFilters = {
|
|
187
151
|
...filters,
|
|
188
|
-
type:
|
|
152
|
+
type: filters.refetchType ?? filters.type ?? 'active'
|
|
189
153
|
};
|
|
190
154
|
return this.refetchQueries(refetchFilters, options);
|
|
191
155
|
});
|
|
192
156
|
}
|
|
193
157
|
refetchQueries(filters = {}, options) {
|
|
194
|
-
var _options$cancelRefetc;
|
|
195
158
|
const fetchOptions = {
|
|
196
159
|
...options,
|
|
197
|
-
cancelRefetch:
|
|
160
|
+
cancelRefetch: options?.cancelRefetch ?? true
|
|
198
161
|
};
|
|
199
|
-
const promises = notifyManager.notifyManager.batch(() =>
|
|
162
|
+
const promises = notifyManager.notifyManager.batch(() => this.#queryCache.findAll(filters).filter(query => !query.isDisabled()).map(query => {
|
|
200
163
|
let promise = query.fetch(undefined, fetchOptions);
|
|
201
164
|
if (!fetchOptions.throwOnError) {
|
|
202
165
|
promise = promise.catch(utils.noop);
|
|
@@ -212,7 +175,7 @@ class QueryClient {
|
|
|
212
175
|
if (typeof defaultedOptions.retry === 'undefined') {
|
|
213
176
|
defaultedOptions.retry = false;
|
|
214
177
|
}
|
|
215
|
-
const query =
|
|
178
|
+
const query = this.#queryCache.build(this, defaultedOptions);
|
|
216
179
|
return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);
|
|
217
180
|
}
|
|
218
181
|
prefetchQuery(options) {
|
|
@@ -226,28 +189,28 @@ class QueryClient {
|
|
|
226
189
|
return this.fetchInfiniteQuery(options).then(utils.noop).catch(utils.noop);
|
|
227
190
|
}
|
|
228
191
|
resumePausedMutations() {
|
|
229
|
-
return
|
|
192
|
+
return this.#mutationCache.resumePausedMutations();
|
|
230
193
|
}
|
|
231
194
|
getQueryCache() {
|
|
232
|
-
return
|
|
195
|
+
return this.#queryCache;
|
|
233
196
|
}
|
|
234
197
|
getMutationCache() {
|
|
235
|
-
return
|
|
198
|
+
return this.#mutationCache;
|
|
236
199
|
}
|
|
237
200
|
getDefaultOptions() {
|
|
238
|
-
return
|
|
201
|
+
return this.#defaultOptions;
|
|
239
202
|
}
|
|
240
203
|
setDefaultOptions(options) {
|
|
241
|
-
|
|
204
|
+
this.#defaultOptions = options;
|
|
242
205
|
}
|
|
243
206
|
setQueryDefaults(queryKey, options) {
|
|
244
|
-
|
|
207
|
+
this.#queryDefaults.set(utils.hashKey(queryKey), {
|
|
245
208
|
queryKey,
|
|
246
209
|
defaultOptions: options
|
|
247
210
|
});
|
|
248
211
|
}
|
|
249
212
|
getQueryDefaults(queryKey) {
|
|
250
|
-
const defaults = [...
|
|
213
|
+
const defaults = [...this.#queryDefaults.values()];
|
|
251
214
|
let result = {};
|
|
252
215
|
defaults.forEach(queryDefault => {
|
|
253
216
|
if (utils.partialMatchKey(queryKey, queryDefault.queryKey)) {
|
|
@@ -260,13 +223,13 @@ class QueryClient {
|
|
|
260
223
|
return result;
|
|
261
224
|
}
|
|
262
225
|
setMutationDefaults(mutationKey, options) {
|
|
263
|
-
|
|
226
|
+
this.#mutationDefaults.set(utils.hashKey(mutationKey), {
|
|
264
227
|
mutationKey,
|
|
265
228
|
defaultOptions: options
|
|
266
229
|
});
|
|
267
230
|
}
|
|
268
231
|
getMutationDefaults(mutationKey) {
|
|
269
|
-
const defaults = [...
|
|
232
|
+
const defaults = [...this.#mutationDefaults.values()];
|
|
270
233
|
let result = {};
|
|
271
234
|
defaults.forEach(queryDefault => {
|
|
272
235
|
if (utils.partialMatchKey(mutationKey, queryDefault.mutationKey)) {
|
|
@@ -279,12 +242,12 @@ class QueryClient {
|
|
|
279
242
|
return result;
|
|
280
243
|
}
|
|
281
244
|
defaultQueryOptions(options) {
|
|
282
|
-
if (options
|
|
245
|
+
if (options?._defaulted) {
|
|
283
246
|
return options;
|
|
284
247
|
}
|
|
285
248
|
const defaultedOptions = {
|
|
286
|
-
...
|
|
287
|
-
...(
|
|
249
|
+
...this.#defaultOptions.queries,
|
|
250
|
+
...(options?.queryKey && this.getQueryDefaults(options.queryKey)),
|
|
288
251
|
...options,
|
|
289
252
|
_defaulted: true
|
|
290
253
|
};
|
|
@@ -302,19 +265,19 @@ class QueryClient {
|
|
|
302
265
|
return defaultedOptions;
|
|
303
266
|
}
|
|
304
267
|
defaultMutationOptions(options) {
|
|
305
|
-
if (options
|
|
268
|
+
if (options?._defaulted) {
|
|
306
269
|
return options;
|
|
307
270
|
}
|
|
308
271
|
return {
|
|
309
|
-
...
|
|
310
|
-
...(
|
|
272
|
+
...this.#defaultOptions.mutations,
|
|
273
|
+
...(options?.mutationKey && this.getMutationDefaults(options.mutationKey)),
|
|
311
274
|
...options,
|
|
312
275
|
_defaulted: true
|
|
313
276
|
};
|
|
314
277
|
}
|
|
315
278
|
clear() {
|
|
316
|
-
|
|
317
|
-
|
|
279
|
+
this.#queryCache.clear();
|
|
280
|
+
this.#mutationCache.clear();
|
|
318
281
|
}
|
|
319
282
|
}
|
|
320
283
|
|