@tanstack/query-core 5.0.0-alpha.31 → 5.0.0-alpha.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/index.d.ts +1 -0
- package/build/lib/mutationObserver.esm.js +1 -1
- package/build/lib/mutationObserver.esm.js.map +1 -1
- package/build/lib/mutationObserver.js +1 -1
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/mutationObserver.mjs +1 -1
- package/build/lib/mutationObserver.mjs.map +1 -1
- package/build/lib/queriesObserver.d.ts +12 -5
- package/build/lib/queriesObserver.esm.js +52 -13
- package/build/lib/queriesObserver.esm.js.map +1 -1
- package/build/lib/queriesObserver.js +52 -13
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/queriesObserver.mjs +35 -13
- package/build/lib/queriesObserver.mjs.map +1 -1
- package/build/lib/queryObserver.esm.js +3 -3
- package/build/lib/queryObserver.esm.js.map +1 -1
- package/build/lib/queryObserver.js +3 -3
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/queryObserver.mjs +3 -3
- package/build/lib/queryObserver.mjs.map +1 -1
- package/build/lib/subscribable.d.ts +1 -1
- package/build/lib/subscribable.esm.js +4 -4
- package/build/lib/subscribable.esm.js.map +1 -1
- package/build/lib/subscribable.js +4 -4
- package/build/lib/subscribable.js.map +1 -1
- package/build/lib/subscribable.mjs +4 -4
- package/build/lib/subscribable.mjs.map +1 -1
- package/build/umd/index.development.js +42 -21
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -0
- package/src/mutationObserver.ts +1 -1
- package/src/queriesObserver.ts +66 -16
- package/src/queryObserver.ts +3 -3
- package/src/subscribable.ts +5 -5
- package/build/lib/focusManager.d.ts.map +0 -1
- package/build/lib/hydration.d.ts.map +0 -1
- package/build/lib/index.d.ts.map +0 -1
- package/build/lib/infiniteQueryBehavior.d.ts.map +0 -1
- package/build/lib/infiniteQueryObserver.d.ts.map +0 -1
- package/build/lib/mutation.d.ts.map +0 -1
- package/build/lib/mutationCache.d.ts.map +0 -1
- package/build/lib/mutationObserver.d.ts.map +0 -1
- package/build/lib/notifyManager.d.ts.map +0 -1
- package/build/lib/onlineManager.d.ts.map +0 -1
- package/build/lib/queriesObserver.d.ts.map +0 -1
- package/build/lib/query.d.ts.map +0 -1
- package/build/lib/queryCache.d.ts.map +0 -1
- package/build/lib/queryClient.d.ts.map +0 -1
- package/build/lib/queryObserver.d.ts.map +0 -1
- package/build/lib/removable.d.ts.map +0 -1
- package/build/lib/retryer.d.ts.map +0 -1
- package/build/lib/subscribable.d.ts.map +0 -1
- package/build/lib/tests/focusManager.test.d.ts.map +0 -1
- package/build/lib/tests/hydration.test.d.ts.map +0 -1
- package/build/lib/tests/infiniteQueryBehavior.test.d.ts.map +0 -1
- package/build/lib/tests/infiniteQueryObserver.test.d.ts.map +0 -1
- package/build/lib/tests/mutationCache.test.d.ts.map +0 -1
- package/build/lib/tests/mutationObserver.test.d.ts.map +0 -1
- package/build/lib/tests/mutations.test.d.ts.map +0 -1
- package/build/lib/tests/notifyManager.test.d.ts.map +0 -1
- package/build/lib/tests/onlineManager.test.d.ts.map +0 -1
- package/build/lib/tests/queriesObserver.test.d.ts.map +0 -1
- package/build/lib/tests/query.test.d.ts.map +0 -1
- package/build/lib/tests/queryCache.test.d.ts.map +0 -1
- package/build/lib/tests/queryClient.test.d.ts.map +0 -1
- package/build/lib/tests/queryObserver.test.d.ts.map +0 -1
- package/build/lib/tests/utils.d.ts.map +0 -1
- package/build/lib/tests/utils.test.d.ts.map +0 -1
- package/build/lib/types.d.ts.map +0 -1
- package/build/lib/utils.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\nfunction difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nfunction replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result: QueryObserverResult[]\n #queries: QueryObserverOptions[]\n #observers: QueryObserver[]\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.#client = client\n this.#queries = []\n this.#result = []\n this.#observers = []\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.#queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.#observers = newObservers\n this.#result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n\n this.#notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.#result\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.#findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n #findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.#observers\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n\n const defaultedQueryOptions = queries.map((options) =>\n this.#client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash)\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash),\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash,\n )\n return (\n currentObserver ?? new QueryObserver(this.#client, defaultedOptions)\n )\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n #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 notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["difference","array1","array2","filter","x","indexOf","replaceAt","array","index","value","copy","slice","_classPrivateFieldLooseKey","QueriesObserver","Subscribable","constructor","client","queries","_classPrivateFieldLooseBase","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","result","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","match","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","hasListeners","getQueries","getCurrentQuery","getObservers","getOptimisticResult","prevObserversMap","Map","options","queryHash","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","get","matchedQueryHashes","Set","unmatchedQueries","has","getObserver","currentObserver","find","o","QueryObserver","newOrReusedObservers","sortMatchesByOrderOfQueries","a","b","concat","sort","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep } from './utils'\n\nfunction difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nfunction replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport interface QueriesObserverOptions<\n TCombinedResult = QueryObserverResult[],\n> {\n combine?: (result: QueryObserverResult[]) => TCombinedResult\n}\n\nexport class QueriesObserver<\n TCombinedResult = QueryObserverResult[],\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: QueryObserverResult[]\n #queries: QueryObserverOptions[]\n #observers: QueryObserver[]\n #options?: QueriesObserverOptions<TCombinedResult>\n #combinedResult!: TCombinedResult\n\n constructor(\n client: QueryClient,\n queries: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#queries = []\n this.#observers = []\n\n this.#setResult([])\n this.setQueries(queries, options)\n }\n\n #setResult(value: QueryObserverResult[]) {\n this.#result = value\n this.#combinedResult = this.#combineResult(value)\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: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n notifyOptions?: NotifyOptions,\n ): void {\n this.#queries = queries\n this.#options = options\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.#observers = newObservers\n this.#setResult(newResult)\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n\n this.#notify()\n })\n }\n\n getCurrentResult(): TCombinedResult {\n return this.#combinedResult\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: QueryObserverOptions[],\n ): [\n rawResult: QueryObserverResult[],\n combineResult: (r?: QueryObserverResult[]) => TCombinedResult,\n trackResult: () => QueryObserverResult[],\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n\n return [\n result,\n (r?: QueryObserverResult[]) => {\n return this.#combineResult(r ?? result)\n },\n () => {\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult)\n : observerResult\n })\n },\n ]\n }\n\n #combineResult(input: QueryObserverResult[]): TCombinedResult {\n const combine = this.#options?.combine\n if (combine) {\n return replaceEqualDeep(this.#combinedResult, combine(input))\n }\n return input as any\n }\n\n #findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.#observers\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n\n const defaultedQueryOptions = queries.map((options) =>\n this.#client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash)\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash),\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash,\n )\n return (\n currentObserver ?? new QueryObserver(this.#client, defaultedOptions)\n )\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#setResult(replaceAt(this.#result, index, result))\n this.#notify()\n }\n }\n\n #notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["difference","array1","array2","filter","x","indexOf","replaceAt","array","index","value","copy","slice","_classPrivateFieldLooseKey","QueriesObserver","Subscribable","constructor","client","queries","options","_classPrivateFieldLooseBase","setQueries","onSubscribe","listeners","size","forEach","observer","subscribe","result","onUnsubscribe","destroy","Set","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","match","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","length","hasListeners","getQueries","getCurrentQuery","getObservers","getOptimisticResult","matches","r","observerResult","notifyOnChangeProps","trackResult","input","combine","replaceEqualDeep","prevObserversMap","Map","queryHash","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","get","matchedQueryHashes","unmatchedQueries","has","getObserver","currentObserver","find","o","QueryObserver","newOrReusedObservers","sortMatchesByOrderOfQueries","a","b","concat","sort","listener"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { notifyManager } from './notifyManager.mjs';
|
|
2
2
|
import { QueryObserver } from './queryObserver.mjs';
|
|
3
3
|
import { Subscribable } from './subscribable.mjs';
|
|
4
|
+
import { replaceEqualDeep } from './utils.mjs';
|
|
4
5
|
|
|
5
6
|
function difference(array1, array2) {
|
|
6
7
|
return array1.filter(x => array2.indexOf(x) === -1);
|
|
@@ -15,18 +16,22 @@ class QueriesObserver extends Subscribable {
|
|
|
15
16
|
#result;
|
|
16
17
|
#queries;
|
|
17
18
|
#observers;
|
|
18
|
-
|
|
19
|
+
#options;
|
|
20
|
+
#combinedResult;
|
|
21
|
+
constructor(client, queries, options) {
|
|
19
22
|
super();
|
|
20
23
|
this.#client = client;
|
|
21
24
|
this.#queries = [];
|
|
22
|
-
this.#result = [];
|
|
23
25
|
this.#observers = [];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
this.#setResult([]);
|
|
27
|
+
this.setQueries(queries, options);
|
|
28
|
+
}
|
|
29
|
+
#setResult(value) {
|
|
30
|
+
this.#result = value;
|
|
31
|
+
this.#combinedResult = this.#combineResult(value);
|
|
27
32
|
}
|
|
28
33
|
onSubscribe() {
|
|
29
|
-
if (this.listeners.
|
|
34
|
+
if (this.listeners.size === 1) {
|
|
30
35
|
this.#observers.forEach(observer => {
|
|
31
36
|
observer.subscribe(result => {
|
|
32
37
|
this.#onUpdate(observer, result);
|
|
@@ -35,18 +40,19 @@ class QueriesObserver extends Subscribable {
|
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
onUnsubscribe() {
|
|
38
|
-
if (!this.listeners.
|
|
43
|
+
if (!this.listeners.size) {
|
|
39
44
|
this.destroy();
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
47
|
destroy() {
|
|
43
|
-
this.listeners =
|
|
48
|
+
this.listeners = new Set();
|
|
44
49
|
this.#observers.forEach(observer => {
|
|
45
50
|
observer.destroy();
|
|
46
51
|
});
|
|
47
52
|
}
|
|
48
|
-
setQueries(queries, notifyOptions) {
|
|
53
|
+
setQueries(queries, options, notifyOptions) {
|
|
49
54
|
this.#queries = queries;
|
|
55
|
+
this.#options = options;
|
|
50
56
|
notifyManager.batch(() => {
|
|
51
57
|
const prevObservers = this.#observers;
|
|
52
58
|
const newObserverMatches = this.#findMatchingObservers(this.#queries);
|
|
@@ -60,7 +66,7 @@ class QueriesObserver extends Subscribable {
|
|
|
60
66
|
return;
|
|
61
67
|
}
|
|
62
68
|
this.#observers = newObservers;
|
|
63
|
-
this.#
|
|
69
|
+
this.#setResult(newResult);
|
|
64
70
|
if (!this.hasListeners()) {
|
|
65
71
|
return;
|
|
66
72
|
}
|
|
@@ -76,7 +82,7 @@ class QueriesObserver extends Subscribable {
|
|
|
76
82
|
});
|
|
77
83
|
}
|
|
78
84
|
getCurrentResult() {
|
|
79
|
-
return this.#
|
|
85
|
+
return this.#combinedResult;
|
|
80
86
|
}
|
|
81
87
|
getQueries() {
|
|
82
88
|
return this.#observers.map(observer => observer.getCurrentQuery());
|
|
@@ -85,7 +91,23 @@ class QueriesObserver extends Subscribable {
|
|
|
85
91
|
return this.#observers;
|
|
86
92
|
}
|
|
87
93
|
getOptimisticResult(queries) {
|
|
88
|
-
|
|
94
|
+
const matches = this.#findMatchingObservers(queries);
|
|
95
|
+
const result = matches.map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));
|
|
96
|
+
return [result, r => {
|
|
97
|
+
return this.#combineResult(r ?? result);
|
|
98
|
+
}, () => {
|
|
99
|
+
return matches.map((match, index) => {
|
|
100
|
+
const observerResult = result[index];
|
|
101
|
+
return !match.defaultedQueryOptions.notifyOnChangeProps ? match.observer.trackResult(observerResult) : observerResult;
|
|
102
|
+
});
|
|
103
|
+
}];
|
|
104
|
+
}
|
|
105
|
+
#combineResult(input) {
|
|
106
|
+
const combine = this.#options?.combine;
|
|
107
|
+
if (combine) {
|
|
108
|
+
return replaceEqualDeep(this.#combinedResult, combine(input));
|
|
109
|
+
}
|
|
110
|
+
return input;
|
|
89
111
|
}
|
|
90
112
|
#findMatchingObservers(queries) {
|
|
91
113
|
const prevObservers = this.#observers;
|
|
@@ -120,7 +142,7 @@ class QueriesObserver extends Subscribable {
|
|
|
120
142
|
#onUpdate(observer, result) {
|
|
121
143
|
const index = this.#observers.indexOf(observer);
|
|
122
144
|
if (index !== -1) {
|
|
123
|
-
this.#
|
|
145
|
+
this.#setResult(replaceAt(this.#result, index, result));
|
|
124
146
|
this.#notify();
|
|
125
147
|
}
|
|
126
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.mjs","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\nfunction difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nfunction replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result: QueryObserverResult[]\n #queries: QueryObserverOptions[]\n #observers: QueryObserver[]\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.#client = client\n this.#queries = []\n this.#result = []\n this.#observers = []\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.#observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.#observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.#queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.#observers = newObservers\n this.#result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n\n this.#notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.#result\n }\n\n getQueries() {\n return this.#observers.map((observer) => observer.getCurrentQuery())\n }\n\n getObservers() {\n return this.#observers\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.#findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n #findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.#observers\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n\n const defaultedQueryOptions = queries.map((options) =>\n this.#client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash)\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash),\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash,\n )\n return (\n currentObserver ?? new QueryObserver(this.#client, defaultedOptions)\n )\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n #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 notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["difference","array1","array2","filter","x","indexOf","replaceAt","array","index","value","copy","slice","QueriesObserver","Subscribable","constructor","client","queries","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","result","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","match","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","hasListeners","getQueries","getCurrentQuery","getObservers","getOptimisticResult","prevObserversMap","Map","options","queryHash","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","get","matchedQueryHashes","Set","unmatchedQueries","has","getObserver","currentObserver","find","o","QueryObserver","newOrReusedObservers","sortMatchesByOrderOfQueries","a","b","concat","sort","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.mjs","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\nimport { replaceEqualDeep } from './utils'\n\nfunction difference<T>(array1: T[], array2: T[]): T[] {\n return array1.filter((x) => array2.indexOf(x) === -1)\n}\n\nfunction replaceAt<T>(array: T[], index: number, value: T): T[] {\n const copy = array.slice(0)\n copy[index] = value\n return copy\n}\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport interface QueriesObserverOptions<\n TCombinedResult = QueryObserverResult[],\n> {\n combine?: (result: QueryObserverResult[]) => TCombinedResult\n}\n\nexport class QueriesObserver<\n TCombinedResult = QueryObserverResult[],\n> extends Subscribable<QueriesObserverListener> {\n #client: QueryClient\n #result!: QueryObserverResult[]\n #queries: QueryObserverOptions[]\n #observers: QueryObserver[]\n #options?: QueriesObserverOptions<TCombinedResult>\n #combinedResult!: TCombinedResult\n\n constructor(\n client: QueryClient,\n queries: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n ) {\n super()\n\n this.#client = client\n this.#queries = []\n this.#observers = []\n\n this.#setResult([])\n this.setQueries(queries, options)\n }\n\n #setResult(value: QueryObserverResult[]) {\n this.#result = value\n this.#combinedResult = this.#combineResult(value)\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: QueryObserverOptions[],\n options?: QueriesObserverOptions<TCombinedResult>,\n notifyOptions?: NotifyOptions,\n ): void {\n this.#queries = queries\n this.#options = options\n\n notifyManager.batch(() => {\n const prevObservers = this.#observers\n\n const newObserverMatches = this.#findMatchingObservers(this.#queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.#observers = newObservers\n this.#setResult(newResult)\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.#onUpdate(observer, result)\n })\n })\n\n this.#notify()\n })\n }\n\n getCurrentResult(): TCombinedResult {\n return this.#combinedResult\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: QueryObserverOptions[],\n ): [\n rawResult: QueryObserverResult[],\n combineResult: (r?: QueryObserverResult[]) => TCombinedResult,\n trackResult: () => QueryObserverResult[],\n ] {\n const matches = this.#findMatchingObservers(queries)\n const result = matches.map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n\n return [\n result,\n (r?: QueryObserverResult[]) => {\n return this.#combineResult(r ?? result)\n },\n () => {\n return matches.map((match, index) => {\n const observerResult = result[index]!\n return !match.defaultedQueryOptions.notifyOnChangeProps\n ? match.observer.trackResult(observerResult)\n : observerResult\n })\n },\n ]\n }\n\n #combineResult(input: QueryObserverResult[]): TCombinedResult {\n const combine = this.#options?.combine\n if (combine) {\n return replaceEqualDeep(this.#combinedResult, combine(input))\n }\n return input as any\n }\n\n #findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.#observers\n const prevObserversMap = new Map(\n prevObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n\n const defaultedQueryOptions = queries.map((options) =>\n this.#client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObserversMap.get(defaultedOptions.queryHash)\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = new Set(\n matchingObservers.map((match) => match.defaultedQueryOptions.queryHash),\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) => !matchedQueryHashes.has(defaultedOptions.queryHash),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n const currentObserver = this.#observers.find(\n (o) => o.options.queryHash === defaultedOptions.queryHash,\n )\n return (\n currentObserver ?? new QueryObserver(this.#client, defaultedOptions)\n )\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options) => {\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n #onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.#observers.indexOf(observer)\n if (index !== -1) {\n this.#setResult(replaceAt(this.#result, index, result))\n this.#notify()\n }\n }\n\n #notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.#result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["difference","array1","array2","filter","x","indexOf","replaceAt","array","index","value","copy","slice","QueriesObserver","Subscribable","constructor","client","queries","options","setQueries","onSubscribe","listeners","size","forEach","observer","subscribe","result","onUnsubscribe","destroy","Set","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","match","setOptions","defaultedQueryOptions","newObservers","map","newResult","getCurrentResult","hasIndexChange","some","length","hasListeners","getQueries","getCurrentQuery","getObservers","getOptimisticResult","matches","r","observerResult","notifyOnChangeProps","trackResult","input","combine","replaceEqualDeep","prevObserversMap","Map","queryHash","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","get","matchedQueryHashes","unmatchedQueries","has","getObserver","currentObserver","find","o","QueryObserver","newOrReusedObservers","sortMatchesByOrderOfQueries","a","b","concat","sort","listener"],"mappings":"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"}
|
|
@@ -131,7 +131,7 @@ class QueryObserver extends Subscribable {
|
|
|
131
131
|
this.refetch = this.refetch.bind(this);
|
|
132
132
|
}
|
|
133
133
|
onSubscribe() {
|
|
134
|
-
if (this.listeners.
|
|
134
|
+
if (this.listeners.size === 1) {
|
|
135
135
|
_classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery].addObserver(this);
|
|
136
136
|
if (shouldFetchOnMount(_classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery], this.options)) {
|
|
137
137
|
_classPrivateFieldLooseBase(this, _executeFetch)[_executeFetch]();
|
|
@@ -140,7 +140,7 @@ class QueryObserver extends Subscribable {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
onUnsubscribe() {
|
|
143
|
-
if (!this.
|
|
143
|
+
if (!this.hasListeners()) {
|
|
144
144
|
this.destroy();
|
|
145
145
|
}
|
|
146
146
|
}
|
|
@@ -151,7 +151,7 @@ class QueryObserver extends Subscribable {
|
|
|
151
151
|
return shouldFetchOn(_classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery], this.options, this.options.refetchOnWindowFocus);
|
|
152
152
|
}
|
|
153
153
|
destroy() {
|
|
154
|
-
this.listeners =
|
|
154
|
+
this.listeners = new Set();
|
|
155
155
|
_classPrivateFieldLooseBase(this, _clearStaleTimeout)[_clearStaleTimeout]();
|
|
156
156
|
_classPrivateFieldLooseBase(this, _clearRefetchInterval)[_clearRefetchInterval]();
|
|
157
157
|
_classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery].removeObserver(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryObserver.esm.js","sources":["../../src/queryObserver.ts"],"sourcesContent":["import type { DefaultedQueryObserverOptions, DefaultError } from './types'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\nimport type { Query, QueryState, FetchOptions } from './query'\nimport type { QueryClient } from './queryClient'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { canFetch } from './retryer'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n\n #client: QueryClient\n #currentQuery: Query<TQueryFnData, TError, TQueryData, TQueryKey> = undefined!\n #currentQueryInitialState: QueryState<TQueryData, TError> = undefined!\n #currentResult: QueryObserverResult<TData, TError> = undefined!\n #currentResultState?: QueryState<TQueryData, TError>\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n #staleTimeoutId?: ReturnType<typeof setTimeout>\n #refetchIntervalId?: ReturnType<typeof setInterval>\n #currentRefetchInterval?: number | false\n #trackedProps: Set<keyof QueryObserverResult> = new Set()\n\n constructor(\n client: QueryClient,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.options = options\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = []\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n if (\n typeof this.options.enabled !== 'undefined' &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n // Keep previous query key if the user does not supply one\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey\n }\n\n this.#updateQuery()\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.#updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n this.options.staleTime !== prevOptions.staleTime)\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n return this.createResult(query, options)\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.#trackedProps.add(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.#updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: ObserverFetchOptions,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.#currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n\n if (\n isServer ||\n this.#currentResult.isStale ||\n !isValidTimeout(this.options.staleTime)\n ) {\n return\n }\n\n const time = timeUntilStale(\n this.#currentResult.dataUpdatedAt,\n this.options.staleTime,\n )\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.#updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(\n this.#currentResult.data,\n this.#currentQuery,\n )\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let { error, errorUpdatedAt, fetchStatus, status } = state\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode)\n ? 'fetching'\n : 'paused'\n if (!state.dataUpdatedAt) {\n status = 'pending'\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle'\n }\n }\n\n // Select data if needed\n if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (\n prevResult &&\n state.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(state.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = state.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n typeof options.placeholderData !== 'undefined' &&\n typeof data === 'undefined' &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction<TQueryData>\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: state.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount:\n state.dataUpdateCount > queryInitialState.dataUpdateCount ||\n state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n #updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n\n if (\n notifyOnChangeProps === 'all' ||\n (!notifyOnChangeProps && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(notifyOnChangeProps ?? this.#trackedProps)\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.#updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n !query.state.dataUpdatedAt &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.dataUpdatedAt > 0 &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return query.isStaleByTime(options.staleTime)\n}\n"],"names":["QueryObserver","Subscribable","constructor","client","options","undefined","Set","bindMethods","setOptions","refetch","bind","onSubscribe","listeners","length","addObserver","shouldFetchOnMount","onUnsubscribe","destroy","shouldFetchOnReconnect","shouldFetchOn","refetchOnReconnect","shouldFetchOnWindowFocus","refetchOnWindowFocus","removeObserver","notifyOptions","prevOptions","prevQuery","defaultQueryOptions","shallowEqualObjects","getQueryCache","notify","type","query","observer","enabled","Error","queryKey","mounted","hasListeners","shouldFetchOptionally","staleTime","nextRefetchInterval","getOptimisticResult","build","createResult","getCurrentResult","trackResult","result","trackedResult","Object","keys","forEach","key","defineProperty","configurable","enumerable","get","add","getCurrentQuery","fetch","fetchOptimistic","defaultedOptions","isFetchingOptimistic","then","fetchOptions","cancelRefetch","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","state","error","errorUpdatedAt","fetchStatus","status","isPlaceholderData","data","_optimisticResults","fetchOnMount","fetchOptionally","canFetch","networkMode","dataUpdatedAt","select","replaceData","selectError","placeholderData","Date","now","isFetching","isPending","isError","isLoading","isSuccess","isInitialLoading","failureCount","fetchFailureCount","failureReason","fetchFailureReason","errorUpdateCount","isFetched","dataUpdateCount","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","isStale","onQueryUpdate","promise","throwOnError","catch","noop","isServer","isValidTimeout","time","timeUntilStale","timeout","setTimeout","refetchInterval","nextInterval","setInterval","refetchIntervalInBackground","focusManager","isFocused","clearTimeout","clearInterval","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","size","includedProps","some","typedKey","changed","has","notifyManager","batch","listener","shouldLoadOnMount","retryOnMount","refetchOnMount","field","value","suspense","isStaleByTime"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queryObserver.esm.js","sources":["../../src/queryObserver.ts"],"sourcesContent":["import type { DefaultedQueryObserverOptions, DefaultError } from './types'\nimport {\n isServer,\n isValidTimeout,\n noop,\n replaceData,\n shallowEqualObjects,\n timeUntilStale,\n} from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n PlaceholderDataFunction,\n QueryKey,\n QueryObserverBaseResult,\n QueryObserverOptions,\n QueryObserverResult,\n QueryOptions,\n RefetchOptions,\n} from './types'\nimport type { Query, QueryState, FetchOptions } from './query'\nimport type { QueryClient } from './queryClient'\nimport { focusManager } from './focusManager'\nimport { Subscribable } from './subscribable'\nimport { canFetch } from './retryer'\n\ntype QueryObserverListener<TData, TError> = (\n result: QueryObserverResult<TData, TError>,\n) => void\n\nexport interface NotifyOptions {\n listeners?: boolean\n}\n\nexport interface ObserverFetchOptions extends FetchOptions {\n throwOnError?: boolean\n}\n\nexport class QueryObserver<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Subscribable<QueryObserverListener<TData, TError>> {\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n\n #client: QueryClient\n #currentQuery: Query<TQueryFnData, TError, TQueryData, TQueryKey> = undefined!\n #currentQueryInitialState: QueryState<TQueryData, TError> = undefined!\n #currentResult: QueryObserverResult<TData, TError> = undefined!\n #currentResultState?: QueryState<TQueryData, TError>\n #currentResultOptions?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >\n #selectError: TError | null\n #selectFn?: (data: TQueryData) => TData\n #selectResult?: TData\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData?: Query<TQueryFnData, TError, TQueryData, TQueryKey>\n #staleTimeoutId?: ReturnType<typeof setTimeout>\n #refetchIntervalId?: ReturnType<typeof setInterval>\n #currentRefetchInterval?: number | false\n #trackedProps: Set<keyof QueryObserverResult> = new Set()\n\n constructor(\n client: QueryClient,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ) {\n super()\n\n this.#client = client\n this.options = options\n this.#selectError = null\n this.bindMethods()\n this.setOptions(options)\n }\n\n protected bindMethods(): void {\n this.refetch = this.refetch.bind(this)\n }\n\n protected onSubscribe(): void {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this)\n\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch()\n }\n\n this.#updateTimers()\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.hasListeners()) {\n this.destroy()\n }\n }\n\n shouldFetchOnReconnect(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect,\n )\n }\n\n shouldFetchOnWindowFocus(): boolean {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus,\n )\n }\n\n destroy(): void {\n this.listeners = new Set()\n this.#clearStaleTimeout()\n this.#clearRefetchInterval()\n this.#currentQuery.removeObserver(this)\n }\n\n setOptions(\n options?: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n notifyOptions?: NotifyOptions,\n ): void {\n const prevOptions = this.options\n const prevQuery = this.#currentQuery\n\n this.options = this.#client.defaultQueryOptions(options)\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.#client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.#currentQuery,\n observer: this,\n })\n }\n\n if (\n typeof this.options.enabled !== 'undefined' &&\n typeof this.options.enabled !== 'boolean'\n ) {\n throw new Error('Expected enabled to be a boolean')\n }\n\n // Keep previous query key if the user does not supply one\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey\n }\n\n this.#updateQuery()\n\n const mounted = this.hasListeners()\n\n // Fetch if there are subscribers\n if (\n mounted &&\n shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions,\n )\n ) {\n this.#executeFetch()\n }\n\n // Update result\n this.#updateResult(notifyOptions)\n\n // Update stale interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n this.options.staleTime !== prevOptions.staleTime)\n ) {\n this.#updateStaleTimeout()\n }\n\n const nextRefetchInterval = this.#computeRefetchInterval()\n\n // Update refetch interval if needed\n if (\n mounted &&\n (this.#currentQuery !== prevQuery ||\n this.options.enabled !== prevOptions.enabled ||\n nextRefetchInterval !== this.#currentRefetchInterval)\n ) {\n this.#updateRefetchInterval(nextRefetchInterval)\n }\n }\n\n getOptimisticResult(\n options: DefaultedQueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const query = this.#client.getQueryCache().build(this.#client, options)\n\n return this.createResult(query, options)\n }\n\n getCurrentResult(): QueryObserverResult<TData, TError> {\n return this.#currentResult\n }\n\n trackResult(\n result: QueryObserverResult<TData, TError>,\n ): QueryObserverResult<TData, TError> {\n const trackedResult = {} as QueryObserverResult<TData, TError>\n\n Object.keys(result).forEach((key) => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.#trackedProps.add(key as keyof QueryObserverResult)\n return result[key as keyof QueryObserverResult]\n },\n })\n })\n\n return trackedResult\n }\n\n getCurrentQuery(): Query<TQueryFnData, TError, TQueryData, TQueryKey> {\n return this.#currentQuery\n }\n\n refetch({ ...options }: RefetchOptions = {}): Promise<\n QueryObserverResult<TData, TError>\n > {\n return this.fetch({\n ...options,\n })\n }\n\n fetchOptimistic(\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): Promise<QueryObserverResult<TData, TError>> {\n const defaultedOptions = this.#client.defaultQueryOptions(options)\n\n const query = this.#client\n .getQueryCache()\n .build(this.#client, defaultedOptions)\n query.isFetchingOptimistic = true\n\n return query.fetch().then(() => this.createResult(query, defaultedOptions))\n }\n\n protected fetch(\n fetchOptions: ObserverFetchOptions,\n ): Promise<QueryObserverResult<TData, TError>> {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true,\n }).then(() => {\n this.#updateResult()\n return this.#currentResult\n })\n }\n\n #executeFetch(\n fetchOptions?: ObserverFetchOptions,\n ): Promise<TQueryData | undefined> {\n // Make sure we reference the latest query as the current one might have been removed\n this.#updateQuery()\n\n // Fetch\n let promise: Promise<TQueryData | undefined> = this.#currentQuery.fetch(\n this.options as QueryOptions<TQueryFnData, TError, TQueryData, TQueryKey>,\n fetchOptions,\n )\n\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop)\n }\n\n return promise\n }\n\n #updateStaleTimeout(): void {\n this.#clearStaleTimeout()\n\n if (\n isServer ||\n this.#currentResult.isStale ||\n !isValidTimeout(this.options.staleTime)\n ) {\n return\n }\n\n const time = timeUntilStale(\n this.#currentResult.dataUpdatedAt,\n this.options.staleTime,\n )\n\n // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n const timeout = time + 1\n\n this.#staleTimeoutId = setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.#updateResult()\n }\n }, timeout)\n }\n\n #computeRefetchInterval() {\n return (\n (typeof this.options.refetchInterval === 'function'\n ? this.options.refetchInterval(\n this.#currentResult.data,\n this.#currentQuery,\n )\n : this.options.refetchInterval) ?? false\n )\n }\n\n #updateRefetchInterval(nextInterval: number | false): void {\n this.#clearRefetchInterval()\n\n this.#currentRefetchInterval = nextInterval\n\n if (\n isServer ||\n this.options.enabled === false ||\n !isValidTimeout(this.#currentRefetchInterval) ||\n this.#currentRefetchInterval === 0\n ) {\n return\n }\n\n this.#refetchIntervalId = setInterval(() => {\n if (\n this.options.refetchIntervalInBackground ||\n focusManager.isFocused()\n ) {\n this.#executeFetch()\n }\n }, this.#currentRefetchInterval)\n }\n\n #updateTimers(): void {\n this.#updateStaleTimeout()\n this.#updateRefetchInterval(this.#computeRefetchInterval())\n }\n\n #clearStaleTimeout(): void {\n if (this.#staleTimeoutId) {\n clearTimeout(this.#staleTimeoutId)\n this.#staleTimeoutId = undefined\n }\n }\n\n #clearRefetchInterval(): void {\n if (this.#refetchIntervalId) {\n clearInterval(this.#refetchIntervalId)\n this.#refetchIntervalId = undefined\n }\n }\n\n protected createResult(\n query: Query<TQueryFnData, TError, TQueryData, TQueryKey>,\n options: QueryObserverOptions<\n TQueryFnData,\n TError,\n TData,\n TQueryData,\n TQueryKey\n >,\n ): QueryObserverResult<TData, TError> {\n const prevQuery = this.#currentQuery\n const prevOptions = this.options\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n const prevResultState = this.#currentResultState\n const prevResultOptions = this.#currentResultOptions\n const queryChange = query !== prevQuery\n const queryInitialState = queryChange\n ? query.state\n : this.#currentQueryInitialState\n\n const { state } = query\n let { error, errorUpdatedAt, fetchStatus, status } = state\n let isPlaceholderData = false\n let data: TData | undefined\n\n // Optimistically set result in fetching state if needed\n if (options._optimisticResults) {\n const mounted = this.hasListeners()\n\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options)\n\n const fetchOptionally =\n mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions)\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode)\n ? 'fetching'\n : 'paused'\n if (!state.dataUpdatedAt) {\n status = 'pending'\n }\n }\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle'\n }\n }\n\n // Select data if needed\n if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (\n prevResult &&\n state.data === prevResultState?.data &&\n options.select === this.#selectFn\n ) {\n data = this.#selectResult\n } else {\n try {\n this.#selectFn = options.select\n data = options.select(state.data)\n data = replaceData(prevResult?.data, data, options)\n this.#selectResult = data\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n // Use query data\n else {\n data = state.data as unknown as TData\n }\n\n // Show placeholder data if needed\n if (\n typeof options.placeholderData !== 'undefined' &&\n typeof data === 'undefined' &&\n status === 'pending'\n ) {\n let placeholderData\n\n // Memoize placeholder data\n if (\n prevResult?.isPlaceholderData &&\n options.placeholderData === prevResultOptions?.placeholderData\n ) {\n placeholderData = prevResult.data\n } else {\n placeholderData =\n typeof options.placeholderData === 'function'\n ? (\n options.placeholderData as unknown as PlaceholderDataFunction<TQueryData>\n )(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData as any,\n )\n : options.placeholderData\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData)\n this.#selectError = null\n } catch (selectError) {\n this.#selectError = selectError as TError\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success'\n data = replaceData(\n prevResult?.data,\n placeholderData as unknown,\n options,\n ) as TData\n isPlaceholderData = true\n }\n }\n\n if (this.#selectError) {\n error = this.#selectError as any\n data = this.#selectResult\n errorUpdatedAt = Date.now()\n status = 'error'\n }\n\n const isFetching = fetchStatus === 'fetching'\n const isPending = status === 'pending'\n const isError = status === 'error'\n\n const isLoading = isPending && isFetching\n\n const result: QueryObserverBaseResult<TData, TError> = {\n status,\n fetchStatus,\n isPending,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: state.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount:\n state.dataUpdateCount > queryInitialState.dataUpdateCount ||\n state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n }\n\n return result as QueryObserverResult<TData, TError>\n }\n\n #updateResult(notifyOptions?: NotifyOptions): void {\n const prevResult = this.#currentResult as\n | QueryObserverResult<TData, TError>\n | undefined\n\n const nextResult = this.createResult(this.#currentQuery, this.options)\n this.#currentResultState = this.#currentQuery.state\n this.#currentResultOptions = this.options\n\n // Only notify and update result if something has changed\n if (shallowEqualObjects(nextResult, prevResult)) {\n return\n }\n\n if (this.#currentResultState.data !== undefined) {\n this.#lastQueryWithDefinedData = this.#currentQuery\n }\n this.#currentResult = nextResult\n\n // Determine which callbacks to trigger\n const defaultNotifyOptions: NotifyOptions = {}\n\n const shouldNotifyListeners = (): boolean => {\n if (!prevResult) {\n return true\n }\n\n const { notifyOnChangeProps } = this.options\n\n if (\n notifyOnChangeProps === 'all' ||\n (!notifyOnChangeProps && !this.#trackedProps.size)\n ) {\n return true\n }\n\n const includedProps = new Set(notifyOnChangeProps ?? this.#trackedProps)\n\n if (this.options.throwOnError) {\n includedProps.add('error')\n }\n\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key as keyof QueryObserverResult\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey]\n return changed && includedProps.has(typedKey)\n })\n }\n\n if (notifyOptions?.listeners !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true\n }\n\n this.#notify({ ...defaultNotifyOptions, ...notifyOptions })\n }\n\n #updateQuery(): void {\n const query = this.#client.getQueryCache().build(this.#client, this.options)\n\n if (query === this.#currentQuery) {\n return\n }\n\n const prevQuery = this.#currentQuery as\n | Query<TQueryFnData, TError, TQueryData, TQueryKey>\n | undefined\n this.#currentQuery = query\n this.#currentQueryInitialState = query.state\n\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this)\n query.addObserver(this)\n }\n }\n\n onQueryUpdate(): void {\n this.#updateResult()\n\n if (this.hasListeners()) {\n this.#updateTimers()\n }\n }\n\n #notify(notifyOptions: NotifyOptions): void {\n notifyManager.batch(() => {\n // First, trigger the listeners\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult)\n })\n }\n\n // Then the cache listeners\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: 'observerResultsUpdated',\n })\n })\n }\n}\n\nfunction shouldLoadOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n !query.state.dataUpdatedAt &&\n !(query.state.status === 'error' && options.retryOnMount === false)\n )\n}\n\nfunction shouldFetchOnMount(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n shouldLoadOnMount(query, options) ||\n (query.state.dataUpdatedAt > 0 &&\n shouldFetchOn(query, options, options.refetchOnMount))\n )\n}\n\nfunction shouldFetchOn(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n field: (typeof options)['refetchOnMount'] &\n (typeof options)['refetchOnWindowFocus'] &\n (typeof options)['refetchOnReconnect'],\n) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field\n\n return value === 'always' || (value !== false && isStale(query, options))\n }\n return false\n}\n\nfunction shouldFetchOptionally(\n query: Query<any, any, any, any>,\n prevQuery: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n prevOptions: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return (\n options.enabled !== false &&\n (query !== prevQuery || prevOptions.enabled === false) &&\n (!options.suspense || query.state.status !== 'error') &&\n isStale(query, options)\n )\n}\n\nfunction isStale(\n query: Query<any, any, any, any>,\n options: QueryObserverOptions<any, any, any, any, any>,\n): boolean {\n return query.isStaleByTime(options.staleTime)\n}\n"],"names":["QueryObserver","Subscribable","constructor","client","options","undefined","Set","bindMethods","setOptions","refetch","bind","onSubscribe","listeners","size","addObserver","shouldFetchOnMount","onUnsubscribe","hasListeners","destroy","shouldFetchOnReconnect","shouldFetchOn","refetchOnReconnect","shouldFetchOnWindowFocus","refetchOnWindowFocus","removeObserver","notifyOptions","prevOptions","prevQuery","defaultQueryOptions","shallowEqualObjects","getQueryCache","notify","type","query","observer","enabled","Error","queryKey","mounted","shouldFetchOptionally","staleTime","nextRefetchInterval","getOptimisticResult","build","createResult","getCurrentResult","trackResult","result","trackedResult","Object","keys","forEach","key","defineProperty","configurable","enumerable","get","add","getCurrentQuery","fetch","fetchOptimistic","defaultedOptions","isFetchingOptimistic","then","fetchOptions","cancelRefetch","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","state","error","errorUpdatedAt","fetchStatus","status","isPlaceholderData","data","_optimisticResults","fetchOnMount","fetchOptionally","canFetch","networkMode","dataUpdatedAt","select","replaceData","selectError","placeholderData","Date","now","isFetching","isPending","isError","isLoading","isSuccess","isInitialLoading","failureCount","fetchFailureCount","failureReason","fetchFailureReason","errorUpdateCount","isFetched","dataUpdateCount","isFetchedAfterMount","isRefetching","isLoadingError","isPaused","isRefetchError","isStale","onQueryUpdate","promise","throwOnError","catch","noop","isServer","isValidTimeout","time","timeUntilStale","timeout","setTimeout","refetchInterval","nextInterval","setInterval","refetchIntervalInBackground","focusManager","isFocused","clearTimeout","clearInterval","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","includedProps","some","typedKey","changed","has","notifyManager","batch","listener","shouldLoadOnMount","retryOnMount","refetchOnMount","field","value","suspense","isStaleByTime"],"mappings":"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"}
|
|
@@ -133,7 +133,7 @@ class QueryObserver extends subscribable.Subscribable {
|
|
|
133
133
|
this.refetch = this.refetch.bind(this);
|
|
134
134
|
}
|
|
135
135
|
onSubscribe() {
|
|
136
|
-
if (this.listeners.
|
|
136
|
+
if (this.listeners.size === 1) {
|
|
137
137
|
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery].addObserver(this);
|
|
138
138
|
if (shouldFetchOnMount(_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery], this.options)) {
|
|
139
139
|
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _executeFetch)[_executeFetch]();
|
|
@@ -142,7 +142,7 @@ class QueryObserver extends subscribable.Subscribable {
|
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
144
|
onUnsubscribe() {
|
|
145
|
-
if (!this.
|
|
145
|
+
if (!this.hasListeners()) {
|
|
146
146
|
this.destroy();
|
|
147
147
|
}
|
|
148
148
|
}
|
|
@@ -153,7 +153,7 @@ class QueryObserver extends subscribable.Subscribable {
|
|
|
153
153
|
return shouldFetchOn(_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery], this.options, this.options.refetchOnWindowFocus);
|
|
154
154
|
}
|
|
155
155
|
destroy() {
|
|
156
|
-
this.listeners =
|
|
156
|
+
this.listeners = new Set();
|
|
157
157
|
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _clearStaleTimeout)[_clearStaleTimeout]();
|
|
158
158
|
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _clearRefetchInterval)[_clearRefetchInterval]();
|
|
159
159
|
_rollupPluginBabelHelpers.classPrivateFieldLooseBase(this, _currentQuery)[_currentQuery].removeObserver(this);
|