@tanstack/react-query 5.0.0-alpha.0 → 5.0.0-alpha.10
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/HydrationBoundary.esm.js +1 -0
- package/build/lib/HydrationBoundary.esm.js.map +1 -1
- package/build/lib/HydrationBoundary.js +1 -0
- package/build/lib/HydrationBoundary.js.map +1 -1
- package/build/lib/HydrationBoundary.mjs +1 -0
- package/build/lib/HydrationBoundary.mjs.map +1 -1
- package/build/lib/QueryClientProvider.esm.js +1 -0
- package/build/lib/QueryClientProvider.esm.js.map +1 -1
- package/build/lib/QueryClientProvider.js +1 -0
- package/build/lib/QueryClientProvider.js.map +1 -1
- package/build/lib/QueryClientProvider.mjs +1 -0
- package/build/lib/QueryClientProvider.mjs.map +1 -1
- package/build/lib/QueryErrorResetBoundary.esm.js +1 -0
- package/build/lib/QueryErrorResetBoundary.esm.js.map +1 -1
- package/build/lib/QueryErrorResetBoundary.js +1 -0
- package/build/lib/QueryErrorResetBoundary.js.map +1 -1
- package/build/lib/QueryErrorResetBoundary.mjs +1 -0
- package/build/lib/QueryErrorResetBoundary.mjs.map +1 -1
- package/build/lib/__tests__/ssr.test.d.ts +0 -3
- package/build/lib/__tests__/utils.d.ts +2 -3
- package/build/lib/errorBoundaryUtils.esm.js +1 -0
- package/build/lib/errorBoundaryUtils.esm.js.map +1 -1
- package/build/lib/errorBoundaryUtils.js +1 -0
- package/build/lib/errorBoundaryUtils.js.map +1 -1
- package/build/lib/errorBoundaryUtils.mjs +1 -0
- package/build/lib/errorBoundaryUtils.mjs.map +1 -1
- package/build/lib/isRestoring.esm.js +1 -0
- package/build/lib/isRestoring.esm.js.map +1 -1
- package/build/lib/isRestoring.js +1 -0
- package/build/lib/isRestoring.js.map +1 -1
- package/build/lib/isRestoring.mjs +1 -0
- package/build/lib/isRestoring.mjs.map +1 -1
- package/build/lib/suspense.esm.js +5 -5
- package/build/lib/suspense.esm.js.map +1 -1
- package/build/lib/suspense.js +5 -5
- package/build/lib/suspense.js.map +1 -1
- package/build/lib/types.d.ts +14 -14
- package/build/lib/useBaseQuery.esm.js +1 -0
- package/build/lib/useBaseQuery.esm.js.map +1 -1
- package/build/lib/useBaseQuery.js +1 -0
- package/build/lib/useBaseQuery.js.map +1 -1
- package/build/lib/useBaseQuery.mjs +1 -0
- package/build/lib/useBaseQuery.mjs.map +1 -1
- package/build/lib/useInfiniteQuery.d.ts +2 -2
- package/build/lib/useInfiniteQuery.esm.js +4 -1
- package/build/lib/useInfiniteQuery.esm.js.map +1 -1
- package/build/lib/useInfiniteQuery.js +4 -1
- package/build/lib/useInfiniteQuery.js.map +1 -1
- package/build/lib/useInfiniteQuery.mjs +4 -1
- package/build/lib/useInfiniteQuery.mjs.map +1 -1
- package/build/lib/useIsFetching.esm.js +1 -0
- package/build/lib/useIsFetching.esm.js.map +1 -1
- package/build/lib/useIsFetching.js +1 -0
- package/build/lib/useIsFetching.js.map +1 -1
- package/build/lib/useIsFetching.mjs +1 -0
- package/build/lib/useIsFetching.mjs.map +1 -1
- package/build/lib/useMutation.d.ts +2 -2
- package/build/lib/useMutation.esm.js +1 -0
- package/build/lib/useMutation.esm.js.map +1 -1
- package/build/lib/useMutation.js +1 -0
- package/build/lib/useMutation.js.map +1 -1
- package/build/lib/useMutation.mjs +1 -0
- package/build/lib/useMutation.mjs.map +1 -1
- package/build/lib/useMutationState.d.ts +4 -4
- package/build/lib/useMutationState.esm.js +1 -0
- package/build/lib/useMutationState.esm.js.map +1 -1
- package/build/lib/useMutationState.js +1 -0
- package/build/lib/useMutationState.js.map +1 -1
- package/build/lib/useMutationState.mjs +1 -0
- package/build/lib/useMutationState.mjs.map +1 -1
- package/build/lib/useQueries.d.ts +5 -6
- package/build/lib/useQueries.esm.js +13 -10
- package/build/lib/useQueries.esm.js.map +1 -1
- package/build/lib/useQueries.js +13 -10
- package/build/lib/useQueries.js.map +1 -1
- package/build/lib/useQueries.mjs +3 -3
- package/build/lib/useQueries.mjs.map +1 -1
- package/build/lib/useQuery.d.ts +5 -5
- package/build/lib/useQuery.esm.js +1 -0
- package/build/lib/useQuery.esm.js.map +1 -1
- package/build/lib/useQuery.js +1 -0
- package/build/lib/useQuery.js.map +1 -1
- package/build/lib/useQuery.mjs +1 -0
- package/build/lib/useQuery.mjs.map +1 -1
- package/build/umd/index.development.js +79 -65
- 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 +3 -3
- package/src/__tests__/HydrationBoundary.test.tsx +4 -3
- package/src/__tests__/QueryClientProvider.test.tsx +2 -1
- package/src/__tests__/QueryResetErrorBoundary.test.tsx +12 -11
- package/src/__tests__/ssr-hydration.test.tsx +11 -10
- package/src/__tests__/ssr.test.tsx +4 -7
- package/src/__tests__/suspense.test.tsx +14 -13
- package/src/__tests__/useInfiniteQuery.test.tsx +18 -16
- package/src/__tests__/useInfiniteQuery.type.test.tsx +110 -2
- package/src/__tests__/useMutation.test.tsx +21 -20
- package/src/__tests__/useMutationState.test.tsx +24 -58
- package/src/__tests__/useQueries.test.tsx +23 -81
- package/src/__tests__/useQuery.test.tsx +30 -36
- package/src/__tests__/utils.tsx +3 -2
- package/src/errorBoundaryUtils.ts +1 -0
- package/src/types.ts +14 -14
- package/src/useBaseQuery.ts +1 -0
- package/src/useInfiniteQuery.ts +4 -2
- package/src/useIsFetching.ts +1 -0
- package/src/useMutation.ts +3 -2
- package/src/useMutationState.ts +7 -6
- package/src/useQueries.ts +12 -10
- package/src/useQuery.ts +7 -10
package/build/lib/useQuery.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { QueryClient, QueryKey,
|
|
1
|
+
import type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core';
|
|
2
2
|
import type { DefinedUseQueryResult, UseQueryOptions, UseQueryResult } from './types';
|
|
3
|
-
declare type UndefinedInitialDataOptions<TQueryFnData = unknown, TError =
|
|
3
|
+
declare type UndefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
4
4
|
initialData?: undefined;
|
|
5
5
|
};
|
|
6
|
-
declare type DefinedInitialDataOptions<TQueryFnData = unknown, TError =
|
|
6
|
+
declare type DefinedInitialDataOptions<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {
|
|
7
7
|
initialData: TQueryFnData | (() => TQueryFnData);
|
|
8
8
|
};
|
|
9
|
-
export declare function useQuery<TQueryFnData = unknown, TError =
|
|
10
|
-
export declare function useQuery<TQueryFnData = unknown, TError =
|
|
9
|
+
export declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): UseQueryResult<TData, TError>;
|
|
10
|
+
export declare function useQuery<TQueryFnData = unknown, TError = DefaultError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>, queryClient?: QueryClient): DefinedUseQueryResult<TData, TError>;
|
|
11
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.esm.js","sources":["../../src/useQuery.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"useQuery.esm.js","sources":["../../src/useQuery.ts"],"sourcesContent":["'use client'\nimport type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport { useBaseQuery } from './useBaseQuery'\n\n// HOOK\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n}\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n}\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): DefinedUseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n"],"names":[],"mappings":";;;;AAUA;;AAuCO;AASL;AACF;;"}
|
package/build/lib/useQuery.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.js","sources":["../../src/useQuery.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"useQuery.js","sources":["../../src/useQuery.ts"],"sourcesContent":["'use client'\nimport type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport { useBaseQuery } from './useBaseQuery'\n\n// HOOK\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n}\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n}\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): DefinedUseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n"],"names":[],"mappings":";;;;;;AAUA;;AAuCO;AASL;AACF;;"}
|
package/build/lib/useQuery.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.mjs","sources":["../../src/useQuery.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"useQuery.mjs","sources":["../../src/useQuery.ts"],"sourcesContent":["'use client'\nimport type { QueryClient, QueryKey, DefaultError } from '@tanstack/query-core'\nimport { QueryObserver } from '@tanstack/query-core'\nimport type {\n DefinedUseQueryResult,\n UseQueryOptions,\n UseQueryResult,\n} from './types'\nimport { useBaseQuery } from './useBaseQuery'\n\n// HOOK\ntype UndefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData?: undefined\n}\n\ntype DefinedInitialDataOptions<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n> = UseQueryOptions<TQueryFnData, TError, TData, TQueryKey> & {\n initialData: TQueryFnData | (() => TQueryFnData)\n}\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UndefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): UseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: DefinedInitialDataOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n): DefinedUseQueryResult<TData, TError>\n\nexport function useQuery<\n TQueryFnData = unknown,\n TError = DefaultError,\n TData = TQueryFnData,\n TQueryKey extends QueryKey = QueryKey,\n>(\n options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>,\n queryClient?: QueryClient,\n) {\n return useBaseQuery(options, QueryObserver, queryClient)\n}\n"],"names":[],"mappings":";;;;AAUA;;AAuCO;AASL;AACF;;"}
|
|
@@ -908,6 +908,7 @@
|
|
|
908
908
|
if (!isCancelledError(error)) {
|
|
909
909
|
// Notify cache callback
|
|
910
910
|
this.#cache.config.onError?.(error, this);
|
|
911
|
+
this.#cache.config.onSettled?.(this.state.data, error, this);
|
|
911
912
|
}
|
|
912
913
|
if (!this.isFetchingOptimistic) {
|
|
913
914
|
// Schedule query gc after fetching
|
|
@@ -932,6 +933,7 @@
|
|
|
932
933
|
|
|
933
934
|
// Notify cache callback
|
|
934
935
|
this.#cache.config.onSuccess?.(data, this);
|
|
936
|
+
this.#cache.config.onSettled?.(data, this.state.error, this);
|
|
935
937
|
if (!this.isFetchingOptimistic) {
|
|
936
938
|
// Schedule query gc after fetching
|
|
937
939
|
this.scheduleGc();
|
|
@@ -1171,18 +1173,26 @@
|
|
|
1171
1173
|
|
|
1172
1174
|
class Mutation extends Removable {
|
|
1173
1175
|
#observers;
|
|
1176
|
+
#defaultOptions;
|
|
1174
1177
|
#mutationCache;
|
|
1175
1178
|
#retryer;
|
|
1176
1179
|
constructor(config) {
|
|
1177
1180
|
super();
|
|
1178
|
-
this.options = config.options;
|
|
1179
1181
|
this.mutationId = config.mutationId;
|
|
1182
|
+
this.#defaultOptions = config.defaultOptions;
|
|
1180
1183
|
this.#mutationCache = config.mutationCache;
|
|
1181
1184
|
this.#observers = [];
|
|
1182
1185
|
this.state = config.state || getDefaultState();
|
|
1183
|
-
this.
|
|
1186
|
+
this.setOptions(config.options);
|
|
1184
1187
|
this.scheduleGc();
|
|
1185
1188
|
}
|
|
1189
|
+
setOptions(options) {
|
|
1190
|
+
this.options = {
|
|
1191
|
+
...this.#defaultOptions,
|
|
1192
|
+
...options
|
|
1193
|
+
};
|
|
1194
|
+
this.updateGcTime(this.options.gcTime);
|
|
1195
|
+
}
|
|
1186
1196
|
get meta() {
|
|
1187
1197
|
return this.options.meta;
|
|
1188
1198
|
}
|
|
@@ -1277,6 +1287,9 @@
|
|
|
1277
1287
|
// Notify cache callback
|
|
1278
1288
|
await this.#mutationCache.config.onSuccess?.(data, variables, this.state.context, this);
|
|
1279
1289
|
await this.options.onSuccess?.(data, variables, this.state.context);
|
|
1290
|
+
|
|
1291
|
+
// Notify cache callback
|
|
1292
|
+
await this.#mutationCache.config.onSettled?.(data, null, this.state.variables, this.state.context, this);
|
|
1280
1293
|
await this.options.onSettled?.(data, null, variables, this.state.context);
|
|
1281
1294
|
this.#dispatch({
|
|
1282
1295
|
type: 'success',
|
|
@@ -1288,6 +1301,9 @@
|
|
|
1288
1301
|
// Notify cache callback
|
|
1289
1302
|
await this.#mutationCache.config.onError?.(error, variables, this.state.context, this);
|
|
1290
1303
|
await this.options.onError?.(error, variables, this.state.context);
|
|
1304
|
+
|
|
1305
|
+
// Notify cache callback
|
|
1306
|
+
await this.#mutationCache.config.onSettled?.(undefined, error, this.state.variables, this.state.context, this);
|
|
1291
1307
|
await this.options.onSettled?.(undefined, error, variables, this.state.context);
|
|
1292
1308
|
throw error;
|
|
1293
1309
|
} finally {
|
|
@@ -1457,12 +1473,15 @@
|
|
|
1457
1473
|
function infiniteQueryBehavior() {
|
|
1458
1474
|
return {
|
|
1459
1475
|
onFetch: context => {
|
|
1460
|
-
context.fetchFn = () => {
|
|
1476
|
+
context.fetchFn = async () => {
|
|
1461
1477
|
const options = context.options;
|
|
1462
1478
|
const direction = context.fetchOptions?.meta?.fetchMore?.direction;
|
|
1463
1479
|
const oldPages = context.state.data?.pages || [];
|
|
1464
1480
|
const oldPageParams = context.state.data?.pageParams || [];
|
|
1465
|
-
|
|
1481
|
+
const empty = {
|
|
1482
|
+
pages: [],
|
|
1483
|
+
pageParams: []
|
|
1484
|
+
};
|
|
1466
1485
|
let cancelled = false;
|
|
1467
1486
|
const addSignalProperty = object => {
|
|
1468
1487
|
Object.defineProperty(object, 'signal', {
|
|
@@ -1482,95 +1501,95 @@
|
|
|
1482
1501
|
|
|
1483
1502
|
// Get query function
|
|
1484
1503
|
const queryFn = context.options.queryFn || (() => Promise.reject(new Error('Missing queryFn')));
|
|
1485
|
-
const buildNewPages = (pages, param, page, previous) => {
|
|
1486
|
-
const {
|
|
1487
|
-
maxPages
|
|
1488
|
-
} = context.options;
|
|
1489
|
-
if (previous) {
|
|
1490
|
-
newPageParams = addToStart(newPageParams, param, maxPages);
|
|
1491
|
-
return addToStart(pages, page, maxPages);
|
|
1492
|
-
}
|
|
1493
|
-
newPageParams = addToEnd(newPageParams, param, maxPages);
|
|
1494
|
-
return addToEnd(pages, page, maxPages);
|
|
1495
|
-
};
|
|
1496
1504
|
|
|
1497
1505
|
// Create function to fetch a page
|
|
1498
|
-
const fetchPage = (
|
|
1506
|
+
const fetchPage = async (data, param, previous) => {
|
|
1499
1507
|
if (cancelled) {
|
|
1500
1508
|
return Promise.reject();
|
|
1501
1509
|
}
|
|
1502
|
-
if (typeof param === 'undefined' && pages.length) {
|
|
1503
|
-
return Promise.resolve(
|
|
1510
|
+
if (typeof param === 'undefined' && data.pages.length) {
|
|
1511
|
+
return Promise.resolve(data);
|
|
1504
1512
|
}
|
|
1505
1513
|
const queryFnContext = {
|
|
1506
1514
|
queryKey: context.queryKey,
|
|
1507
1515
|
pageParam: param,
|
|
1516
|
+
direction: previous ? 'backward' : 'forward',
|
|
1508
1517
|
meta: context.options.meta
|
|
1509
1518
|
};
|
|
1510
1519
|
addSignalProperty(queryFnContext);
|
|
1511
|
-
const
|
|
1512
|
-
const
|
|
1513
|
-
|
|
1520
|
+
const page = await queryFn(queryFnContext);
|
|
1521
|
+
const {
|
|
1522
|
+
maxPages
|
|
1523
|
+
} = context.options;
|
|
1524
|
+
const addTo = previous ? addToStart : addToEnd;
|
|
1525
|
+
return {
|
|
1526
|
+
pages: addTo(data.pages, page, maxPages),
|
|
1527
|
+
pageParams: addTo(data.pageParams, param, maxPages)
|
|
1528
|
+
};
|
|
1514
1529
|
};
|
|
1515
|
-
let
|
|
1530
|
+
let result;
|
|
1516
1531
|
|
|
1517
1532
|
// Fetch first page?
|
|
1518
1533
|
if (!oldPages.length) {
|
|
1519
|
-
|
|
1534
|
+
result = await fetchPage(empty, options.defaultPageParam);
|
|
1520
1535
|
}
|
|
1521
1536
|
|
|
1522
1537
|
// fetch next / previous page?
|
|
1523
1538
|
else if (direction) {
|
|
1524
1539
|
const previous = direction === 'backward';
|
|
1525
|
-
const
|
|
1526
|
-
|
|
1540
|
+
const pageParamFn = previous ? getPreviousPageParam : getNextPageParam;
|
|
1541
|
+
const oldData = {
|
|
1542
|
+
pages: oldPages,
|
|
1543
|
+
pageParams: oldPageParams
|
|
1544
|
+
};
|
|
1545
|
+
const param = pageParamFn(options, oldData);
|
|
1546
|
+
result = await fetchPage(oldData, param, previous);
|
|
1527
1547
|
}
|
|
1528
1548
|
|
|
1529
1549
|
// Refetch pages
|
|
1530
1550
|
else {
|
|
1531
|
-
newPageParams = [];
|
|
1532
|
-
|
|
1533
1551
|
// Fetch first page
|
|
1534
|
-
|
|
1552
|
+
result = await fetchPage(empty, oldPageParams[0]);
|
|
1535
1553
|
|
|
1536
1554
|
// Fetch remaining pages
|
|
1537
1555
|
for (let i = 1; i < oldPages.length; i++) {
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
return fetchPage(pages, param);
|
|
1541
|
-
});
|
|
1556
|
+
const param = getNextPageParam(options, result);
|
|
1557
|
+
result = await fetchPage(result, param);
|
|
1542
1558
|
}
|
|
1543
1559
|
}
|
|
1544
|
-
|
|
1545
|
-
pages,
|
|
1546
|
-
pageParams: newPageParams
|
|
1547
|
-
}));
|
|
1548
|
-
return finalPromise;
|
|
1560
|
+
return result;
|
|
1549
1561
|
};
|
|
1550
1562
|
}
|
|
1551
1563
|
};
|
|
1552
1564
|
}
|
|
1553
|
-
function getNextPageParam(options,
|
|
1554
|
-
|
|
1565
|
+
function getNextPageParam(options, {
|
|
1566
|
+
pages,
|
|
1567
|
+
pageParams
|
|
1568
|
+
}) {
|
|
1569
|
+
const lastIndex = pages.length - 1;
|
|
1570
|
+
return options.getNextPageParam(pages[lastIndex], pages, pageParams[lastIndex], pageParams);
|
|
1555
1571
|
}
|
|
1556
|
-
function getPreviousPageParam(options,
|
|
1557
|
-
|
|
1572
|
+
function getPreviousPageParam(options, {
|
|
1573
|
+
pages,
|
|
1574
|
+
pageParams
|
|
1575
|
+
}) {
|
|
1576
|
+
return options.getPreviousPageParam?.(pages[0], pages, pageParams[0], pageParams);
|
|
1558
1577
|
}
|
|
1559
1578
|
|
|
1560
1579
|
/**
|
|
1561
1580
|
* Checks if there is a next page.
|
|
1562
1581
|
*/
|
|
1563
|
-
function hasNextPage(options,
|
|
1564
|
-
if (!
|
|
1565
|
-
return typeof getNextPageParam(options,
|
|
1582
|
+
function hasNextPage(options, data) {
|
|
1583
|
+
if (!data) return false;
|
|
1584
|
+
return typeof getNextPageParam(options, data) !== 'undefined';
|
|
1566
1585
|
}
|
|
1567
1586
|
|
|
1568
1587
|
/**
|
|
1569
1588
|
* Checks if there is a previous page.
|
|
1570
1589
|
*/
|
|
1571
|
-
function hasPreviousPage(options,
|
|
1572
|
-
if (!
|
|
1573
|
-
return typeof getPreviousPageParam(options,
|
|
1590
|
+
function hasPreviousPage(options, data) {
|
|
1591
|
+
if (!data || !options.getPreviousPageParam) return false;
|
|
1592
|
+
return typeof getPreviousPageParam(options, data) !== 'undefined';
|
|
1574
1593
|
}
|
|
1575
1594
|
|
|
1576
1595
|
// CLASS
|
|
@@ -2285,14 +2304,12 @@
|
|
|
2285
2304
|
#result;
|
|
2286
2305
|
#queries;
|
|
2287
2306
|
#observers;
|
|
2288
|
-
#observersMap;
|
|
2289
2307
|
constructor(client, queries) {
|
|
2290
2308
|
super();
|
|
2291
2309
|
this.#client = client;
|
|
2292
2310
|
this.#queries = [];
|
|
2293
2311
|
this.#result = [];
|
|
2294
2312
|
this.#observers = [];
|
|
2295
|
-
this.#observersMap = {};
|
|
2296
2313
|
if (queries) {
|
|
2297
2314
|
this.setQueries(queries);
|
|
2298
2315
|
}
|
|
@@ -2326,14 +2343,12 @@
|
|
|
2326
2343
|
// set options for the new observers to notify of changes
|
|
2327
2344
|
newObserverMatches.forEach(match => match.observer.setOptions(match.defaultedQueryOptions, notifyOptions));
|
|
2328
2345
|
const newObservers = newObserverMatches.map(match => match.observer);
|
|
2329
|
-
const newObserversMap = Object.fromEntries(newObservers.map(observer => [observer.options.queryHash, observer]));
|
|
2330
2346
|
const newResult = newObservers.map(observer => observer.getCurrentResult());
|
|
2331
2347
|
const hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);
|
|
2332
2348
|
if (prevObservers.length === newObservers.length && !hasIndexChange) {
|
|
2333
2349
|
return;
|
|
2334
2350
|
}
|
|
2335
2351
|
this.#observers = newObservers;
|
|
2336
|
-
this.#observersMap = newObserversMap;
|
|
2337
2352
|
this.#result = newResult;
|
|
2338
2353
|
if (!this.hasListeners()) {
|
|
2339
2354
|
return;
|
|
@@ -2378,7 +2393,7 @@
|
|
|
2378
2393
|
const unmatchedQueries = defaultedQueryOptions.filter(defaultedOptions => !matchedQueryHashes.includes(defaultedOptions.queryHash));
|
|
2379
2394
|
const getObserver = options => {
|
|
2380
2395
|
const defaultedOptions = this.#client.defaultQueryOptions(options);
|
|
2381
|
-
const currentObserver = this.#
|
|
2396
|
+
const currentObserver = this.#observers.find(o => o.options.queryHash === defaultedOptions.queryHash);
|
|
2382
2397
|
return currentObserver ?? new QueryObserver(this.#client, defaultedOptions);
|
|
2383
2398
|
};
|
|
2384
2399
|
const newOrReusedObservers = unmatchedQueries.map(options => {
|
|
@@ -2432,7 +2447,7 @@
|
|
|
2432
2447
|
options.behavior = infiniteQueryBehavior();
|
|
2433
2448
|
return super.getOptimisticResult(options);
|
|
2434
2449
|
}
|
|
2435
|
-
fetchNextPage(options
|
|
2450
|
+
fetchNextPage(options) {
|
|
2436
2451
|
return this.fetch({
|
|
2437
2452
|
...options,
|
|
2438
2453
|
meta: {
|
|
@@ -2442,9 +2457,7 @@
|
|
|
2442
2457
|
}
|
|
2443
2458
|
});
|
|
2444
2459
|
}
|
|
2445
|
-
fetchPreviousPage({
|
|
2446
|
-
...options
|
|
2447
|
-
} = {}) {
|
|
2460
|
+
fetchPreviousPage(options) {
|
|
2448
2461
|
return this.fetch({
|
|
2449
2462
|
...options,
|
|
2450
2463
|
meta: {
|
|
@@ -2469,8 +2482,8 @@
|
|
|
2469
2482
|
...result,
|
|
2470
2483
|
fetchNextPage: this.fetchNextPage,
|
|
2471
2484
|
fetchPreviousPage: this.fetchPreviousPage,
|
|
2472
|
-
hasNextPage: hasNextPage(options, state.data
|
|
2473
|
-
hasPreviousPage: hasPreviousPage(options, state.data
|
|
2485
|
+
hasNextPage: hasNextPage(options, state.data),
|
|
2486
|
+
hasPreviousPage: hasPreviousPage(options, state.data),
|
|
2474
2487
|
isFetchingNextPage,
|
|
2475
2488
|
isFetchingPreviousPage,
|
|
2476
2489
|
isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage
|
|
@@ -2508,6 +2521,7 @@
|
|
|
2508
2521
|
observer: this
|
|
2509
2522
|
});
|
|
2510
2523
|
}
|
|
2524
|
+
this.#currentMutation?.setOptions(this.options);
|
|
2511
2525
|
}
|
|
2512
2526
|
onUnsubscribe() {
|
|
2513
2527
|
if (!this.listeners.length) {
|
|
@@ -2529,9 +2543,7 @@
|
|
|
2529
2543
|
mutate(variables, options) {
|
|
2530
2544
|
this.#mutateOptions = options;
|
|
2531
2545
|
this.#currentMutation?.removeObserver(this);
|
|
2532
|
-
this.#currentMutation = this.#client.getMutationCache().build(this.#client,
|
|
2533
|
-
...this.options
|
|
2534
|
-
});
|
|
2546
|
+
this.#currentMutation = this.#client.getMutationCache().build(this.#client, this.options);
|
|
2535
2547
|
this.#currentMutation.addObserver(this);
|
|
2536
2548
|
return this.#currentMutation.execute(variables);
|
|
2537
2549
|
}
|
|
@@ -2783,9 +2795,8 @@
|
|
|
2783
2795
|
// `placeholderData` function does not have a parameter
|
|
2784
2796
|
|
|
2785
2797
|
function useQueries({
|
|
2786
|
-
queries
|
|
2787
|
-
|
|
2788
|
-
}) {
|
|
2798
|
+
queries
|
|
2799
|
+
}, queryClient) {
|
|
2789
2800
|
const client = useQueryClient(queryClient);
|
|
2790
2801
|
const isRestoring = useIsRestoring();
|
|
2791
2802
|
const defaultedQueries = React__namespace.useMemo(() => queries.map(options => {
|
|
@@ -2983,7 +2994,9 @@
|
|
|
2983
2994
|
|
|
2984
2995
|
// HOOK
|
|
2985
2996
|
function useInfiniteQuery(options, queryClient) {
|
|
2986
|
-
return useBaseQuery(options,
|
|
2997
|
+
return useBaseQuery(options,
|
|
2998
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
|
|
2999
|
+
InfiniteQueryObserver, queryClient);
|
|
2987
3000
|
}
|
|
2988
3001
|
|
|
2989
3002
|
exports.CancelledError = CancelledError;
|
|
@@ -3008,6 +3021,7 @@
|
|
|
3008
3021
|
exports.isCancelledError = isCancelledError;
|
|
3009
3022
|
exports.isServer = isServer;
|
|
3010
3023
|
exports.keepPreviousData = keepPreviousData;
|
|
3024
|
+
exports.matchQuery = matchQuery;
|
|
3011
3025
|
exports.notifyManager = notifyManager;
|
|
3012
3026
|
exports.onlineManager = onlineManager;
|
|
3013
3027
|
exports.replaceEqualDeep = replaceEqualDeep;
|