@tanstack/query-core 4.14.3 → 4.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/infiniteQueryBehavior.esm.js +1 -1
- package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.js +1 -1
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.mjs +1 -1
- package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
- package/build/lib/infiniteQueryObserver.esm.js +10 -3
- package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
- package/build/lib/infiniteQueryObserver.js +10 -3
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/infiniteQueryObserver.mjs +10 -3
- package/build/lib/infiniteQueryObserver.mjs.map +1 -1
- package/build/lib/mutation.d.ts +1 -1
- package/build/lib/mutation.esm.js +4 -1
- package/build/lib/mutation.esm.js.map +1 -1
- package/build/lib/mutation.js +4 -1
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/mutation.mjs +4 -1
- package/build/lib/mutation.mjs.map +1 -1
- package/build/lib/mutationCache.esm.js +1 -2
- package/build/lib/mutationCache.esm.js.map +1 -1
- package/build/lib/mutationCache.js +1 -2
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/mutationCache.mjs +1 -2
- package/build/lib/mutationCache.mjs.map +1 -1
- package/build/lib/queriesObserver.d.ts +2 -0
- package/build/lib/queriesObserver.esm.js +4 -0
- package/build/lib/queriesObserver.esm.js.map +1 -1
- package/build/lib/queriesObserver.js +4 -0
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/queriesObserver.mjs +4 -0
- package/build/lib/queriesObserver.mjs.map +1 -1
- package/build/lib/query.d.ts +1 -3
- package/build/lib/query.esm.js +5 -4
- package/build/lib/query.esm.js.map +1 -1
- package/build/lib/query.js +5 -4
- package/build/lib/query.js.map +1 -1
- package/build/lib/query.mjs +5 -4
- package/build/lib/query.mjs.map +1 -1
- package/build/lib/queryCache.esm.js +1 -2
- package/build/lib/queryCache.esm.js.map +1 -1
- package/build/lib/queryCache.js +1 -2
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryCache.mjs +1 -2
- package/build/lib/queryCache.mjs.map +1 -1
- package/build/umd/index.development.js +26 -13
- 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/infiniteQueryBehavior.ts +1 -1
- package/src/infiniteQueryObserver.ts +13 -6
- package/src/mutation.ts +4 -2
- package/src/mutationCache.ts +0 -1
- package/src/queriesObserver.ts +4 -0
- package/src/query.ts +4 -7
- package/src/queryCache.ts +0 -1
- package/src/tests/query.test.tsx +17 -0
- package/src/tests/queryCache.test.tsx +36 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.esm.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n getQueries() {\n return this.observers.map((observer) => observer.getCurrentQuery())\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.esm.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n 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 private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getObservers","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":"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"}
|
|
@@ -88,6 +88,10 @@ class QueriesObserver extends subscribable.Subscribable {
|
|
|
88
88
|
return this.observers.map(observer => observer.getCurrentQuery());
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
getObservers() {
|
|
92
|
+
return this.observers;
|
|
93
|
+
}
|
|
94
|
+
|
|
91
95
|
getOptimisticResult(queries) {
|
|
92
96
|
return this.findMatchingObservers(queries).map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));
|
|
93
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n getQueries() {\n return this.observers.map((observer) => observer.getCurrentQuery())\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.js","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n 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 private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getObservers","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":"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"}
|
|
@@ -84,6 +84,10 @@ class QueriesObserver extends Subscribable {
|
|
|
84
84
|
return this.observers.map(observer => observer.getCurrentQuery());
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
+
getObservers() {
|
|
88
|
+
return this.observers;
|
|
89
|
+
}
|
|
90
|
+
|
|
87
91
|
getOptimisticResult(queries) {
|
|
88
92
|
return this.findMatchingObservers(queries).map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));
|
|
89
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queriesObserver.mjs","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n getQueries() {\n return this.observers.map((observer) => observer.getCurrentQuery())\n }\n\n getOptimisticResult(queries: QueryObserverOptions[]): QueryObserverResult[] {\n return this.findMatchingObservers(queries).map((match) =>\n match.observer.getOptimisticResult(match.defaultedQueryOptions),\n )\n }\n\n private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queriesObserver.mjs","sources":["../../src/queriesObserver.ts"],"sourcesContent":["import { difference, replaceAt } from './utils'\nimport { notifyManager } from './notifyManager'\nimport type {\n QueryObserverOptions,\n QueryObserverResult,\n DefaultedQueryObserverOptions,\n} from './types'\nimport type { QueryClient } from './queryClient'\nimport type { NotifyOptions } from './queryObserver'\nimport { QueryObserver } from './queryObserver'\nimport { Subscribable } from './subscribable'\n\ntype QueriesObserverListener = (result: QueryObserverResult[]) => void\n\nexport class QueriesObserver extends Subscribable<QueriesObserverListener> {\n private client: QueryClient\n private result: QueryObserverResult[]\n private queries: QueryObserverOptions[]\n private observers: QueryObserver[]\n private observersMap: Record<string, QueryObserver>\n\n constructor(client: QueryClient, queries?: QueryObserverOptions[]) {\n super()\n\n this.client = client\n this.queries = []\n this.result = []\n this.observers = []\n this.observersMap = {}\n\n if (queries) {\n this.setQueries(queries)\n }\n }\n\n protected onSubscribe(): void {\n if (this.listeners.length === 1) {\n this.observers.forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n }\n }\n\n protected onUnsubscribe(): void {\n if (!this.listeners.length) {\n this.destroy()\n }\n }\n\n destroy(): void {\n this.listeners = []\n this.observers.forEach((observer) => {\n observer.destroy()\n })\n }\n\n setQueries(\n queries: QueryObserverOptions[],\n notifyOptions?: NotifyOptions,\n ): void {\n this.queries = queries\n\n notifyManager.batch(() => {\n const prevObservers = this.observers\n\n const newObserverMatches = this.findMatchingObservers(this.queries)\n\n // set options for the new observers to notify of changes\n newObserverMatches.forEach((match) =>\n match.observer.setOptions(match.defaultedQueryOptions, notifyOptions),\n )\n\n const newObservers = newObserverMatches.map((match) => match.observer)\n const newObserversMap = Object.fromEntries(\n newObservers.map((observer) => [observer.options.queryHash, observer]),\n )\n const newResult = newObservers.map((observer) =>\n observer.getCurrentResult(),\n )\n\n const hasIndexChange = newObservers.some(\n (observer, index) => observer !== prevObservers[index],\n )\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return\n }\n\n this.observers = newObservers\n this.observersMap = newObserversMap\n this.result = newResult\n\n if (!this.hasListeners()) {\n return\n }\n\n difference(prevObservers, newObservers).forEach((observer) => {\n observer.destroy()\n })\n\n difference(newObservers, prevObservers).forEach((observer) => {\n observer.subscribe((result) => {\n this.onUpdate(observer, result)\n })\n })\n\n this.notify()\n })\n }\n\n getCurrentResult(): QueryObserverResult[] {\n return this.result\n }\n\n 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 private findMatchingObservers(\n queries: QueryObserverOptions[],\n ): QueryObserverMatch[] {\n const prevObservers = this.observers\n const defaultedQueryOptions = queries.map((options) =>\n this.client.defaultQueryOptions(options),\n )\n\n const matchingObservers: QueryObserverMatch[] =\n defaultedQueryOptions.flatMap((defaultedOptions) => {\n const match = prevObservers.find(\n (observer) =>\n observer.options.queryHash === defaultedOptions.queryHash,\n )\n if (match != null) {\n return [{ defaultedQueryOptions: defaultedOptions, observer: match }]\n }\n return []\n })\n\n const matchedQueryHashes = matchingObservers.map(\n (match) => match.defaultedQueryOptions.queryHash,\n )\n const unmatchedQueries = defaultedQueryOptions.filter(\n (defaultedOptions) =>\n !matchedQueryHashes.includes(defaultedOptions.queryHash),\n )\n\n const unmatchedObservers = prevObservers.filter(\n (prevObserver) =>\n !matchingObservers.some((match) => match.observer === prevObserver),\n )\n\n const getObserver = (options: QueryObserverOptions): QueryObserver => {\n const defaultedOptions = this.client.defaultQueryOptions(options)\n const currentObserver = this.observersMap[defaultedOptions.queryHash!]\n return currentObserver ?? new QueryObserver(this.client, defaultedOptions)\n }\n\n const newOrReusedObservers: QueryObserverMatch[] = unmatchedQueries.map(\n (options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index]\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver,\n }\n }\n }\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options),\n }\n },\n )\n\n const sortMatchesByOrderOfQueries = (\n a: QueryObserverMatch,\n b: QueryObserverMatch,\n ): number =>\n defaultedQueryOptions.indexOf(a.defaultedQueryOptions) -\n defaultedQueryOptions.indexOf(b.defaultedQueryOptions)\n\n return matchingObservers\n .concat(newOrReusedObservers)\n .sort(sortMatchesByOrderOfQueries)\n }\n\n private onUpdate(observer: QueryObserver, result: QueryObserverResult): void {\n const index = this.observers.indexOf(observer)\n if (index !== -1) {\n this.result = replaceAt(this.result, index, result)\n this.notify()\n }\n }\n\n private notify(): void {\n notifyManager.batch(() => {\n this.listeners.forEach((listener) => {\n listener(this.result)\n })\n })\n }\n}\n\ntype QueryObserverMatch = {\n defaultedQueryOptions: DefaultedQueryObserverOptions\n observer: QueryObserver\n}\n"],"names":["QueriesObserver","Subscribable","constructor","client","queries","result","observers","observersMap","setQueries","onSubscribe","listeners","length","forEach","observer","subscribe","onUpdate","onUnsubscribe","destroy","notifyOptions","notifyManager","batch","prevObservers","newObserverMatches","findMatchingObservers","match","setOptions","defaultedQueryOptions","newObservers","map","newObserversMap","Object","fromEntries","options","queryHash","newResult","getCurrentResult","hasIndexChange","some","index","hasListeners","difference","notify","getQueries","getCurrentQuery","getObservers","getOptimisticResult","defaultQueryOptions","matchingObservers","flatMap","defaultedOptions","find","matchedQueryHashes","unmatchedQueries","filter","includes","unmatchedObservers","prevObserver","getObserver","currentObserver","QueryObserver","newOrReusedObservers","keepPreviousData","previouslyUsedObserver","undefined","sortMatchesByOrderOfQueries","a","b","indexOf","concat","sort","replaceAt","listener"],"mappings":";;;;;AAcO,MAAMA,eAAN,SAA8BC,YAA9B,CAAoE;AAOzEC,EAAAA,WAAW,CAACC,MAAD,EAAsBC,OAAtB,EAAwD;AACjE,IAAA,KAAA,EAAA,CAAA;IAEA,IAAKD,CAAAA,MAAL,GAAcA,MAAd,CAAA;IACA,IAAKC,CAAAA,OAAL,GAAe,EAAf,CAAA;IACA,IAAKC,CAAAA,MAAL,GAAc,EAAd,CAAA;IACA,IAAKC,CAAAA,SAAL,GAAiB,EAAjB,CAAA;IACA,IAAKC,CAAAA,YAAL,GAAoB,EAApB,CAAA;;AAEA,IAAA,IAAIH,OAAJ,EAAa;MACX,IAAKI,CAAAA,UAAL,CAAgBJ,OAAhB,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAESK,EAAAA,WAAW,GAAS;AAC5B,IAAA,IAAI,KAAKC,SAAL,CAAeC,MAAf,KAA0B,CAA9B,EAAiC;AAC/B,MAAA,IAAA,CAAKL,SAAL,CAAeM,OAAf,CAAwBC,QAAD,IAAc;AACnCA,QAAAA,QAAQ,CAACC,SAAT,CAAoBT,MAAD,IAAY;AAC7B,UAAA,IAAA,CAAKU,QAAL,CAAcF,QAAd,EAAwBR,MAAxB,CAAA,CAAA;SADF,CAAA,CAAA;OADF,CAAA,CAAA;AAKD,KAAA;AACF,GAAA;;AAESW,EAAAA,aAAa,GAAS;AAC9B,IAAA,IAAI,CAAC,IAAA,CAAKN,SAAL,CAAeC,MAApB,EAA4B;AAC1B,MAAA,IAAA,CAAKM,OAAL,EAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEDA,EAAAA,OAAO,GAAS;IACd,IAAKP,CAAAA,SAAL,GAAiB,EAAjB,CAAA;AACA,IAAA,IAAA,CAAKJ,SAAL,CAAeM,OAAf,CAAwBC,QAAD,IAAc;AACnCA,MAAAA,QAAQ,CAACI,OAAT,EAAA,CAAA;KADF,CAAA,CAAA;AAGD,GAAA;;AAEDT,EAAAA,UAAU,CACRJ,OADQ,EAERc,aAFQ,EAGF;IACN,IAAKd,CAAAA,OAAL,GAAeA,OAAf,CAAA;IAEAe,aAAa,CAACC,KAAd,CAAoB,MAAM;MACxB,MAAMC,aAAa,GAAG,IAAA,CAAKf,SAA3B,CAAA;MAEA,MAAMgB,kBAAkB,GAAG,IAAKC,CAAAA,qBAAL,CAA2B,IAAKnB,CAAAA,OAAhC,CAA3B,CAHwB;;AAMxBkB,MAAAA,kBAAkB,CAACV,OAAnB,CAA4BY,KAAD,IACzBA,KAAK,CAACX,QAAN,CAAeY,UAAf,CAA0BD,KAAK,CAACE,qBAAhC,EAAuDR,aAAvD,CADF,CAAA,CAAA;MAIA,MAAMS,YAAY,GAAGL,kBAAkB,CAACM,GAAnB,CAAwBJ,KAAD,IAAWA,KAAK,CAACX,QAAxC,CAArB,CAAA;MACA,MAAMgB,eAAe,GAAGC,MAAM,CAACC,WAAP,CACtBJ,YAAY,CAACC,GAAb,CAAkBf,QAAD,IAAc,CAACA,QAAQ,CAACmB,OAAT,CAAiBC,SAAlB,EAA6BpB,QAA7B,CAA/B,CADsB,CAAxB,CAAA;AAGA,MAAA,MAAMqB,SAAS,GAAGP,YAAY,CAACC,GAAb,CAAkBf,QAAD,IACjCA,QAAQ,CAACsB,gBAAT,EADgB,CAAlB,CAAA;AAIA,MAAA,MAAMC,cAAc,GAAGT,YAAY,CAACU,IAAb,CACrB,CAACxB,QAAD,EAAWyB,KAAX,KAAqBzB,QAAQ,KAAKQ,aAAa,CAACiB,KAAD,CAD1B,CAAvB,CAAA;;MAGA,IAAIjB,aAAa,CAACV,MAAd,KAAyBgB,YAAY,CAAChB,MAAtC,IAAgD,CAACyB,cAArD,EAAqE;AACnE,QAAA,OAAA;AACD,OAAA;;MAED,IAAK9B,CAAAA,SAAL,GAAiBqB,YAAjB,CAAA;MACA,IAAKpB,CAAAA,YAAL,GAAoBsB,eAApB,CAAA;MACA,IAAKxB,CAAAA,MAAL,GAAc6B,SAAd,CAAA;;AAEA,MAAA,IAAI,CAAC,IAAA,CAAKK,YAAL,EAAL,EAA0B;AACxB,QAAA,OAAA;AACD,OAAA;;MAEDC,UAAU,CAACnB,aAAD,EAAgBM,YAAhB,CAAV,CAAwCf,OAAxC,CAAiDC,QAAD,IAAc;AAC5DA,QAAAA,QAAQ,CAACI,OAAT,EAAA,CAAA;OADF,CAAA,CAAA;MAIAuB,UAAU,CAACb,YAAD,EAAeN,aAAf,CAAV,CAAwCT,OAAxC,CAAiDC,QAAD,IAAc;AAC5DA,QAAAA,QAAQ,CAACC,SAAT,CAAoBT,MAAD,IAAY;AAC7B,UAAA,IAAA,CAAKU,QAAL,CAAcF,QAAd,EAAwBR,MAAxB,CAAA,CAAA;SADF,CAAA,CAAA;OADF,CAAA,CAAA;AAMA,MAAA,IAAA,CAAKoC,MAAL,EAAA,CAAA;KA3CF,CAAA,CAAA;AA6CD,GAAA;;AAEDN,EAAAA,gBAAgB,GAA0B;AACxC,IAAA,OAAO,KAAK9B,MAAZ,CAAA;AACD,GAAA;;AAEDqC,EAAAA,UAAU,GAAG;IACX,OAAO,IAAA,CAAKpC,SAAL,CAAesB,GAAf,CAAoBf,QAAD,IAAcA,QAAQ,CAAC8B,eAAT,EAAjC,CAAP,CAAA;AACD,GAAA;;AAEDC,EAAAA,YAAY,GAAG;AACb,IAAA,OAAO,KAAKtC,SAAZ,CAAA;AACD,GAAA;;EAEDuC,mBAAmB,CAACzC,OAAD,EAAyD;AAC1E,IAAA,OAAO,KAAKmB,qBAAL,CAA2BnB,OAA3B,CAAoCwB,CAAAA,GAApC,CAAyCJ,KAAD,IAC7CA,KAAK,CAACX,QAAN,CAAegC,mBAAf,CAAmCrB,KAAK,CAACE,qBAAzC,CADK,CAAP,CAAA;AAGD,GAAA;;EAEOH,qBAAqB,CAC3BnB,OAD2B,EAEL;IACtB,MAAMiB,aAAa,GAAG,IAAA,CAAKf,SAA3B,CAAA;AACA,IAAA,MAAMoB,qBAAqB,GAAGtB,OAAO,CAACwB,GAAR,CAAaI,OAAD,IACxC,IAAA,CAAK7B,MAAL,CAAY2C,mBAAZ,CAAgCd,OAAhC,CAD4B,CAA9B,CAAA;AAIA,IAAA,MAAMe,iBAAuC,GAC3CrB,qBAAqB,CAACsB,OAAtB,CAA+BC,gBAAD,IAAsB;AAClD,MAAA,MAAMzB,KAAK,GAAGH,aAAa,CAAC6B,IAAd,CACXrC,QAAD,IACEA,QAAQ,CAACmB,OAAT,CAAiBC,SAAjB,KAA+BgB,gBAAgB,CAAChB,SAFtC,CAAd,CAAA;;MAIA,IAAIT,KAAK,IAAI,IAAb,EAAmB;AACjB,QAAA,OAAO,CAAC;AAAEE,UAAAA,qBAAqB,EAAEuB,gBAAzB;AAA2CpC,UAAAA,QAAQ,EAAEW,KAAAA;AAArD,SAAD,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,OAAO,EAAP,CAAA;AACD,KATD,CADF,CAAA;AAYA,IAAA,MAAM2B,kBAAkB,GAAGJ,iBAAiB,CAACnB,GAAlB,CACxBJ,KAAD,IAAWA,KAAK,CAACE,qBAAN,CAA4BO,SADd,CAA3B,CAAA;AAGA,IAAA,MAAMmB,gBAAgB,GAAG1B,qBAAqB,CAAC2B,MAAtB,CACtBJ,gBAAD,IACE,CAACE,kBAAkB,CAACG,QAAnB,CAA4BL,gBAAgB,CAAChB,SAA7C,CAFoB,CAAzB,CAAA;IAKA,MAAMsB,kBAAkB,GAAGlC,aAAa,CAACgC,MAAd,CACxBG,YAAD,IACE,CAACT,iBAAiB,CAACV,IAAlB,CAAwBb,KAAD,IAAWA,KAAK,CAACX,QAAN,KAAmB2C,YAArD,CAFsB,CAA3B,CAAA;;IAKA,MAAMC,WAAW,GAAIzB,OAAD,IAAkD;MACpE,MAAMiB,gBAAgB,GAAG,IAAK9C,CAAAA,MAAL,CAAY2C,mBAAZ,CAAgCd,OAAhC,CAAzB,CAAA;MACA,MAAM0B,eAAe,GAAG,IAAKnD,CAAAA,YAAL,CAAkB0C,gBAAgB,CAAChB,SAAnC,CAAxB,CAAA;MACA,OAAOyB,eAAP,IAAOA,IAAAA,GAAAA,eAAP,GAA0B,IAAIC,aAAJ,CAAkB,IAAKxD,CAAAA,MAAvB,EAA+B8C,gBAA/B,CAA1B,CAAA;KAHF,CAAA;;IAMA,MAAMW,oBAA0C,GAAGR,gBAAgB,CAACxB,GAAjB,CACjD,CAACI,OAAD,EAAUM,KAAV,KAAoB;MAClB,IAAIN,OAAO,CAAC6B,gBAAZ,EAA8B;AAC5B;AACA,QAAA,MAAMC,sBAAsB,GAAGP,kBAAkB,CAACjB,KAAD,CAAjD,CAAA;;QACA,IAAIwB,sBAAsB,KAAKC,SAA/B,EAA0C;UACxC,OAAO;AACLrC,YAAAA,qBAAqB,EAAEM,OADlB;AAELnB,YAAAA,QAAQ,EAAEiD,sBAAAA;WAFZ,CAAA;AAID,SAAA;AACF,OAAA;;MACD,OAAO;AACLpC,QAAAA,qBAAqB,EAAEM,OADlB;QAELnB,QAAQ,EAAE4C,WAAW,CAACzB,OAAD,CAAA;OAFvB,CAAA;AAID,KAhBgD,CAAnD,CAAA;;IAmBA,MAAMgC,2BAA2B,GAAG,CAClCC,CADkC,EAElCC,CAFkC,KAIlCxC,qBAAqB,CAACyC,OAAtB,CAA8BF,CAAC,CAACvC,qBAAhC,IACAA,qBAAqB,CAACyC,OAAtB,CAA8BD,CAAC,CAACxC,qBAAhC,CALF,CAAA;;IAOA,OAAOqB,iBAAiB,CACrBqB,MADI,CACGR,oBADH,CAEJS,CAAAA,IAFI,CAECL,2BAFD,CAAP,CAAA;AAGD,GAAA;;AAEOjD,EAAAA,QAAQ,CAACF,QAAD,EAA0BR,MAA1B,EAA6D;IAC3E,MAAMiC,KAAK,GAAG,IAAKhC,CAAAA,SAAL,CAAe6D,OAAf,CAAuBtD,QAAvB,CAAd,CAAA;;AACA,IAAA,IAAIyB,KAAK,KAAK,CAAC,CAAf,EAAkB;MAChB,IAAKjC,CAAAA,MAAL,GAAciE,SAAS,CAAC,IAAA,CAAKjE,MAAN,EAAciC,KAAd,EAAqBjC,MAArB,CAAvB,CAAA;AACA,MAAA,IAAA,CAAKoC,MAAL,EAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEOA,EAAAA,MAAM,GAAS;IACrBtB,aAAa,CAACC,KAAd,CAAoB,MAAM;AACxB,MAAA,IAAA,CAAKV,SAAL,CAAeE,OAAf,CAAwB2D,QAAD,IAAc;QACnCA,QAAQ,CAAC,IAAKlE,CAAAA,MAAN,CAAR,CAAA;OADF,CAAA,CAAA;KADF,CAAA,CAAA;AAKD,GAAA;;AAvMwE;;;;"}
|
package/build/lib/query.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ interface QueryConfig<TQueryFnData, TError, TData, TQueryKey extends QueryKey =
|
|
|
11
11
|
options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>;
|
|
12
12
|
defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>;
|
|
13
13
|
state?: QueryState<TData, TError>;
|
|
14
|
-
meta: QueryMeta | undefined;
|
|
15
14
|
}
|
|
16
15
|
export interface QueryState<TData = unknown, TError = unknown> {
|
|
17
16
|
data: TData | undefined;
|
|
@@ -34,7 +33,6 @@ export interface FetchContext<TQueryFnData, TError, TData, TQueryKey extends Que
|
|
|
34
33
|
options: QueryOptions<TQueryFnData, TError, TData, any>;
|
|
35
34
|
queryKey: TQueryKey;
|
|
36
35
|
state: QueryState<TData, TError>;
|
|
37
|
-
meta: QueryMeta | undefined;
|
|
38
36
|
}
|
|
39
37
|
export interface QueryBehavior<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> {
|
|
40
38
|
onFetch: (context: FetchContext<TQueryFnData, TError, TData, TQueryKey>) => void;
|
|
@@ -87,7 +85,6 @@ export declare class Query<TQueryFnData = unknown, TError = unknown, TData = TQu
|
|
|
87
85
|
initialState: QueryState<TData, TError>;
|
|
88
86
|
revertState?: QueryState<TData, TError>;
|
|
89
87
|
state: QueryState<TData, TError>;
|
|
90
|
-
meta: QueryMeta | undefined;
|
|
91
88
|
isFetchingOptimistic?: boolean;
|
|
92
89
|
private cache;
|
|
93
90
|
private logger;
|
|
@@ -97,6 +94,7 @@ export declare class Query<TQueryFnData = unknown, TError = unknown, TData = TQu
|
|
|
97
94
|
private defaultOptions?;
|
|
98
95
|
private abortSignalConsumed;
|
|
99
96
|
constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>);
|
|
97
|
+
get meta(): QueryMeta | undefined;
|
|
100
98
|
private setOptions;
|
|
101
99
|
protected optionalRemove(): void;
|
|
102
100
|
setData(newData: TData, options?: SetDataOptions & {
|
package/build/lib/query.esm.js
CHANGED
|
@@ -18,14 +18,16 @@ class Query extends Removable {
|
|
|
18
18
|
this.queryHash = config.queryHash;
|
|
19
19
|
this.initialState = config.state || getDefaultState(this.options);
|
|
20
20
|
this.state = this.initialState;
|
|
21
|
-
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get meta() {
|
|
24
|
+
return this.options.meta;
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
setOptions(options) {
|
|
25
28
|
this.options = { ...this.defaultOptions,
|
|
26
29
|
...options
|
|
27
30
|
};
|
|
28
|
-
this.meta = options == null ? void 0 : options.meta;
|
|
29
31
|
this.updateCacheTime(this.options.cacheTime);
|
|
30
32
|
}
|
|
31
33
|
|
|
@@ -255,8 +257,7 @@ class Query extends Removable {
|
|
|
255
257
|
options: this.options,
|
|
256
258
|
queryKey: this.queryKey,
|
|
257
259
|
state: this.state,
|
|
258
|
-
fetchFn
|
|
259
|
-
meta: this.meta
|
|
260
|
+
fetchFn
|
|
260
261
|
};
|
|
261
262
|
addSignalProperty(context);
|
|
262
263
|
(_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context); // Store state in case the current fetch needs to be reverted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.esm.js","sources":["../../src/query.ts"],"sourcesContent":["import { getAbortController, noop, replaceData, timeUntilStale } from './utils'\nimport type {\n InitialDataFunction,\n QueryKey,\n QueryOptions,\n QueryStatus,\n QueryFunctionContext,\n QueryMeta,\n CancelOptions,\n SetDataOptions,\n FetchStatus,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Logger } from './logger'\nimport { defaultLogger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport type { Retryer } from './retryer'\nimport { isCancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n logger?: Logger\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryState<TData = unknown, TError = unknown> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: any\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal?: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: any\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: any\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: QueryState<TData, TError>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n initialState: QueryState<TData, TError>\n revertState?: QueryState<TData, TError>\n state: QueryState<TData, TError>\n meta: QueryMeta | undefined\n isFetchingOptimistic?: boolean\n\n private cache: QueryCache\n private logger: Logger\n private promise?: Promise<TData>\n private retryer?: Retryer<TData>\n private observers: QueryObserver<any, any, any, any, any>[]\n private defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n private abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.abortSignalConsumed = false\n this.defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.cache = config.cache\n this.logger = config.logger || defaultLogger\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.initialState = config.state || getDefaultState(this.options)\n this.state = this.initialState\n this.meta = config.meta\n }\n\n private setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\n\n this.meta = options?.meta\n\n this.updateCacheTime(this.options.cacheTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: QueryState<TData, TError>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.promise\n this.retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n this.observers.some((observer) => observer.getCurrentResult().isStale)\n )\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({ revert: true })\n } else {\n this.retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions,\n ): Promise<TData> {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({ silent: true })\n } else if (this.promise) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.retryer?.continueRetry()\n // Return current promise if we are already fetching\n return this.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (!Array.isArray(this.options.queryKey)) {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = getAbortController()\n\n // Create query function context\n const queryFnContext: QueryFunctionContext<TQueryKey> = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta,\n }\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true\n return abortController.signal\n }\n return undefined\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject('Missing queryFn')\n }\n this.abortSignalConsumed = false\n return this.options.queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const context: FetchContext<TQueryFnData, TError, TData, TQueryKey> = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n meta: this.meta,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(context)\n\n // Store state in case the current fetch needs to be reverted\n this.revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.cache.config.onError?.(error, this as Query<any, any, any, any>)\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.retryer = createRetryer({\n fn: context.fetchFn as () => TData,\n abort: abortController?.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error('undefined') as any)\n return\n }\n\n this.setData(data as TData)\n\n // Notify cache callback\n this.cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n })\n\n this.promise = this.retryer.promise\n\n return this.promise\n }\n\n private dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading',\n }),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error as TError,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action)\n })\n\n this.cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasData = typeof data !== 'undefined'\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle',\n }\n}\n"],"names":["Query","Removable","constructor","config","abortSignalConsumed","defaultOptions","setOptions","options","observers","cache","logger","defaultLogger","queryKey","queryHash","initialState","state","getDefaultState","meta","updateCacheTime","cacheTime","optionalRemove","length","fetchStatus","remove","setData","newData","data","replaceData","dispatch","type","dataUpdatedAt","updatedAt","manual","setState","setStateOptions","cancel","promise","retryer","then","noop","catch","Promise","resolve","destroy","silent","reset","isActive","some","observer","enabled","isDisabled","getObserversCount","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","onFocus","find","x","shouldFetchOnWindowFocus","refetch","cancelRefetch","continue","onOnline","shouldFetchOnReconnect","addObserver","indexOf","push","clearGcTimeout","notify","query","removeObserver","filter","revert","cancelRetry","scheduleGc","invalidate","fetch","fetchOptions","continueRetry","queryFn","Array","isArray","process","env","NODE_ENV","error","abortController","getAbortController","queryFnContext","pageParam","undefined","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","fetchFn","reject","context","behavior","onFetch","revertState","fetchMeta","onError","isCancelledError","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","Error","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","action","reducer","fetchFailureCount","fetchFailureReason","canFetch","status","dataUpdateCount","Date","now","errorUpdateCount","errorUpdatedAt","notifyManager","batch","forEach","onQueryUpdate","initialData","hasData","initialDataUpdatedAt"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query.esm.js","sources":["../../src/query.ts"],"sourcesContent":["import { getAbortController, noop, replaceData, timeUntilStale } from './utils'\nimport type {\n InitialDataFunction,\n QueryKey,\n QueryOptions,\n QueryStatus,\n QueryFunctionContext,\n QueryMeta,\n CancelOptions,\n SetDataOptions,\n FetchStatus,\n} from './types'\nimport type { QueryCache } from './queryCache'\nimport type { QueryObserver } from './queryObserver'\nimport type { Logger } from './logger'\nimport { defaultLogger } from './logger'\nimport { notifyManager } from './notifyManager'\nimport type { Retryer } from './retryer'\nimport { isCancelledError, canFetch, createRetryer } from './retryer'\nimport { Removable } from './removable'\n\n// TYPES\n\ninterface QueryConfig<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n cache: QueryCache\n queryKey: TQueryKey\n queryHash: string\n logger?: Logger\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n state?: QueryState<TData, TError>\n}\n\nexport interface QueryState<TData = unknown, TError = unknown> {\n data: TData | undefined\n dataUpdateCount: number\n dataUpdatedAt: number\n error: TError | null\n errorUpdateCount: number\n errorUpdatedAt: number\n fetchFailureCount: number\n fetchFailureReason: TError | null\n fetchMeta: any\n isInvalidated: boolean\n status: QueryStatus\n fetchStatus: FetchStatus\n}\n\nexport interface FetchContext<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n fetchFn: () => unknown | Promise<unknown>\n fetchOptions?: FetchOptions\n signal?: AbortSignal\n options: QueryOptions<TQueryFnData, TError, TData, any>\n queryKey: TQueryKey\n state: QueryState<TData, TError>\n}\n\nexport interface QueryBehavior<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> {\n onFetch: (\n context: FetchContext<TQueryFnData, TError, TData, TQueryKey>,\n ) => void\n}\n\nexport interface FetchOptions {\n cancelRefetch?: boolean\n meta?: any\n}\n\ninterface FailedAction<TError> {\n type: 'failed'\n failureCount: number\n error: TError\n}\n\ninterface FetchAction {\n type: 'fetch'\n meta?: any\n}\n\ninterface SuccessAction<TData> {\n data: TData | undefined\n type: 'success'\n dataUpdatedAt?: number\n manual?: boolean\n}\n\ninterface ErrorAction<TError> {\n type: 'error'\n error: TError\n}\n\ninterface InvalidateAction {\n type: 'invalidate'\n}\n\ninterface PauseAction {\n type: 'pause'\n}\n\ninterface ContinueAction {\n type: 'continue'\n}\n\ninterface SetStateAction<TData, TError> {\n type: 'setState'\n state: QueryState<TData, TError>\n setStateOptions?: SetStateOptions\n}\n\nexport type Action<TData, TError> =\n | ContinueAction\n | ErrorAction<TError>\n | FailedAction<TError>\n | FetchAction\n | InvalidateAction\n | PauseAction\n | SetStateAction<TData, TError>\n | SuccessAction<TData>\n\nexport interface SetStateOptions {\n meta?: any\n}\n\n// CLASS\n\nexport class Query<\n TQueryFnData = unknown,\n TError = unknown,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> extends Removable {\n queryKey: TQueryKey\n queryHash: string\n options!: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n initialState: QueryState<TData, TError>\n revertState?: QueryState<TData, TError>\n state: QueryState<TData, TError>\n isFetchingOptimistic?: boolean\n\n private cache: QueryCache\n private logger: Logger\n private promise?: Promise<TData>\n private retryer?: Retryer<TData>\n private observers: QueryObserver<any, any, any, any, any>[]\n private defaultOptions?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>\n private abortSignalConsumed: boolean\n\n constructor(config: QueryConfig<TQueryFnData, TError, TData, TQueryKey>) {\n super()\n\n this.abortSignalConsumed = false\n this.defaultOptions = config.defaultOptions\n this.setOptions(config.options)\n this.observers = []\n this.cache = config.cache\n this.logger = config.logger || defaultLogger\n this.queryKey = config.queryKey\n this.queryHash = config.queryHash\n this.initialState = config.state || getDefaultState(this.options)\n this.state = this.initialState\n }\n\n get meta(): QueryMeta | undefined {\n return this.options.meta\n }\n\n private setOptions(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n ): void {\n this.options = { ...this.defaultOptions, ...options }\n\n this.updateCacheTime(this.options.cacheTime)\n }\n\n protected optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this)\n }\n }\n\n setData(\n newData: TData,\n options?: SetDataOptions & { manual: boolean },\n ): TData {\n const data = replaceData(this.state.data, newData, this.options)\n\n // Set data and mark it as cached\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options?.updatedAt,\n manual: options?.manual,\n })\n\n return data\n }\n\n setState(\n state: QueryState<TData, TError>,\n setStateOptions?: SetStateOptions,\n ): void {\n this.dispatch({ type: 'setState', state, setStateOptions })\n }\n\n cancel(options?: CancelOptions): Promise<void> {\n const promise = this.promise\n this.retryer?.cancel(options)\n return promise ? promise.then(noop).catch(noop) : Promise.resolve()\n }\n\n destroy(): void {\n super.destroy()\n\n this.cancel({ silent: true })\n }\n\n reset(): void {\n this.destroy()\n this.setState(this.initialState)\n }\n\n isActive(): boolean {\n return this.observers.some((observer) => observer.options.enabled !== false)\n }\n\n isDisabled(): boolean {\n return this.getObserversCount() > 0 && !this.isActive()\n }\n\n isStale(): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n this.observers.some((observer) => observer.getCurrentResult().isStale)\n )\n }\n\n isStaleByTime(staleTime = 0): boolean {\n return (\n this.state.isInvalidated ||\n !this.state.dataUpdatedAt ||\n !timeUntilStale(this.state.dataUpdatedAt, staleTime)\n )\n }\n\n onFocus(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnWindowFocus())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n onOnline(): void {\n const observer = this.observers.find((x) => x.shouldFetchOnReconnect())\n\n if (observer) {\n observer.refetch({ cancelRefetch: false })\n }\n\n // Continue fetch if currently paused\n this.retryer?.continue()\n }\n\n addObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer)\n\n // Stop the query from being garbage collected\n this.clearGcTimeout()\n\n this.cache.notify({ type: 'observerAdded', query: this, observer })\n }\n }\n\n removeObserver(observer: QueryObserver<any, any, any, any, any>): void {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter((x) => x !== observer)\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({ revert: true })\n } else {\n this.retryer.cancelRetry()\n }\n }\n\n this.scheduleGc()\n }\n\n this.cache.notify({ type: 'observerRemoved', query: this, observer })\n }\n }\n\n getObserversCount(): number {\n return this.observers.length\n }\n\n invalidate(): void {\n if (!this.state.isInvalidated) {\n this.dispatch({ type: 'invalidate' })\n }\n }\n\n fetch(\n options?: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n fetchOptions?: FetchOptions,\n ): Promise<TData> {\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions?.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({ silent: true })\n } else if (this.promise) {\n // make sure that retries that were potentially cancelled due to unmounts can continue\n this.retryer?.continueRetry()\n // Return current promise if we are already fetching\n return this.promise\n }\n }\n\n // Update config if passed, otherwise the config from the last execution is used\n if (options) {\n this.setOptions(options)\n }\n\n // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n if (!this.options.queryFn) {\n const observer = this.observers.find((x) => x.options.queryFn)\n if (observer) {\n this.setOptions(observer.options)\n }\n }\n\n if (!Array.isArray(this.options.queryKey)) {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']`,\n )\n }\n }\n\n const abortController = getAbortController()\n\n // Create query function context\n const queryFnContext: QueryFunctionContext<TQueryKey> = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta,\n }\n\n // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true\n return abortController.signal\n }\n return undefined\n },\n })\n }\n\n addSignalProperty(queryFnContext)\n\n // Create fetch function\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject('Missing queryFn')\n }\n this.abortSignalConsumed = false\n return this.options.queryFn(queryFnContext)\n }\n\n // Trigger behavior hook\n const context: FetchContext<TQueryFnData, TError, TData, TQueryKey> = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn,\n }\n\n addSignalProperty(context)\n\n this.options.behavior?.onFetch(context)\n\n // Store state in case the current fetch needs to be reverted\n this.revertState = this.state\n\n // Set to fetching state if not already in it\n if (\n this.state.fetchStatus === 'idle' ||\n this.state.fetchMeta !== context.fetchOptions?.meta\n ) {\n this.dispatch({ type: 'fetch', meta: context.fetchOptions?.meta })\n }\n\n const onError = (error: TError | { silent?: boolean }) => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error as TError,\n })\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n this.cache.config.onError?.(error, this as Query<any, any, any, any>)\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error)\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n }\n\n // Try to fetch the data\n this.retryer = createRetryer({\n fn: context.fetchFn as () => TData,\n abort: abortController?.abort.bind(abortController),\n onSuccess: (data) => {\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\n `Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: ${this.queryHash}`,\n )\n }\n onError(new Error('undefined') as any)\n return\n }\n\n this.setData(data as TData)\n\n // Notify cache callback\n this.cache.config.onSuccess?.(data, this as Query<any, any, any, any>)\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc()\n }\n this.isFetchingOptimistic = false\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({ type: 'failed', failureCount, error })\n },\n onPause: () => {\n this.dispatch({ type: 'pause' })\n },\n onContinue: () => {\n this.dispatch({ type: 'continue' })\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode,\n })\n\n this.promise = this.retryer.promise\n\n return this.promise\n }\n\n private dispatch(action: Action<TData, TError>): void {\n const reducer = (\n state: QueryState<TData, TError>,\n ): QueryState<TData, TError> => {\n switch (action.type) {\n case 'failed':\n return {\n ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error,\n }\n case 'pause':\n return {\n ...state,\n fetchStatus: 'paused',\n }\n case 'continue':\n return {\n ...state,\n fetchStatus: 'fetching',\n }\n case 'fetch':\n return {\n ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: action.meta ?? null,\n fetchStatus: canFetch(this.options.networkMode)\n ? 'fetching'\n : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading',\n }),\n }\n case 'success':\n return {\n ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: action.dataUpdatedAt ?? Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null,\n }),\n }\n case 'error':\n const error = action.error as unknown\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState }\n }\n\n return {\n ...state,\n error: error as TError,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error as TError,\n fetchStatus: 'idle',\n status: 'error',\n }\n case 'invalidate':\n return {\n ...state,\n isInvalidated: true,\n }\n case 'setState':\n return {\n ...state,\n ...action.state,\n }\n }\n }\n\n this.state = reducer(this.state)\n\n notifyManager.batch(() => {\n this.observers.forEach((observer) => {\n observer.onQueryUpdate(action)\n })\n\n this.cache.notify({ query: this, type: 'updated', action })\n })\n }\n}\n\nfunction getDefaultState<\n TQueryFnData,\n TError,\n TData,\n TQueryKey extends QueryKey,\n>(\n options: QueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n): QueryState<TData, TError> {\n const data =\n typeof options.initialData === 'function'\n ? (options.initialData as InitialDataFunction<TData>)()\n : options.initialData\n\n const hasData = typeof data !== 'undefined'\n\n const initialDataUpdatedAt = hasData\n ? typeof options.initialDataUpdatedAt === 'function'\n ? (options.initialDataUpdatedAt as () => number | undefined)()\n : options.initialDataUpdatedAt\n : 0\n\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt ?? Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle',\n }\n}\n"],"names":["Query","Removable","constructor","config","abortSignalConsumed","defaultOptions","setOptions","options","observers","cache","logger","defaultLogger","queryKey","queryHash","initialState","state","getDefaultState","meta","updateCacheTime","cacheTime","optionalRemove","length","fetchStatus","remove","setData","newData","data","replaceData","dispatch","type","dataUpdatedAt","updatedAt","manual","setState","setStateOptions","cancel","promise","retryer","then","noop","catch","Promise","resolve","destroy","silent","reset","isActive","some","observer","enabled","isDisabled","getObserversCount","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","onFocus","find","x","shouldFetchOnWindowFocus","refetch","cancelRefetch","continue","onOnline","shouldFetchOnReconnect","addObserver","indexOf","push","clearGcTimeout","notify","query","removeObserver","filter","revert","cancelRetry","scheduleGc","invalidate","fetch","fetchOptions","continueRetry","queryFn","Array","isArray","process","env","NODE_ENV","error","abortController","getAbortController","queryFnContext","pageParam","undefined","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","fetchFn","reject","context","behavior","onFetch","revertState","fetchMeta","onError","isCancelledError","isFetchingOptimistic","createRetryer","fn","abort","bind","onSuccess","Error","onFail","failureCount","onPause","onContinue","retry","retryDelay","networkMode","action","reducer","fetchFailureCount","fetchFailureReason","canFetch","status","dataUpdateCount","Date","now","errorUpdateCount","errorUpdatedAt","notifyManager","batch","forEach","onQueryUpdate","initialData","hasData","initialDataUpdatedAt"],"mappings":";;;;;;AA0IA;AAEO,MAAMA,KAAN,SAKGC,SALH,CAKa;EAiBlBC,WAAW,CAACC,MAAD,EAA8D;AACvE,IAAA,KAAA,EAAA,CAAA;IAEA,IAAKC,CAAAA,mBAAL,GAA2B,KAA3B,CAAA;AACA,IAAA,IAAA,CAAKC,cAAL,GAAsBF,MAAM,CAACE,cAA7B,CAAA;AACA,IAAA,IAAA,CAAKC,UAAL,CAAgBH,MAAM,CAACI,OAAvB,CAAA,CAAA;IACA,IAAKC,CAAAA,SAAL,GAAiB,EAAjB,CAAA;AACA,IAAA,IAAA,CAAKC,KAAL,GAAaN,MAAM,CAACM,KAApB,CAAA;AACA,IAAA,IAAA,CAAKC,MAAL,GAAcP,MAAM,CAACO,MAAP,IAAiBC,aAA/B,CAAA;AACA,IAAA,IAAA,CAAKC,QAAL,GAAgBT,MAAM,CAACS,QAAvB,CAAA;AACA,IAAA,IAAA,CAAKC,SAAL,GAAiBV,MAAM,CAACU,SAAxB,CAAA;IACA,IAAKC,CAAAA,YAAL,GAAoBX,MAAM,CAACY,KAAP,IAAgBC,eAAe,CAAC,IAAKT,CAAAA,OAAN,CAAnD,CAAA;IACA,IAAKQ,CAAAA,KAAL,GAAa,IAAA,CAAKD,YAAlB,CAAA;AACD,GAAA;;AAEO,EAAA,IAAJG,IAAI,GAA0B;IAChC,OAAO,IAAA,CAAKV,OAAL,CAAaU,IAApB,CAAA;AACD,GAAA;;EAEOX,UAAU,CAChBC,OADgB,EAEV;AACN,IAAA,IAAA,CAAKA,OAAL,GAAe,EAAE,GAAG,KAAKF,cAAV;MAA0B,GAAGE,OAAAA;KAA5C,CAAA;AAEA,IAAA,IAAA,CAAKW,eAAL,CAAqB,IAAKX,CAAAA,OAAL,CAAaY,SAAlC,CAAA,CAAA;AACD,GAAA;;AAESC,EAAAA,cAAc,GAAG;AACzB,IAAA,IAAI,CAAC,IAAA,CAAKZ,SAAL,CAAea,MAAhB,IAA0B,IAAKN,CAAAA,KAAL,CAAWO,WAAX,KAA2B,MAAzD,EAAiE;AAC/D,MAAA,IAAA,CAAKb,KAAL,CAAWc,MAAX,CAAkB,IAAlB,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEDC,EAAAA,OAAO,CACLC,OADK,EAELlB,OAFK,EAGE;AACP,IAAA,MAAMmB,IAAI,GAAGC,WAAW,CAAC,KAAKZ,KAAL,CAAWW,IAAZ,EAAkBD,OAAlB,EAA2B,IAAA,CAAKlB,OAAhC,CAAxB,CADO;;AAIP,IAAA,IAAA,CAAKqB,QAAL,CAAc;MACZF,IADY;AAEZG,MAAAA,IAAI,EAAE,SAFM;AAGZC,MAAAA,aAAa,EAAEvB,OAAF,IAAEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEwB,SAHZ;AAIZC,MAAAA,MAAM,EAAEzB,OAAF,IAAEA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEyB,MAAAA;KAJnB,CAAA,CAAA;AAOA,IAAA,OAAON,IAAP,CAAA;AACD,GAAA;;AAEDO,EAAAA,QAAQ,CACNlB,KADM,EAENmB,eAFM,EAGA;AACN,IAAA,IAAA,CAAKN,QAAL,CAAc;AAAEC,MAAAA,IAAI,EAAE,UAAR;MAAoBd,KAApB;AAA2BmB,MAAAA,eAAAA;KAAzC,CAAA,CAAA;AACD,GAAA;;EAEDC,MAAM,CAAC5B,OAAD,EAAyC;AAAA,IAAA,IAAA,aAAA,CAAA;;IAC7C,MAAM6B,OAAO,GAAG,IAAA,CAAKA,OAArB,CAAA;AACA,IAAA,CAAA,aAAA,GAAA,IAAA,CAAKC,OAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,aAAA,CAAcF,MAAd,CAAqB5B,OAArB,CAAA,CAAA;AACA,IAAA,OAAO6B,OAAO,GAAGA,OAAO,CAACE,IAAR,CAAaC,IAAb,CAAA,CAAmBC,KAAnB,CAAyBD,IAAzB,CAAH,GAAoCE,OAAO,CAACC,OAAR,EAAlD,CAAA;AACD,GAAA;;AAEDC,EAAAA,OAAO,GAAS;AACd,IAAA,KAAA,CAAMA,OAAN,EAAA,CAAA;AAEA,IAAA,IAAA,CAAKR,MAAL,CAAY;AAAES,MAAAA,MAAM,EAAE,IAAA;KAAtB,CAAA,CAAA;AACD,GAAA;;AAEDC,EAAAA,KAAK,GAAS;AACZ,IAAA,IAAA,CAAKF,OAAL,EAAA,CAAA;IACA,IAAKV,CAAAA,QAAL,CAAc,IAAA,CAAKnB,YAAnB,CAAA,CAAA;AACD,GAAA;;AAEDgC,EAAAA,QAAQ,GAAY;AAClB,IAAA,OAAO,IAAKtC,CAAAA,SAAL,CAAeuC,IAAf,CAAqBC,QAAD,IAAcA,QAAQ,CAACzC,OAAT,CAAiB0C,OAAjB,KAA6B,KAA/D,CAAP,CAAA;AACD,GAAA;;AAEDC,EAAAA,UAAU,GAAY;IACpB,OAAO,IAAA,CAAKC,iBAAL,EAA2B,GAAA,CAA3B,IAAgC,CAAC,IAAA,CAAKL,QAAL,EAAxC,CAAA;AACD,GAAA;;AAEDM,EAAAA,OAAO,GAAY;IACjB,OACE,IAAA,CAAKrC,KAAL,CAAWsC,aAAX,IACA,CAAC,IAAA,CAAKtC,KAAL,CAAWe,aADZ,IAEA,KAAKtB,SAAL,CAAeuC,IAAf,CAAqBC,QAAD,IAAcA,QAAQ,CAACM,gBAAT,EAA4BF,CAAAA,OAA9D,CAHF,CAAA;AAKD,GAAA;;AAEDG,EAAAA,aAAa,CAACC,SAAS,GAAG,CAAb,EAAyB;IACpC,OACE,IAAA,CAAKzC,KAAL,CAAWsC,aAAX,IACA,CAAC,IAAA,CAAKtC,KAAL,CAAWe,aADZ,IAEA,CAAC2B,cAAc,CAAC,IAAK1C,CAAAA,KAAL,CAAWe,aAAZ,EAA2B0B,SAA3B,CAHjB,CAAA;AAKD,GAAA;;AAEDE,EAAAA,OAAO,GAAS;AAAA,IAAA,IAAA,cAAA,CAAA;;AACd,IAAA,MAAMV,QAAQ,GAAG,IAAKxC,CAAAA,SAAL,CAAemD,IAAf,CAAqBC,CAAD,IAAOA,CAAC,CAACC,wBAAF,EAA3B,CAAjB,CAAA;;AAEA,IAAA,IAAIb,QAAJ,EAAc;MACZA,QAAQ,CAACc,OAAT,CAAiB;AAAEC,QAAAA,aAAa,EAAE,KAAA;OAAlC,CAAA,CAAA;AACD,KALa;;;IAQd,CAAK1B,cAAAA,GAAAA,IAAAA,CAAAA,OAAL,oCAAc2B,QAAd,EAAA,CAAA;AACD,GAAA;;AAEDC,EAAAA,QAAQ,GAAS;AAAA,IAAA,IAAA,cAAA,CAAA;;AACf,IAAA,MAAMjB,QAAQ,GAAG,IAAKxC,CAAAA,SAAL,CAAemD,IAAf,CAAqBC,CAAD,IAAOA,CAAC,CAACM,sBAAF,EAA3B,CAAjB,CAAA;;AAEA,IAAA,IAAIlB,QAAJ,EAAc;MACZA,QAAQ,CAACc,OAAT,CAAiB;AAAEC,QAAAA,aAAa,EAAE,KAAA;OAAlC,CAAA,CAAA;AACD,KALc;;;IAQf,CAAK1B,cAAAA,GAAAA,IAAAA,CAAAA,OAAL,oCAAc2B,QAAd,EAAA,CAAA;AACD,GAAA;;EAEDG,WAAW,CAACnB,QAAD,EAAyD;IAClE,IAAI,IAAA,CAAKxC,SAAL,CAAe4D,OAAf,CAAuBpB,QAAvB,CAAA,KAAqC,CAAC,CAA1C,EAA6C;AAC3C,MAAA,IAAA,CAAKxC,SAAL,CAAe6D,IAAf,CAAoBrB,QAApB,EAD2C;;AAI3C,MAAA,IAAA,CAAKsB,cAAL,EAAA,CAAA;MAEA,IAAK7D,CAAAA,KAAL,CAAW8D,MAAX,CAAkB;AAAE1C,QAAAA,IAAI,EAAE,eAAR;AAAyB2C,QAAAA,KAAK,EAAE,IAAhC;AAAsCxB,QAAAA,QAAAA;OAAxD,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;EAEDyB,cAAc,CAACzB,QAAD,EAAyD;IACrE,IAAI,IAAA,CAAKxC,SAAL,CAAe4D,OAAf,CAAuBpB,QAAvB,CAAA,KAAqC,CAAC,CAA1C,EAA6C;AAC3C,MAAA,IAAA,CAAKxC,SAAL,GAAiB,IAAKA,CAAAA,SAAL,CAAekE,MAAf,CAAuBd,CAAD,IAAOA,CAAC,KAAKZ,QAAnC,CAAjB,CAAA;;AAEA,MAAA,IAAI,CAAC,IAAA,CAAKxC,SAAL,CAAea,MAApB,EAA4B;AAC1B;AACA;QACA,IAAI,IAAA,CAAKgB,OAAT,EAAkB;UAChB,IAAI,IAAA,CAAKjC,mBAAT,EAA8B;YAC5B,IAAKiC,CAAAA,OAAL,CAAaF,MAAb,CAAoB;AAAEwC,cAAAA,MAAM,EAAE,IAAA;aAA9B,CAAA,CAAA;AACD,WAFD,MAEO;YACL,IAAKtC,CAAAA,OAAL,CAAauC,WAAb,EAAA,CAAA;AACD,WAAA;AACF,SAAA;;AAED,QAAA,IAAA,CAAKC,UAAL,EAAA,CAAA;AACD,OAAA;;MAED,IAAKpE,CAAAA,KAAL,CAAW8D,MAAX,CAAkB;AAAE1C,QAAAA,IAAI,EAAE,iBAAR;AAA2B2C,QAAAA,KAAK,EAAE,IAAlC;AAAwCxB,QAAAA,QAAAA;OAA1D,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEDG,EAAAA,iBAAiB,GAAW;IAC1B,OAAO,IAAA,CAAK3C,SAAL,CAAea,MAAtB,CAAA;AACD,GAAA;;AAEDyD,EAAAA,UAAU,GAAS;AACjB,IAAA,IAAI,CAAC,IAAA,CAAK/D,KAAL,CAAWsC,aAAhB,EAA+B;AAC7B,MAAA,IAAA,CAAKzB,QAAL,CAAc;AAAEC,QAAAA,IAAI,EAAE,YAAA;OAAtB,CAAA,CAAA;AACD,KAAA;AACF,GAAA;;AAEDkD,EAAAA,KAAK,CACHxE,OADG,EAEHyE,YAFG,EAGa;AAAA,IAAA,IAAA,qBAAA,EAAA,qBAAA,CAAA;;AAChB,IAAA,IAAI,KAAKjE,KAAL,CAAWO,WAAX,KAA2B,MAA/B,EAAuC;MACrC,IAAI,IAAA,CAAKP,KAAL,CAAWe,aAAX,IAA4BkD,YAA5B,IAA4BA,IAAAA,IAAAA,YAAY,CAAEjB,aAA9C,EAA6D;AAC3D;AACA,QAAA,IAAA,CAAK5B,MAAL,CAAY;AAAES,UAAAA,MAAM,EAAE,IAAA;SAAtB,CAAA,CAAA;AACD,OAHD,MAGO,IAAI,IAAKR,CAAAA,OAAT,EAAkB;AAAA,QAAA,IAAA,cAAA,CAAA;;AACvB;AACA,QAAA,CAAA,cAAA,GAAA,IAAA,CAAKC,OAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,cAAA,CAAc4C,aAAd,EAAA,CAFuB;;AAIvB,QAAA,OAAO,KAAK7C,OAAZ,CAAA;AACD,OAAA;AACF,KAXe;;;AAchB,IAAA,IAAI7B,OAAJ,EAAa;MACX,IAAKD,CAAAA,UAAL,CAAgBC,OAAhB,CAAA,CAAA;AACD,KAhBe;AAmBhB;;;AACA,IAAA,IAAI,CAAC,IAAA,CAAKA,OAAL,CAAa2E,OAAlB,EAA2B;AACzB,MAAA,MAAMlC,QAAQ,GAAG,IAAKxC,CAAAA,SAAL,CAAemD,IAAf,CAAqBC,CAAD,IAAOA,CAAC,CAACrD,OAAF,CAAU2E,OAArC,CAAjB,CAAA;;AACA,MAAA,IAAIlC,QAAJ,EAAc;AACZ,QAAA,IAAA,CAAK1C,UAAL,CAAgB0C,QAAQ,CAACzC,OAAzB,CAAA,CAAA;AACD,OAAA;AACF,KAAA;;IAED,IAAI,CAAC4E,KAAK,CAACC,OAAN,CAAc,KAAK7E,OAAL,CAAaK,QAA3B,CAAL,EAA2C;AACzC,MAAA,IAAIyE,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;QACzC,IAAK7E,CAAAA,MAAL,CAAY8E,KAAZ,CAAA,qIAAA,CAAA,CAAA;AAGD,OAAA;AACF,KAAA;;AAED,IAAA,MAAMC,eAAe,GAAGC,kBAAkB,EAA1C,CAnCgB;;AAsChB,IAAA,MAAMC,cAA+C,GAAG;MACtD/E,QAAQ,EAAE,KAAKA,QADuC;AAEtDgF,MAAAA,SAAS,EAAEC,SAF2C;AAGtD5E,MAAAA,IAAI,EAAE,IAAKA,CAAAA,IAAAA;AAH2C,KAAxD,CAtCgB;AA6ChB;AACA;;IACA,MAAM6E,iBAAiB,GAAIC,MAAD,IAAqB;AAC7CC,MAAAA,MAAM,CAACC,cAAP,CAAsBF,MAAtB,EAA8B,QAA9B,EAAwC;AACtCG,QAAAA,UAAU,EAAE,IAD0B;AAEtCC,QAAAA,GAAG,EAAE,MAAM;AACT,UAAA,IAAIV,eAAJ,EAAqB;YACnB,IAAKrF,CAAAA,mBAAL,GAA2B,IAA3B,CAAA;YACA,OAAOqF,eAAe,CAACW,MAAvB,CAAA;AACD,WAAA;;AACD,UAAA,OAAOP,SAAP,CAAA;AACD,SAAA;OARH,CAAA,CAAA;KADF,CAAA;;AAaAC,IAAAA,iBAAiB,CAACH,cAAD,CAAjB,CA5DgB;;IA+DhB,MAAMU,OAAO,GAAG,MAAM;AACpB,MAAA,IAAI,CAAC,IAAA,CAAK9F,OAAL,CAAa2E,OAAlB,EAA2B;AACzB,QAAA,OAAOzC,OAAO,CAAC6D,MAAR,CAAe,iBAAf,CAAP,CAAA;AACD,OAAA;;MACD,IAAKlG,CAAAA,mBAAL,GAA2B,KAA3B,CAAA;AACA,MAAA,OAAO,KAAKG,OAAL,CAAa2E,OAAb,CAAqBS,cAArB,CAAP,CAAA;AACD,KAND,CA/DgB;;;AAwEhB,IAAA,MAAMY,OAA6D,GAAG;MACpEvB,YADoE;MAEpEzE,OAAO,EAAE,KAAKA,OAFsD;MAGpEK,QAAQ,EAAE,KAAKA,QAHqD;MAIpEG,KAAK,EAAE,KAAKA,KAJwD;AAKpEsF,MAAAA,OAAAA;KALF,CAAA;IAQAP,iBAAiB,CAACS,OAAD,CAAjB,CAAA;IAEA,CAAKhG,qBAAAA,GAAAA,IAAAA,CAAAA,OAAL,CAAaiG,QAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAuBC,OAAvB,CAA+BF,OAA/B,EAlFgB;;AAqFhB,IAAA,IAAA,CAAKG,WAAL,GAAmB,IAAK3F,CAAAA,KAAxB,CArFgB;;AAwFhB,IAAA,IACE,KAAKA,KAAL,CAAWO,WAAX,KAA2B,MAA3B,IACA,IAAKP,CAAAA,KAAL,CAAW4F,SAAX,MAAA,CAAA,qBAAA,GAAyBJ,OAAO,CAACvB,YAAjC,qBAAyB,qBAAsB/D,CAAAA,IAA/C,CAFF,EAGE;AAAA,MAAA,IAAA,sBAAA,CAAA;;AACA,MAAA,IAAA,CAAKW,QAAL,CAAc;AAAEC,QAAAA,IAAI,EAAE,OAAR;AAAiBZ,QAAAA,IAAI,EAAEsF,CAAAA,sBAAAA,GAAAA,OAAO,CAACvB,YAAV,qBAAE,sBAAsB/D,CAAAA,IAAAA;OAA3D,CAAA,CAAA;AACD,KAAA;;IAED,MAAM2F,OAAO,GAAIpB,KAAD,IAA0C;AACxD;MACA,IAAI,EAAEqB,gBAAgB,CAACrB,KAAD,CAAhB,IAA2BA,KAAK,CAAC5C,MAAnC,CAAJ,EAAgD;AAC9C,QAAA,IAAA,CAAKhB,QAAL,CAAc;AACZC,UAAAA,IAAI,EAAE,OADM;AAEZ2D,UAAAA,KAAK,EAAEA,KAAAA;SAFT,CAAA,CAAA;AAID,OAAA;;AAED,MAAA,IAAI,CAACqB,gBAAgB,CAACrB,KAAD,CAArB,EAA8B;AAAA,QAAA,IAAA,qBAAA,EAAA,kBAAA,CAAA;;AAC5B;QACA,CAAK/E,qBAAAA,GAAAA,CAAAA,kBAAAA,GAAAA,IAAAA,CAAAA,KAAL,CAAWN,MAAX,EAAkByG,OAAlB,KAA4BpB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAAA,CAAAA,IAAAA,CAAAA,kBAAAA,EAAAA,KAA5B,EAAmC,IAAnC,CAAA,CAAA;;AAEA,QAAA,IAAIH,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,UAAA,IAAA,CAAK7E,MAAL,CAAY8E,KAAZ,CAAkBA,KAAlB,CAAA,CAAA;AACD,SAAA;AACF,OAAA;;MAED,IAAI,CAAC,IAAKsB,CAAAA,oBAAV,EAAgC;AAC9B;AACA,QAAA,IAAA,CAAKjC,UAAL,EAAA,CAAA;AACD,OAAA;;MACD,IAAKiC,CAAAA,oBAAL,GAA4B,KAA5B,CAAA;AACD,KAvBD,CA/FgB;;;IAyHhB,IAAKzE,CAAAA,OAAL,GAAe0E,aAAa,CAAC;MAC3BC,EAAE,EAAET,OAAO,CAACF,OADe;MAE3BY,KAAK,EAAExB,eAAF,IAAA,IAAA,GAAA,KAAA,CAAA,GAAEA,eAAe,CAAEwB,KAAjB,CAAuBC,IAAvB,CAA4BzB,eAA5B,CAFoB;MAG3B0B,SAAS,EAAGzF,IAAD,IAAU;AAAA,QAAA,IAAA,sBAAA,EAAA,mBAAA,CAAA;;AACnB,QAAA,IAAI,OAAOA,IAAP,KAAgB,WAApB,EAAiC;AAC/B,UAAA,IAAI2D,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,YAA7B,EAA2C;AACzC,YAAA,IAAA,CAAK7E,MAAL,CAAY8E,KAAZ,CAAA,wIAAA,GAC2I,KAAK3E,SADhJ,CAAA,CAAA;AAGD,WAAA;;AACD+F,UAAAA,OAAO,CAAC,IAAIQ,KAAJ,CAAU,WAAV,CAAD,CAAP,CAAA;AACA,UAAA,OAAA;AACD,SAAA;;AAED,QAAA,IAAA,CAAK5F,OAAL,CAAaE,IAAb,CAAA,CAXmB;;QAcnB,CAAKjB,sBAAAA,GAAAA,CAAAA,mBAAAA,GAAAA,IAAAA,CAAAA,KAAL,CAAWN,MAAX,EAAkBgH,SAAlB,KAA8BzF,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,sBAAAA,CAAAA,IAAAA,CAAAA,mBAAAA,EAAAA,IAA9B,EAAoC,IAApC,CAAA,CAAA;;QAEA,IAAI,CAAC,IAAKoF,CAAAA,oBAAV,EAAgC;AAC9B;AACA,UAAA,IAAA,CAAKjC,UAAL,EAAA,CAAA;AACD,SAAA;;QACD,IAAKiC,CAAAA,oBAAL,GAA4B,KAA5B,CAAA;OAvByB;MAyB3BF,OAzB2B;AA0B3BS,MAAAA,MAAM,EAAE,CAACC,YAAD,EAAe9B,KAAf,KAAyB;AAC/B,QAAA,IAAA,CAAK5D,QAAL,CAAc;AAAEC,UAAAA,IAAI,EAAE,QAAR;UAAkByF,YAAlB;AAAgC9B,UAAAA,KAAAA;SAA9C,CAAA,CAAA;OA3ByB;AA6B3B+B,MAAAA,OAAO,EAAE,MAAM;AACb,QAAA,IAAA,CAAK3F,QAAL,CAAc;AAAEC,UAAAA,IAAI,EAAE,OAAA;SAAtB,CAAA,CAAA;OA9ByB;AAgC3B2F,MAAAA,UAAU,EAAE,MAAM;AAChB,QAAA,IAAA,CAAK5F,QAAL,CAAc;AAAEC,UAAAA,IAAI,EAAE,UAAA;SAAtB,CAAA,CAAA;OAjCyB;AAmC3B4F,MAAAA,KAAK,EAAElB,OAAO,CAAChG,OAAR,CAAgBkH,KAnCI;AAoC3BC,MAAAA,UAAU,EAAEnB,OAAO,CAAChG,OAAR,CAAgBmH,UApCD;AAqC3BC,MAAAA,WAAW,EAAEpB,OAAO,CAAChG,OAAR,CAAgBoH,WAAAA;AArCF,KAAD,CAA5B,CAAA;AAwCA,IAAA,IAAA,CAAKvF,OAAL,GAAe,IAAKC,CAAAA,OAAL,CAAaD,OAA5B,CAAA;AAEA,IAAA,OAAO,KAAKA,OAAZ,CAAA;AACD,GAAA;;EAEOR,QAAQ,CAACgG,MAAD,EAAsC;IACpD,MAAMC,OAAO,GACX9G,KADc,IAEgB;AAAA,MAAA,IAAA,YAAA,EAAA,qBAAA,CAAA;;MAC9B,QAAQ6G,MAAM,CAAC/F,IAAf;AACE,QAAA,KAAK,QAAL;UACE,OAAO,EACL,GAAGd,KADE;YAEL+G,iBAAiB,EAAEF,MAAM,CAACN,YAFrB;YAGLS,kBAAkB,EAAEH,MAAM,CAACpC,KAAAA;WAH7B,CAAA;;AAKF,QAAA,KAAK,OAAL;UACE,OAAO,EACL,GAAGzE,KADE;AAELO,YAAAA,WAAW,EAAE,QAAA;WAFf,CAAA;;AAIF,QAAA,KAAK,UAAL;UACE,OAAO,EACL,GAAGP,KADE;AAELO,YAAAA,WAAW,EAAE,UAAA;WAFf,CAAA;;AAIF,QAAA,KAAK,OAAL;UACE,OAAO,EACL,GAAGP,KADE;AAEL+G,YAAAA,iBAAiB,EAAE,CAFd;AAGLC,YAAAA,kBAAkB,EAAE,IAHf;AAILpB,YAAAA,SAAS,EAAEiB,CAAAA,YAAAA,GAAAA,MAAM,CAAC3G,IAAT,2BAAiB,IAJrB;YAKLK,WAAW,EAAE0G,QAAQ,CAAC,IAAKzH,CAAAA,OAAL,CAAaoH,WAAd,CAAR,GACT,UADS,GAET,QAPC;AAQL,YAAA,IAAI,CAAC5G,KAAK,CAACe,aAAP,IAAwB;AAC1B0D,cAAAA,KAAK,EAAE,IADmB;AAE1ByC,cAAAA,MAAM,EAAE,SAAA;aAFV,CAAA;WARF,CAAA;;AAaF,QAAA,KAAK,SAAL;UACE,OAAO,EACL,GAAGlH,KADE;YAELW,IAAI,EAAEkG,MAAM,CAAClG,IAFR;AAGLwG,YAAAA,eAAe,EAAEnH,KAAK,CAACmH,eAAN,GAAwB,CAHpC;YAILpG,aAAa,EAAA,CAAA,qBAAA,GAAE8F,MAAM,CAAC9F,aAAT,oCAA0BqG,IAAI,CAACC,GAAL,EAJlC;AAKL5C,YAAAA,KAAK,EAAE,IALF;AAMLnC,YAAAA,aAAa,EAAE,KANV;AAOL4E,YAAAA,MAAM,EAAE,SAPH;AAQL,YAAA,IAAI,CAACL,MAAM,CAAC5F,MAAR,IAAkB;AACpBV,cAAAA,WAAW,EAAE,MADO;AAEpBwG,cAAAA,iBAAiB,EAAE,CAFC;AAGpBC,cAAAA,kBAAkB,EAAE,IAAA;aAHtB,CAAA;WARF,CAAA;;AAcF,QAAA,KAAK,OAAL;AACE,UAAA,MAAMvC,KAAK,GAAGoC,MAAM,CAACpC,KAArB,CAAA;;UAEA,IAAIqB,gBAAgB,CAACrB,KAAD,CAAhB,IAA2BA,KAAK,CAACb,MAAjC,IAA2C,IAAK+B,CAAAA,WAApD,EAAiE;YAC/D,OAAO,EAAE,GAAG,IAAKA,CAAAA,WAAAA;aAAjB,CAAA;AACD,WAAA;;UAED,OAAO,EACL,GAAG3F,KADE;AAELyE,YAAAA,KAAK,EAAEA,KAFF;AAGL6C,YAAAA,gBAAgB,EAAEtH,KAAK,CAACsH,gBAAN,GAAyB,CAHtC;AAILC,YAAAA,cAAc,EAAEH,IAAI,CAACC,GAAL,EAJX;AAKLN,YAAAA,iBAAiB,EAAE/G,KAAK,CAAC+G,iBAAN,GAA0B,CALxC;AAMLC,YAAAA,kBAAkB,EAAEvC,KANf;AAOLlE,YAAAA,WAAW,EAAE,MAPR;AAQL2G,YAAAA,MAAM,EAAE,OAAA;WARV,CAAA;;AAUF,QAAA,KAAK,YAAL;UACE,OAAO,EACL,GAAGlH,KADE;AAELsC,YAAAA,aAAa,EAAE,IAAA;WAFjB,CAAA;;AAIF,QAAA,KAAK,UAAL;UACE,OAAO,EACL,GAAGtC,KADE;AAEL,YAAA,GAAG6G,MAAM,CAAC7G,KAAAA;WAFZ,CAAA;AArEJ,OAAA;KAHF,CAAA;;AA+EA,IAAA,IAAA,CAAKA,KAAL,GAAa8G,OAAO,CAAC,IAAA,CAAK9G,KAAN,CAApB,CAAA;IAEAwH,aAAa,CAACC,KAAd,CAAoB,MAAM;AACxB,MAAA,IAAA,CAAKhI,SAAL,CAAeiI,OAAf,CAAwBzF,QAAD,IAAc;QACnCA,QAAQ,CAAC0F,aAAT,CAAuBd,MAAvB,CAAA,CAAA;OADF,CAAA,CAAA;MAIA,IAAKnH,CAAAA,KAAL,CAAW8D,MAAX,CAAkB;AAAEC,QAAAA,KAAK,EAAE,IAAT;AAAe3C,QAAAA,IAAI,EAAE,SAArB;AAAgC+F,QAAAA,MAAAA;OAAlD,CAAA,CAAA;KALF,CAAA,CAAA;AAOD,GAAA;;AAtbiB,CAAA;;AAybpB,SAAS5G,eAAT,CAMET,OANF,EAO6B;AAC3B,EAAA,MAAMmB,IAAI,GACR,OAAOnB,OAAO,CAACoI,WAAf,KAA+B,UAA/B,GACKpI,OAAO,CAACoI,WAAT,EADJ,GAEIpI,OAAO,CAACoI,WAHd,CAAA;AAKA,EAAA,MAAMC,OAAO,GAAG,OAAOlH,IAAP,KAAgB,WAAhC,CAAA;EAEA,MAAMmH,oBAAoB,GAAGD,OAAO,GAChC,OAAOrI,OAAO,CAACsI,oBAAf,KAAwC,UAAxC,GACGtI,OAAO,CAACsI,oBAAT,EADF,GAEEtI,OAAO,CAACsI,oBAHsB,GAIhC,CAJJ,CAAA;EAMA,OAAO;IACLnH,IADK;AAELwG,IAAAA,eAAe,EAAE,CAFZ;AAGLpG,IAAAA,aAAa,EAAE8G,OAAO,GAAGC,oBAAH,IAAGA,IAAAA,GAAAA,oBAAH,GAA2BV,IAAI,CAACC,GAAL,EAA3B,GAAwC,CAHzD;AAIL5C,IAAAA,KAAK,EAAE,IAJF;AAKL6C,IAAAA,gBAAgB,EAAE,CALb;AAMLC,IAAAA,cAAc,EAAE,CANX;AAOLR,IAAAA,iBAAiB,EAAE,CAPd;AAQLC,IAAAA,kBAAkB,EAAE,IARf;AASLpB,IAAAA,SAAS,EAAE,IATN;AAULtD,IAAAA,aAAa,EAAE,KAVV;AAWL4E,IAAAA,MAAM,EAAEW,OAAO,GAAG,SAAH,GAAe,SAXzB;AAYLtH,IAAAA,WAAW,EAAE,MAAA;GAZf,CAAA;AAcD;;;;"}
|
package/build/lib/query.js
CHANGED
|
@@ -22,14 +22,16 @@ class Query extends removable.Removable {
|
|
|
22
22
|
this.queryHash = config.queryHash;
|
|
23
23
|
this.initialState = config.state || getDefaultState(this.options);
|
|
24
24
|
this.state = this.initialState;
|
|
25
|
-
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get meta() {
|
|
28
|
+
return this.options.meta;
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
setOptions(options) {
|
|
29
32
|
this.options = { ...this.defaultOptions,
|
|
30
33
|
...options
|
|
31
34
|
};
|
|
32
|
-
this.meta = options == null ? void 0 : options.meta;
|
|
33
35
|
this.updateCacheTime(this.options.cacheTime);
|
|
34
36
|
}
|
|
35
37
|
|
|
@@ -259,8 +261,7 @@ class Query extends removable.Removable {
|
|
|
259
261
|
options: this.options,
|
|
260
262
|
queryKey: this.queryKey,
|
|
261
263
|
state: this.state,
|
|
262
|
-
fetchFn
|
|
263
|
-
meta: this.meta
|
|
264
|
+
fetchFn
|
|
264
265
|
};
|
|
265
266
|
addSignalProperty(context);
|
|
266
267
|
(_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context); // Store state in case the current fetch needs to be reverted
|