@tanstack/query-core 4.24.10 → 5.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/build/lib/focusManager.d.ts +1 -3
  2. package/build/lib/focusManager.esm.js +19 -36
  3. package/build/lib/focusManager.esm.js.map +1 -1
  4. package/build/lib/focusManager.js +19 -38
  5. package/build/lib/focusManager.js.map +1 -1
  6. package/build/lib/focusManager.mjs +19 -36
  7. package/build/lib/focusManager.mjs.map +1 -1
  8. package/build/lib/hydration.esm.js +21 -23
  9. package/build/lib/hydration.esm.js.map +1 -1
  10. package/build/lib/hydration.js +21 -25
  11. package/build/lib/hydration.js.map +1 -1
  12. package/build/lib/hydration.mjs +21 -23
  13. package/build/lib/hydration.mjs.map +1 -1
  14. package/build/lib/index.d.ts +1 -2
  15. package/build/lib/index.esm.js +1 -1
  16. package/build/lib/index.js +2 -8
  17. package/build/lib/index.js.map +1 -1
  18. package/build/lib/index.mjs +1 -1
  19. package/build/lib/infiniteQueryBehavior.d.ts +3 -7
  20. package/build/lib/infiniteQueryBehavior.esm.js +52 -75
  21. package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
  22. package/build/lib/infiniteQueryBehavior.js +50 -77
  23. package/build/lib/infiniteQueryBehavior.js.map +1 -1
  24. package/build/lib/infiniteQueryBehavior.mjs +52 -75
  25. package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
  26. package/build/lib/infiniteQueryObserver.d.ts +4 -4
  27. package/build/lib/infiniteQueryObserver.esm.js +18 -26
  28. package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
  29. package/build/lib/infiniteQueryObserver.js +18 -28
  30. package/build/lib/infiniteQueryObserver.js.map +1 -1
  31. package/build/lib/infiniteQueryObserver.mjs +18 -26
  32. package/build/lib/infiniteQueryObserver.mjs.map +1 -1
  33. package/build/lib/mutation.d.ts +11 -22
  34. package/build/lib/mutation.esm.js +73 -105
  35. package/build/lib/mutation.esm.js.map +1 -1
  36. package/build/lib/mutation.js +73 -107
  37. package/build/lib/mutation.js.map +1 -1
  38. package/build/lib/mutation.mjs +73 -105
  39. package/build/lib/mutation.mjs.map +1 -1
  40. package/build/lib/mutationCache.d.ts +4 -6
  41. package/build/lib/mutationCache.esm.js +23 -32
  42. package/build/lib/mutationCache.esm.js.map +1 -1
  43. package/build/lib/mutationCache.js +23 -34
  44. package/build/lib/mutationCache.js.map +1 -1
  45. package/build/lib/mutationCache.mjs +23 -32
  46. package/build/lib/mutationCache.mjs.map +1 -1
  47. package/build/lib/mutationObserver.d.ts +4 -9
  48. package/build/lib/mutationObserver.esm.js +43 -72
  49. package/build/lib/mutationObserver.esm.js.map +1 -1
  50. package/build/lib/mutationObserver.js +43 -74
  51. package/build/lib/mutationObserver.js.map +1 -1
  52. package/build/lib/mutationObserver.mjs +43 -72
  53. package/build/lib/mutationObserver.mjs.map +1 -1
  54. package/build/lib/notifyManager.esm.js +7 -17
  55. package/build/lib/notifyManager.esm.js.map +1 -1
  56. package/build/lib/notifyManager.js +7 -19
  57. package/build/lib/notifyManager.js.map +1 -1
  58. package/build/lib/notifyManager.mjs +7 -17
  59. package/build/lib/notifyManager.mjs.map +1 -1
  60. package/build/lib/onlineManager.d.ts +1 -3
  61. package/build/lib/onlineManager.esm.js +16 -30
  62. package/build/lib/onlineManager.esm.js.map +1 -1
  63. package/build/lib/onlineManager.js +16 -32
  64. package/build/lib/onlineManager.js.map +1 -1
  65. package/build/lib/onlineManager.mjs +16 -30
  66. package/build/lib/onlineManager.mjs.map +1 -1
  67. package/build/lib/queriesObserver.d.ts +3 -10
  68. package/build/lib/queriesObserver.esm.js +47 -71
  69. package/build/lib/queriesObserver.esm.js.map +1 -1
  70. package/build/lib/queriesObserver.js +49 -75
  71. package/build/lib/queriesObserver.js.map +1 -1
  72. package/build/lib/queriesObserver.mjs +47 -71
  73. package/build/lib/queriesObserver.mjs.map +1 -1
  74. package/build/lib/query.d.ts +14 -21
  75. package/build/lib/query.esm.js +140 -194
  76. package/build/lib/query.esm.js.map +1 -1
  77. package/build/lib/query.js +139 -195
  78. package/build/lib/query.js.map +1 -1
  79. package/build/lib/query.mjs +140 -194
  80. package/build/lib/query.mjs.map +1 -1
  81. package/build/lib/queryCache.d.ts +12 -7
  82. package/build/lib/queryCache.esm.js +21 -45
  83. package/build/lib/queryCache.esm.js.map +1 -1
  84. package/build/lib/queryCache.js +20 -46
  85. package/build/lib/queryCache.js.map +1 -1
  86. package/build/lib/queryCache.mjs +21 -45
  87. package/build/lib/queryCache.mjs.map +1 -1
  88. package/build/lib/queryClient.d.ts +18 -46
  89. package/build/lib/queryClient.esm.js +137 -216
  90. package/build/lib/queryClient.esm.js.map +1 -1
  91. package/build/lib/queryClient.js +136 -217
  92. package/build/lib/queryClient.js.map +1 -1
  93. package/build/lib/queryClient.mjs +137 -216
  94. package/build/lib/queryClient.mjs.map +1 -1
  95. package/build/lib/queryObserver.d.ts +4 -29
  96. package/build/lib/queryObserver.esm.js +176 -258
  97. package/build/lib/queryObserver.esm.js.map +1 -1
  98. package/build/lib/queryObserver.js +176 -260
  99. package/build/lib/queryObserver.js.map +1 -1
  100. package/build/lib/queryObserver.mjs +176 -258
  101. package/build/lib/queryObserver.mjs.map +1 -1
  102. package/build/lib/removable.d.ts +3 -3
  103. package/build/lib/removable.esm.js +10 -14
  104. package/build/lib/removable.esm.js.map +1 -1
  105. package/build/lib/removable.js +10 -16
  106. package/build/lib/removable.js.map +1 -1
  107. package/build/lib/removable.mjs +10 -14
  108. package/build/lib/removable.mjs.map +1 -1
  109. package/build/lib/retryer.d.ts +5 -5
  110. package/build/lib/retryer.esm.js +27 -44
  111. package/build/lib/retryer.esm.js.map +1 -1
  112. package/build/lib/retryer.js +27 -46
  113. package/build/lib/retryer.js.map +1 -1
  114. package/build/lib/retryer.mjs +27 -44
  115. package/build/lib/retryer.mjs.map +1 -1
  116. package/build/lib/subscribable.esm.js +4 -7
  117. package/build/lib/subscribable.esm.js.map +1 -1
  118. package/build/lib/subscribable.js +4 -9
  119. package/build/lib/subscribable.js.map +1 -1
  120. package/build/lib/subscribable.mjs +4 -7
  121. package/build/lib/subscribable.mjs.map +1 -1
  122. package/build/lib/tests/utils.d.ts +3 -12
  123. package/build/lib/types.d.ts +111 -99
  124. package/build/lib/utils.d.ts +8 -18
  125. package/build/lib/utils.esm.js +39 -132
  126. package/build/lib/utils.esm.js.map +1 -1
  127. package/build/lib/utils.js +42 -144
  128. package/build/lib/utils.js.map +1 -1
  129. package/build/lib/utils.mjs +39 -132
  130. package/build/lib/utils.mjs.map +1 -1
  131. package/build/umd/index.development.js +868 -1398
  132. package/build/umd/index.development.js.map +1 -1
  133. package/build/umd/index.production.js +1 -1
  134. package/build/umd/index.production.js.map +1 -1
  135. package/package.json +1 -1
  136. package/src/focusManager.ts +17 -24
  137. package/src/index.ts +1 -11
  138. package/src/infiniteQueryBehavior.ts +54 -94
  139. package/src/infiniteQueryObserver.ts +10 -12
  140. package/src/mutation.ts +68 -92
  141. package/src/mutationCache.ts +27 -27
  142. package/src/mutationObserver.ts +60 -97
  143. package/src/onlineManager.ts +14 -14
  144. package/src/queriesObserver.ts +50 -54
  145. package/src/query.ts +106 -110
  146. package/src/queryCache.ts +42 -41
  147. package/src/queryClient.ts +155 -434
  148. package/src/queryObserver.ts +155 -192
  149. package/src/removable.ts +13 -13
  150. package/src/retryer.ts +5 -5
  151. package/src/tests/focusManager.test.tsx +25 -25
  152. package/src/tests/hydration.test.tsx +167 -81
  153. package/src/tests/infiniteQueryBehavior.test.tsx +209 -17
  154. package/src/tests/infiniteQueryObserver.test.tsx +6 -2
  155. package/src/tests/mutationCache.test.tsx +127 -127
  156. package/src/tests/mutationObserver.test.tsx +1 -31
  157. package/src/tests/mutations.test.tsx +62 -43
  158. package/src/tests/onlineManager.test.tsx +12 -4
  159. package/src/tests/queriesObserver.test.tsx +41 -77
  160. package/src/tests/query.test.tsx +175 -243
  161. package/src/tests/queryCache.test.tsx +170 -93
  162. package/src/tests/queryClient.test.tsx +229 -378
  163. package/src/tests/queryObserver.test.tsx +23 -147
  164. package/src/tests/utils.test.tsx +84 -29
  165. package/src/tests/utils.ts +9 -18
  166. package/src/types.ts +187 -140
  167. package/src/utils.ts +31 -124
  168. package/build/lib/logger.d.ts +0 -8
  169. package/build/lib/logger.esm.js +0 -4
  170. package/build/lib/logger.esm.js.map +0 -1
  171. package/build/lib/logger.js +0 -8
  172. package/build/lib/logger.js.map +0 -1
  173. package/build/lib/logger.mjs +0 -4
  174. package/build/lib/logger.mjs.map +0 -1
  175. package/build/lib/logger.native.d.ts +0 -6
  176. package/build/lib/logger.native.esm.js +0 -12
  177. package/build/lib/logger.native.esm.js.map +0 -1
  178. package/build/lib/logger.native.js +0 -16
  179. package/build/lib/logger.native.js.map +0 -1
  180. package/build/lib/logger.native.mjs +0 -12
  181. package/build/lib/logger.native.mjs.map +0 -1
  182. package/src/logger.native.ts +0 -11
  183. package/src/logger.ts +0 -9
