@tanstack/query-core 4.24.10 → 5.0.0-alpha.1
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/focusManager.d.ts +1 -3
- package/build/lib/focusManager.esm.js +19 -36
- package/build/lib/focusManager.esm.js.map +1 -1
- package/build/lib/focusManager.js +19 -38
- package/build/lib/focusManager.js.map +1 -1
- package/build/lib/focusManager.mjs +19 -36
- package/build/lib/focusManager.mjs.map +1 -1
- package/build/lib/hydration.esm.js +21 -23
- package/build/lib/hydration.esm.js.map +1 -1
- package/build/lib/hydration.js +21 -25
- package/build/lib/hydration.js.map +1 -1
- package/build/lib/hydration.mjs +21 -23
- package/build/lib/hydration.mjs.map +1 -1
- package/build/lib/index.d.ts +1 -2
- package/build/lib/index.esm.js +1 -1
- package/build/lib/index.js +2 -8
- package/build/lib/index.js.map +1 -1
- package/build/lib/index.mjs +1 -1
- package/build/lib/infiniteQueryBehavior.d.ts +3 -7
- package/build/lib/infiniteQueryBehavior.esm.js +52 -75
- package/build/lib/infiniteQueryBehavior.esm.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.js +50 -77
- package/build/lib/infiniteQueryBehavior.js.map +1 -1
- package/build/lib/infiniteQueryBehavior.mjs +52 -75
- package/build/lib/infiniteQueryBehavior.mjs.map +1 -1
- package/build/lib/infiniteQueryObserver.d.ts +4 -4
- package/build/lib/infiniteQueryObserver.esm.js +18 -26
- package/build/lib/infiniteQueryObserver.esm.js.map +1 -1
- package/build/lib/infiniteQueryObserver.js +18 -28
- package/build/lib/infiniteQueryObserver.js.map +1 -1
- package/build/lib/infiniteQueryObserver.mjs +18 -26
- package/build/lib/infiniteQueryObserver.mjs.map +1 -1
- package/build/lib/mutation.d.ts +11 -22
- package/build/lib/mutation.esm.js +73 -105
- package/build/lib/mutation.esm.js.map +1 -1
- package/build/lib/mutation.js +73 -107
- package/build/lib/mutation.js.map +1 -1
- package/build/lib/mutation.mjs +73 -105
- package/build/lib/mutation.mjs.map +1 -1
- package/build/lib/mutationCache.d.ts +4 -6
- package/build/lib/mutationCache.esm.js +23 -32
- package/build/lib/mutationCache.esm.js.map +1 -1
- package/build/lib/mutationCache.js +23 -34
- package/build/lib/mutationCache.js.map +1 -1
- package/build/lib/mutationCache.mjs +23 -32
- package/build/lib/mutationCache.mjs.map +1 -1
- package/build/lib/mutationObserver.d.ts +4 -9
- package/build/lib/mutationObserver.esm.js +42 -73
- package/build/lib/mutationObserver.esm.js.map +1 -1
- package/build/lib/mutationObserver.js +42 -75
- package/build/lib/mutationObserver.js.map +1 -1
- package/build/lib/mutationObserver.mjs +42 -73
- package/build/lib/mutationObserver.mjs.map +1 -1
- package/build/lib/notifyManager.esm.js +7 -17
- package/build/lib/notifyManager.esm.js.map +1 -1
- package/build/lib/notifyManager.js +7 -19
- package/build/lib/notifyManager.js.map +1 -1
- package/build/lib/notifyManager.mjs +7 -17
- package/build/lib/notifyManager.mjs.map +1 -1
- package/build/lib/onlineManager.d.ts +1 -3
- package/build/lib/onlineManager.esm.js +16 -30
- package/build/lib/onlineManager.esm.js.map +1 -1
- package/build/lib/onlineManager.js +16 -32
- package/build/lib/onlineManager.js.map +1 -1
- package/build/lib/onlineManager.mjs +16 -30
- package/build/lib/onlineManager.mjs.map +1 -1
- package/build/lib/queriesObserver.d.ts +3 -10
- package/build/lib/queriesObserver.esm.js +47 -71
- package/build/lib/queriesObserver.esm.js.map +1 -1
- package/build/lib/queriesObserver.js +49 -75
- package/build/lib/queriesObserver.js.map +1 -1
- package/build/lib/queriesObserver.mjs +47 -71
- package/build/lib/queriesObserver.mjs.map +1 -1
- package/build/lib/query.d.ts +14 -21
- package/build/lib/query.esm.js +140 -194
- package/build/lib/query.esm.js.map +1 -1
- package/build/lib/query.js +139 -195
- package/build/lib/query.js.map +1 -1
- package/build/lib/query.mjs +140 -194
- package/build/lib/query.mjs.map +1 -1
- package/build/lib/queryCache.d.ts +12 -7
- package/build/lib/queryCache.esm.js +21 -45
- package/build/lib/queryCache.esm.js.map +1 -1
- package/build/lib/queryCache.js +20 -46
- package/build/lib/queryCache.js.map +1 -1
- package/build/lib/queryCache.mjs +21 -45
- package/build/lib/queryCache.mjs.map +1 -1
- package/build/lib/queryClient.d.ts +18 -46
- package/build/lib/queryClient.esm.js +137 -216
- package/build/lib/queryClient.esm.js.map +1 -1
- package/build/lib/queryClient.js +136 -217
- package/build/lib/queryClient.js.map +1 -1
- package/build/lib/queryClient.mjs +137 -216
- package/build/lib/queryClient.mjs.map +1 -1
- package/build/lib/queryObserver.d.ts +4 -29
- package/build/lib/queryObserver.esm.js +176 -258
- package/build/lib/queryObserver.esm.js.map +1 -1
- package/build/lib/queryObserver.js +176 -260
- package/build/lib/queryObserver.js.map +1 -1
- package/build/lib/queryObserver.mjs +176 -258
- package/build/lib/queryObserver.mjs.map +1 -1
- package/build/lib/removable.d.ts +3 -3
- package/build/lib/removable.esm.js +10 -14
- package/build/lib/removable.esm.js.map +1 -1
- package/build/lib/removable.js +10 -16
- package/build/lib/removable.js.map +1 -1
- package/build/lib/removable.mjs +10 -14
- package/build/lib/removable.mjs.map +1 -1
- package/build/lib/retryer.d.ts +5 -5
- package/build/lib/retryer.esm.js +27 -44
- package/build/lib/retryer.esm.js.map +1 -1
- package/build/lib/retryer.js +27 -46
- package/build/lib/retryer.js.map +1 -1
- package/build/lib/retryer.mjs +27 -44
- package/build/lib/retryer.mjs.map +1 -1
- package/build/lib/subscribable.esm.js +4 -7
- package/build/lib/subscribable.esm.js.map +1 -1
- package/build/lib/subscribable.js +4 -9
- package/build/lib/subscribable.js.map +1 -1
- package/build/lib/subscribable.mjs +4 -7
- package/build/lib/subscribable.mjs.map +1 -1
- package/build/lib/tests/utils.d.ts +3 -12
- package/build/lib/types.d.ts +111 -99
- package/build/lib/utils.d.ts +8 -18
- package/build/lib/utils.esm.js +39 -132
- package/build/lib/utils.esm.js.map +1 -1
- package/build/lib/utils.js +42 -144
- package/build/lib/utils.js.map +1 -1
- package/build/lib/utils.mjs +39 -132
- package/build/lib/utils.mjs.map +1 -1
- package/build/umd/index.development.js +867 -1399
- 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/focusManager.ts +17 -24
- package/src/index.ts +1 -11
- package/src/infiniteQueryBehavior.ts +54 -94
- package/src/infiniteQueryObserver.ts +10 -12
- package/src/mutation.ts +68 -92
- package/src/mutationCache.ts +27 -27
- package/src/mutationObserver.ts +58 -97
- package/src/onlineManager.ts +14 -14
- package/src/queriesObserver.ts +50 -54
- package/src/query.ts +107 -111
- package/src/queryCache.ts +42 -41
- package/src/queryClient.ts +155 -434
- package/src/queryObserver.ts +155 -192
- package/src/removable.ts +13 -13
- package/src/retryer.ts +5 -5
- package/src/subscribable.ts +1 -1
- package/src/tests/focusManager.test.tsx +25 -25
- package/src/tests/hydration.test.tsx +167 -81
- package/src/tests/infiniteQueryBehavior.test.tsx +209 -17
- package/src/tests/infiniteQueryObserver.test.tsx +6 -2
- package/src/tests/mutationCache.test.tsx +127 -127
- package/src/tests/mutationObserver.test.tsx +1 -31
- package/src/tests/mutations.test.tsx +62 -43
- package/src/tests/onlineManager.test.tsx +12 -4
- package/src/tests/queriesObserver.test.tsx +41 -77
- package/src/tests/query.test.tsx +175 -243
- package/src/tests/queryCache.test.tsx +170 -93
- package/src/tests/queryClient.test.tsx +229 -378
- package/src/tests/queryObserver.test.tsx +23 -147
- package/src/tests/utils.test.tsx +84 -29
- package/src/tests/utils.ts +9 -18
- package/src/types.ts +187 -140
- package/src/utils.ts +31 -124
- package/build/lib/logger.d.ts +0 -8
- package/build/lib/logger.esm.js +0 -4
- package/build/lib/logger.esm.js.map +0 -1
- package/build/lib/logger.js +0 -8
- package/build/lib/logger.js.map +0 -1
- package/build/lib/logger.mjs +0 -4
- package/build/lib/logger.mjs.map +0 -1
- package/build/lib/logger.native.d.ts +0 -6
- package/build/lib/logger.native.esm.js +0 -12
- package/build/lib/logger.native.esm.js.map +0 -1
- package/build/lib/logger.native.js +0 -16
- package/build/lib/logger.native.js.map +0 -1
- package/build/lib/logger.native.mjs +0 -12
- package/build/lib/logger.native.mjs.map +0 -1
- package/src/logger.native.ts +0 -11
- package/src/logger.ts +0 -9
package/build/lib/hydration.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
// TYPES
|
|
4
|
+
|
|
6
5
|
// FUNCTIONS
|
|
6
|
+
|
|
7
7
|
function dehydrateMutation(mutation) {
|
|
8
8
|
return {
|
|
9
9
|
mutationKey: mutation.options.mutationKey,
|
|
10
10
|
state: mutation.state
|
|
11
11
|
};
|
|
12
|
-
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Most config is not dehydrated but instead meant to configure again when
|
|
13
15
|
// consuming the de/rehydrated data, typically with useQuery on the client.
|
|
14
16
|
// Sometimes it might make sense to prefetch data on the server and include
|
|
15
17
|
// in the html-payload, but not consume it on the initial render.
|
|
16
|
-
|
|
17
|
-
|
|
18
18
|
function dehydrateQuery(query) {
|
|
19
19
|
return {
|
|
20
20
|
state: query.state,
|
|
@@ -22,7 +22,6 @@ function dehydrateQuery(query) {
|
|
|
22
22
|
queryHash: query.queryHash
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
-
|
|
26
25
|
function defaultShouldDehydrateMutation(mutation) {
|
|
27
26
|
return mutation.state.isPaused;
|
|
28
27
|
}
|
|
@@ -32,7 +31,6 @@ function defaultShouldDehydrateQuery(query) {
|
|
|
32
31
|
function dehydrate(client, options = {}) {
|
|
33
32
|
const mutations = [];
|
|
34
33
|
const queries = [];
|
|
35
|
-
|
|
36
34
|
if (options.dehydrateMutations !== false) {
|
|
37
35
|
const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;
|
|
38
36
|
client.getMutationCache().getAll().forEach(mutation => {
|
|
@@ -41,7 +39,6 @@ function dehydrate(client, options = {}) {
|
|
|
41
39
|
}
|
|
42
40
|
});
|
|
43
41
|
}
|
|
44
|
-
|
|
45
42
|
if (options.dehydrateQueries !== false) {
|
|
46
43
|
const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;
|
|
47
44
|
client.getQueryCache().getAll().forEach(query => {
|
|
@@ -50,7 +47,6 @@ function dehydrate(client, options = {}) {
|
|
|
50
47
|
}
|
|
51
48
|
});
|
|
52
49
|
}
|
|
53
|
-
|
|
54
50
|
return {
|
|
55
51
|
mutations,
|
|
56
52
|
queries
|
|
@@ -60,40 +56,40 @@ function hydrate(client, dehydratedState, options) {
|
|
|
60
56
|
if (typeof dehydratedState !== 'object' || dehydratedState === null) {
|
|
61
57
|
return;
|
|
62
58
|
}
|
|
63
|
-
|
|
64
59
|
const mutationCache = client.getMutationCache();
|
|
65
|
-
const queryCache = client.getQueryCache();
|
|
66
|
-
|
|
67
|
-
const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
60
|
+
const queryCache = client.getQueryCache();
|
|
68
61
|
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
63
|
+
const mutations = dehydratedState.mutations || [];
|
|
64
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
69
65
|
const queries = dehydratedState.queries || [];
|
|
70
66
|
mutations.forEach(dehydratedMutation => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
|
|
67
|
+
mutationCache.build(client, {
|
|
68
|
+
...options?.defaultOptions?.mutations,
|
|
74
69
|
mutationKey: dehydratedMutation.mutationKey
|
|
75
70
|
}, dehydratedMutation.state);
|
|
76
71
|
});
|
|
77
72
|
queries.forEach(dehydratedQuery => {
|
|
78
|
-
|
|
73
|
+
const query = queryCache.get(dehydratedQuery.queryHash);
|
|
79
74
|
|
|
80
|
-
|
|
75
|
+
// Reset fetch status to idle in the dehydrated state to avoid
|
|
81
76
|
// query being stuck in fetching state upon hydration
|
|
82
|
-
|
|
83
|
-
|
|
77
|
+
const dehydratedQueryState = {
|
|
78
|
+
...dehydratedQuery.state,
|
|
84
79
|
fetchStatus: 'idle'
|
|
85
|
-
};
|
|
80
|
+
};
|
|
86
81
|
|
|
82
|
+
// Do not hydrate if an existing query exists with newer data
|
|
87
83
|
if (query) {
|
|
88
84
|
if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {
|
|
89
85
|
query.setState(dehydratedQueryState);
|
|
90
86
|
}
|
|
91
|
-
|
|
92
87
|
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
88
|
+
}
|
|
95
89
|
|
|
96
|
-
|
|
90
|
+
// Restore query
|
|
91
|
+
queryCache.build(client, {
|
|
92
|
+
...options?.defaultOptions?.queries,
|
|
97
93
|
queryKey: dehydratedQuery.queryKey,
|
|
98
94
|
queryHash: dehydratedQuery.queryHash
|
|
99
95
|
}, dehydratedQueryState);
|
|
@@ -1 +1 @@
|
|
|
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\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function 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 // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle' as const,\n }\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState)\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 dehydratedQueryState,\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","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"
|
|
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\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function 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 // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle' as const,\n }\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState)\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 dehydratedQueryState,\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","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
|
package/build/lib/hydration.mjs
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
// TYPES
|
|
2
|
+
|
|
2
3
|
// FUNCTIONS
|
|
4
|
+
|
|
3
5
|
function dehydrateMutation(mutation) {
|
|
4
6
|
return {
|
|
5
7
|
mutationKey: mutation.options.mutationKey,
|
|
6
8
|
state: mutation.state
|
|
7
9
|
};
|
|
8
|
-
}
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Most config is not dehydrated but instead meant to configure again when
|
|
9
13
|
// consuming the de/rehydrated data, typically with useQuery on the client.
|
|
10
14
|
// Sometimes it might make sense to prefetch data on the server and include
|
|
11
15
|
// in the html-payload, but not consume it on the initial render.
|
|
12
|
-
|
|
13
|
-
|
|
14
16
|
function dehydrateQuery(query) {
|
|
15
17
|
return {
|
|
16
18
|
state: query.state,
|
|
@@ -18,7 +20,6 @@ function dehydrateQuery(query) {
|
|
|
18
20
|
queryHash: query.queryHash
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
|
-
|
|
22
23
|
function defaultShouldDehydrateMutation(mutation) {
|
|
23
24
|
return mutation.state.isPaused;
|
|
24
25
|
}
|
|
@@ -28,7 +29,6 @@ function defaultShouldDehydrateQuery(query) {
|
|
|
28
29
|
function dehydrate(client, options = {}) {
|
|
29
30
|
const mutations = [];
|
|
30
31
|
const queries = [];
|
|
31
|
-
|
|
32
32
|
if (options.dehydrateMutations !== false) {
|
|
33
33
|
const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;
|
|
34
34
|
client.getMutationCache().getAll().forEach(mutation => {
|
|
@@ -37,7 +37,6 @@ function dehydrate(client, options = {}) {
|
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
|
|
41
40
|
if (options.dehydrateQueries !== false) {
|
|
42
41
|
const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;
|
|
43
42
|
client.getQueryCache().getAll().forEach(query => {
|
|
@@ -46,7 +45,6 @@ function dehydrate(client, options = {}) {
|
|
|
46
45
|
}
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
|
-
|
|
50
48
|
return {
|
|
51
49
|
mutations,
|
|
52
50
|
queries
|
|
@@ -56,40 +54,40 @@ function hydrate(client, dehydratedState, options) {
|
|
|
56
54
|
if (typeof dehydratedState !== 'object' || dehydratedState === null) {
|
|
57
55
|
return;
|
|
58
56
|
}
|
|
59
|
-
|
|
60
57
|
const mutationCache = client.getMutationCache();
|
|
61
|
-
const queryCache = client.getQueryCache();
|
|
62
|
-
|
|
63
|
-
const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
58
|
+
const queryCache = client.getQueryCache();
|
|
64
59
|
|
|
60
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
61
|
+
const mutations = dehydratedState.mutations || [];
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
65
63
|
const queries = dehydratedState.queries || [];
|
|
66
64
|
mutations.forEach(dehydratedMutation => {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),
|
|
65
|
+
mutationCache.build(client, {
|
|
66
|
+
...options?.defaultOptions?.mutations,
|
|
70
67
|
mutationKey: dehydratedMutation.mutationKey
|
|
71
68
|
}, dehydratedMutation.state);
|
|
72
69
|
});
|
|
73
70
|
queries.forEach(dehydratedQuery => {
|
|
74
|
-
|
|
71
|
+
const query = queryCache.get(dehydratedQuery.queryHash);
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
// Reset fetch status to idle in the dehydrated state to avoid
|
|
77
74
|
// query being stuck in fetching state upon hydration
|
|
78
|
-
|
|
79
|
-
|
|
75
|
+
const dehydratedQueryState = {
|
|
76
|
+
...dehydratedQuery.state,
|
|
80
77
|
fetchStatus: 'idle'
|
|
81
|
-
};
|
|
78
|
+
};
|
|
82
79
|
|
|
80
|
+
// Do not hydrate if an existing query exists with newer data
|
|
83
81
|
if (query) {
|
|
84
82
|
if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {
|
|
85
83
|
query.setState(dehydratedQueryState);
|
|
86
84
|
}
|
|
87
|
-
|
|
88
85
|
return;
|
|
89
|
-
}
|
|
90
|
-
|
|
86
|
+
}
|
|
91
87
|
|
|
92
|
-
|
|
88
|
+
// Restore query
|
|
89
|
+
queryCache.build(client, {
|
|
90
|
+
...options?.defaultOptions?.queries,
|
|
93
91
|
queryKey: dehydratedQuery.queryKey,
|
|
94
92
|
queryHash: dehydratedQuery.queryHash
|
|
95
93
|
}, dehydratedQueryState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.mjs","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\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function 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 // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle' as const,\n }\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState)\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 dehydratedQueryState,\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","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"AAUA
|
|
1
|
+
{"version":3,"file":"hydration.mjs","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\nexport function defaultShouldDehydrateMutation(mutation: Mutation) {\n return mutation.state.isPaused\n}\n\nexport function 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 // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n const dehydratedQueryState = {\n ...dehydratedQuery.state,\n fetchStatus: 'idle' as const,\n }\n\n // Do not hydrate if an existing query exists with newer data\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState)\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 dehydratedQueryState,\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","dehydratedQueryState","fetchStatus","dataUpdatedAt","setState"],"mappings":"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"}
|
package/build/lib/index.d.ts
CHANGED
|
@@ -9,12 +9,11 @@ export { MutationObserver } from './mutationObserver';
|
|
|
9
9
|
export { notifyManager } from './notifyManager';
|
|
10
10
|
export { focusManager } from './focusManager';
|
|
11
11
|
export { onlineManager } from './onlineManager';
|
|
12
|
-
export {
|
|
12
|
+
export { hashKey, replaceEqualDeep, isServer, keepPreviousData } from './utils';
|
|
13
13
|
export type { MutationFilters, QueryFilters, Updater } from './utils';
|
|
14
14
|
export { isCancelledError } from './retryer';
|
|
15
15
|
export { dehydrate, hydrate, defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, } from './hydration';
|
|
16
16
|
export * from './types';
|
|
17
17
|
export type { Query, QueryState } from './query';
|
|
18
18
|
export type { Mutation } from './mutation';
|
|
19
|
-
export type { Logger } from './logger';
|
|
20
19
|
export type { DehydrateOptions, DehydratedState, HydrateOptions, ShouldDehydrateMutationFunction, ShouldDehydrateQueryFunction, } from './hydration';
|
package/build/lib/index.esm.js
CHANGED
|
@@ -9,6 +9,6 @@ export { MutationObserver } from './mutationObserver.esm.js';
|
|
|
9
9
|
export { notifyManager } from './notifyManager.esm.js';
|
|
10
10
|
export { focusManager } from './focusManager.esm.js';
|
|
11
11
|
export { onlineManager } from './onlineManager.esm.js';
|
|
12
|
-
export {
|
|
12
|
+
export { hashKey, isServer, keepPreviousData, replaceEqualDeep } from './utils.esm.js';
|
|
13
13
|
export { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate } from './hydration.esm.js';
|
|
14
14
|
//# sourceMappingURL=index.esm.js.map
|
package/build/lib/index.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var retryer = require('./retryer.js');
|
|
6
4
|
var queryCache = require('./queryCache.js');
|
|
7
5
|
var queryClient = require('./queryClient.js');
|
|
@@ -30,13 +28,9 @@ exports.MutationObserver = mutationObserver.MutationObserver;
|
|
|
30
28
|
exports.notifyManager = notifyManager.notifyManager;
|
|
31
29
|
exports.focusManager = focusManager.focusManager;
|
|
32
30
|
exports.onlineManager = onlineManager.onlineManager;
|
|
33
|
-
exports.
|
|
34
|
-
exports.isError = utils.isError;
|
|
31
|
+
exports.hashKey = utils.hashKey;
|
|
35
32
|
exports.isServer = utils.isServer;
|
|
36
|
-
exports.
|
|
37
|
-
exports.parseMutationArgs = utils.parseMutationArgs;
|
|
38
|
-
exports.parseMutationFilterArgs = utils.parseMutationFilterArgs;
|
|
39
|
-
exports.parseQueryArgs = utils.parseQueryArgs;
|
|
33
|
+
exports.keepPreviousData = utils.keepPreviousData;
|
|
40
34
|
exports.replaceEqualDeep = utils.replaceEqualDeep;
|
|
41
35
|
exports.defaultShouldDehydrateMutation = hydration.defaultShouldDehydrateMutation;
|
|
42
36
|
exports.defaultShouldDehydrateQuery = hydration.defaultShouldDehydrateQuery;
|
package/build/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/build/lib/index.mjs
CHANGED
|
@@ -9,6 +9,6 @@ export { MutationObserver } from './mutationObserver.mjs';
|
|
|
9
9
|
export { notifyManager } from './notifyManager.mjs';
|
|
10
10
|
export { focusManager } from './focusManager.mjs';
|
|
11
11
|
export { onlineManager } from './onlineManager.mjs';
|
|
12
|
-
export {
|
|
12
|
+
export { hashKey, isServer, keepPreviousData, replaceEqualDeep } from './utils.mjs';
|
|
13
13
|
export { defaultShouldDehydrateMutation, defaultShouldDehydrateQuery, dehydrate, hydrate } from './hydration.mjs';
|
|
14
14
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import type { QueryBehavior } from './query';
|
|
2
|
-
import type { InfiniteData,
|
|
2
|
+
import type { InfiniteData, InfiniteQueryPageParamsOptions } from './types';
|
|
3
3
|
export declare function infiniteQueryBehavior<TQueryFnData, TError, TData>(): QueryBehavior<TQueryFnData, TError, InfiniteData<TData>>;
|
|
4
|
-
export declare function getNextPageParam(options: QueryOptions<any, any>, pages: unknown[]): unknown | undefined;
|
|
5
|
-
export declare function getPreviousPageParam(options: QueryOptions<any, any>, pages: unknown[]): unknown | undefined;
|
|
6
4
|
/**
|
|
7
5
|
* Checks if there is a next page.
|
|
8
|
-
* Returns `undefined` if it cannot be determined.
|
|
9
6
|
*/
|
|
10
|
-
export declare function hasNextPage(options:
|
|
7
|
+
export declare function hasNextPage(options: InfiniteQueryPageParamsOptions<any>, pages?: unknown[]): boolean;
|
|
11
8
|
/**
|
|
12
9
|
* Checks if there is a previous page.
|
|
13
|
-
* Returns `undefined` if it cannot be determined.
|
|
14
10
|
*/
|
|
15
|
-
export declare function hasPreviousPage(options:
|
|
11
|
+
export declare function hasPreviousPage(options: InfiniteQueryPageParamsOptions<any>, pages?: unknown[]): boolean;
|
|
@@ -1,58 +1,53 @@
|
|
|
1
|
+
import { addToStart, addToEnd } from './utils.esm.js';
|
|
2
|
+
|
|
1
3
|
function infiniteQueryBehavior() {
|
|
2
4
|
return {
|
|
3
5
|
onFetch: context => {
|
|
4
6
|
context.fetchFn = () => {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;
|
|
10
|
-
const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';
|
|
11
|
-
const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';
|
|
12
|
-
const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];
|
|
13
|
-
const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];
|
|
7
|
+
const options = context.options;
|
|
8
|
+
const direction = context.fetchOptions?.meta?.fetchMore?.direction;
|
|
9
|
+
const oldPages = context.state.data?.pages || [];
|
|
10
|
+
const oldPageParams = context.state.data?.pageParams || [];
|
|
14
11
|
let newPageParams = oldPageParams;
|
|
15
12
|
let cancelled = false;
|
|
16
|
-
|
|
17
13
|
const addSignalProperty = object => {
|
|
18
14
|
Object.defineProperty(object, 'signal', {
|
|
19
15
|
enumerable: true,
|
|
20
16
|
get: () => {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if ((_context$signal = context.signal) != null && _context$signal.aborted) {
|
|
17
|
+
if (context.signal.aborted) {
|
|
24
18
|
cancelled = true;
|
|
25
19
|
} else {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
(_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener('abort', () => {
|
|
20
|
+
context.signal.addEventListener('abort', () => {
|
|
29
21
|
cancelled = true;
|
|
30
22
|
});
|
|
31
23
|
}
|
|
32
|
-
|
|
33
24
|
return context.signal;
|
|
34
25
|
}
|
|
35
26
|
});
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const queryFn = context.options.queryFn || (() => Promise.reject('Missing queryFn'));
|
|
27
|
+
};
|
|
40
28
|
|
|
29
|
+
// Get query function
|
|
30
|
+
const queryFn = context.options.queryFn || (() => Promise.reject(new Error('Missing queryFn')));
|
|
41
31
|
const buildNewPages = (pages, param, page, previous) => {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
const {
|
|
33
|
+
maxPages
|
|
34
|
+
} = context.options;
|
|
35
|
+
if (previous) {
|
|
36
|
+
newPageParams = addToStart(newPageParams, param, maxPages);
|
|
37
|
+
return addToStart(pages, page, maxPages);
|
|
38
|
+
}
|
|
39
|
+
newPageParams = addToEnd(newPageParams, param, maxPages);
|
|
40
|
+
return addToEnd(pages, page, maxPages);
|
|
41
|
+
};
|
|
46
42
|
|
|
47
|
-
|
|
43
|
+
// Create function to fetch a page
|
|
44
|
+
const fetchPage = (pages, param, previous) => {
|
|
48
45
|
if (cancelled) {
|
|
49
|
-
return Promise.reject(
|
|
46
|
+
return Promise.reject();
|
|
50
47
|
}
|
|
51
|
-
|
|
52
|
-
if (typeof param === 'undefined' && !manual && pages.length) {
|
|
48
|
+
if (typeof param === 'undefined' && pages.length) {
|
|
53
49
|
return Promise.resolve(pages);
|
|
54
50
|
}
|
|
55
|
-
|
|
56
51
|
const queryFnContext = {
|
|
57
52
|
queryKey: context.queryKey,
|
|
58
53
|
pageParam: param,
|
|
@@ -63,43 +58,35 @@ function infiniteQueryBehavior() {
|
|
|
63
58
|
const promise = Promise.resolve(queryFnResult).then(page => buildNewPages(pages, param, page, previous));
|
|
64
59
|
return promise;
|
|
65
60
|
};
|
|
61
|
+
let promise;
|
|
66
62
|
|
|
67
|
-
|
|
68
|
-
|
|
63
|
+
// Fetch first page?
|
|
69
64
|
if (!oldPages.length) {
|
|
70
|
-
promise = fetchPage([]);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
} // Refetch pages
|
|
65
|
+
promise = fetchPage([], options.defaultPageParam);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// fetch next / previous page?
|
|
69
|
+
else if (direction) {
|
|
70
|
+
const previous = direction === 'backward';
|
|
71
|
+
const param = previous ? getPreviousPageParam(options, oldPages) : getNextPageParam(options, oldPages);
|
|
72
|
+
promise = fetchPage(oldPages, param, previous);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Refetch pages
|
|
82
76
|
else {
|
|
83
77
|
newPageParams = [];
|
|
84
|
-
const manual = typeof context.options.getNextPageParam === 'undefined';
|
|
85
|
-
const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page
|
|
86
78
|
|
|
87
|
-
|
|
79
|
+
// Fetch first page
|
|
80
|
+
promise = fetchPage([], oldPageParams[0]);
|
|
88
81
|
|
|
82
|
+
// Fetch remaining pages
|
|
89
83
|
for (let i = 1; i < oldPages.length; i++) {
|
|
90
84
|
promise = promise.then(pages => {
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
if (shouldFetchNextPage) {
|
|
94
|
-
const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);
|
|
95
|
-
return fetchPage(pages, manual, param);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));
|
|
85
|
+
const param = getNextPageParam(options, pages);
|
|
86
|
+
return fetchPage(pages, param);
|
|
99
87
|
});
|
|
100
88
|
}
|
|
101
89
|
}
|
|
102
|
-
|
|
103
90
|
const finalPromise = promise.then(pages => ({
|
|
104
91
|
pages,
|
|
105
92
|
pageParams: newPageParams
|
|
@@ -110,37 +97,27 @@ function infiniteQueryBehavior() {
|
|
|
110
97
|
};
|
|
111
98
|
}
|
|
112
99
|
function getNextPageParam(options, pages) {
|
|
113
|
-
return options.getNextPageParam
|
|
100
|
+
return options.getNextPageParam(pages[pages.length - 1], pages);
|
|
114
101
|
}
|
|
115
102
|
function getPreviousPageParam(options, pages) {
|
|
116
|
-
return options.getPreviousPageParam
|
|
103
|
+
return options.getPreviousPageParam?.(pages[0], pages);
|
|
117
104
|
}
|
|
105
|
+
|
|
118
106
|
/**
|
|
119
107
|
* Checks if there is a next page.
|
|
120
|
-
* Returns `undefined` if it cannot be determined.
|
|
121
108
|
*/
|
|
122
|
-
|
|
123
109
|
function hasNextPage(options, pages) {
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return;
|
|
110
|
+
if (!pages) return false;
|
|
111
|
+
return typeof getNextPageParam(options, pages) !== 'undefined';
|
|
130
112
|
}
|
|
113
|
+
|
|
131
114
|
/**
|
|
132
115
|
* Checks if there is a previous page.
|
|
133
|
-
* Returns `undefined` if it cannot be determined.
|
|
134
116
|
*/
|
|
135
|
-
|
|
136
117
|
function hasPreviousPage(options, pages) {
|
|
137
|
-
if (options.getPreviousPageParam
|
|
138
|
-
|
|
139
|
-
return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return;
|
|
118
|
+
if (!pages || !options.getPreviousPageParam) return false;
|
|
119
|
+
return typeof getPreviousPageParam(options, pages) !== 'undefined';
|
|
143
120
|
}
|
|
144
121
|
|
|
145
|
-
export {
|
|
122
|
+
export { hasNextPage, hasPreviousPage, infiniteQueryBehavior };
|
|
146
123
|
//# sourceMappingURL=infiniteQueryBehavior.esm.js.map
|