@tanstack/query-core 5.102.4 → 5.102.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/legacy/environmentManager.cjs +15 -17
- package/build/legacy/environmentManager.cjs.map +1 -1
- package/build/legacy/environmentManager.d.cts +6 -5
- package/build/legacy/environmentManager.d.cts.map +1 -1
- package/build/legacy/environmentManager.d.ts +6 -5
- package/build/legacy/environmentManager.d.ts.map +1 -1
- package/build/legacy/environmentManager.js +16 -19
- package/build/legacy/environmentManager.js.map +1 -1
- package/build/legacy/{hydration-DFwTM9vM.d.ts → hydration-Bjs0MSgg.d.ts} +3 -4
- package/build/legacy/hydration-Bjs0MSgg.d.ts.map +1 -0
- package/build/legacy/{hydration-BoHd-X9T.d.cts → hydration-DWGr3cFC.d.cts} +3 -4
- package/build/legacy/hydration-DWGr3cFC.d.cts.map +1 -0
- package/build/legacy/hydration.d.cts +1 -1
- package/build/legacy/hydration.d.ts +1 -1
- package/build/legacy/index.d.cts +1 -1
- package/build/legacy/index.d.ts +1 -1
- package/build/legacy/infiniteQueryBehavior.d.cts +1 -1
- package/build/legacy/infiniteQueryBehavior.d.ts +1 -1
- package/build/legacy/infiniteQueryObserver.d.cts +1 -1
- package/build/legacy/infiniteQueryObserver.d.ts +1 -1
- package/build/legacy/mutation.d.cts +1 -1
- package/build/legacy/mutation.d.ts +1 -1
- package/build/legacy/mutationCache.d.cts +1 -1
- package/build/legacy/mutationCache.d.ts +1 -1
- package/build/legacy/mutationObserver.d.cts +1 -1
- package/build/legacy/mutationObserver.d.ts +1 -1
- package/build/legacy/queriesObserver.cjs +2 -6
- package/build/legacy/queriesObserver.cjs.map +1 -1
- package/build/legacy/queriesObserver.d.cts +1 -1
- package/build/legacy/queriesObserver.d.cts.map +1 -1
- package/build/legacy/queriesObserver.d.ts +1 -1
- package/build/legacy/queriesObserver.d.ts.map +1 -1
- package/build/legacy/queriesObserver.js +2 -6
- package/build/legacy/queriesObserver.js.map +1 -1
- package/build/legacy/query.cjs +3 -6
- package/build/legacy/query.cjs.map +1 -1
- package/build/legacy/query.d.cts +1 -1
- package/build/legacy/query.d.ts +1 -1
- package/build/legacy/query.js +4 -7
- package/build/legacy/query.js.map +1 -1
- package/build/legacy/queryCache.d.cts +1 -1
- package/build/legacy/queryCache.d.ts +1 -1
- package/build/legacy/queryClient.cjs +3 -3
- package/build/legacy/queryClient.cjs.map +1 -1
- package/build/legacy/queryClient.d.cts +1 -1
- package/build/legacy/queryClient.d.ts +1 -1
- package/build/legacy/queryClient.js +4 -4
- package/build/legacy/queryClient.js.map +1 -1
- package/build/legacy/queryObserver.cjs +21 -27
- package/build/legacy/queryObserver.cjs.map +1 -1
- package/build/legacy/queryObserver.d.cts +1 -1
- package/build/legacy/queryObserver.d.ts +1 -1
- package/build/legacy/queryObserver.js +23 -29
- package/build/legacy/queryObserver.js.map +1 -1
- package/build/legacy/removable.cjs +1 -1
- package/build/legacy/removable.cjs.map +1 -1
- package/build/legacy/removable.js +2 -2
- package/build/legacy/removable.js.map +1 -1
- package/build/legacy/retryer.cjs +1 -1
- package/build/legacy/retryer.cjs.map +1 -1
- package/build/legacy/retryer.d.cts +1 -1
- package/build/legacy/retryer.d.ts +1 -1
- package/build/legacy/retryer.js +2 -2
- package/build/legacy/retryer.js.map +1 -1
- package/build/legacy/streamedQuery.d.cts +1 -1
- package/build/legacy/streamedQuery.d.ts +1 -1
- package/build/legacy/types.cjs +3 -3
- package/build/legacy/types.cjs.map +1 -1
- package/build/legacy/types.d.cts +1 -1
- package/build/legacy/types.d.ts +1 -1
- package/build/legacy/types.js +3 -3
- package/build/legacy/types.js.map +1 -1
- package/build/legacy/utils.cjs +3 -7
- package/build/legacy/utils.cjs.map +1 -1
- package/build/legacy/utils.d.cts +2 -2
- package/build/legacy/utils.d.ts +2 -2
- package/build/legacy/utils.js +3 -6
- package/build/legacy/utils.js.map +1 -1
- package/build/modern/environmentManager.cjs +15 -17
- package/build/modern/environmentManager.cjs.map +1 -1
- package/build/modern/environmentManager.d.cts +6 -5
- package/build/modern/environmentManager.d.cts.map +1 -1
- package/build/modern/environmentManager.d.ts +6 -5
- package/build/modern/environmentManager.d.ts.map +1 -1
- package/build/modern/environmentManager.js +16 -19
- package/build/modern/environmentManager.js.map +1 -1
- package/build/modern/{hydration-DFwTM9vM.d.ts → hydration-Bjs0MSgg.d.ts} +3 -4
- package/build/modern/hydration-Bjs0MSgg.d.ts.map +1 -0
- package/build/modern/{hydration-BoHd-X9T.d.cts → hydration-DWGr3cFC.d.cts} +3 -4
- package/build/modern/hydration-DWGr3cFC.d.cts.map +1 -0
- package/build/modern/hydration.d.cts +1 -1
- package/build/modern/hydration.d.ts +1 -1
- package/build/modern/index.d.cts +1 -1
- package/build/modern/index.d.ts +1 -1
- package/build/modern/infiniteQueryBehavior.d.cts +1 -1
- package/build/modern/infiniteQueryBehavior.d.ts +1 -1
- package/build/modern/infiniteQueryObserver.d.cts +1 -1
- package/build/modern/infiniteQueryObserver.d.ts +1 -1
- package/build/modern/mutation.d.cts +1 -1
- package/build/modern/mutation.d.ts +1 -1
- package/build/modern/mutationCache.d.cts +1 -1
- package/build/modern/mutationCache.d.ts +1 -1
- package/build/modern/mutationObserver.d.cts +1 -1
- package/build/modern/mutationObserver.d.ts +1 -1
- package/build/modern/queriesObserver.cjs +2 -6
- package/build/modern/queriesObserver.cjs.map +1 -1
- package/build/modern/queriesObserver.d.cts +1 -1
- package/build/modern/queriesObserver.d.cts.map +1 -1
- package/build/modern/queriesObserver.d.ts +1 -1
- package/build/modern/queriesObserver.d.ts.map +1 -1
- package/build/modern/queriesObserver.js +2 -6
- package/build/modern/queriesObserver.js.map +1 -1
- package/build/modern/query.cjs +3 -6
- package/build/modern/query.cjs.map +1 -1
- package/build/modern/query.d.cts +1 -1
- package/build/modern/query.d.ts +1 -1
- package/build/modern/query.js +4 -7
- package/build/modern/query.js.map +1 -1
- package/build/modern/queryCache.d.cts +1 -1
- package/build/modern/queryCache.d.ts +1 -1
- package/build/modern/queryClient.cjs +3 -3
- package/build/modern/queryClient.cjs.map +1 -1
- package/build/modern/queryClient.d.cts +1 -1
- package/build/modern/queryClient.d.ts +1 -1
- package/build/modern/queryClient.js +4 -4
- package/build/modern/queryClient.js.map +1 -1
- package/build/modern/queryObserver.cjs +21 -27
- package/build/modern/queryObserver.cjs.map +1 -1
- package/build/modern/queryObserver.d.cts +1 -1
- package/build/modern/queryObserver.d.ts +1 -1
- package/build/modern/queryObserver.js +23 -29
- package/build/modern/queryObserver.js.map +1 -1
- package/build/modern/removable.cjs +1 -1
- package/build/modern/removable.cjs.map +1 -1
- package/build/modern/removable.js +2 -2
- package/build/modern/removable.js.map +1 -1
- package/build/modern/retryer.cjs +1 -1
- package/build/modern/retryer.cjs.map +1 -1
- package/build/modern/retryer.d.cts +1 -1
- package/build/modern/retryer.d.ts +1 -1
- package/build/modern/retryer.js +2 -2
- package/build/modern/retryer.js.map +1 -1
- package/build/modern/streamedQuery.d.cts +1 -1
- package/build/modern/streamedQuery.d.ts +1 -1
- package/build/modern/types.cjs +3 -3
- package/build/modern/types.cjs.map +1 -1
- package/build/modern/types.d.cts +1 -1
- package/build/modern/types.d.ts +1 -1
- package/build/modern/types.js +3 -3
- package/build/modern/types.js.map +1 -1
- package/build/modern/utils.cjs +3 -7
- package/build/modern/utils.cjs.map +1 -1
- package/build/modern/utils.d.cts +2 -2
- package/build/modern/utils.d.ts +2 -2
- package/build/modern/utils.js +3 -6
- package/build/modern/utils.js.map +1 -1
- package/package.json +1 -1
- package/src/environmentManager.ts +17 -19
- package/src/queriesObserver.ts +2 -7
- package/src/query.ts +8 -12
- package/src/queryClient.ts +4 -4
- package/src/queryObserver.ts +37 -62
- package/src/removable.ts +2 -2
- package/src/retryer.ts +2 -2
- package/src/types.ts +3 -3
- package/src/utils.ts +13 -22
- package/build/legacy/hydration-BoHd-X9T.d.cts.map +0 -1
- package/build/legacy/hydration-DFwTM9vM.d.ts.map +0 -1
- package/build/modern/hydration-BoHd-X9T.d.cts.map +0 -1
- package/build/modern/hydration-DFwTM9vM.d.ts.map +0 -1
|
@@ -9,11 +9,6 @@ function difference(array1, array2) {
|
|
|
9
9
|
const excludeSet = new Set(array2);
|
|
10
10
|
return array1.filter((x) => !excludeSet.has(x));
|
|
11
11
|
}
|
|
12
|
-
function replaceAt(array, index, value) {
|
|
13
|
-
const copy = array.slice(0);
|
|
14
|
-
copy[index] = value;
|
|
15
|
-
return copy;
|
|
16
|
-
}
|
|
17
12
|
var _client = /* @__PURE__ */ new WeakMap();
|
|
18
13
|
var _result = /* @__PURE__ */ new WeakMap();
|
|
19
14
|
var _queries = /* @__PURE__ */ new WeakMap();
|
|
@@ -185,7 +180,8 @@ function _findMatchingObservers(queries) {
|
|
|
185
180
|
function _onUpdate(observer, result) {
|
|
186
181
|
const index = _classPrivateFieldGet2(_observers, this).indexOf(observer);
|
|
187
182
|
if (index !== -1) {
|
|
188
|
-
_classPrivateFieldSet2(_result, this,
|
|
183
|
+
_classPrivateFieldSet2(_result, this, _classPrivateFieldGet2(_result, this).slice());
|
|
184
|
+
_classPrivateFieldGet2(_result, this)[index] = result;
|
|
189
185
|
_assertClassBrand(_QueriesObserver_brand, this, _notify).call(this);
|
|
190
186
|
}
|
|
191
187
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.js","names":[],"sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep, shallowEqualObjects } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n QueryObserverOptions,\n QueryObserverResult,\n} from './types'\nimport type { QueryClient } from './queryClient'\n\nfunction difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {\n const excludeSet = new Set(array2)\n return array1.filter((x) => !excludeSet.has(x))\n}\n\nfunction replaceAt<T>(array: Array<T>, index: number, value: T): Array<T> {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: Array<QueryObserverResult>) => void\n\ntype CombineFn<TCombinedResult> = (\n result: Array<QueryObserverResult>,\n) => TCombinedResult\n\nexport interface QueriesObserverOptions<\n TCombinedResult = Array<QueryObserverResult>,\n> {\n combine?: CombineFn<TCombinedResult>\n}\n\nexport class QueriesObserver<\n TCombinedResult = Array<QueryObserverResult>,\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: Array<QueryObserverResult>\n #queries: Array<QueryObserverOptions>\n #options?: QueriesObserverOptions<TCombinedResult>\n #observers: Array<QueryObserver>\n #combinedResult!: TCombinedResult\n #lastCombine?: CombineFn<TCombinedResult>\n #lastResult?: Array<QueryObserverResult>\n #lastQueryHashes?: Array<string>\n #observerMatches: Array<QueryObserverMatch> = []\n\n constructor(\n client: QueryClient,\n queries: Array<QueryObserverOptions<any, any, any, any, any>>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#options = options\n this.#queries = []\n this.#observers = []\n this.#result = []\n\n this.setQueries(queries)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.size) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: Array<QueryObserverOptions>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ): void {\n this.#queries = queries\n this.#options = options\n\n if (process.env.NODE_ENV !== 'production') {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash,\n )\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n '[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.',\n )\n }\n }\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasLengthChange = prevObservers.length !== newObservers.length\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n const hasStructuralChange = hasLengthChange || hasIndexChange\n\n const hasResultChange = hasStructuralChange\n ? true\n : newResult.some((result, index) => {\n const prev = this.#result[index]\n return !prev || !shallowEqualObjects(result, prev)\n })\n\n if (!hasStructuralChange && !hasResultChange) return\n\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches\n this.#observers = newObservers\n }\n\n this.#result = newResult\n\n if (!this.hasListeners()) return\n\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n\n this.#notify()\n })\n }\n\n getCurrentResult(): Array<QueryObserverResult> {\n return this.#result\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(\n queries: Array<QueryObserverOptions>,\n combine: CombineFn<TCombinedResult> | undefined,\n ): [\n rawResult: Array<QueryObserverResult>,\n combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult,\n trackResult: () => Array<QueryObserverResult>,\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n\n return [\n result,\n (r?: Array<QueryObserverResult>) => {\n return this.#combineResult(r ?? result, combine, queryHashes)\n },\n () => {\n return this.#trackResult(result, matches)\n },\n ]\n }\n\n #trackResult(\n result: Array<QueryObserverResult>,\n matches: Array<QueryObserverMatch>,\n ) {\n const trackedProps = new Set<keyof QueryObserverResult>()\n\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult, (accessedProp) => {\n // track property on all observers to ensure proper (synchronized) tracking (#7000)\n if (!trackedProps.has(accessedProp)) {\n trackedProps.add(accessedProp)\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp)\n })\n }\n })\n : observerResult\n })\n }\n\n #combineResult(\n input: Array<QueryObserverResult>,\n combine: CombineFn<TCombinedResult> | undefined,\n queryHashes?: Array<string>,\n ): TCombinedResult {\n if (combine) {\n const lastHashes = this.#lastQueryHashes\n const queryHashesChanged =\n queryHashes !== undefined &&\n lastHashes !== undefined &&\n (lastHashes.length !== queryHashes.length ||\n queryHashes.some((hash, i) => hash !== lastHashes[i]))\n\n if (\n this.#result !== this.#lastResult ||\n queryHashesChanged ||\n combine !== this.#lastCombine\n ) {\n this.#lastCombine = combine\n this.#lastResult = this.#result\n\n if (queryHashes !== undefined) {\n this.#lastQueryHashes = queryHashes\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input),\n )\n }\n\n return this.#combinedResult\n }\n return input as any\n }\n\n #shouldSkipCombine(): boolean {\n return (\n !this.#options?.combine ||\n this.#observers.some((observer, index) => {\n return (\n observer.options.suspense && this.#result[index]?.data === undefined\n )\n })\n )\n }\n\n #findMatchingObservers(\n queries: Array<QueryObserverOptions>,\n ): Array<QueryObserverMatch> {\n const prevObserversMap = new Map<string, Array<QueryObserver>>()\n\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash\n if (!key) return\n\n const previousObservers = prevObserversMap.get(key)\n\n if (previousObservers) {\n previousObservers.push(observer)\n } else {\n prevObserversMap.set(key, [observer])\n }\n })\n\n const observers: Array<QueryObserverMatch> = []\n\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift()\n const observer =\n match ?? new QueryObserver(this.#client, defaultedOptions)\n\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer,\n })\n })\n\n return observers\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#result = replaceAt(this.#result, index, result)\n this.#notify()\n }\n }\n\n #notify(): void {\n if (this.hasListeners()) {\n const shouldSkipCombine = this.#shouldSkipCombine()\n const previousResult = this.#combinedResult\n const newResult = shouldSkipCombine\n ? previousResult\n : this.#combineResult(\n this.#trackResult(this.#result, this.#observerMatches),\n this.#options?.combine,\n )\n\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n }\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.js","names":[],"sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep, shallowEqualObjects } from './utils'\nimport type {\n DefaultedQueryObserverOptions,\n QueryObserverOptions,\n QueryObserverResult,\n} from './types'\nimport type { QueryClient } from './queryClient'\n\nfunction difference<T>(array1: Array<T>, array2: Array<T>): Array<T> {\n const excludeSet = new Set(array2)\n return array1.filter((x) => !excludeSet.has(x))\n}\n\ntype QueriesObserverListener = (result: Array<QueryObserverResult>) => void\n\ntype CombineFn<TCombinedResult> = (\n result: Array<QueryObserverResult>,\n) => TCombinedResult\n\nexport interface QueriesObserverOptions<\n TCombinedResult = Array<QueryObserverResult>,\n> {\n combine?: CombineFn<TCombinedResult>\n}\n\nexport class QueriesObserver<\n TCombinedResult = Array<QueryObserverResult>,\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: Array<QueryObserverResult>\n #queries: Array<QueryObserverOptions>\n #options?: QueriesObserverOptions<TCombinedResult>\n #observers: Array<QueryObserver>\n #combinedResult!: TCombinedResult\n #lastCombine?: CombineFn<TCombinedResult>\n #lastResult?: Array<QueryObserverResult>\n #lastQueryHashes?: Array<string>\n #observerMatches: Array<QueryObserverMatch> = []\n\n constructor(\n client: QueryClient,\n queries: Array<QueryObserverOptions<any, any, any, any, any>>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#options = options\n this.#queries = []\n this.#observers = []\n this.#result = []\n\n this.setQueries(queries)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.size) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: Array<QueryObserverOptions>,\n options?: QueriesObserverOptions<TCombinedResult>,\n ): void {\n this.#queries = queries\n this.#options = options\n\n if (process.env.NODE_ENV !== 'production') {\n const queryHashes = queries.map(\n (query) => this.#client.defaultQueryOptions(query).queryHash,\n )\n if (new Set(queryHashes).size !== queryHashes.length) {\n console.warn(\n '[QueriesObserver]: Duplicate Queries found. This might result in unexpected behavior.',\n )\n }\n }\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasLengthChange = prevObservers.length !== newObservers.length\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n const hasStructuralChange = hasLengthChange || hasIndexChange\n\n const hasResultChange = hasStructuralChange\n ? true\n : newResult.some((result, index) => {\n const prev = this.#result[index]\n return !prev || !shallowEqualObjects(result, prev)\n })\n\n if (!hasStructuralChange && !hasResultChange) return\n\n if (hasStructuralChange) {\n this.#observerMatches = newObserverMatches\n this.#observers = newObservers\n }\n\n this.#result = newResult\n\n if (!this.hasListeners()) return\n\n if (hasStructuralChange) {\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n\n this.#notify()\n })\n }\n\n getCurrentResult(): Array<QueryObserverResult> {\n return this.#result\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(\n queries: Array<QueryObserverOptions>,\n combine: CombineFn<TCombinedResult> | undefined,\n ): [\n rawResult: Array<QueryObserverResult>,\n combineResult: (r?: Array<QueryObserverResult>) => TCombinedResult,\n trackResult: () => Array<QueryObserverResult>,\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n const queryHashes = matches.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n\n return [\n result,\n (r?: Array<QueryObserverResult>) => {\n return this.#combineResult(r ?? result, combine, queryHashes)\n },\n () => {\n return this.#trackResult(result, matches)\n },\n ]\n }\n\n #trackResult(\n result: Array<QueryObserverResult>,\n matches: Array<QueryObserverMatch>,\n ) {\n const trackedProps = new Set<keyof QueryObserverResult>()\n\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult, (accessedProp) => {\n // track property on all observers to ensure proper (synchronized) tracking (#7000)\n if (!trackedProps.has(accessedProp)) {\n trackedProps.add(accessedProp)\n matches.forEach((m) => {\n m.observer.trackProp(accessedProp)\n })\n }\n })\n : observerResult\n })\n }\n\n #combineResult(\n input: Array<QueryObserverResult>,\n combine: CombineFn<TCombinedResult> | undefined,\n queryHashes?: Array<string>,\n ): TCombinedResult {\n if (combine) {\n const lastHashes = this.#lastQueryHashes\n const queryHashesChanged =\n queryHashes !== undefined &&\n lastHashes !== undefined &&\n (lastHashes.length !== queryHashes.length ||\n queryHashes.some((hash, i) => hash !== lastHashes[i]))\n\n if (\n this.#result !== this.#lastResult ||\n queryHashesChanged ||\n combine !== this.#lastCombine\n ) {\n this.#lastCombine = combine\n this.#lastResult = this.#result\n\n if (queryHashes !== undefined) {\n this.#lastQueryHashes = queryHashes\n }\n this.#combinedResult = replaceEqualDeep(\n this.#combinedResult,\n combine(input),\n )\n }\n\n return this.#combinedResult\n }\n return input as any\n }\n\n #shouldSkipCombine(): boolean {\n return (\n !this.#options?.combine ||\n this.#observers.some((observer, index) => {\n return (\n observer.options.suspense && this.#result[index]?.data === undefined\n )\n })\n )\n }\n\n #findMatchingObservers(\n queries: Array<QueryObserverOptions>,\n ): Array<QueryObserverMatch> {\n const prevObserversMap = new Map<string, Array<QueryObserver>>()\n\n this.#observers.forEach((observer) => {\n const key = observer.options.queryHash\n if (!key) return\n\n const previousObservers = prevObserversMap.get(key)\n\n if (previousObservers) {\n previousObservers.push(observer)\n } else {\n prevObserversMap.set(key, [observer])\n }\n })\n\n const observers: Array<QueryObserverMatch> = []\n\n queries.forEach((options) => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const match = prevObserversMap.get(defaultedOptions.queryHash)?.shift()\n const observer =\n match ?? new QueryObserver(this.#client, defaultedOptions)\n\n observers.push({\n defaultedQueryOptions: defaultedOptions,\n observer,\n })\n })\n\n return observers\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#result = this.#result.slice()\n this.#result[index] = result\n this.#notify()\n }\n }\n\n #notify(): void {\n if (this.hasListeners()) {\n const shouldSkipCombine = this.#shouldSkipCombine()\n const previousResult = this.#combinedResult\n const newResult = shouldSkipCombine\n ? previousResult\n : this.#combineResult(\n this.#trackResult(this.#result, this.#observerMatches),\n this.#options?.combine,\n )\n\n if (shouldSkipCombine || previousResult !== newResult) {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n }\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"mappings":"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"}
|
package/build/legacy/query.cjs
CHANGED
|
@@ -102,7 +102,7 @@ var Query = class extends require_removable.Removable {
|
|
|
102
102
|
this.setState(this.resetState);
|
|
103
103
|
}
|
|
104
104
|
isActive() {
|
|
105
|
-
return this.observers.some((observer) => require_utils.
|
|
105
|
+
return this.observers.some((observer) => require_utils.resolveQueryValue(observer.options.enabled, this) !== false);
|
|
106
106
|
}
|
|
107
107
|
isDisabled() {
|
|
108
108
|
if (this.getObserversCount() > 0) return !this.isActive();
|
|
@@ -112,7 +112,7 @@ var Query = class extends require_removable.Removable {
|
|
|
112
112
|
return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;
|
|
113
113
|
}
|
|
114
114
|
isStatic() {
|
|
115
|
-
if (this.getObserversCount() > 0) return this.observers.some((observer) => require_utils.
|
|
115
|
+
if (this.getObserversCount() > 0) return this.observers.some((observer) => require_utils.resolveQueryValue(observer.options.staleTime, this) === "static");
|
|
116
116
|
return false;
|
|
117
117
|
}
|
|
118
118
|
isStale() {
|
|
@@ -154,7 +154,7 @@ var Query = class extends require_removable.Removable {
|
|
|
154
154
|
this.observers.splice(index, 1);
|
|
155
155
|
if (!this.observers.length) {
|
|
156
156
|
if (require_classPrivateFieldSet2._classPrivateFieldGet2(_retryer, this)) {
|
|
157
|
-
if (require_classPrivateFieldSet2._classPrivateFieldGet2(_abortSignalConsumed, this) ||
|
|
157
|
+
if (require_classPrivateFieldSet2._classPrivateFieldGet2(_abortSignalConsumed, this) || this.state.fetchStatus === "paused" && this.state.status === "pending") require_classPrivateFieldSet2._classPrivateFieldGet2(_retryer, this).cancel({ revert: true });
|
|
158
158
|
else require_classPrivateFieldSet2._classPrivateFieldGet2(_retryer, this).cancelRetry();
|
|
159
159
|
}
|
|
160
160
|
this.scheduleGc();
|
|
@@ -299,9 +299,6 @@ var Query = class extends require_removable.Removable {
|
|
|
299
299
|
}
|
|
300
300
|
}
|
|
301
301
|
};
|
|
302
|
-
function _isInitialPausedFetch() {
|
|
303
|
-
return this.state.fetchStatus === "paused" && this.state.status === "pending";
|
|
304
|
-
}
|
|
305
302
|
function _dispatch(action) {
|
|
306
303
|
const reducer = (state) => {
|
|
307
304
|
switch (action.type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.cjs","names":["Removable","replaceData","noop","resolveQueryBoolean","skipToken","resolveStaleTime","timeUntilStale","ensureQueryFn","infiniteQueryBehavior","createRetryer","CancelledError","canFetch"],"sources":["../../src/query.ts"],"sourcesContent":["import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { CancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { QueryCache } from './queryCache'\nimport type { QueryClient } from './queryClient'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n StaleTime,\n} from './types'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n client: QueryClient\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 client: QueryClient\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 query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\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}\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\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 #queryType?: 'infinite'\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #client: QueryClient\n #retryer?: Retryer<TData>\n observers: Array<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.#client = config.client\n this.#cache = this.#client.getQueryCache()\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get queryType() {\n return this.#queryType\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n if (options?._type) {\n this.#queryType = options._type\n }\n\n this.updateGcTime(this.options.gcTime)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.state && this.state.data === undefined) {\n const defaultState = getDefaultState(this.options)\n if (defaultState.data !== undefined) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt),\n )\n this.#initialState = defaultState\n }\n }\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(state: Partial<QueryState<TData, TError>>): void {\n this.#dispatch({ type: 'setState', state })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.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 get resetState(): QueryState<TData, TError> {\n return this.#initialState\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.resetState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) =>\n resolveQueryBoolean(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return this.options.queryFn === skipToken || !this.isFetched()\n }\n\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0\n }\n\n isStatic(): boolean {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) =>\n resolveStaleTime(observer.options.staleTime, this) === 'static',\n )\n }\n\n return false\n }\n\n isStale(): boolean {\n // check observers first, their `isStale` has the source of truth\n // calculated with `isStaleByTime` and it takes `enabled` into account\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined || this.state.isInvalidated\n }\n\n isStaleByTime(staleTime: StaleTime = 0): boolean {\n // no data is always stale\n if (this.state.data === undefined) {\n return true\n }\n // static is never stale\n if (staleTime === 'static') {\n return false\n }\n // if the query is invalidated, it is stale\n if (this.state.isInvalidated) {\n return true\n }\n\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime)\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.includes(observer)) {\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 const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.observers.splice(index, 1)\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 || this.#isInitialPausedFetch()) {\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 #isInitialPausedFetch(): boolean {\n return (\n this.state.fetchStatus === 'paused' && this.state.status === 'pending'\n )\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n async fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== 'rejected'\n ) {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\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.#retryer.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 // 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 // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const createQueryFnContext = (): QueryFunctionContext<TQueryKey> => {\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta,\n }\n addSignalProperty(queryFnContext)\n return queryFnContext as QueryFunctionContext<TQueryKey>\n }\n\n const queryFnContext = createQueryFnContext()\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const createFetchContext = (): FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n > => {\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n return context as FetchContext<TQueryFnData, TError, TData, TQueryKey>\n }\n\n const context = createFetchContext()\n\n const behavior =\n this.#queryType === 'infinite'\n ? (infiniteQueryBehavior(\n (this.options as { pages?: number }).pages,\n ) as QueryBehavior<TQueryFnData, TError, TData, TQueryKey>)\n : this.options.behavior\n behavior?.onFetch(context, this as unknown as Query)\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 // Try to fetch the data\n const retryer = (this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: 'idle' as const,\n })\n }\n abortController.abort()\n },\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 canRun: () => true,\n }))\n\n try {\n const data = await retryer.start()\n // this is more of a runtime guard\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (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 throw new Error(`${this.queryHash} data is undefined`)\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 return data\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n // silent cancellation implies a new fetch is going to be started,\n // so we piggyback onto that promise\n return this.#retryer.promise\n } else if (error.revert) {\n // transform error into reverted state data\n // if the initial fetch was cancelled, we have no data, so we have\n // to get reject with a CancelledError\n if (this.state.data === undefined) {\n throw error\n }\n return this.state.data\n }\n }\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n\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 throw error // rethrow the error for further handling\n } finally {\n // The settled retryer's promise would otherwise pin this fetch's raw\n // result (a second copy after structural sharing) for the query's lifetime\n if (this.#retryer === retryer) {\n this.#retryer = undefined\n }\n // Schedule query gc after fetching\n this.scheduleGc()\n }\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 ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...(!action.manual && {\n fetchStatus: 'idle' as const,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n // If fetching ends successfully, we don't need revertState as a fallback anymore.\n // For manual updates, capture the state to revert to it in case of a cancellation.\n this.#revertState = action.manual ? newState : undefined\n\n return newState\n case 'error':\n const error = action.error\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true,\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 // Keep the current iteration stable if an observer unsubscribes\n // synchronously while it is being notified.\n this.observers.slice().forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction successState<TData>(data: TData | undefined, dataUpdatedAt?: number) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success' as const,\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 = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? options.initialDataUpdatedAt()\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.cjs","names":["Removable","replaceData","noop","resolveQueryValue","skipToken","timeUntilStale","ensureQueryFn","infiniteQueryBehavior","createRetryer","CancelledError","canFetch"],"sources":["../../src/query.ts"],"sourcesContent":["import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryValue,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { CancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { QueryCache } from './queryCache'\nimport type { QueryClient } from './queryClient'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n StaleTime,\n} from './types'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n client: QueryClient\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 client: QueryClient\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 query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\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}\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\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 #queryType?: 'infinite'\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #client: QueryClient\n #retryer?: Retryer<TData>\n observers: Array<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.#client = config.client\n this.#cache = this.#client.getQueryCache()\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get queryType() {\n return this.#queryType\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n if (options?._type) {\n this.#queryType = options._type\n }\n\n this.updateGcTime(this.options.gcTime)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.state && this.state.data === undefined) {\n const defaultState = getDefaultState(this.options)\n if (defaultState.data !== undefined) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt),\n )\n this.#initialState = defaultState\n }\n }\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(state: Partial<QueryState<TData, TError>>): void {\n this.#dispatch({ type: 'setState', state })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.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 get resetState(): QueryState<TData, TError> {\n return this.#initialState\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.resetState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) => resolveQueryValue(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return this.options.queryFn === skipToken || !this.isFetched()\n }\n\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0\n }\n\n isStatic(): boolean {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) =>\n resolveQueryValue(observer.options.staleTime, this) === 'static',\n )\n }\n\n return false\n }\n\n isStale(): boolean {\n // check observers first, their `isStale` has the source of truth\n // calculated with `isStaleByTime` and it takes `enabled` into account\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined || this.state.isInvalidated\n }\n\n isStaleByTime(staleTime: StaleTime = 0): boolean {\n // no data is always stale\n if (this.state.data === undefined) {\n return true\n }\n // static is never stale\n if (staleTime === 'static') {\n return false\n }\n // if the query is invalidated, it is stale\n if (this.state.isInvalidated) {\n return true\n }\n\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime)\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.includes(observer)) {\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 const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.observers.splice(index, 1)\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 (\n this.#abortSignalConsumed ||\n (this.state.fetchStatus === 'paused' &&\n this.state.status === 'pending')\n ) {\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 async fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== 'rejected'\n ) {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\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.#retryer.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 // 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 // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const createQueryFnContext = (): QueryFunctionContext<TQueryKey> => {\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta,\n }\n addSignalProperty(queryFnContext)\n return queryFnContext as QueryFunctionContext<TQueryKey>\n }\n\n const queryFnContext = createQueryFnContext()\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const createFetchContext = (): FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n > => {\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n return context as FetchContext<TQueryFnData, TError, TData, TQueryKey>\n }\n\n const context = createFetchContext()\n\n const behavior =\n this.#queryType === 'infinite'\n ? (infiniteQueryBehavior(\n (this.options as { pages?: number }).pages,\n ) as QueryBehavior<TQueryFnData, TError, TData, TQueryKey>)\n : this.options.behavior\n behavior?.onFetch(context, this as unknown as Query)\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 // Try to fetch the data\n const retryer = (this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: 'idle' as const,\n })\n }\n abortController.abort()\n },\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 canRun: () => true,\n }))\n\n try {\n const data = await retryer.start()\n // this is more of a runtime guard\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (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 throw new Error(`${this.queryHash} data is undefined`)\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 return data\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n // silent cancellation implies a new fetch is going to be started,\n // so we piggyback onto that promise\n return this.#retryer.promise\n } else if (error.revert) {\n // transform error into reverted state data\n // if the initial fetch was cancelled, we have no data, so we have\n // to get reject with a CancelledError\n if (this.state.data === undefined) {\n throw error\n }\n return this.state.data\n }\n }\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n\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 throw error // rethrow the error for further handling\n } finally {\n // The settled retryer's promise would otherwise pin this fetch's raw\n // result (a second copy after structural sharing) for the query's lifetime\n if (this.#retryer === retryer) {\n this.#retryer = undefined\n }\n // Schedule query gc after fetching\n this.scheduleGc()\n }\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 ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...(!action.manual && {\n fetchStatus: 'idle' as const,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n // If fetching ends successfully, we don't need revertState as a fallback anymore.\n // For manual updates, capture the state to revert to it in case of a cancellation.\n this.#revertState = action.manual ? newState : undefined\n\n return newState\n case 'error':\n const error = action.error\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true,\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 // Keep the current iteration stable if an observer unsubscribes\n // synchronously while it is being notified.\n this.observers.slice().forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction successState<TData>(data: TData | undefined, dataUpdatedAt?: number) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success' as const,\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 = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? options.initialDataUpdatedAt()\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"],"mappings":";;;;;;;;;;;;;;;;;;AAyJA,IAAa,QAAb,cAKUA,kBAAAA,UAAU;CAgBlB,YAAY,QAA6D;EACvE,MAAM;;;;;;;;;;EAEN,8BAAA,uBAAA,sBAAA,MAA4B,KAAA;EAC5B,8BAAA,uBAAA,iBAAA,MAAuB,OAAO,cAAA;EAC9B,KAAK,WAAW,OAAO,OAAO;EAC9B,KAAK,YAAY,CAAC;EAClB,8BAAA,uBAAA,SAAA,MAAe,OAAO,MAAA;EACtB,8BAAA,uBAAA,QAAA,MAAA,8BAAA,uBAAA,SAAc,IAAA,CAAA,CAAa,cAAc,CAAA;EACzC,KAAK,WAAW,OAAO;EACvB,KAAK,YAAY,OAAO;EACxB,8BAAA,uBAAA,eAAA,MAAqB,gBAAgB,KAAK,OAAO,CAAA;EACjD,KAAK,QAAQ,OAAO,SAAA,8BAAA,uBAAA,eAAS,IAAA;EAC7B,KAAK,WAAW;CAClB;CACA,IAAI,OAA8B;EAChC,OAAO,KAAK,QAAQ;CACtB;CAEA,IAAI,YAAY;EACd,OAAA,8BAAA,uBAAA,YAAO,IAAA;CACT;CAEA,IAAI,UAAsC;;EACxC,QAAA,2BAAA,8BAAA,uBAAA,UAAO,IAAA,OAAA,QAAA,6BAAA,KAAA,IAAA,KAAA,IAAA,yBAAe;CACxB;CAEA,WACE,SACM;EACN,KAAK,UAAU;GAAE,GAAA,8BAAA,uBAAA,iBAAG,IAAA;GAAsB,GAAG;EAAQ;EAErD,IAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAI,QAAS,OACX,8BAAA,uBAAA,YAAA,MAAkB,QAAQ,KAAA;EAG5B,KAAK,aAAa,KAAK,QAAQ,MAAM;EAGrC,IAAI,KAAK,SAAS,KAAK,MAAM,SAAS,KAAA,GAAW;GAC/C,MAAM,eAAe,gBAAgB,KAAK,OAAO;GACjD,IAAI,aAAa,SAAS,KAAA,GAAW;IACnC,KAAK,SACH,aAAa,aAAa,MAAM,aAAa,aAAa,CAC5D;IACA,8BAAA,uBAAA,eAAA,MAAqB,YAAA;GACvB;EACF;CACF;CAEA,iBAA2B;EACzB,IAAI,CAAC,KAAK,UAAU,UAAU,KAAK,MAAM,gBAAgB,QACvD,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAO,IAAI;CAE3B;CAEA,QACE,SACA,SACO;EACP,MAAM,OAAOC,cAAAA,YAAY,KAAK,MAAM,MAAM,SAAS,KAAK,OAAO;EAG/D,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe;GACb;GACA,MAAM;GACN,eAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAe,QAAS;GACxB,QAAA,YAAA,QAAA,YAAA,KAAA,IAAA,KAAA,IAAQ,QAAS;EACnB,CAAC;EAED,OAAO;CACT;CAEA,SAAS,OAAiD;EACxD,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe;GAAE,MAAM;GAAY;EAAM,CAAC;CAC5C;CAEA,OAAO,SAAwC;;EAC7C,MAAM,WAAA,yBAAA,8BAAA,uBAAA,UAAU,IAAA,OAAA,QAAA,2BAAA,KAAA,IAAA,KAAA,IAAA,uBAAe;EAC/B,CAAA,yBAAA,8BAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,2BAAA,KAAA,KAAA,uBAAe,OAAO,OAAO;EAC7B,OAAO,UAAU,QAAQ,KAAKC,cAAAA,IAAI,CAAC,CAAC,MAAMA,cAAAA,IAAI,IAAI,QAAQ,QAAQ;CACpE;CAEA,UAAgB;EACd,MAAM,QAAQ;EAEd,KAAK,OAAO,EAAE,QAAQ,KAAK,CAAC;CAC9B;CAEA,IAAI,aAAwC;EAC1C,OAAA,8BAAA,uBAAA,eAAO,IAAA;CACT;CAEA,QAAc;EACZ,KAAK,QAAQ;EACb,KAAK,SAAS,KAAK,UAAU;CAC/B;CAEA,WAAoB;EAClB,OAAO,KAAK,UAAU,MACnB,aAAaC,cAAAA,kBAAkB,SAAS,QAAQ,SAAS,IAAI,MAAM,KACtE;CACF;CAEA,aAAsB;EACpB,IAAI,KAAK,kBAAkB,IAAI,GAC7B,OAAO,CAAC,KAAK,SAAS;EAGxB,OAAO,KAAK,QAAQ,YAAYC,cAAAA,aAAa,CAAC,KAAK,UAAU;CAC/D;CAEA,YAAY;EACV,OAAO,KAAK,MAAM,kBAAkB,KAAK,MAAM,mBAAmB;CACpE;CAEA,WAAoB;EAClB,IAAI,KAAK,kBAAkB,IAAI,GAC7B,OAAO,KAAK,UAAU,MACnB,aACCD,cAAAA,kBAAkB,SAAS,QAAQ,WAAW,IAAI,MAAM,QAC5D;EAGF,OAAO;CACT;CAEA,UAAmB;EAGjB,IAAI,KAAK,kBAAkB,IAAI,GAC7B,OAAO,KAAK,UAAU,MACnB,aAAa,SAAS,iBAAiB,CAAC,CAAC,OAC5C;EAGF,OAAO,KAAK,MAAM,SAAS,KAAA,KAAa,KAAK,MAAM;CACrD;CAEA,cAAc,YAAuB,GAAY;EAE/C,IAAI,KAAK,MAAM,SAAS,KAAA,GACtB,OAAO;EAGT,IAAI,cAAc,UAChB,OAAO;EAGT,IAAI,KAAK,MAAM,eACb,OAAO;EAGT,OAAO,CAACE,cAAAA,eAAe,KAAK,MAAM,eAAe,SAAS;CAC5D;CAEA,UAAgB;;EACd,MAAM,WAAW,KAAK,UAAU,MAAM,MAAM,EAAE,yBAAyB,CAAC;EAExE,aAAA,QAAA,aAAA,KAAA,KAAA,SAAU,QAAQ,EAAE,eAAe,MAAM,CAAC;EAG1C,CAAA,yBAAA,8BAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,2BAAA,KAAA,KAAA,uBAAe,SAAS;CAC1B;CAEA,WAAiB;;EACf,MAAM,WAAW,KAAK,UAAU,MAAM,MAAM,EAAE,uBAAuB,CAAC;EAEtE,aAAA,QAAA,aAAA,KAAA,KAAA,SAAU,QAAQ,EAAE,eAAe,MAAM,CAAC;EAG1C,CAAA,yBAAA,8BAAA,uBAAA,UAAA,IAAA,OAAA,QAAA,2BAAA,KAAA,KAAA,uBAAe,SAAS;CAC1B;CAEA,YAAY,UAAwD;EAClE,IAAI,CAAC,KAAK,UAAU,SAAS,QAAQ,GAAG;GACtC,KAAK,UAAU,KAAK,QAAQ;GAG5B,KAAK,eAAe;GAEpB,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAO;IAAE,MAAM;IAAiB,OAAO;IAAM;GAAS,CAAC;EACrE;CACF;CAEA,eAAe,UAAwD;EACrE,MAAM,QAAQ,KAAK,UAAU,QAAQ,QAAQ;EAC7C,IAAI,UAAU,IAAI;GAChB,KAAK,UAAU,OAAO,OAAO,CAAC;GAE9B,IAAI,CAAC,KAAK,UAAU,QAAQ;IAG1B,IAAA,8BAAA,uBAAA,UAAI,IAAA,GAAe;KACjB,IAAA,8BAAA,uBAAA,sBACE,IAAA,KACC,KAAK,MAAM,gBAAgB,YAC1B,KAAK,MAAM,WAAW,WAExB,8BAAA,uBAAA,UAAA,IAAA,CAAA,CAAc,OAAO,EAAE,QAAQ,KAAK,CAAC;UAErC,8BAAA,uBAAA,UAAA,IAAA,CAAA,CAAc,YAAY;IAE9B;IAEA,KAAK,WAAW;GAClB;GAEA,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAO;IAAE,MAAM;IAAmB,OAAO;IAAM;GAAS,CAAC;EACvE;CACF;CAEA,oBAA4B;EAC1B,OAAO,KAAK,UAAU;CACxB;CAEA,aAAmB;EACjB,IAAI,CAAC,KAAK,MAAM,eACd,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe,EAAE,MAAM,aAAa,CAAC;CAEzC;CAEA,MAAM,MACJ,SACA,cACgB;;EAChB,IACE,KAAK,MAAM,gBAAgB,YAAA,yBAAA,8BAAA,uBAAA,UAI3B,IAAA,OAAA,QAAA,2BAAA,KAAA,IAAA,KAAA,IAAA,uBAAe,OAAO,OAAM,YAC5B;GACA,IAAI,KAAK,MAAM,SAAS,KAAA,MAAA,iBAAA,QAAA,iBAAA,KAAA,IAAA,KAAA,IAAa,aAAc,gBAEjD,KAAK,OAAO,EAAE,QAAQ,KAAK,CAAC;QACvB,IAAA,8BAAA,uBAAA,UAAI,IAAA,GAAe;IAExB,8BAAA,uBAAA,UAAA,IAAA,CAAA,CAAc,cAAc;IAE5B,OAAA,8BAAA,uBAAA,UAAO,IAAA,CAAA,CAAc;GACvB;EACF;EAGA,IAAI,SACF,KAAK,WAAW,OAAO;EAKzB,IAAI,CAAC,KAAK,QAAQ,SAAS;GACzB,MAAM,WAAW,KAAK,UAAU,MAAM,MAAM,EAAE,QAAQ,OAAO;GAC7D,IAAI,UACF,KAAK,WAAW,SAAS,OAAO;EAEpC;EAEA,IAAI,QAAQ,IAAI,aAAa,cACvB;OAAA,CAAC,MAAM,QAAQ,KAAK,QAAQ,QAAQ,GACtC,QAAQ,MACN,qIACF;EAAA;EAIJ,MAAM,kBAAkB,IAAI,gBAAgB;EAK5C,MAAM,qBAAqB,WAAoB;GAC7C,OAAO,eAAe,QAAQ,UAAU;IACtC,YAAY;IACZ,WAAW;KACT,8BAAA,uBAAA,sBAAA,MAA4B,IAAA;KAC5B,OAAO,gBAAgB;IACzB;GACF,CAAC;EACH;EAGA,MAAM,gBAAgB;GACpB,MAAM,UAAUC,cAAAA,cAAc,KAAK,SAAS,YAAY;GAGxD,MAAM,6BAA8D;IAClE,MAAM,iBAGF;KACF,QAAA,8BAAA,uBAAA,SAAQ,IAAA;KACR,UAAU,KAAK;KACf,MAAM,KAAK;IACb;IACA,kBAAkB,cAAc;IAChC,OAAO;GACT;GAEA,MAAM,iBAAiB,qBAAqB;GAE5C,8BAAA,uBAAA,sBAAA,MAA4B,KAAA;GAC5B,IAAI,KAAK,QAAQ,WACf,OAAO,KAAK,QAAQ,UAClB,SACA,gBACA,IACF;GAGF,OAAO,QAAQ,cAAc;EAC/B;EAGA,MAAM,2BAKD;GACH,MAAM,UAGF;IACF;IACA,SAAS,KAAK;IACd,UAAU,KAAK;IACf,QAAA,8BAAA,uBAAA,SAAQ,IAAA;IACR,OAAO,KAAK;IACZ;GACF;GAEA,kBAAkB,OAAO;GACzB,OAAO;EACT;EAEA,MAAM,UAAU,mBAAmB;EAEnC,MAAM,WAAA,8BAAA,uBAAA,YACJ,IAAA,MAAoB,aACfC,8BAAAA,sBACE,KAAK,QAA+B,KACvC,IACA,KAAK,QAAQ;EACnB,aAAA,QAAA,aAAA,KAAA,KAAA,SAAU,QAAQ,SAAS,IAAwB;EAGnD,8BAAA,uBAAA,cAAA,MAAoB,KAAK,KAAA;EAGzB,IACE,KAAK,MAAM,gBAAgB,UAC3B,KAAK,MAAM,gBAAA,wBAAc,QAAQ,kBAAA,QAAA,0BAAA,KAAA,IAAA,KAAA,IAAA,sBAAc,OAC/C;;GACA,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe;IAAE,MAAM;IAAS,OAAA,yBAAM,QAAQ,kBAAA,QAAA,2BAAA,KAAA,IAAA,KAAA,IAAA,uBAAc;GAAK,CAAC;EACpE;EAGA,MAAM,UAAA,8BAAA,uBAAA,UAAW,MAAgBC,gBAAAA,cAAc;GAC7C,gBAAA,iBAAA,QAAA,iBAAA,KAAA,IAAA,KAAA,IAAgB,aAAc;GAG9B,IAAI,QAAQ;GACZ,WAAW,UAAU;IACnB,IAAI,iBAAiBC,gBAAAA,kBAAkB,MAAM,QAC3C,KAAK,SAAS;KACZ,GAAA,8BAAA,uBAAA,cAAG,IAAA;KACH,aAAa;IACf,CAAC;IAEH,gBAAgB,MAAM;GACxB;GACA,SAAS,cAAc,UAAU;IAC/B,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe;KAAE,MAAM;KAAU;KAAc;IAAM,CAAC;GACxD;GACA,eAAe;IACb,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe,EAAE,MAAM,QAAQ,CAAC;GAClC;GACA,kBAAkB;IAChB,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe,EAAE,MAAM,WAAW,CAAC;GACrC;GACA,OAAO,QAAQ,QAAQ;GACvB,YAAY,QAAQ,QAAQ;GAC5B,aAAa,QAAQ,QAAQ;GAC7B,cAAc;EAChB,CAAC,CAAA;EAED,IAAI;;GACF,MAAM,OAAO,MAAM,QAAQ,MAAM;GAGjC,IAAI,SAAS,KAAA,GAAW;IACtB,IAAI,QAAQ,IAAI,aAAa,cAC3B,QAAQ,MACN,yIAAyI,KAAK,WAChJ;IAEF,MAAM,IAAI,MAAM,GAAG,KAAK,UAAU,mBAAmB;GACvD;GAEA,KAAK,QAAQ,IAAI;GAGjB,CAAA,0BAAA,yBAAA,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAA,CAAO,eAAA,QAAA,2BAAA,KAAA,KAAA,uBAAA,KAAA,wBAAY,MAAM,IAAiC;GACtE,CAAA,2BAAA,0BAAA,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAA,CAAO,eAAA,QAAA,4BAAA,KAAA,KAAA,wBAAA,KAAA,yBACjB,MACA,KAAK,MAAM,OACX,IACF;GACA,OAAO;EACT,SAAS,OAAO;;GACd,IAAI,iBAAiBA,gBAAAA,gBAAgB;IACnC,IAAI,MAAM,QAGR,OAAA,8BAAA,uBAAA,UAAO,IAAA,CAAA,CAAc;SAChB,IAAI,MAAM,QAAQ;KAIvB,IAAI,KAAK,MAAM,SAAS,KAAA,GACtB,MAAM;KAER,OAAO,KAAK,MAAM;IACpB;GACF;GACA,8BAAA,kBAAA,cAAA,MAAA,SAAA,CAAA,CAAA,KAAA,MAAe;IACb,MAAM;IACC;GACT,CAAC;GAGD,CAAA,2BAAA,0BAAA,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAA,CAAO,aAAA,QAAA,4BAAA,KAAA,KAAA,wBAAA,KAAA,yBACjB,OACA,IACF;GACA,CAAA,2BAAA,0BAAA,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAA,CAAO,eAAA,QAAA,4BAAA,KAAA,KAAA,wBAAA,KAAA,yBACjB,KAAK,MAAM,MACX,OACA,IACF;GAEA,MAAM;EACR,UAAU;GAGR,IAAA,8BAAA,uBAAA,UAAI,IAAA,MAAkB,SACpB,8BAAA,uBAAA,UAAA,MAAgB,KAAA,CAAA;GAGlB,KAAK,WAAW;EAClB;CACF;AAqFF;AAnFE,SAAA,UAAU,QAAqC;CAC7C,MAAM,WACJ,UAC8B;EAC9B,QAAQ,OAAO,MAAf;GACE,KAAK,UACH,OAAO;IACL,GAAG;IACH,mBAAmB,OAAO;IAC1B,oBAAoB,OAAO;GAC7B;GACF,KAAK,SACH,OAAO;IACL,GAAG;IACH,aAAa;GACf;GACF,KAAK,YACH,OAAO;IACL,GAAG;IACH,aAAa;GACf;GACF,KAAK,SACH,OAAO;IACL,GAAG;IACH,GAAG,WAAW,MAAM,MAAM,KAAK,OAAO;IACtC,WAAW,OAAO,QAAQ;GAC5B;GACF,KAAK;IACH,MAAM,WAAW;KACf,GAAG;KACH,GAAG,aAAa,OAAO,MAAM,OAAO,aAAa;KACjD,iBAAiB,MAAM,kBAAkB;KACzC,GAAI,CAAC,OAAO,UAAU;MACpB,aAAa;MACb,mBAAmB;MACnB,oBAAoB;KACtB;IACF;IAGA,8BAAA,uBAAA,cAAA,MAAoB,OAAO,SAAS,WAAW,KAAA,CAAA;IAE/C,OAAO;GACT,KAAK;IACH,MAAM,QAAQ,OAAO;IACrB,OAAO;KACL,GAAG;KACH;KACA,kBAAkB,MAAM,mBAAmB;KAC3C,gBAAgB,KAAK,IAAI;KACzB,mBAAmB,MAAM,oBAAoB;KAC7C,oBAAoB;KACpB,aAAa;KACb,QAAQ;KAGR,eAAe;IACjB;GACF,KAAK,cACH,OAAO;IACL,GAAG;IACH,eAAe;GACjB;GACF,KAAK,YACH,OAAO;IACL,GAAG;IACH,GAAG,OAAO;GACZ;EACJ;CACF;CAEA,KAAK,QAAQ,QAAQ,KAAK,KAAK;CAE/B,sBAAA,cAAc,YAAY;EAGxB,KAAK,UAAU,MAAM,CAAC,CAAC,SAAS,aAAa;GAC3C,SAAS,cAAc;EACzB,CAAC;EAED,8BAAA,uBAAA,QAAA,IAAA,CAAA,CAAY,OAAO;GAAE,OAAO;GAAM,MAAM;GAAW;EAAO,CAAC;CAC7D,CAAC;AACH;AAGF,SAAgB,WAMd,MACA,SACA;CACA,OAAO;EACL,mBAAmB;EACnB,oBAAoB;EACpB,aAAaC,gBAAAA,SAAS,QAAQ,WAAW,IAAI,aAAa;EAC1D,GAAI,SAAS,KAAA,KACV;GACC,OAAO;GACP,QAAQ;EACV;CACJ;AACF;AAEA,SAAS,aAAoB,MAAyB,eAAwB;CAC5E,OAAO;EACL;EACA,eAAe,iBAAiB,KAAK,IAAI;EACzC,OAAO;EACP,eAAe;EACf,QAAQ;CACV;AACF;AAEA,SAAS,gBAMP,SAC2B;CAC3B,MAAM,OACJ,OAAO,QAAQ,gBAAgB,aAC1B,QAAQ,YAA2C,IACpD,QAAQ;CAEd,MAAM,UAAU,SAAS,KAAA;CAEzB,MAAM,uBAAuB,UACzB,OAAO,QAAQ,yBAAyB,aACtC,QAAQ,qBAAqB,IAC7B,QAAQ,uBACV;CAEJ,OAAO;EACL;EACA,iBAAiB;EACjB,eAAe,UAAW,wBAAwB,KAAK,IAAI,IAAK;EAChE,OAAO;EACP,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,oBAAoB;EACpB,WAAW;EACX,eAAe;EACf,QAAQ,UAAU,YAAY;EAC9B,aAAa;CACf;AACF"}
|
package/build/legacy/query.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $n as
|
|
1
|
+
import { $n as Query, Jn as Action, Qn as FetchOptions, Xn as FetchDirection, Yn as FetchContext, Zn as FetchMeta, er as QueryBehavior, nr as fetchState, tr as QueryState } from "./hydration-DWGr3cFC.cjs";
|
|
2
2
|
export { Action, FetchContext, FetchDirection, FetchMeta, FetchOptions, Query, QueryBehavior, QueryState, fetchState };
|
package/build/legacy/query.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $n as
|
|
1
|
+
import { $n as Query, Jn as Action, Qn as FetchOptions, Xn as FetchDirection, Yn as FetchContext, Zn as FetchMeta, er as QueryBehavior, nr as fetchState, tr as QueryState } from "./hydration-Bjs0MSgg.js";
|
|
2
2
|
export { Action, FetchContext, FetchDirection, FetchMeta, FetchOptions, Query, QueryBehavior, QueryState, fetchState };
|
package/build/legacy/query.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as _classPrivateFieldInitSpec, n as _classPrivateFieldGet2, r as _assertClassBrand, t as _classPrivateFieldSet2 } from "./classPrivateFieldSet2-CV7wyte-.js";
|
|
2
|
-
import { ensureQueryFn, noop, replaceData,
|
|
2
|
+
import { ensureQueryFn, noop, replaceData, resolveQueryValue, skipToken, timeUntilStale } from "./utils.js";
|
|
3
3
|
import { notifyManager } from "./notifyManager.js";
|
|
4
4
|
import { CancelledError, canFetch, createRetryer } from "./retryer.js";
|
|
5
5
|
import { Removable } from "./removable.js";
|
|
@@ -101,7 +101,7 @@ var Query = class extends Removable {
|
|
|
101
101
|
this.setState(this.resetState);
|
|
102
102
|
}
|
|
103
103
|
isActive() {
|
|
104
|
-
return this.observers.some((observer) =>
|
|
104
|
+
return this.observers.some((observer) => resolveQueryValue(observer.options.enabled, this) !== false);
|
|
105
105
|
}
|
|
106
106
|
isDisabled() {
|
|
107
107
|
if (this.getObserversCount() > 0) return !this.isActive();
|
|
@@ -111,7 +111,7 @@ var Query = class extends Removable {
|
|
|
111
111
|
return this.state.dataUpdateCount + this.state.errorUpdateCount > 0;
|
|
112
112
|
}
|
|
113
113
|
isStatic() {
|
|
114
|
-
if (this.getObserversCount() > 0) return this.observers.some((observer) =>
|
|
114
|
+
if (this.getObserversCount() > 0) return this.observers.some((observer) => resolveQueryValue(observer.options.staleTime, this) === "static");
|
|
115
115
|
return false;
|
|
116
116
|
}
|
|
117
117
|
isStale() {
|
|
@@ -153,7 +153,7 @@ var Query = class extends Removable {
|
|
|
153
153
|
this.observers.splice(index, 1);
|
|
154
154
|
if (!this.observers.length) {
|
|
155
155
|
if (_classPrivateFieldGet2(_retryer, this)) {
|
|
156
|
-
if (_classPrivateFieldGet2(_abortSignalConsumed, this) ||
|
|
156
|
+
if (_classPrivateFieldGet2(_abortSignalConsumed, this) || this.state.fetchStatus === "paused" && this.state.status === "pending") _classPrivateFieldGet2(_retryer, this).cancel({ revert: true });
|
|
157
157
|
else _classPrivateFieldGet2(_retryer, this).cancelRetry();
|
|
158
158
|
}
|
|
159
159
|
this.scheduleGc();
|
|
@@ -298,9 +298,6 @@ var Query = class extends Removable {
|
|
|
298
298
|
}
|
|
299
299
|
}
|
|
300
300
|
};
|
|
301
|
-
function _isInitialPausedFetch() {
|
|
302
|
-
return this.state.fetchStatus === "paused" && this.state.status === "pending";
|
|
303
|
-
}
|
|
304
301
|
function _dispatch(action) {
|
|
305
302
|
const reducer = (state) => {
|
|
306
303
|
switch (action.type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","names":[],"sources":["../../src/query.ts"],"sourcesContent":["import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { CancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { QueryCache } from './queryCache'\nimport type { QueryClient } from './queryClient'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n StaleTime,\n} from './types'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n client: QueryClient\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 client: QueryClient\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 query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\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}\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\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 #queryType?: 'infinite'\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #client: QueryClient\n #retryer?: Retryer<TData>\n observers: Array<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.#client = config.client\n this.#cache = this.#client.getQueryCache()\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get queryType() {\n return this.#queryType\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n if (options?._type) {\n this.#queryType = options._type\n }\n\n this.updateGcTime(this.options.gcTime)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.state && this.state.data === undefined) {\n const defaultState = getDefaultState(this.options)\n if (defaultState.data !== undefined) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt),\n )\n this.#initialState = defaultState\n }\n }\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(state: Partial<QueryState<TData, TError>>): void {\n this.#dispatch({ type: 'setState', state })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.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 get resetState(): QueryState<TData, TError> {\n return this.#initialState\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.resetState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) =>\n resolveQueryBoolean(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return this.options.queryFn === skipToken || !this.isFetched()\n }\n\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0\n }\n\n isStatic(): boolean {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) =>\n resolveStaleTime(observer.options.staleTime, this) === 'static',\n )\n }\n\n return false\n }\n\n isStale(): boolean {\n // check observers first, their `isStale` has the source of truth\n // calculated with `isStaleByTime` and it takes `enabled` into account\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined || this.state.isInvalidated\n }\n\n isStaleByTime(staleTime: StaleTime = 0): boolean {\n // no data is always stale\n if (this.state.data === undefined) {\n return true\n }\n // static is never stale\n if (staleTime === 'static') {\n return false\n }\n // if the query is invalidated, it is stale\n if (this.state.isInvalidated) {\n return true\n }\n\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime)\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.includes(observer)) {\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 const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.observers.splice(index, 1)\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 || this.#isInitialPausedFetch()) {\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 #isInitialPausedFetch(): boolean {\n return (\n this.state.fetchStatus === 'paused' && this.state.status === 'pending'\n )\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.#dispatch({ type: 'invalidate' })\n }\n }\n\n async fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== 'rejected'\n ) {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\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.#retryer.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 // 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 // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const createQueryFnContext = (): QueryFunctionContext<TQueryKey> => {\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta,\n }\n addSignalProperty(queryFnContext)\n return queryFnContext as QueryFunctionContext<TQueryKey>\n }\n\n const queryFnContext = createQueryFnContext()\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const createFetchContext = (): FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n > => {\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n return context as FetchContext<TQueryFnData, TError, TData, TQueryKey>\n }\n\n const context = createFetchContext()\n\n const behavior =\n this.#queryType === 'infinite'\n ? (infiniteQueryBehavior(\n (this.options as { pages?: number }).pages,\n ) as QueryBehavior<TQueryFnData, TError, TData, TQueryKey>)\n : this.options.behavior\n behavior?.onFetch(context, this as unknown as Query)\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 // Try to fetch the data\n const retryer = (this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: 'idle' as const,\n })\n }\n abortController.abort()\n },\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 canRun: () => true,\n }))\n\n try {\n const data = await retryer.start()\n // this is more of a runtime guard\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (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 throw new Error(`${this.queryHash} data is undefined`)\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 return data\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n // silent cancellation implies a new fetch is going to be started,\n // so we piggyback onto that promise\n return this.#retryer.promise\n } else if (error.revert) {\n // transform error into reverted state data\n // if the initial fetch was cancelled, we have no data, so we have\n // to get reject with a CancelledError\n if (this.state.data === undefined) {\n throw error\n }\n return this.state.data\n }\n }\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n\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 throw error // rethrow the error for further handling\n } finally {\n // The settled retryer's promise would otherwise pin this fetch's raw\n // result (a second copy after structural sharing) for the query's lifetime\n if (this.#retryer === retryer) {\n this.#retryer = undefined\n }\n // Schedule query gc after fetching\n this.scheduleGc()\n }\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 ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...(!action.manual && {\n fetchStatus: 'idle' as const,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n // If fetching ends successfully, we don't need revertState as a fallback anymore.\n // For manual updates, capture the state to revert to it in case of a cancellation.\n this.#revertState = action.manual ? newState : undefined\n\n return newState\n case 'error':\n const error = action.error\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true,\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 // Keep the current iteration stable if an observer unsubscribes\n // synchronously while it is being notified.\n this.observers.slice().forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction successState<TData>(data: TData | undefined, dataUpdatedAt?: number) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success' as const,\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 = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? options.initialDataUpdatedAt()\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.js","names":[],"sources":["../../src/query.ts"],"sourcesContent":["import {\n ensureQueryFn,\n noop,\n replaceData,\n resolveQueryValue,\n skipToken,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport { CancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior'\nimport type { QueryCache } from './queryCache'\nimport type { QueryClient } from './queryClient'\nimport type {\n CancelOptions,\n DefaultError,\n FetchStatus,\n InitialDataFunction,\n OmitKeyof,\n QueryFunctionContext,\n QueryKey,\n QueryMeta,\n QueryOptions,\n QueryStatus,\n SetDataOptions,\n StaleTime,\n} from './types'\nimport type { QueryObserver } from './queryObserver'\nimport type { Retryer } from './retryer'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n client: QueryClient\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 client: QueryClient\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 query: Query,\n ) => void\n}\n\nexport type FetchDirection = 'forward' | 'backward'\n\nexport interface FetchMeta {\n fetchMore?: { direction: FetchDirection }\n}\n\nexport interface FetchOptions<TData = unknown> {\n cancelRefetch?: boolean\n meta?: FetchMeta\n initialPromise?: Promise<TData>\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}\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\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 #queryType?: 'infinite'\n\n #initialState: QueryState<TData, TError>\n #revertState?: QueryState<TData, TError>\n #cache: QueryCache\n #client: QueryClient\n #retryer?: Retryer<TData>\n observers: Array<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.#client = config.client\n this.#cache = this.#client.getQueryCache()\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.#initialState = getDefaultState(this.options)\n this.state = config.state ?? this.#initialState\n this.scheduleGc()\n }\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n get queryType() {\n return this.#queryType\n }\n\n get promise(): Promise<TData> | undefined {\n return this.#retryer?.promise\n }\n\n setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.#defaultOptions, ...options }\n\n if (options?._type) {\n this.#queryType = options._type\n }\n\n this.updateGcTime(this.options.gcTime)\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (this.state && this.state.data === undefined) {\n const defaultState = getDefaultState(this.options)\n if (defaultState.data !== undefined) {\n this.setState(\n successState(defaultState.data, defaultState.dataUpdatedAt),\n )\n this.#initialState = defaultState\n }\n }\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(state: Partial<QueryState<TData, TError>>): void {\n this.#dispatch({ type: 'setState', state })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.#retryer?.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 get resetState(): QueryState<TData, TError> {\n return this.#initialState\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.resetState)\n }\n\n isActive(): boolean {\n return this.observers.some(\n (observer) => resolveQueryValue(observer.options.enabled, this) !== false,\n )\n }\n\n isDisabled(): boolean {\n if (this.getObserversCount() > 0) {\n return !this.isActive()\n }\n // if a query has no observers, it should still be considered disabled if it never attempted a fetch\n return this.options.queryFn === skipToken || !this.isFetched()\n }\n\n isFetched() {\n return this.state.dataUpdateCount + this.state.errorUpdateCount > 0\n }\n\n isStatic(): boolean {\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) =>\n resolveQueryValue(observer.options.staleTime, this) === 'static',\n )\n }\n\n return false\n }\n\n isStale(): boolean {\n // check observers first, their `isStale` has the source of truth\n // calculated with `isStaleByTime` and it takes `enabled` into account\n if (this.getObserversCount() > 0) {\n return this.observers.some(\n (observer) => observer.getCurrentResult().isStale,\n )\n }\n\n return this.state.data === undefined || this.state.isInvalidated\n }\n\n isStaleByTime(staleTime: StaleTime = 0): boolean {\n // no data is always stale\n if (this.state.data === undefined) {\n return true\n }\n // static is never stale\n if (staleTime === 'static') {\n return false\n }\n // if the query is invalidated, it is stale\n if (this.state.isInvalidated) {\n return true\n }\n\n return !timeUntilStale(this.state.dataUpdatedAt, staleTime)\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.includes(observer)) {\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 const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.observers.splice(index, 1)\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 (\n this.#abortSignalConsumed ||\n (this.state.fetchStatus === 'paused' &&\n this.state.status === 'pending')\n ) {\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 async fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions<TQueryFnData>,\n ): Promise<TData> {\n if (\n this.state.fetchStatus !== 'idle' &&\n // If the promise in the retryer is already rejected, we have to definitely\n // re-start the fetch; there is a chance that the query is still in a\n // pending state when that happens\n this.#retryer?.status() !== 'rejected'\n ) {\n if (this.state.data !== undefined && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetch\n this.cancel({ silent: true })\n } else if (this.#retryer) {\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.#retryer.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 // 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 // Create fetch function\n const fetchFn = () => {\n const queryFn = ensureQueryFn(this.options, fetchOptions)\n\n // Create query function context\n const createQueryFnContext = (): QueryFunctionContext<TQueryKey> => {\n const queryFnContext: OmitKeyof<\n QueryFunctionContext<TQueryKey>,\n 'signal'\n > = {\n client: this.#client,\n queryKey: this.queryKey,\n meta: this.meta,\n }\n addSignalProperty(queryFnContext)\n return queryFnContext as QueryFunctionContext<TQueryKey>\n }\n\n const queryFnContext = createQueryFnContext()\n\n this.#abortSignalConsumed = false\n if (this.options.persister) {\n return this.options.persister(\n queryFn,\n queryFnContext,\n this as unknown as Query,\n )\n }\n\n return queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const createFetchContext = (): FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey\n > => {\n const context: OmitKeyof<\n FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n 'signal'\n > = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n client: this.#client,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n return context as FetchContext<TQueryFnData, TError, TData, TQueryKey>\n }\n\n const context = createFetchContext()\n\n const behavior =\n this.#queryType === 'infinite'\n ? (infiniteQueryBehavior(\n (this.options as { pages?: number }).pages,\n ) as QueryBehavior<TQueryFnData, TError, TData, TQueryKey>)\n : this.options.behavior\n behavior?.onFetch(context, this as unknown as Query)\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 // Try to fetch the data\n const retryer = (this.#retryer = createRetryer({\n initialPromise: fetchOptions?.initialPromise as\n | Promise<TData>\n | undefined,\n fn: context.fetchFn as () => Promise<TData>,\n onCancel: (error) => {\n if (error instanceof CancelledError && error.revert) {\n this.setState({\n ...this.#revertState,\n fetchStatus: 'idle' as const,\n })\n }\n abortController.abort()\n },\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 canRun: () => true,\n }))\n\n try {\n const data = await retryer.start()\n // this is more of a runtime guard\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (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 throw new Error(`${this.queryHash} data is undefined`)\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 return data\n } catch (error) {\n if (error instanceof CancelledError) {\n if (error.silent) {\n // silent cancellation implies a new fetch is going to be started,\n // so we piggyback onto that promise\n return this.#retryer.promise\n } else if (error.revert) {\n // transform error into reverted state data\n // if the initial fetch was cancelled, we have no data, so we have\n // to get reject with a CancelledError\n if (this.state.data === undefined) {\n throw error\n }\n return this.state.data\n }\n }\n this.#dispatch({\n type: 'error',\n error: error as TError,\n })\n\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 throw error // rethrow the error for further handling\n } finally {\n // The settled retryer's promise would otherwise pin this fetch's raw\n // result (a second copy after structural sharing) for the query's lifetime\n if (this.#retryer === retryer) {\n this.#retryer = undefined\n }\n // Schedule query gc after fetching\n this.scheduleGc()\n }\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 ...fetchState(state.data, this.options),\n fetchMeta: action.meta ?? null,\n }\n case 'success':\n const newState = {\n ...state,\n ...successState(action.data, action.dataUpdatedAt),\n dataUpdateCount: state.dataUpdateCount + 1,\n ...(!action.manual && {\n fetchStatus: 'idle' as const,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n // If fetching ends successfully, we don't need revertState as a fallback anymore.\n // For manual updates, capture the state to revert to it in case of a cancellation.\n this.#revertState = action.manual ? newState : undefined\n\n return newState\n case 'error':\n const error = action.error\n return {\n ...state,\n error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error',\n // flag existing data as invalidated if we get a background error\n // note that \"no data\" always means stale so we can set unconditionally here\n isInvalidated: true,\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 // Keep the current iteration stable if an observer unsubscribes\n // synchronously while it is being notified.\n this.observers.slice().forEach((observer) => {\n observer.onQueryUpdate()\n })\n\n this.#cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nexport function fetchState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n data: TData | undefined,\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n) {\n return {\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchStatus: canFetch(options.networkMode) ? 'fetching' : 'paused',\n ...(data === undefined &&\n ({\n error: null,\n status: 'pending',\n } as const)),\n } as const\n}\n\nfunction successState<TData>(data: TData | undefined, dataUpdatedAt?: number) {\n return {\n data,\n dataUpdatedAt: dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success' as const,\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 = data !== undefined\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? options.initialDataUpdatedAt()\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"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { cn as QueryCacheConfig, ln as QueryCacheNotifyEvent, sn as QueryCache, un as QueryStore } from "./hydration-
|
|
1
|
+
import { cn as QueryCacheConfig, ln as QueryCacheNotifyEvent, sn as QueryCache, un as QueryStore } from "./hydration-DWGr3cFC.cjs";
|
|
2
2
|
export { QueryCache, QueryCacheConfig, QueryCacheNotifyEvent, QueryStore };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { cn as QueryCacheConfig, ln as QueryCacheNotifyEvent, sn as QueryCache, un as QueryStore } from "./hydration-
|
|
1
|
+
import { cn as QueryCacheConfig, ln as QueryCacheNotifyEvent, sn as QueryCache, un as QueryStore } from "./hydration-Bjs0MSgg.js";
|
|
2
2
|
export { QueryCache, QueryCacheConfig, QueryCacheNotifyEvent, QueryStore };
|
|
@@ -90,7 +90,7 @@ var QueryClient = class {
|
|
|
90
90
|
const query = require_classPrivateFieldSet2._classPrivateFieldGet2(_queryCache, this).build(this, defaultedOptions);
|
|
91
91
|
const cachedData = query.state.data;
|
|
92
92
|
if (cachedData === void 0) return this.fetchQuery(options);
|
|
93
|
-
if (options.revalidateIfStale && query.isStaleByTime(require_utils.
|
|
93
|
+
if (options.revalidateIfStale && query.isStaleByTime(require_utils.resolveQueryValue(defaultedOptions.staleTime, query))) this.prefetchQuery(defaultedOptions);
|
|
94
94
|
return Promise.resolve(cachedData);
|
|
95
95
|
}
|
|
96
96
|
getQueriesData(filters) {
|
|
@@ -175,7 +175,7 @@ var QueryClient = class {
|
|
|
175
175
|
const defaultedOptions = this.defaultQueryOptions(options);
|
|
176
176
|
if (defaultedOptions.retry === void 0) defaultedOptions.retry = false;
|
|
177
177
|
const query = require_classPrivateFieldSet2._classPrivateFieldGet2(_queryCache, this).build(this, defaultedOptions);
|
|
178
|
-
const queryData = query.isStaleByTime(require_utils.
|
|
178
|
+
const queryData = query.isStaleByTime(require_utils.resolveQueryValue(defaultedOptions.staleTime, query)) ? await query.fetch(defaultedOptions) : query.state.data;
|
|
179
179
|
const select = defaultedOptions.select;
|
|
180
180
|
if (select) return select(queryData);
|
|
181
181
|
return queryData;
|
|
@@ -187,7 +187,7 @@ var QueryClient = class {
|
|
|
187
187
|
const defaultedOptions = this.defaultQueryOptions(options);
|
|
188
188
|
if (defaultedOptions.retry === void 0) defaultedOptions.retry = false;
|
|
189
189
|
const query = require_classPrivateFieldSet2._classPrivateFieldGet2(_queryCache, this).build(this, defaultedOptions);
|
|
190
|
-
return query.isStaleByTime(require_utils.
|
|
190
|
+
return query.isStaleByTime(require_utils.resolveQueryValue(defaultedOptions.staleTime, query)) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
193
|
* @deprecated Use queryClient.query(options) instead. You can swallow errors with `.catch(noop)`. This method will be removed in the next major version.
|