@@ -1 +1 @@
1
- {"version":3,"file":"query.mjs","sources":["../../src/query.ts"],"sourcesContent":["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 type { Logger } from './logger'\nimport { defaultLogger } from './logger'\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 logger?: Logger\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 = 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 fetchFailureReason: TError | null\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}\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<TError> {\n type: 'failed'\n failureCount: number\n error: TError\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<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 = 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 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.scheduleGc()\n }\n\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n private setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\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 }\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 if (process.env.NODE_ENV !== 'production') {\n this.logger.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('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: (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 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: 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: '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 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(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 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' : 'loading',\n fetchStatus: 'idle',\n }\n}\n"],"names":["Query","Removable","constructor","config","abortSignalConsumed","defaultOptions","setOptions","options","observers","cache","logger","defaultLogger","queryKey","queryHash","initialState","state","getDefaultState","scheduleGc","meta","updateCacheTime","cacheTime","optionalRemove","length","fetchStatus","remove","setData","newData","data","replaceData","dispatch","type","dataUpdatedAt","updatedAt","manual","setState","setStateOptions","cancel","promise","retryer","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","Array","isArray","process","env","NODE_ENV","error","abortController","getAbortController","queryFnContext","pageParam","undefined","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","fetchFn","reject","context","behavior","onFetch","revertState","fetchMeta","onError","isCancelledError","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","Error","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","action","reducer","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.mjs","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 RegisteredError,\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 = RegisteredError> {\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 = RegisteredError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport interface FetchMeta {\n fetchMore?: { direction: 'forward' | 'backward' }\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: 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 = RegisteredError,\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: 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?.(error, 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\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 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('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: (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(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 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","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","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","action","reducer","fetchFailureCount","fetchFailureReason","canFetch","status","dataUpdateCount","Date","now","revertState","errorUpdateCount","errorUpdatedAt","notifyManager","batch","forEach","onQueryUpdate","initialData","hasData","initialDataUpdatedAt"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  import type { QueryFilters } from './utils';
2
2
  import type { Action, QueryState } from './query';
3
3
  import { Query } from './query';
4
- import type { NotifyEvent, QueryKey, QueryOptions } from './types';
4
+ import type { NotifyEvent, QueryKey, QueryOptions, RegisteredError, WithRequired } from './types';
5
5
  import type { QueryClient } from './queryClient';
6
6
  import { Subscribable } from './subscribable';
7
7
  import type { QueryObserver } from './queryObserver';
8
8
  interface QueryCacheConfig {
9
9
  onError?: (error: unknown, query: Query<unknown, unknown, unknown>) => void;
10
10
  onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void;
11
+ createStore?: () => QueryStore;
11
12
  }
12
13
  interface NotifyEventQueryAdded extends NotifyEvent {
13
14
  type: 'added';
@@ -43,21 +44,25 @@ interface NotifyEventQueryObserverOptionsUpdated extends NotifyEvent {
43
44
  }
44
45
  declare type QueryCacheNotifyEvent = NotifyEventQueryAdded | NotifyEventQueryRemoved | NotifyEventQueryUpdated | NotifyEventQueryObserverAdded | NotifyEventQueryObserverRemoved | NotifyEventQueryObserverResultsUpdated | NotifyEventQueryObserverOptionsUpdated;
45
46
  declare type QueryCacheListener = (event: QueryCacheNotifyEvent) => void;
47
+ export interface QueryStore {
48
+ has: (queryKey: string) => boolean;
49
+ set: (queryKey: string, query: Query) => void;
50
+ get: (queryKey: string) => Query | undefined;
51
+ delete: (queryKey: string) => void;
52
+ values: () => IterableIterator<Query>;
53
+ }
46
54
  export declare class QueryCache extends Subscribable<QueryCacheListener> {
55
+ #private;
47
56
  config: QueryCacheConfig;
48
- private queries;
49
- private queriesMap;
50
57
  constructor(config?: QueryCacheConfig);
51
58
  build<TQueryFnData, TError, TData, TQueryKey extends QueryKey>(client: QueryClient, options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>, state?: QueryState<TData, TError>): Query<TQueryFnData, TError, TData, TQueryKey>;
52
59
  add(query: Query<any, any, any, any>): void;
53
60
  remove(query: Query<any, any, any, any>): void;
54
61
  clear(): void;
55
- get<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryHash: string): Query<TQueryFnData, TError, TData, TQueryKey> | undefined;
62
+ get<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(queryHash: string): Query<TQueryFnData, TError, TData, TQueryKey> | undefined;
56
63
  getAll(): Query[];
57
- find<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(arg1: QueryKey, arg2?: QueryFilters): Query<TQueryFnData, TError, TData> | undefined;
58
- findAll(queryKey?: QueryKey, filters?: QueryFilters): Query[];
64
+ find<TQueryFnData = unknown, TError = RegisteredError, TData = TQueryFnData>(filters: WithRequired<QueryFilters, 'queryKey'>): Query<TQueryFnData, TError, TData> | undefined;
59
65
  findAll(filters?: QueryFilters): Query[];
60
- findAll(arg1?: QueryKey | QueryFilters, arg2?: QueryFilters): Query[];
61
66
  notify(event: QueryCacheNotifyEvent): void;
62
67
  onFocus(): void;
63
68
  onOnline(): void;
@@ -1,28 +1,24 @@
1
- import { hashQueryKeyByOptions, parseFilterArgs, matchQuery } from './utils.esm.js';
1
+ import { hashQueryKeyByOptions, matchQuery } from './utils.esm.js';
2
2
  import { Query } from './query.esm.js';
3
3
  import { notifyManager } from './notifyManager.esm.js';
4
4
  import { Subscribable } from './subscribable.esm.js';
5
5
 
6
6
  // CLASS
7
+
7
8
  class QueryCache extends Subscribable {
8
- constructor(config) {
9
+ #queries;
10
+ constructor(config = {}) {
9
11
  super();
10
- this.config = config || {};
11
- this.queries = [];
12
- this.queriesMap = {};
12
+ this.config = config;
13
+ this.#queries = config.createStore?.() ?? new Map();
13
14
  }
14
-
15
15
  build(client, options, state) {
16
- var _options$queryHash;
17
-
18
16
  const queryKey = options.queryKey;
19
- const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);
17
+ const queryHash = options.queryHash ?? hashQueryKeyByOptions(queryKey, options);
20
18
  let query = this.get(queryHash);
21
-
22
19
  if (!query) {
23
20
  query = new Query({
24
21
  cache: this,
25
- logger: client.getLogger(),
26
22
  queryKey,
27
23
  queryHash,
28
24
  options: client.defaultQueryOptions(options),
@@ -31,70 +27,53 @@ class QueryCache extends Subscribable {
31
27
  });
32
28
  this.add(query);
33
29
  }
34
-
35
30
  return query;
36
31
  }
37
-
38
32
  add(query) {
39
- if (!this.queriesMap[query.queryHash]) {
40
- this.queriesMap[query.queryHash] = query;
41
- this.queries.push(query);
33
+ if (!this.#queries.has(query.queryHash)) {
34
+ this.#queries.set(query.queryHash, query);
42
35
  this.notify({
43
36
  type: 'added',
44
37
  query
45
38
  });
46
39
  }
47
40
  }
48
-
49
41
  remove(query) {
50
- const queryInMap = this.queriesMap[query.queryHash];
51
-
42
+ const queryInMap = this.#queries.get(query.queryHash);
52
43
  if (queryInMap) {
53
44
  query.destroy();
54
- this.queries = this.queries.filter(x => x !== query);
55
-
56
45
  if (queryInMap === query) {
57
- delete this.queriesMap[query.queryHash];
46
+ this.#queries.delete(query.queryHash);
58
47
  }
59
-
60
48
  this.notify({
61
49
  type: 'removed',
62
50
  query
63
51
  });
64
52
  }
65
53
  }
66
-
67
54
  clear() {
68
55
  notifyManager.batch(() => {
69
- this.queries.forEach(query => {
56
+ this.getAll().forEach(query => {
70
57
  this.remove(query);
71
58
  });
72
59
  });
73
60
  }
74
-
75
61
  get(queryHash) {
76
- return this.queriesMap[queryHash];
62
+ return this.#queries.get(queryHash);
77
63
  }
78
-
79
64
  getAll() {
80
- return this.queries;
65
+ return [...this.#queries.values()];
81
66
  }
82
-
83
- find(arg1, arg2) {
84
- const [filters] = parseFilterArgs(arg1, arg2);
85
-
67
+ find(filters) {
86
68
  if (typeof filters.exact === 'undefined') {
87
69
  filters.exact = true;
88
70
  }
89
-
90
- return this.queries.find(query => matchQuery(filters, query));
71
+ return this.getAll().find(query => matchQuery(filters, query));
91
72
  }
92
-
93
- findAll(arg1, arg2) {
94
- const [filters] = parseFilterArgs(arg1, arg2);
95
- return Object.keys(filters).length > 0 ? this.queries.filter(query => matchQuery(filters, query)) : this.queries;
73
+ findAll(filters = {}) {
74
+ const queries = this.getAll();
75
+ return Object.keys(filters).length > 0 ? queries.filter(query => matchQuery(filters, query)) : queries;
96
76
  }
97
-
98
77
  notify(event) {
99
78
  notifyManager.batch(() => {
100
79
  this.listeners.forEach(listener => {
@@ -102,23 +81,20 @@ class QueryCache extends Subscribable {
102
81
  });
103
82
  });
104
83
  }
105
-
106
84
  onFocus() {
107
85
  notifyManager.batch(() => {
108
- this.queries.forEach(query => {
86
+ this.getAll().forEach(query => {
109
87
  query.onFocus();
110
88
  });
111
89
  });
112
90
  }
113
-
114
91
  onOnline() {
115
92
  notifyManager.batch(() => {
116
- this.queries.forEach(query => {
93
+ this.getAll().forEach(query => {
117
94
  query.onOnline();
118
95
  });
119
96
  });
120
97
  }
121
-
122
98
  }
123
99
 
124
100
  export { QueryCache };
@@ -1 +1 @@
1
- {"version":3,"file":"queryCache.esm.js","sources":["../../src/queryCache.ts"],"sourcesContent":["import type { QueryFilters } from './utils'\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils'\nimport type { Action, QueryState } from './query'\nimport { Query } from './query'\nimport type { NotifyEvent, QueryKey, QueryOptions } 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?: (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 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\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 })\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 TQueryKey extends QueryKey = QueryKey,\n >(\n queryHash: string,\n ): Query<TQueryFnData, TError, TData, TQueryKey> | 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"],"names":["QueryCache","Subscribable","constructor","config","queries","queriesMap","build","client","options","state","queryKey","queryHash","hashQueryKeyByOptions","query","get","Query","cache","logger","getLogger","defaultQueryOptions","defaultOptions","getQueryDefaults","add","push","notify","type","remove","queryInMap","destroy","filter","x","clear","notifyManager","batch","forEach","getAll","find","arg1","arg2","filters","parseFilterArgs","exact","matchQuery","findAll","Object","keys","length","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
1
+ {"version":3,"file":"queryCache.esm.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 RegisteredError,\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?: (error: unknown, query: Query<unknown, unknown, unknown>) => void\n onSuccess?: (data: unknown, query: Query<unknown, unknown, unknown>) => void\n createStore?: () => QueryStore\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 = config.createStore?.() ?? 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 = RegisteredError,\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 = RegisteredError, TData = TQueryFnData>(\n filters: WithRequired<QueryFilters, 'queryKey'>,\n ): Query<TQueryFnData, TError, TData> | undefined {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true\n }\n\n return this.getAll().find((query) => matchQuery(filters, query)) as\n | Query<TQueryFnData, TError, TData>\n | 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","createStore","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","exact","matchQuery","findAll","queries","Object","keys","length","filter","event","listeners","listener","onFocus","onOnline"],"mappings":"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"}
@@ -1,32 +1,26 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var utils = require('./utils.js');
6
4
  var query = require('./query.js');
7
5
  var notifyManager = require('./notifyManager.js');
8
6
  var subscribable = require('./subscribable.js');
9
7
 
10
8
  // CLASS
9
+
11
10
  class QueryCache extends subscribable.Subscribable {
12
- constructor(config) {
11
+ #queries;
12
+ constructor(config = {}) {
13
13
  super();
14
- this.config = config || {};
15
- this.queries = [];
16
- this.queriesMap = {};
14
+ this.config = config;
15
+ this.#queries = config.createStore?.() ?? new Map();
17
16
  }
18
-
19
17
  build(client, options, state) {
20
- var _options$queryHash;
21
-
22
18
  const queryKey = options.queryKey;
23
- const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : utils.hashQueryKeyByOptions(queryKey, options);
19
+ const queryHash = options.queryHash ?? utils.hashQueryKeyByOptions(queryKey, options);
24
20
  let query$1 = this.get(queryHash);
25
-
26
21
  if (!query$1) {
27
22
  query$1 = new query.Query({
28
23
  cache: this,
29
- logger: client.getLogger(),
30
24
  queryKey,
31
25
  queryHash,
32
26
  options: client.defaultQueryOptions(options),
@@ -35,70 +29,53 @@ class QueryCache extends subscribable.Subscribable {
35
29
  });
36
30
  this.add(query$1);
37
31
  }
38
-
39
32
  return query$1;
40
33
  }
41
-
42
34
  add(query) {
43
- if (!this.queriesMap[query.queryHash]) {
44
- this.queriesMap[query.queryHash] = query;
45
- this.queries.push(query);
35
+ if (!this.#queries.has(query.queryHash)) {
36
+ this.#queries.set(query.queryHash, query);
46
37
  this.notify({
47
38
  type: 'added',
48
39
  query
49
40
  });
50
41
  }
51
42
  }
52
-
53
43
  remove(query) {
54
- const queryInMap = this.queriesMap[query.queryHash];
55
-
44
+ const queryInMap = this.#queries.get(query.queryHash);
56
45
  if (queryInMap) {
57
46
  query.destroy();
58
- this.queries = this.queries.filter(x => x !== query);
59
-
60
47
  if (queryInMap === query) {
61
- delete this.queriesMap[query.queryHash];
48
+ this.#queries.delete(query.queryHash);
62
49
  }
63
-
64
50
  this.notify({
65
51
  type: 'removed',
66
52
  query
67
53
  });
68
54
  }
69
55
  }
70
-
71
56
  clear() {
72
57
  notifyManager.notifyManager.batch(() => {
73
- this.queries.forEach(query => {
58
+ this.getAll().forEach(query => {
74
59
  this.remove(query);
75
60
  });
76
61
  });
77
62
  }
78
-
79
63
  get(queryHash) {
80
- return this.queriesMap[queryHash];
64
+ return this.#queries.get(queryHash);
81
65
  }
82
-
83
66
  getAll() {
84
- return this.queries;
67
+ return [...this.#queries.values()];
85
68
  }
86
-
87
- find(arg1, arg2) {
88
- const [filters] = utils.parseFilterArgs(arg1, arg2);
89
-
69
+ find(filters) {
90
70
  if (typeof filters.exact === 'undefined') {
91
71
  filters.exact = true;
92
72
  }
93
-
94
- return this.queries.find(query => utils.matchQuery(filters, query));
73
+ return this.getAll().find(query => utils.matchQuery(filters, query));
95
74
  }
96
-
97
- findAll(arg1, arg2) {
98
- const [filters] = utils.parseFilterArgs(arg1, arg2);
99
- return Object.keys(filters).length > 0 ? this.queries.filter(query => utils.matchQuery(filters, query)) : this.queries;
75
+ findAll(filters = {}) {
76
+ const queries = this.getAll();
77
+ return Object.keys(filters).length > 0 ? queries.filter(query => utils.matchQuery(filters, query)) : queries;
100
78
  }
101
-
102
79
  notify(event) {
103
80
  notifyManager.notifyManager.batch(() => {
104
81
  this.listeners.forEach(listener => {
@@ -106,23 +83,20 @@ class QueryCache extends subscribable.Subscribable {
106
83
  });
107
84
  });
108
85
  }
109
-
110
86
  onFocus() {
111
87
  notifyManager.notifyManager.batch(() => {
112
- this.queries.forEach(query => {
88
+ this.getAll().forEach(query => {
113
89
  query.onFocus();
114
90
  });
115
91
  });
116
92
  }
117
-
118
93
  onOnline() {
119
94
  notifyManager.notifyManager.batch(() => {
120
- this.queries.forEach(query => {
95
+ this.getAll().forEach(query => {
121
96
  query.onOnline();
122
97
  });
123
98
  });
124
99
  }
125
-
126
100
  }
127
101
 
128
102
  exports.QueryCache = QueryCache;