@tanstack/query-core 4.1.3 → 4.3.0-beta.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/{types/packages/query-core/src → lib}/focusManager.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/hydration.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/index.d.ts +2 -2
- package/build/lib/index.js +3115 -0
- package/build/lib/index.js.map +1 -0
- package/build/{esm/index.js → lib/index.mjs} +3 -1
- package/build/lib/index.mjs.map +1 -0
- package/build/{types/packages/query-core/src → lib}/infiniteQueryBehavior.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/infiniteQueryObserver.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/logger.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/logger.native.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/mutation.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/mutationCache.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/mutationObserver.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/notifyManager.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/onlineManager.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/queriesObserver.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/query.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/queryCache.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/queryClient.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/queryObserver.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/removable.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/retryer.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/subscribable.d.ts +0 -0
- package/build/{types/packages/query-core/src → lib}/types.d.ts +2 -1
- package/build/{types/packages/query-core/src → lib}/utils.d.ts +0 -0
- package/build/umd/index.development.js +2 -0
- 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 +16 -8
- package/src/index.ts +2 -2
- package/src/tests/queryClient.test.tsx +33 -0
- package/src/types.ts +4 -1
- package/src/utils.ts +2 -0
- package/build/cjs/focusManager.js +0 -101
- package/build/cjs/focusManager.js.map +0 -1
- package/build/cjs/hydration.js +0 -112
- package/build/cjs/hydration.js.map +0 -1
- package/build/cjs/index.js +0 -51
- package/build/cjs/index.js.map +0 -1
- package/build/cjs/infiniteQueryBehavior.js +0 -160
- package/build/cjs/infiniteQueryBehavior.js.map +0 -1
- package/build/cjs/infiniteQueryObserver.js +0 -92
- package/build/cjs/infiniteQueryObserver.js.map +0 -1
- package/build/cjs/logger.js +0 -18
- package/build/cjs/logger.js.map +0 -1
- package/build/cjs/mutation.js +0 -258
- package/build/cjs/mutation.js.map +0 -1
- package/build/cjs/mutationCache.js +0 -99
- package/build/cjs/mutationCache.js.map +0 -1
- package/build/cjs/mutationObserver.js +0 -140
- package/build/cjs/mutationObserver.js.map +0 -1
- package/build/cjs/notifyManager.js +0 -114
- package/build/cjs/notifyManager.js.map +0 -1
- package/build/cjs/onlineManager.js +0 -100
- package/build/cjs/onlineManager.js.map +0 -1
- package/build/cjs/queriesObserver.js +0 -170
- package/build/cjs/queriesObserver.js.map +0 -1
- package/build/cjs/query.js +0 -474
- package/build/cjs/query.js.map +0 -1
- package/build/cjs/queryCache.js +0 -140
- package/build/cjs/queryCache.js.map +0 -1
- package/build/cjs/queryClient.js +0 -353
- package/build/cjs/queryClient.js.map +0 -1
- package/build/cjs/queryObserver.js +0 -529
- package/build/cjs/queryObserver.js.map +0 -1
- package/build/cjs/removable.js +0 -47
- package/build/cjs/removable.js.map +0 -1
- package/build/cjs/retryer.js +0 -177
- package/build/cjs/retryer.js.map +0 -1
- package/build/cjs/subscribable.js +0 -43
- package/build/cjs/subscribable.js.map +0 -1
- package/build/cjs/utils.js +0 -356
- package/build/cjs/utils.js.map +0 -1
- package/build/esm/index.js.map +0 -1
- package/build/stats-html.html +0 -2689
- package/build/stats.json +0 -811
- package/build/types/packages/query-core/src/tests/focusManager.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/hydration.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/infiniteQueryBehavior.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/infiniteQueryObserver.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/mutationCache.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/mutationObserver.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/mutations.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/notifyManager.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/onlineManager.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/queriesObserver.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/query.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/queryCache.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/queryClient.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/queryObserver.test.d.ts +0 -1
- package/build/types/packages/query-core/src/tests/utils.test.d.ts +0 -1
- package/build/types/tests/utils.d.ts +0 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/query-core",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0-beta.0",
|
|
4
4
|
"description": "TODO",
|
|
5
5
|
"author": "tannerlinsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -10,16 +10,24 @@
|
|
|
10
10
|
"type": "github",
|
|
11
11
|
"url": "https://github.com/sponsors/tannerlinsley"
|
|
12
12
|
},
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
13
|
+
"types": "build/lib/index.d.ts",
|
|
14
|
+
"module": "build/lib/index.mjs",
|
|
15
|
+
"main": "build/lib/index.js",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./build/lib/index.d.ts",
|
|
19
|
+
"import": "./build/lib/index.mjs",
|
|
20
|
+
"default": "./build/lib/index.js"
|
|
21
|
+
},
|
|
22
|
+
"./package.json": "./package.json"
|
|
23
|
+
},
|
|
17
24
|
"files": [
|
|
18
|
-
"build/*",
|
|
25
|
+
"build/lib/*",
|
|
26
|
+
"build/umd/*",
|
|
19
27
|
"src"
|
|
20
28
|
],
|
|
21
29
|
"scripts": {
|
|
22
|
-
"
|
|
23
|
-
"
|
|
30
|
+
"clean": "rm -rf ./build",
|
|
31
|
+
"test:eslint": "../../node_modules/.bin/eslint --ext .ts,.tsx ./src"
|
|
24
32
|
}
|
|
25
33
|
}
|
package/src/index.ts
CHANGED
|
@@ -17,13 +17,13 @@ export {
|
|
|
17
17
|
parseMutationFilterArgs,
|
|
18
18
|
parseMutationArgs,
|
|
19
19
|
} from './utils'
|
|
20
|
-
export type { MutationFilters, QueryFilters } from './utils'
|
|
20
|
+
export type { MutationFilters, QueryFilters, Updater } from './utils'
|
|
21
21
|
export { isCancelledError } from './retryer'
|
|
22
22
|
export { dehydrate, hydrate } from './hydration'
|
|
23
23
|
|
|
24
24
|
// Types
|
|
25
25
|
export * from './types'
|
|
26
|
-
export type { Query } from './query'
|
|
26
|
+
export type { Query, QueryState } from './query'
|
|
27
27
|
export type { Mutation } from './mutation'
|
|
28
28
|
export type { Logger } from './logger'
|
|
29
29
|
export type {
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
QueryClient,
|
|
14
14
|
QueryFunction,
|
|
15
15
|
QueryObserver,
|
|
16
|
+
QueryObserverOptions,
|
|
16
17
|
} from '..'
|
|
17
18
|
import { focusManager, onlineManager } from '..'
|
|
18
19
|
|
|
@@ -357,6 +358,38 @@ describe('queryClient', () => {
|
|
|
357
358
|
expect(queryCache.find(key)!.state.data).toBe(newData)
|
|
358
359
|
})
|
|
359
360
|
|
|
361
|
+
test('should apply a custom structuralSharing function when provided', () => {
|
|
362
|
+
const key = queryKey()
|
|
363
|
+
|
|
364
|
+
const queryObserverOptions = {
|
|
365
|
+
structuralSharing: (
|
|
366
|
+
prevData: { value: Date } | undefined,
|
|
367
|
+
newData: { value: Date },
|
|
368
|
+
) => {
|
|
369
|
+
if (!prevData) {
|
|
370
|
+
return newData
|
|
371
|
+
}
|
|
372
|
+
return newData.value.getTime() === prevData.value.getTime()
|
|
373
|
+
? prevData
|
|
374
|
+
: newData
|
|
375
|
+
},
|
|
376
|
+
} as QueryObserverOptions
|
|
377
|
+
|
|
378
|
+
queryClient.setDefaultOptions({ queries: queryObserverOptions })
|
|
379
|
+
|
|
380
|
+
const oldData = { value: new Date(2022, 6, 19) }
|
|
381
|
+
const newData = { value: new Date(2022, 6, 19) }
|
|
382
|
+
queryClient.setQueryData(key, oldData)
|
|
383
|
+
queryClient.setQueryData(key, newData)
|
|
384
|
+
|
|
385
|
+
expect(queryCache.find(key)!.state.data).toBe(oldData)
|
|
386
|
+
|
|
387
|
+
const distinctData = { value: new Date(2021, 11, 25) }
|
|
388
|
+
queryClient.setQueryData(key, distinctData)
|
|
389
|
+
|
|
390
|
+
expect(queryCache.find(key)!.state.data).toBe(distinctData)
|
|
391
|
+
})
|
|
392
|
+
|
|
360
393
|
test('should not set isFetching to false', async () => {
|
|
361
394
|
const key = queryKey()
|
|
362
395
|
queryClient.prefetchQuery(key, async () => {
|
package/src/types.ts
CHANGED
|
@@ -76,9 +76,12 @@ export interface QueryOptions<
|
|
|
76
76
|
behavior?: QueryBehavior<TQueryFnData, TError, TData>
|
|
77
77
|
/**
|
|
78
78
|
* Set this to `false` to disable structural sharing between query results.
|
|
79
|
+
* Set this to a function which accepts the old and new data and returns resolved data of the same type to implement custom structural sharing logic.
|
|
79
80
|
* Defaults to `true`.
|
|
80
81
|
*/
|
|
81
|
-
structuralSharing?:
|
|
82
|
+
structuralSharing?:
|
|
83
|
+
| boolean
|
|
84
|
+
| ((oldData: TData | undefined, newData: TData) => TData)
|
|
82
85
|
/**
|
|
83
86
|
* This function can be set to automatically get the previous cursor for infinite queries.
|
|
84
87
|
* The result will also be used to determine the value of `hasPreviousPage`.
|
package/src/utils.ts
CHANGED
|
@@ -427,6 +427,8 @@ export function replaceData<
|
|
|
427
427
|
// Use prev data if an isDataEqual function is defined and returns `true`
|
|
428
428
|
if (options.isDataEqual?.(prevData, data)) {
|
|
429
429
|
return prevData as TData
|
|
430
|
+
} else if (typeof options.structuralSharing === 'function') {
|
|
431
|
+
return options.structuralSharing(prevData, data)
|
|
430
432
|
} else if (options.structuralSharing !== false) {
|
|
431
433
|
// Structurally share data between prev and new data if needed
|
|
432
434
|
return replaceEqualDeep(prevData, data)
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* query-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
var subscribable = require('./subscribable.js');
|
|
16
|
-
var utils = require('./utils.js');
|
|
17
|
-
|
|
18
|
-
class FocusManager extends subscribable.Subscribable {
|
|
19
|
-
constructor() {
|
|
20
|
-
super();
|
|
21
|
-
|
|
22
|
-
this.setup = onFocus => {
|
|
23
|
-
// addEventListener does not exist in React Native, but window does
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
25
|
-
if (!utils.isServer && window.addEventListener) {
|
|
26
|
-
const listener = () => onFocus(); // Listen to visibillitychange and focus
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
window.addEventListener('visibilitychange', listener, false);
|
|
30
|
-
window.addEventListener('focus', listener, false);
|
|
31
|
-
return () => {
|
|
32
|
-
// Be sure to unsubscribe if a new handler is set
|
|
33
|
-
window.removeEventListener('visibilitychange', listener);
|
|
34
|
-
window.removeEventListener('focus', listener);
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
onSubscribe() {
|
|
41
|
-
if (!this.cleanup) {
|
|
42
|
-
this.setEventListener(this.setup);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
onUnsubscribe() {
|
|
47
|
-
if (!this.hasListeners()) {
|
|
48
|
-
var _this$cleanup;
|
|
49
|
-
|
|
50
|
-
(_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);
|
|
51
|
-
this.cleanup = undefined;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
setEventListener(setup) {
|
|
56
|
-
var _this$cleanup2;
|
|
57
|
-
|
|
58
|
-
this.setup = setup;
|
|
59
|
-
(_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);
|
|
60
|
-
this.cleanup = setup(focused => {
|
|
61
|
-
if (typeof focused === 'boolean') {
|
|
62
|
-
this.setFocused(focused);
|
|
63
|
-
} else {
|
|
64
|
-
this.onFocus();
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
setFocused(focused) {
|
|
70
|
-
this.focused = focused;
|
|
71
|
-
|
|
72
|
-
if (focused) {
|
|
73
|
-
this.onFocus();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
onFocus() {
|
|
78
|
-
this.listeners.forEach(listener => {
|
|
79
|
-
listener();
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
isFocused() {
|
|
84
|
-
if (typeof this.focused === 'boolean') {
|
|
85
|
-
return this.focused;
|
|
86
|
-
} // document global can be unavailable in react native
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
if (typeof document === 'undefined') {
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return [undefined, 'visible', 'prerender'].includes(document.visibilityState);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
const focusManager = new FocusManager();
|
|
98
|
-
|
|
99
|
-
exports.FocusManager = FocusManager;
|
|
100
|
-
exports.focusManager = focusManager;
|
|
101
|
-
//# sourceMappingURL=focusManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"focusManager.js","sources":["../../src/focusManager.ts"],"sourcesContent":["import { Subscribable } from './subscribable'\nimport { isServer } from './utils'\n\ntype SetupFn = (\n setFocused: (focused?: boolean) => void,\n) => (() => void) | undefined\n\nexport class FocusManager extends Subscribable {\n private focused?: boolean\n private cleanup?: () => void\n\n private setup: SetupFn\n\n constructor() {\n super()\n this.setup = (onFocus) => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus()\n // Listen to visibillitychange and focus\n window.addEventListener('visibilitychange', listener, false)\n window.addEventListener('focus', listener, false)\n\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener)\n window.removeEventListener('focus', listener)\n }\n }\n }\n }\n\n protected onSubscribe(): void {\n if (!this.cleanup) {\n this.setEventListener(this.setup)\n }\n }\n\n protected onUnsubscribe() {\n if (!this.hasListeners()) {\n this.cleanup?.()\n this.cleanup = undefined\n }\n }\n\n setEventListener(setup: SetupFn): void {\n this.setup = setup\n this.cleanup?.()\n this.cleanup = setup((focused) => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused)\n } else {\n this.onFocus()\n }\n })\n }\n\n setFocused(focused?: boolean): void {\n this.focused = focused\n\n if (focused) {\n this.onFocus()\n }\n }\n\n onFocus(): void {\n this.listeners.forEach((listener) => {\n listener()\n })\n }\n\n isFocused(): boolean {\n if (typeof this.focused === 'boolean') {\n return this.focused\n }\n\n // document global can be unavailable in react native\n if (typeof document === 'undefined') {\n return true\n }\n\n return [undefined, 'visible', 'prerender'].includes(\n document.visibilityState,\n )\n }\n}\n\nexport const focusManager = new FocusManager()\n"],"names":["FocusManager","Subscribable","constructor","setup","onFocus","isServer","window","addEventListener","listener","removeEventListener","onSubscribe","cleanup","setEventListener","onUnsubscribe","hasListeners","undefined","focused","setFocused","listeners","forEach","isFocused","document","includes","visibilityState","focusManager"],"mappings":"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"}
|
package/build/cjs/hydration.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* query-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
// TYPES
|
|
16
|
-
// FUNCTIONS
|
|
17
|
-
function dehydrateMutation(mutation) {
|
|
18
|
-
return {
|
|
19
|
-
mutationKey: mutation.options.mutationKey,
|
|
20
|
-
state: mutation.state
|
|
21
|
-
};
|
|
22
|
-
} // Most config is not dehydrated but instead meant to configure again when
|
|
23
|
-
// consuming the de/rehydrated data, typically with useQuery on the client.
|
|
24
|
-
// Sometimes it might make sense to prefetch data on the server and include
|
|
25
|
-
// in the html-payload, but not consume it on the initial render.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
function dehydrateQuery(query) {
|
|
29
|
-
return {
|
|
30
|
-
state: query.state,
|
|
31
|
-
queryKey: query.queryKey,
|
|
32
|
-
queryHash: query.queryHash
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function defaultShouldDehydrateMutation(mutation) {
|
|
37
|
-
return mutation.state.isPaused;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function defaultShouldDehydrateQuery(query) {
|
|
41
|
-
return query.state.status === 'success';
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function dehydrate(client, options = {}) {
|
|
45
|
-
const mutations = [];
|
|
46
|
-
const queries = [];
|
|
47
|
-
|
|
48
|
-
if (options.dehydrateMutations !== false) {
|
|
49
|
-
const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;
|
|
50
|
-
client.getMutationCache().getAll().forEach(mutation => {
|
|
51
|
-
if (shouldDehydrateMutation(mutation)) {
|
|
52
|
-
mutations.push(dehydrateMutation(mutation));
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (options.dehydrateQueries !== false) {
|
|
58
|
-
const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;
|
|
59
|
-
client.getQueryCache().getAll().forEach(query => {
|
|
60
|
-
if (shouldDehydrateQuery(query)) {
|
|
61
|
-
queries.push(dehydrateQuery(query));
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return {
|
|
67
|
-
mutations,
|
|
68
|
-
queries
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function hydrate(client, dehydratedState, options) {
|
|
72
|
-
if (typeof dehydratedState !== 'object' || dehydratedState === null) {
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
const mutationCache = client.getMutationCache();
|
|
77
|
-
const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
78
|
-
|
|
79
|
-
const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
80
|
-
|
|
81
|
-
const queries = dehydratedState.queries || [];
|
|
82
|
-
mutations.forEach(dehydratedMutation => {
|
|
83
|
-
var _options$defaultOptio;
|
|
84
|
-
|
|
85
|
-
mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
|
|
86
|
-
mutationKey: dehydratedMutation.mutationKey
|
|
87
|
-
}, dehydratedMutation.state);
|
|
88
|
-
});
|
|
89
|
-
queries.forEach(dehydratedQuery => {
|
|
90
|
-
var _options$defaultOptio2;
|
|
91
|
-
|
|
92
|
-
const query = queryCache.get(dehydratedQuery.queryHash); // Do not hydrate if an existing query exists with newer data
|
|
93
|
-
|
|
94
|
-
if (query) {
|
|
95
|
-
if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) {
|
|
96
|
-
query.setState(dehydratedQuery.state);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return;
|
|
100
|
-
} // Restore query
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),
|
|
104
|
-
queryKey: dehydratedQuery.queryKey,
|
|
105
|
-
queryHash: dehydratedQuery.queryHash
|
|
106
|
-
}, dehydratedQuery.state);
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
exports.dehydrate = dehydrate;
|
|
111
|
-
exports.hydrate = hydrate;
|
|
112
|
-
//# sourceMappingURL=hydration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.js","sources":["../../src/hydration.ts"],"sourcesContent":["import type { QueryClient } from './queryClient'\nimport type { Query, QueryState } from './query'\nimport type {\n MutationKey,\n MutationOptions,\n QueryKey,\n QueryOptions,\n} from './types'\nimport type { Mutation, MutationState } from './mutation'\n\n// TYPES\n\nexport interface DehydrateOptions {\n dehydrateMutations?: boolean\n dehydrateQueries?: boolean\n shouldDehydrateMutation?: ShouldDehydrateMutationFunction\n shouldDehydrateQuery?: ShouldDehydrateQueryFunction\n}\n\nexport interface HydrateOptions {\n defaultOptions?: {\n queries?: QueryOptions\n mutations?: MutationOptions\n }\n}\n\ninterface DehydratedMutation {\n mutationKey?: MutationKey\n state: MutationState\n}\n\ninterface DehydratedQuery {\n queryHash: string\n queryKey: QueryKey\n state: QueryState\n}\n\nexport interface DehydratedState {\n mutations: DehydratedMutation[]\n queries: DehydratedQuery[]\n}\n\nexport type ShouldDehydrateQueryFunction = (query: Query) => boolean\n\nexport type ShouldDehydrateMutationFunction = (mutation: Mutation) => boolean\n\n// FUNCTIONS\n\nfunction dehydrateMutation(mutation: Mutation): DehydratedMutation {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state,\n }\n}\n\n// Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\nfunction dehydrateQuery(query: Query): DehydratedQuery {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash,\n }\n}\n\nfunction defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nfunction defaultShouldDehydrateQuery(query: Query) {\n return query.state.status === 'success'\n}\n\nexport function dehydrate(\n client: QueryClient,\n options: DehydrateOptions = {},\n): DehydratedState {\n const mutations: DehydratedMutation[] = []\n const queries: DehydratedQuery[] = []\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation =\n options.shouldDehydrateMutation || defaultShouldDehydrateMutation\n\n client\n .getMutationCache()\n .getAll()\n .forEach((mutation) => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation))\n }\n })\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery =\n options.shouldDehydrateQuery || defaultShouldDehydrateQuery\n\n client\n .getQueryCache()\n .getAll()\n .forEach((query) => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query))\n }\n })\n }\n\n return { mutations, queries }\n}\n\nexport function hydrate(\n client: QueryClient,\n dehydratedState: unknown,\n options?: HydrateOptions,\n): void {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return\n }\n\n const mutationCache = client.getMutationCache()\n const queryCache = client.getQueryCache()\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const mutations = (dehydratedState as DehydratedState).mutations || []\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n const queries = (dehydratedState as DehydratedState).queries || []\n\n mutations.forEach((dehydratedMutation) => {\n mutationCache.build(\n client,\n {\n ...options?.defaultOptions?.mutations,\n mutationKey: dehydratedMutation.mutationKey,\n },\n dehydratedMutation.state,\n )\n })\n\n queries.forEach((dehydratedQuery) => {\n const query = queryCache.get(dehydratedQuery.queryHash)\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQuery.state.dataUpdatedAt) {\n query.setState(dehydratedQuery.state)\n }\n return\n }\n\n // Restore query\n queryCache.build(\n client,\n {\n ...options?.defaultOptions?.queries,\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash,\n },\n dehydratedQuery.state,\n )\n })\n}\n"],"names":["dehydrateMutation","mutation","mutationKey","options","state","dehydrateQuery","query","queryKey","queryHash","defaultShouldDehydrateMutation","isPaused","defaultShouldDehydrateQuery","status","dehydrate","client","mutations","queries","dehydrateMutations","shouldDehydrateMutation","getMutationCache","getAll","forEach","push","dehydrateQueries","shouldDehydrateQuery","getQueryCache","hydrate","dehydratedState","mutationCache","queryCache","dehydratedMutation","build","defaultOptions","dehydratedQuery","get","dataUpdatedAt","setState"],"mappings":"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"}
|
package/build/cjs/index.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* query-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
var retryer = require('./retryer.js');
|
|
16
|
-
var queryCache = require('./queryCache.js');
|
|
17
|
-
var queryClient = require('./queryClient.js');
|
|
18
|
-
var queryObserver = require('./queryObserver.js');
|
|
19
|
-
var queriesObserver = require('./queriesObserver.js');
|
|
20
|
-
var infiniteQueryObserver = require('./infiniteQueryObserver.js');
|
|
21
|
-
var mutationCache = require('./mutationCache.js');
|
|
22
|
-
var mutationObserver = require('./mutationObserver.js');
|
|
23
|
-
var notifyManager = require('./notifyManager.js');
|
|
24
|
-
var focusManager = require('./focusManager.js');
|
|
25
|
-
var onlineManager = require('./onlineManager.js');
|
|
26
|
-
var utils = require('./utils.js');
|
|
27
|
-
var hydration = require('./hydration.js');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
exports.CancelledError = retryer.CancelledError;
|
|
32
|
-
exports.isCancelledError = retryer.isCancelledError;
|
|
33
|
-
exports.QueryCache = queryCache.QueryCache;
|
|
34
|
-
exports.QueryClient = queryClient.QueryClient;
|
|
35
|
-
exports.QueryObserver = queryObserver.QueryObserver;
|
|
36
|
-
exports.QueriesObserver = queriesObserver.QueriesObserver;
|
|
37
|
-
exports.InfiniteQueryObserver = infiniteQueryObserver.InfiniteQueryObserver;
|
|
38
|
-
exports.MutationCache = mutationCache.MutationCache;
|
|
39
|
-
exports.MutationObserver = mutationObserver.MutationObserver;
|
|
40
|
-
exports.notifyManager = notifyManager.notifyManager;
|
|
41
|
-
exports.focusManager = focusManager.focusManager;
|
|
42
|
-
exports.onlineManager = onlineManager.onlineManager;
|
|
43
|
-
exports.hashQueryKey = utils.hashQueryKey;
|
|
44
|
-
exports.isError = utils.isError;
|
|
45
|
-
exports.parseFilterArgs = utils.parseFilterArgs;
|
|
46
|
-
exports.parseMutationArgs = utils.parseMutationArgs;
|
|
47
|
-
exports.parseMutationFilterArgs = utils.parseMutationFilterArgs;
|
|
48
|
-
exports.parseQueryArgs = utils.parseQueryArgs;
|
|
49
|
-
exports.dehydrate = hydration.dehydrate;
|
|
50
|
-
exports.hydrate = hydration.hydrate;
|
|
51
|
-
//# sourceMappingURL=index.js.map
|
package/build/cjs/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* query-core
|
|
3
|
-
*
|
|
4
|
-
* Copyright (c) TanStack
|
|
5
|
-
*
|
|
6
|
-
* This source code is licensed under the MIT license found in the
|
|
7
|
-
* LICENSE.md file in the root directory of this source tree.
|
|
8
|
-
*
|
|
9
|
-
* @license MIT
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
14
|
-
|
|
15
|
-
function infiniteQueryBehavior() {
|
|
16
|
-
return {
|
|
17
|
-
onFetch: context => {
|
|
18
|
-
context.fetchFn = () => {
|
|
19
|
-
var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;
|
|
20
|
-
|
|
21
|
-
const refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;
|
|
22
|
-
const fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;
|
|
23
|
-
const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;
|
|
24
|
-
const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';
|
|
25
|
-
const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';
|
|
26
|
-
const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];
|
|
27
|
-
const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];
|
|
28
|
-
let newPageParams = oldPageParams;
|
|
29
|
-
let cancelled = false;
|
|
30
|
-
|
|
31
|
-
const addSignalProperty = object => {
|
|
32
|
-
Object.defineProperty(object, 'signal', {
|
|
33
|
-
enumerable: true,
|
|
34
|
-
get: () => {
|
|
35
|
-
var _context$signal;
|
|
36
|
-
|
|
37
|
-
if ((_context$signal = context.signal) != null && _context$signal.aborted) {
|
|
38
|
-
cancelled = true;
|
|
39
|
-
} else {
|
|
40
|
-
var _context$signal2;
|
|
41
|
-
|
|
42
|
-
(_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener('abort', () => {
|
|
43
|
-
cancelled = true;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return context.signal;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}; // Get query function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const queryFn = context.options.queryFn || (() => Promise.reject('Missing queryFn'));
|
|
54
|
-
|
|
55
|
-
const buildNewPages = (pages, param, page, previous) => {
|
|
56
|
-
newPageParams = previous ? [param, ...newPageParams] : [...newPageParams, param];
|
|
57
|
-
return previous ? [page, ...pages] : [...pages, page];
|
|
58
|
-
}; // Create function to fetch a page
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const fetchPage = (pages, manual, param, previous) => {
|
|
62
|
-
if (cancelled) {
|
|
63
|
-
return Promise.reject('Cancelled');
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (typeof param === 'undefined' && !manual && pages.length) {
|
|
67
|
-
return Promise.resolve(pages);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
const queryFnContext = {
|
|
71
|
-
queryKey: context.queryKey,
|
|
72
|
-
pageParam: param,
|
|
73
|
-
meta: context.meta
|
|
74
|
-
};
|
|
75
|
-
addSignalProperty(queryFnContext);
|
|
76
|
-
const queryFnResult = queryFn(queryFnContext);
|
|
77
|
-
const promise = Promise.resolve(queryFnResult).then(page => buildNewPages(pages, param, page, previous));
|
|
78
|
-
return promise;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
let promise; // Fetch first page?
|
|
82
|
-
|
|
83
|
-
if (!oldPages.length) {
|
|
84
|
-
promise = fetchPage([]);
|
|
85
|
-
} // Fetch next page?
|
|
86
|
-
else if (isFetchingNextPage) {
|
|
87
|
-
const manual = typeof pageParam !== 'undefined';
|
|
88
|
-
const param = manual ? pageParam : getNextPageParam(context.options, oldPages);
|
|
89
|
-
promise = fetchPage(oldPages, manual, param);
|
|
90
|
-
} // Fetch previous page?
|
|
91
|
-
else if (isFetchingPreviousPage) {
|
|
92
|
-
const manual = typeof pageParam !== 'undefined';
|
|
93
|
-
const param = manual ? pageParam : getPreviousPageParam(context.options, oldPages);
|
|
94
|
-
promise = fetchPage(oldPages, manual, param, true);
|
|
95
|
-
} // Refetch pages
|
|
96
|
-
else {
|
|
97
|
-
newPageParams = [];
|
|
98
|
-
const manual = typeof context.options.getNextPageParam === 'undefined';
|
|
99
|
-
const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page
|
|
100
|
-
|
|
101
|
-
promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages
|
|
102
|
-
|
|
103
|
-
for (let i = 1; i < oldPages.length; i++) {
|
|
104
|
-
promise = promise.then(pages => {
|
|
105
|
-
const shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;
|
|
106
|
-
|
|
107
|
-
if (shouldFetchNextPage) {
|
|
108
|
-
const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);
|
|
109
|
-
return fetchPage(pages, manual, param);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
const finalPromise = promise.then(pages => ({
|
|
118
|
-
pages,
|
|
119
|
-
pageParams: newPageParams
|
|
120
|
-
}));
|
|
121
|
-
return finalPromise;
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
function getNextPageParam(options, pages) {
|
|
127
|
-
return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);
|
|
128
|
-
}
|
|
129
|
-
function getPreviousPageParam(options, pages) {
|
|
130
|
-
return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Checks if there is a next page.
|
|
134
|
-
* Returns `undefined` if it cannot be determined.
|
|
135
|
-
*/
|
|
136
|
-
|
|
137
|
-
function hasNextPage(options, pages) {
|
|
138
|
-
if (options.getNextPageParam && Array.isArray(pages)) {
|
|
139
|
-
const nextPageParam = getNextPageParam(options, pages);
|
|
140
|
-
return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Checks if there is a previous page.
|
|
145
|
-
* Returns `undefined` if it cannot be determined.
|
|
146
|
-
*/
|
|
147
|
-
|
|
148
|
-
function hasPreviousPage(options, pages) {
|
|
149
|
-
if (options.getPreviousPageParam && Array.isArray(pages)) {
|
|
150
|
-
const previousPageParam = getPreviousPageParam(options, pages);
|
|
151
|
-
return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
exports.getNextPageParam = getNextPageParam;
|
|
156
|
-
exports.getPreviousPageParam = getPreviousPageParam;
|
|
157
|
-
exports.hasNextPage = hasNextPage;
|
|
158
|
-
exports.hasPreviousPage = hasPreviousPage;
|
|
159
|
-
exports.infiniteQueryBehavior = infiniteQueryBehavior;
|
|
160
|
-
//# sourceMappingURL=infiniteQueryBehavior.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"infiniteQueryBehavior.js","sources":["../../src/infiniteQueryBehavior.ts"],"sourcesContent":["import type { QueryBehavior } from './query'\n\nimport type {\n InfiniteData,\n QueryFunctionContext,\n QueryOptions,\n RefetchQueryFilters,\n} from './types'\n\nexport function infiniteQueryBehavior<\n TQueryFnData,\n TError,\n TData,\n>(): QueryBehavior<TQueryFnData, TError, InfiniteData<TData>> {\n return {\n onFetch: (context) => {\n context.fetchFn = () => {\n const refetchPage: RefetchQueryFilters['refetchPage'] | undefined =\n context.fetchOptions?.meta?.refetchPage\n const fetchMore = context.fetchOptions?.meta?.fetchMore\n const pageParam = fetchMore?.pageParam\n const isFetchingNextPage = fetchMore?.direction === 'forward'\n const isFetchingPreviousPage = fetchMore?.direction === 'backward'\n const oldPages = context.state.data?.pages || []\n const oldPageParams = context.state.data?.pageParams || []\n let newPageParams = oldPageParams\n let cancelled = false\n\n const addSignalProperty = (object: unknown) => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (context.signal?.aborted) {\n cancelled = true\n } else {\n context.signal?.addEventListener('abort', () => {\n cancelled = true\n })\n }\n return context.signal\n },\n })\n }\n\n // Get query function\n const queryFn =\n context.options.queryFn || (() => Promise.reject('Missing queryFn'))\n\n const buildNewPages = (\n pages: unknown[],\n param: unknown,\n page: unknown,\n previous?: boolean,\n ) => {\n newPageParams = previous\n ? [param, ...newPageParams]\n : [...newPageParams, param]\n return previous ? [page, ...pages] : [...pages, page]\n }\n\n // Create function to fetch a page\n const fetchPage = (\n pages: unknown[],\n manual?: boolean,\n param?: unknown,\n previous?: boolean,\n ): Promise<unknown[]> => {\n if (cancelled) {\n return Promise.reject('Cancelled')\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages)\n }\n\n const queryFnContext: QueryFunctionContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.meta,\n }\n\n addSignalProperty(queryFnContext)\n\n const queryFnResult = queryFn(queryFnContext)\n\n const promise = Promise.resolve(queryFnResult).then((page) =>\n buildNewPages(pages, param, page, previous),\n )\n\n return promise\n }\n\n let promise: Promise<unknown[]>\n\n // Fetch first page?\n if (!oldPages.length) {\n promise = fetchPage([])\n }\n\n // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getNextPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param)\n }\n\n // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined'\n const param = manual\n ? pageParam\n : getPreviousPageParam(context.options, oldPages)\n promise = fetchPage(oldPages, manual, param, true)\n }\n\n // Refetch pages\n else {\n newPageParams = []\n\n const manual = typeof context.options.getNextPageParam === 'undefined'\n\n const shouldFetchFirstPage =\n refetchPage && oldPages[0]\n ? refetchPage(oldPages[0], 0, oldPages)\n : true\n\n // Fetch first page\n promise = shouldFetchFirstPage\n ? fetchPage([], manual, oldPageParams[0])\n : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0]))\n\n // Fetch remaining pages\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then((pages) => {\n const shouldFetchNextPage =\n refetchPage && oldPages[i]\n ? refetchPage(oldPages[i], i, oldPages)\n : true\n\n if (shouldFetchNextPage) {\n const param = manual\n ? oldPageParams[i]\n : getNextPageParam(context.options, pages)\n return fetchPage(pages, manual, param)\n }\n return Promise.resolve(\n buildNewPages(pages, oldPageParams[i], oldPages[i]),\n )\n })\n }\n }\n\n const finalPromise = promise.then((pages) => ({\n pages,\n pageParams: newPageParams,\n }))\n\n return finalPromise\n }\n },\n }\n}\n\nexport function getNextPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getNextPageParam?.(pages[pages.length - 1], pages)\n}\n\nexport function getPreviousPageParam(\n options: QueryOptions<any, any>,\n pages: unknown[],\n): unknown | undefined {\n return options.getPreviousPageParam?.(pages[0], pages)\n}\n\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasNextPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages)\n return (\n typeof nextPageParam !== 'undefined' &&\n nextPageParam !== null &&\n nextPageParam !== false\n )\n }\n}\n\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\nexport function hasPreviousPage(\n options: QueryOptions<any, any, any, any>,\n pages?: unknown,\n): boolean | undefined {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages)\n return (\n typeof previousPageParam !== 'undefined' &&\n previousPageParam !== null &&\n previousPageParam !== false\n )\n }\n}\n"],"names":["infiniteQueryBehavior","onFetch","context","fetchFn","refetchPage","fetchOptions","meta","fetchMore","pageParam","isFetchingNextPage","direction","isFetchingPreviousPage","oldPages","state","data","pages","oldPageParams","pageParams","newPageParams","cancelled","addSignalProperty","object","Object","defineProperty","enumerable","get","signal","aborted","addEventListener","queryFn","options","Promise","reject","buildNewPages","param","page","previous","fetchPage","manual","length","resolve","queryFnContext","queryKey","queryFnResult","promise","then","getNextPageParam","getPreviousPageParam","shouldFetchFirstPage","i","shouldFetchNextPage","finalPromise","hasNextPage","Array","isArray","nextPageParam","hasPreviousPage","previousPageParam"],"mappings":"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"}
|