@qiaopeng/tanstack-query-plus 0.5.8 → 0.5.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/README.md +155 -95
- package/dist/{types/base.d.ts → base-CHnwqfyz.d.cts} +12 -14
- package/dist/base-CHnwqfyz.d.ts +52 -0
- package/dist/chunk-52ZO6Y67.cjs +1121 -0
- package/dist/chunk-52ZO6Y67.cjs.map +1 -0
- package/dist/chunk-5J6OXSLW.cjs +36 -0
- package/dist/chunk-5J6OXSLW.cjs.map +1 -0
- package/dist/chunk-6MAYHLTE.cjs +310 -0
- package/dist/chunk-6MAYHLTE.cjs.map +1 -0
- package/dist/chunk-ADS2QTMP.js +144 -0
- package/dist/chunk-ADS2QTMP.js.map +1 -0
- package/dist/chunk-APXNNHBD.cjs +374 -0
- package/dist/chunk-APXNNHBD.cjs.map +1 -0
- package/dist/chunk-AXMWOGNX.js +134 -0
- package/dist/chunk-AXMWOGNX.js.map +1 -0
- package/dist/chunk-B4KO3K3E.cjs +521 -0
- package/dist/chunk-B4KO3K3E.cjs.map +1 -0
- package/dist/chunk-BK3OTIBD.cjs +15 -0
- package/dist/chunk-BK3OTIBD.cjs.map +1 -0
- package/dist/chunk-BYAOQALW.js +13 -0
- package/dist/chunk-BYAOQALW.js.map +1 -0
- package/dist/chunk-CRTVS7VI.cjs +162 -0
- package/dist/chunk-CRTVS7VI.cjs.map +1 -0
- package/dist/chunk-EXITP7QO.js +288 -0
- package/dist/chunk-EXITP7QO.js.map +1 -0
- package/dist/chunk-GMO3PRZZ.js +565 -0
- package/dist/chunk-GMO3PRZZ.js.map +1 -0
- package/dist/chunk-HRO2DWKZ.js +12 -0
- package/dist/chunk-HRO2DWKZ.js.map +1 -0
- package/dist/chunk-JHDKUQSB.js +1069 -0
- package/dist/chunk-JHDKUQSB.js.map +1 -0
- package/dist/chunk-JN2Y6RSY.js +23 -0
- package/dist/chunk-JN2Y6RSY.js.map +1 -0
- package/dist/chunk-JRJSKRZW.cjs +29 -0
- package/dist/chunk-JRJSKRZW.cjs.map +1 -0
- package/dist/chunk-KC62H4VJ.js +123 -0
- package/dist/chunk-KC62H4VJ.js.map +1 -0
- package/dist/chunk-LHEHSLD5.js +31 -0
- package/dist/chunk-LHEHSLD5.js.map +1 -0
- package/dist/chunk-N4264P7N.cjs +156 -0
- package/dist/chunk-N4264P7N.cjs.map +1 -0
- package/dist/chunk-NF5QYPYC.cjs +133 -0
- package/dist/chunk-NF5QYPYC.cjs.map +1 -0
- package/dist/chunk-OFLCHKKE.cjs +28 -0
- package/dist/chunk-OFLCHKKE.cjs.map +1 -0
- package/dist/chunk-PCNSWVA5.cjs +602 -0
- package/dist/chunk-PCNSWVA5.cjs.map +1 -0
- package/dist/chunk-STOMAA2X.js +85 -0
- package/dist/chunk-STOMAA2X.js.map +1 -0
- package/dist/chunk-UVF5S6LX.cjs +15 -0
- package/dist/chunk-UVF5S6LX.cjs.map +1 -0
- package/dist/chunk-WEIXCDCA.cjs +90 -0
- package/dist/chunk-WEIXCDCA.cjs.map +1 -0
- package/dist/chunk-X3ZTSLBQ.js +355 -0
- package/dist/chunk-X3ZTSLBQ.js.map +1 -0
- package/dist/chunk-YEV73J4J.js +504 -0
- package/dist/chunk-YEV73J4J.js.map +1 -0
- package/dist/chunk-YW5PNTRU.cjs +14 -0
- package/dist/chunk-YW5PNTRU.cjs.map +1 -0
- package/dist/chunk-ZNXSWUIS.js +12 -0
- package/dist/chunk-ZNXSWUIS.js.map +1 -0
- package/dist/chunk-ZUEMBY4W.js +21 -0
- package/dist/chunk-ZUEMBY4W.js.map +1 -0
- package/dist/components/index.cjs +60 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.cts +43 -0
- package/dist/components/index.d.ts +43 -4
- package/dist/components/index.js +3 -4
- package/dist/components/index.js.map +1 -0
- package/dist/core/devtools.cjs +25 -0
- package/dist/core/devtools.cjs.map +1 -0
- package/dist/core/devtools.d.cts +17 -0
- package/dist/core/devtools.d.ts +9 -7
- package/dist/core/devtools.js +4 -16
- package/dist/core/devtools.js.map +1 -0
- package/dist/core/index.cjs +220 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +196 -0
- package/dist/core/index.d.ts +196 -9
- package/dist/core/index.js +7 -8
- package/dist/core/index.js.map +1 -0
- package/dist/features/index.cjs +76 -0
- package/dist/features/index.cjs.map +1 -0
- package/dist/features/index.d.cts +86 -0
- package/dist/features/index.d.ts +86 -4
- package/dist/features/index.js +7 -3
- package/dist/features/index.js.map +1 -0
- package/dist/hooks/index.cjs +209 -0
- package/dist/hooks/index.cjs.map +1 -0
- package/dist/hooks/index.d.cts +377 -0
- package/dist/hooks/index.d.ts +377 -10
- package/dist/hooks/index.js +8 -9
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useInViewPrefetch.cjs +33 -0
- package/dist/hooks/useInViewPrefetch.cjs.map +1 -0
- package/dist/hooks/useInViewPrefetch.d.cts +12 -0
- package/dist/hooks/useInViewPrefetch.d.ts +6 -4
- package/dist/hooks/useInViewPrefetch.js +30 -20
- package/dist/hooks/useInViewPrefetch.js.map +1 -0
- package/dist/index.cjs +811 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +36 -0
- package/dist/index.d.ts +36 -8
- package/dist/index.js +89 -7
- package/dist/index.js.map +1 -0
- package/dist/{types/offline.d.ts → offline-DVPtgoAS.d.ts} +15 -13
- package/dist/offline-xxeA_-6V.d.cts +99 -0
- package/dist/persistence-MRtkmhqq.d.cts +216 -0
- package/dist/persistence-tIrEb0pR.d.ts +216 -0
- package/dist/react-query/index.cjs +52 -0
- package/dist/react-query/index.cjs.map +1 -0
- package/dist/react-query/index.d.cts +1 -0
- package/dist/react-query/index.d.ts +1 -3
- package/dist/react-query/index.js +3 -1
- package/dist/react-query/index.js.map +1 -0
- package/dist/types/index.cjs +43 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +157 -0
- package/dist/types/index.d.ts +116 -12
- package/dist/types/index.js +6 -8
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.cjs +234 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +272 -0
- package/dist/utils/index.d.ts +272 -10
- package/dist/utils/index.js +9 -9
- package/dist/utils/index.js.map +1 -0
- package/package.json +13 -3
- package/dist/PersistQueryClientProvider.d.ts +0 -22
- package/dist/PersistQueryClientProvider.d.ts.map +0 -1
- package/dist/PersistQueryClientProvider.js +0 -47
- package/dist/components/LoadingFallback.d.ts +0 -16
- package/dist/components/LoadingFallback.d.ts.map +0 -1
- package/dist/components/LoadingFallback.js +0 -27
- package/dist/components/QueryErrorBoundary.d.ts +0 -12
- package/dist/components/QueryErrorBoundary.d.ts.map +0 -1
- package/dist/components/QueryErrorBoundary.js +0 -9
- package/dist/components/SuspenseWrapper.d.ts +0 -14
- package/dist/components/SuspenseWrapper.d.ts.map +0 -1
- package/dist/components/SuspenseWrapper.js +0 -9
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/internal/ErrorBoundary.d.ts +0 -27
- package/dist/components/internal/ErrorBoundary.d.ts.map +0 -1
- package/dist/components/internal/ErrorBoundary.js +0 -37
- package/dist/core/config.d.ts +0 -80
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js +0 -321
- package/dist/core/devtools.d.ts.map +0 -1
- package/dist/core/env.d.ts +0 -4
- package/dist/core/env.d.ts.map +0 -1
- package/dist/core/env.js +0 -26
- package/dist/core/focusManager.d.ts +0 -33
- package/dist/core/focusManager.d.ts.map +0 -1
- package/dist/core/focusManager.js +0 -122
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/keys.d.ts +0 -59
- package/dist/core/keys.d.ts.map +0 -1
- package/dist/core/keys.js +0 -107
- package/dist/core/queryOptions.d.ts +0 -19
- package/dist/core/queryOptions.d.ts.map +0 -1
- package/dist/core/queryOptions.js +0 -44
- package/dist/features/index.d.ts.map +0 -1
- package/dist/features/offline.d.ts +0 -48
- package/dist/features/offline.d.ts.map +0 -1
- package/dist/features/offline.js +0 -269
- package/dist/features/persistence.d.ts +0 -36
- package/dist/features/persistence.d.ts.map +0 -1
- package/dist/features/persistence.js +0 -186
- package/dist/hooks/batchQueries.d.ts +0 -129
- package/dist/hooks/batchQueries.d.ts.map +0 -1
- package/dist/hooks/batchQueries.js +0 -301
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/useDataGuardMutation.d.ts +0 -39
- package/dist/hooks/useDataGuardMutation.d.ts.map +0 -1
- package/dist/hooks/useDataGuardMutation.js +0 -151
- package/dist/hooks/useDataGuardQuery.d.ts +0 -28
- package/dist/hooks/useDataGuardQuery.d.ts.map +0 -1
- package/dist/hooks/useDataGuardQuery.js +0 -71
- package/dist/hooks/useFocusManager.d.ts +0 -41
- package/dist/hooks/useFocusManager.d.ts.map +0 -1
- package/dist/hooks/useFocusManager.js +0 -109
- package/dist/hooks/useInViewPrefetch.d.ts.map +0 -1
- package/dist/hooks/useInfiniteQuery.d.ts +0 -33
- package/dist/hooks/useInfiniteQuery.d.ts.map +0 -1
- package/dist/hooks/useInfiniteQuery.js +0 -61
- package/dist/hooks/useMutation.d.ts +0 -25
- package/dist/hooks/useMutation.d.ts.map +0 -1
- package/dist/hooks/useMutation.js +0 -180
- package/dist/hooks/usePrefetch.d.ts +0 -54
- package/dist/hooks/usePrefetch.d.ts.map +0 -1
- package/dist/hooks/usePrefetch.js +0 -229
- package/dist/hooks/useQuery.d.ts +0 -21
- package/dist/hooks/useQuery.d.ts.map +0 -1
- package/dist/hooks/useQuery.js +0 -46
- package/dist/hooks/useSuspenseQuery.d.ts +0 -11
- package/dist/hooks/useSuspenseQuery.d.ts.map +0 -1
- package/dist/hooks/useSuspenseQuery.js +0 -19
- package/dist/index.d.ts.map +0 -1
- package/dist/react-query/index.d.ts.map +0 -1
- package/dist/types/base.d.ts.map +0 -1
- package/dist/types/base.js +0 -26
- package/dist/types/dataGuard.d.ts +0 -69
- package/dist/types/dataGuard.d.ts.map +0 -1
- package/dist/types/dataGuard.js +0 -10
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/infinite.d.ts +0 -39
- package/dist/types/infinite.d.ts.map +0 -1
- package/dist/types/infinite.js +0 -1
- package/dist/types/offline.d.ts.map +0 -1
- package/dist/types/offline.js +0 -8
- package/dist/types/optimistic.d.ts +0 -126
- package/dist/types/optimistic.d.ts.map +0 -1
- package/dist/types/optimistic.js +0 -7
- package/dist/types/persistence.d.ts +0 -9
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js +0 -1
- package/dist/types/selectors.d.ts +0 -11
- package/dist/types/selectors.d.ts.map +0 -1
- package/dist/types/selectors.js +0 -1
- package/dist/types/suspense.d.ts +0 -67
- package/dist/types/suspense.d.ts.map +0 -1
- package/dist/types/suspense.js +0 -1
- package/dist/utils/dataGuard.d.ts +0 -37
- package/dist/utils/dataGuard.d.ts.map +0 -1
- package/dist/utils/dataGuard.js +0 -257
- package/dist/utils/fieldMapper.d.ts +0 -9
- package/dist/utils/fieldMapper.d.ts.map +0 -1
- package/dist/utils/fieldMapper.js +0 -27
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/network.d.ts +0 -9
- package/dist/utils/network.d.ts.map +0 -1
- package/dist/utils/network.js +0 -43
- package/dist/utils/optimisticUtils.d.ts +0 -45
- package/dist/utils/optimisticUtils.d.ts.map +0 -1
- package/dist/utils/optimisticUtils.js +0 -116
- package/dist/utils/placeholderData.d.ts +0 -3
- package/dist/utils/placeholderData.d.ts.map +0 -1
- package/dist/utils/placeholderData.js +0 -28
- package/dist/utils/prefetchManager.d.ts +0 -111
- package/dist/utils/prefetchManager.d.ts.map +0 -1
- package/dist/utils/prefetchManager.js +0 -246
- package/dist/utils/queryKey.d.ts +0 -24
- package/dist/utils/queryKey.d.ts.map +0 -1
- package/dist/utils/queryKey.js +0 -77
- package/dist/utils/selectors.d.ts +0 -30
- package/dist/utils/selectors.d.ts.map +0 -1
- package/dist/utils/selectors.js +0 -18
- package/dist/utils/storage.d.ts +0 -7
- package/dist/utils/storage.d.ts.map +0 -1
- package/dist/utils/storage.js +0 -84
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/PersistQueryClientProvider.tsx"],"names":["useEffect","setupOnlineManager","useMemo","createPersister","TIME_CONSTANTS","jsx","QueryClientProvider","TanStackPersistProvider","useState","isOnline","subscribeToOnlineStatus","clearCache"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBO,SAAS,0BAAA,CAA2B;AAAA,EACzC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,sBAAA;AAAA,EACX,iBAAA,GAAoB,IAAA;AAAA,EACpB,oBAAA,GAAuB,IAAA;AAAA,EACvB,cAAA,EAAgB,eAAA;AAAA,EAChB;AACF,CAAA,EAAoC;AAClC,EAAAA,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAAC,oCAAA,EAAmB;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAEzB,EAAA,MAAM,SAAA,GAAYC,cAAQ,MAAM;AAC9B,IAAA,IAAI,CAAC,mBAAmB,OAAO,IAAA;AAC/B,IAAA,OAAOC,iCAAA,CAAgB,QAAA,EAAU,MAAA,EAAW,eAAe,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,QAAA,EAAU,iBAAA,EAAmB,eAAe,CAAC,CAAA;AAEjD,EAAA,MAAM,cAAA,GAAiBD,cAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,QAAQE,gCAAA,CAAe;AAAA,KACzB;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,uBAAOC,cAAA,CAACC,8BAAA,EAAA,EAAoB,MAAA,EAAiB,QAAA,EAAS,CAAA;AAAA,IACxD;AACA,IAAA,uBACED,cAAA;AAAA,MAACE,kDAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAA,EAAW,gBAAA;AAAA,QAEV;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,uBAAOF,cAAA,CAACC,8BAAA,EAAA,EAAoB,MAAA,EAAiB,QAAA,EAAS,CAAA;AACxD;AAEO,SAAS,oBAAA,GAAuB;AACrC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIE,cAAA,CAASC,4BAAU,CAAA;AAC/C,EAAAT,eAAA,CAAU,MAAM;AACd,IAAA,OAAOU,0CAAwB,SAAS,CAAA;AAAA,EAC1C,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,MAAA;AAAA,IACV,WAAW,CAAC;AAAA,GACd;AACF;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,qBAAA,GAAwB,CAAC,QAAA,GAAW,sBAAA,KAA2B;AACnE,IAAAC,4BAAA,CAAW,QAAQ,CAAA;AAAA,EACrB,CAAA;AACA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,OAAOF,0BAAA,EAAS;AAAA,EAClB,CAAA;AACA,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,qBAAA;AAAA,IACZ;AAAA,GACF;AACF","file":"index.cjs","sourcesContent":["import type { QueryClient } from \"@tanstack/react-query\";\nimport type { ReactNode } from \"react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { PersistQueryClientProvider as TanStackPersistProvider } from \"@tanstack/react-query-persist-client\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { TIME_CONSTANTS } from \"./core/config.js\";\nimport { isOnline, setupOnlineManager, subscribeToOnlineStatus } from \"./features/offline.js\";\nimport { clearCache, createPersister } from \"./features/persistence.js\";\n\nexport interface PersistQueryClientProviderProps {\n children: ReactNode;\n client: QueryClient;\n cacheKey?: string;\n enablePersistence?: boolean;\n enableOfflineSupport?: boolean;\n onPersistError?: (error: Error) => void;\n onPersistRestore?: () => void;\n}\n\nexport function PersistQueryClientProvider({\n children,\n client,\n cacheKey = \"tanstack-query-cache\",\n enablePersistence = true,\n enableOfflineSupport = true,\n onPersistError: _onPersistError,\n onPersistRestore\n}: PersistQueryClientProviderProps) {\n useEffect(() => {\n if (enableOfflineSupport) {\n setupOnlineManager();\n }\n }, [enableOfflineSupport]);\n\n const persister = useMemo(() => {\n if (!enablePersistence) return null;\n return createPersister(cacheKey, undefined, _onPersistError);\n }, [cacheKey, enablePersistence, _onPersistError]);\n\n const persistOptions = useMemo(() => {\n if (!persister) return null;\n return {\n persister,\n maxAge: TIME_CONSTANTS.ONE_DAY\n };\n }, [persister]);\n\n if (enablePersistence) {\n if (!persistOptions) {\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n }\n return (\n <TanStackPersistProvider\n client={client}\n persistOptions={persistOptions}\n onSuccess={onPersistRestore}\n >\n {children}\n </TanStackPersistProvider>\n );\n }\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n}\n\nexport function usePersistenceStatus() {\n const [online, setOnline] = useState(isOnline());\n useEffect(() => {\n return subscribeToOnlineStatus(setOnline);\n }, []);\n return {\n isOnline: online,\n isOffline: !online\n };\n}\n\nexport function usePersistenceManager() {\n const clearPersistenceCache = (cacheKey = \"tanstack-query-cache\") => {\n clearCache(cacheKey);\n };\n const getOnlineStatus = () => {\n return isOnline();\n };\n return {\n clearCache: clearPersistenceCache,\n getOnlineStatus\n };\n}\n\nexport default PersistQueryClientProvider;\n"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export { CardSkeletonFallback, DefaultLoadingFallback, FullScreenLoading, ListSkeletonFallback, PageSkeletonFallback, QueryErrorBoundary, QueryErrorBoundaryProps, QuerySuspenseWrapper, SmallLoadingIndicator, SuspenseWrapper, TextSkeletonFallback } from './components/index.cjs';
|
|
2
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
3
|
+
export { HydrationBoundary, MutationFilters, MutationKey, QueryClient, QueryClientProvider, UseMutationOptions, UseQueryOptions, dehydrate, focusManager, hydrate, keepPreviousData, skipToken, useIsMutating, useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
export { DEFAULT_GC_TIME, DEFAULT_MUTATION_CONFIG, DEFAULT_QUERY_CONFIG, DEFAULT_STALE_TIME, DEVELOPMENT_CONFIG, FocusManagerConfig, GLOBAL_QUERY_CONFIG, LONG_CACHE_CONFIG, ListQueryConfig, PRODUCTION_CONFIG, REALTIME_CONFIG, SMART_RETRY_MUTATION_CONFIG, SmartFocusManager, TIME_CONSTANTS, areKeysEqual, containsEntity, createAppQueryOptions, createAppQueryOptionsWithSelect, createComplexKey, createCustomConfig, createDomainKeyFactory, createErrorSafeConfig, createFilteredKey, createListQueryOptions, createMutationKeyFactory, createPaginatedKey, createSafeRetryStrategy, createSearchKey, createSortedKey, defaultMutationRetryStrategy, defaultQueryRetryStrategy, ensureBestPractices, exponentialBackoff, extractEntityId, getConfigByEnvironment, getSmartFocusManager, isDev, isProd, isTest, matchesKeyPattern, normalizeQueryKey, pauseFocusManager, queryKeys, resetSmartFocusManager, resumeFocusManager, setupFocusManager, validateConfig, validateGcTime, validateQueryKey } from './core/index.cjs';
|
|
5
|
+
export { DevToolsConfig, createDevToolsConfig, defaultDevToolsConfig, isDevToolsEnabled } from './core/devtools.cjs';
|
|
6
|
+
export { DataGuardMutationOptions, EnhancedQueryOptions, EnhancedQueryResult, HoverPrefetchOptions, InViewPrefetchOptions, MutationDefaultsConfig, MutationStateOptions, PrefetchOptions, UseFocusRefetchOptions, UsePauseFocusOptions, batchQueryUtils, calculateBatchStats, createBatchQueryConfig, createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, createSuspenseInfiniteQuery, createSuspenseQuery, setupMutationDefaults, useAutoRefreshBatchQueries, useBatchPrefetch, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useConditionalFocusRefetch, useConditionalPrefetch, useDashboardQueries, useDataGuardMutation, useDataGuardQueryConfig, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedInfiniteQuery, useEnhancedQueries, useEnhancedQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQueries, useEnhancedSuspenseQuery, useFocusCallback, useFocusRefetch, useFocusState, useHoverPrefetch, useIdlePrefetch, useIsFetching, useListMutation, useMutation, useMutationState, usePageVisibility, usePaginatedBatchQueries, usePauseFocus, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRetryBatchQueries, useRoutePrefetch, useSmartFocusManager, useSmartPrefetch } from './hooks/index.cjs';
|
|
7
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
+
import { ReactNode } from 'react';
|
|
9
|
+
export { CursorPaginatedResponse, EnhancedSuspenseInfiniteQueryOptions, EnhancedSuspenseInfiniteQueryResult, EnhancedSuspenseQueryOptions, EnhancedSuspenseQueryResult, ErrorBoundaryProps, ErrorBoundaryState, ErrorFallbackProps, LoadingFallbackProps, MutationContext, MutationOptions, OffsetPaginatedResponse, PageNumberPaginatedResponse, PaginatedResponseWithMeta, PaginationMeta, PaginationParams, QueryMetadata, QueryStatus, SuspenseConfig, SuspenseInfiniteQueryFunction, SuspenseQueryFunction, SuspenseWrapperProps } from './types/index.cjs';
|
|
10
|
+
export { BatchTask, FieldMappingConfig, InteractionRecord, ListOperationVariables, NavigatorWithConnection, NetworkSpeed, NormalizeConfig, PredictionResult, PrefetchConfig, PrefetchStats, PrefetchTask, QueryKeyFactory, QueryKeyFactoryConfig, SmartPrefetchManager, addHashToData, applyDataGuard, batchRemoveItems, batchUpdateItems, cancelQueriesBatch, clearRecentlyUpdated, compose, conditionalUpdateItems, createAddItemConfig, createFieldEnricher, createListOperationConfig, createOptimisticBase, createQueryKeyFactory, createRemoveItemConfig, createSimpleQueryKeyFactory, createTempId, createUpdateItemConfig, deepClone, deriveFamilyKey, extractParamsFromKey, formatBytes, getNetworkInfo, getNetworkSpeed, getPrefetchManager, getStorageUsage, hashObject, invalidateQueriesBatch, isFastNetwork, isListFamilyKey, isQueryKeyEqual, isSlowNetwork, isStorageAvailable, listUpdater, markRecentlyUpdated, normalizeQueryParams, reorderItems, resetPrefetchManager, selectById, selectByIds, selectCount, selectField, selectFields, selectFirst, selectItems, selectLast, selectMap, selectTotal, selectWhere, selectors, setQueryDataBatch, stableListPlaceholder, startsWithKeyPrefix, updateFamilyMetadata } from './utils/index.cjs';
|
|
11
|
+
export { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
|
12
|
+
export { PersistedClient, Persister } from '@tanstack/react-query-persist-client';
|
|
13
|
+
export { a as CachePriority, C as ConnectionQuality, D as DeepReadonly, N as NetworkInformation, b as NetworkStatus, O as OperationResult, c as Optional, P as PersistenceStrategyType, R as Required, S as StorageType } from './base-CHnwqfyz.cjs';
|
|
14
|
+
export { o as BatchErrorAggregate, n as BatchOperationReport, l as BatchQueryConfig, p as BatchQueryOperations, B as BatchQueryResult, k as BatchQueryStats, m as BatchRetryConfig, C as ConflictError, b as DataGuardInfo, c as DataGuardOptions, D as DataGuardStrategy, E as EnhancedBatchQueryResult, s as EntityWithId, L as ListOperationConfig, g as ListOperationType, i as ListUpdater, d as OptimisticContext, j as OptimisticGlobalConfig, e as OptimisticOperationType, f as OptimisticOperationTypeValue, O as OptimisticUpdateConfig, h as OptimisticUpdater, P as PaginatedData, R as RollbackFunction, r as Selector, S as StaleDataInfo, q as StorageInfo, V as VersionedEntity, a as VersionedPaginatedResponse } from './persistence-MRtkmhqq.cjs';
|
|
15
|
+
export { d as MutationFunctionRegistry, M as MutationOperationType, e as OfflineManagerConfig, b as OfflineMutationOperation, h as OfflineMutationOptions, a as OfflineQueryInfo, g as OfflineQueryOptions, c as OfflineQueueConfig, O as OfflineRecoveryConfig, f as OfflineState } from './offline-xxeA_-6V.cjs';
|
|
16
|
+
|
|
17
|
+
interface PersistQueryClientProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
client: QueryClient;
|
|
20
|
+
cacheKey?: string;
|
|
21
|
+
enablePersistence?: boolean;
|
|
22
|
+
enableOfflineSupport?: boolean;
|
|
23
|
+
onPersistError?: (error: Error) => void;
|
|
24
|
+
onPersistRestore?: () => void;
|
|
25
|
+
}
|
|
26
|
+
declare function PersistQueryClientProvider({ children, client, cacheKey, enablePersistence, enableOfflineSupport, onPersistError: _onPersistError, onPersistRestore }: PersistQueryClientProviderProps): react_jsx_runtime.JSX.Element;
|
|
27
|
+
declare function usePersistenceStatus(): {
|
|
28
|
+
isOnline: boolean;
|
|
29
|
+
isOffline: boolean;
|
|
30
|
+
};
|
|
31
|
+
declare function usePersistenceManager(): {
|
|
32
|
+
clearCache: (cacheKey?: string) => void;
|
|
33
|
+
getOnlineStatus: () => boolean;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { PersistQueryClientProvider, type PersistQueryClientProviderProps, usePersistenceManager, usePersistenceStatus };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,36 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
export
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
export { CardSkeletonFallback, DefaultLoadingFallback, FullScreenLoading, ListSkeletonFallback, PageSkeletonFallback, QueryErrorBoundary, QueryErrorBoundaryProps, QuerySuspenseWrapper, SmallLoadingIndicator, SuspenseWrapper, TextSkeletonFallback } from './components/index.js';
|
|
2
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
3
|
+
export { HydrationBoundary, MutationFilters, MutationKey, QueryClient, QueryClientProvider, UseMutationOptions, UseQueryOptions, dehydrate, focusManager, hydrate, keepPreviousData, skipToken, useIsMutating, useQueryClient } from '@tanstack/react-query';
|
|
4
|
+
export { DEFAULT_GC_TIME, DEFAULT_MUTATION_CONFIG, DEFAULT_QUERY_CONFIG, DEFAULT_STALE_TIME, DEVELOPMENT_CONFIG, FocusManagerConfig, GLOBAL_QUERY_CONFIG, LONG_CACHE_CONFIG, ListQueryConfig, PRODUCTION_CONFIG, REALTIME_CONFIG, SMART_RETRY_MUTATION_CONFIG, SmartFocusManager, TIME_CONSTANTS, areKeysEqual, containsEntity, createAppQueryOptions, createAppQueryOptionsWithSelect, createComplexKey, createCustomConfig, createDomainKeyFactory, createErrorSafeConfig, createFilteredKey, createListQueryOptions, createMutationKeyFactory, createPaginatedKey, createSafeRetryStrategy, createSearchKey, createSortedKey, defaultMutationRetryStrategy, defaultQueryRetryStrategy, ensureBestPractices, exponentialBackoff, extractEntityId, getConfigByEnvironment, getSmartFocusManager, isDev, isProd, isTest, matchesKeyPattern, normalizeQueryKey, pauseFocusManager, queryKeys, resetSmartFocusManager, resumeFocusManager, setupFocusManager, validateConfig, validateGcTime, validateQueryKey } from './core/index.js';
|
|
5
|
+
export { DevToolsConfig, createDevToolsConfig, defaultDevToolsConfig, isDevToolsEnabled } from './core/devtools.js';
|
|
6
|
+
export { DataGuardMutationOptions, EnhancedQueryOptions, EnhancedQueryResult, HoverPrefetchOptions, InViewPrefetchOptions, MutationDefaultsConfig, MutationStateOptions, PrefetchOptions, UseFocusRefetchOptions, UsePauseFocusOptions, batchQueryUtils, calculateBatchStats, createBatchQueryConfig, createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, createSuspenseInfiniteQuery, createSuspenseQuery, setupMutationDefaults, useAutoRefreshBatchQueries, useBatchPrefetch, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useConditionalFocusRefetch, useConditionalPrefetch, useDashboardQueries, useDataGuardMutation, useDataGuardQueryConfig, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedInfiniteQuery, useEnhancedQueries, useEnhancedQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQueries, useEnhancedSuspenseQuery, useFocusCallback, useFocusRefetch, useFocusState, useHoverPrefetch, useIdlePrefetch, useIsFetching, useListMutation, useMutation, useMutationState, usePageVisibility, usePaginatedBatchQueries, usePauseFocus, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRetryBatchQueries, useRoutePrefetch, useSmartFocusManager, useSmartPrefetch } from './hooks/index.js';
|
|
7
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
8
|
+
import { ReactNode } from 'react';
|
|
9
|
+
export { CursorPaginatedResponse, EnhancedSuspenseInfiniteQueryOptions, EnhancedSuspenseInfiniteQueryResult, EnhancedSuspenseQueryOptions, EnhancedSuspenseQueryResult, ErrorBoundaryProps, ErrorBoundaryState, ErrorFallbackProps, LoadingFallbackProps, MutationContext, MutationOptions, OffsetPaginatedResponse, PageNumberPaginatedResponse, PaginatedResponseWithMeta, PaginationMeta, PaginationParams, QueryMetadata, QueryStatus, SuspenseConfig, SuspenseInfiniteQueryFunction, SuspenseQueryFunction, SuspenseWrapperProps } from './types/index.js';
|
|
10
|
+
export { BatchTask, FieldMappingConfig, InteractionRecord, ListOperationVariables, NavigatorWithConnection, NetworkSpeed, NormalizeConfig, PredictionResult, PrefetchConfig, PrefetchStats, PrefetchTask, QueryKeyFactory, QueryKeyFactoryConfig, SmartPrefetchManager, addHashToData, applyDataGuard, batchRemoveItems, batchUpdateItems, cancelQueriesBatch, clearRecentlyUpdated, compose, conditionalUpdateItems, createAddItemConfig, createFieldEnricher, createListOperationConfig, createOptimisticBase, createQueryKeyFactory, createRemoveItemConfig, createSimpleQueryKeyFactory, createTempId, createUpdateItemConfig, deepClone, deriveFamilyKey, extractParamsFromKey, formatBytes, getNetworkInfo, getNetworkSpeed, getPrefetchManager, getStorageUsage, hashObject, invalidateQueriesBatch, isFastNetwork, isListFamilyKey, isQueryKeyEqual, isSlowNetwork, isStorageAvailable, listUpdater, markRecentlyUpdated, normalizeQueryParams, reorderItems, resetPrefetchManager, selectById, selectByIds, selectCount, selectField, selectFields, selectFirst, selectItems, selectLast, selectMap, selectTotal, selectWhere, selectors, setQueryDataBatch, stableListPlaceholder, startsWithKeyPrefix, updateFamilyMetadata } from './utils/index.js';
|
|
11
|
+
export { ReactQueryDevtools } from '@tanstack/react-query-devtools';
|
|
12
|
+
export { PersistedClient, Persister } from '@tanstack/react-query-persist-client';
|
|
13
|
+
export { a as CachePriority, C as ConnectionQuality, D as DeepReadonly, N as NetworkInformation, b as NetworkStatus, O as OperationResult, c as Optional, P as PersistenceStrategyType, R as Required, S as StorageType } from './base-CHnwqfyz.js';
|
|
14
|
+
export { o as BatchErrorAggregate, n as BatchOperationReport, l as BatchQueryConfig, p as BatchQueryOperations, B as BatchQueryResult, k as BatchQueryStats, m as BatchRetryConfig, C as ConflictError, b as DataGuardInfo, c as DataGuardOptions, D as DataGuardStrategy, E as EnhancedBatchQueryResult, s as EntityWithId, L as ListOperationConfig, g as ListOperationType, i as ListUpdater, d as OptimisticContext, j as OptimisticGlobalConfig, e as OptimisticOperationType, f as OptimisticOperationTypeValue, O as OptimisticUpdateConfig, h as OptimisticUpdater, P as PaginatedData, R as RollbackFunction, r as Selector, S as StaleDataInfo, q as StorageInfo, V as VersionedEntity, a as VersionedPaginatedResponse } from './persistence-tIrEb0pR.js';
|
|
15
|
+
export { d as MutationFunctionRegistry, M as MutationOperationType, e as OfflineManagerConfig, b as OfflineMutationOperation, h as OfflineMutationOptions, a as OfflineQueryInfo, g as OfflineQueryOptions, c as OfflineQueueConfig, O as OfflineRecoveryConfig, f as OfflineState } from './offline-DVPtgoAS.js';
|
|
16
|
+
|
|
17
|
+
interface PersistQueryClientProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
client: QueryClient;
|
|
20
|
+
cacheKey?: string;
|
|
21
|
+
enablePersistence?: boolean;
|
|
22
|
+
enableOfflineSupport?: boolean;
|
|
23
|
+
onPersistError?: (error: Error) => void;
|
|
24
|
+
onPersistRestore?: () => void;
|
|
25
|
+
}
|
|
26
|
+
declare function PersistQueryClientProvider({ children, client, cacheKey, enablePersistence, enableOfflineSupport, onPersistError: _onPersistError, onPersistRestore }: PersistQueryClientProviderProps): react_jsx_runtime.JSX.Element;
|
|
27
|
+
declare function usePersistenceStatus(): {
|
|
28
|
+
isOnline: boolean;
|
|
29
|
+
isOffline: boolean;
|
|
30
|
+
};
|
|
31
|
+
declare function usePersistenceManager(): {
|
|
32
|
+
clearCache: (cacheKey?: string) => void;
|
|
33
|
+
getOnlineStatus: () => boolean;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export { PersistQueryClientProvider, type PersistQueryClientProviderProps, usePersistenceManager, usePersistenceStatus };
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,89 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export {
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
|
|
1
|
+
export { MutationOperationType } from './chunk-BYAOQALW.js';
|
|
2
|
+
export { SmartPrefetchManager, batchRemoveItems, batchUpdateItems, cancelQueriesBatch, compose, conditionalUpdateItems, createAddItemConfig, createFieldEnricher, createListOperationConfig, createOptimisticBase, createRemoveItemConfig, createTempId, createUpdateItemConfig, getPrefetchManager, invalidateQueriesBatch, keepPreviousData, listUpdater, reorderItems, resetPrefetchManager, selectById, selectByIds, selectCount, selectField, selectFields, selectFirst, selectItems, selectLast, selectMap, selectTotal, selectWhere, selectors, setQueryDataBatch, stableListPlaceholder } from './chunk-GMO3PRZZ.js';
|
|
3
|
+
export { ListOperationType, OptimisticOperationType } from './chunk-ZNXSWUIS.js';
|
|
4
|
+
export { CardSkeletonFallback, DefaultLoadingFallback, FullScreenLoading, HydrationBoundary, ListSkeletonFallback, PageSkeletonFallback, QueryErrorBoundary, QuerySuspenseWrapper, SmallLoadingIndicator, SuspenseWrapper, TextSkeletonFallback, dehydrate, hydrate } from './chunk-AXMWOGNX.js';
|
|
5
|
+
export { areKeysEqual, containsEntity, createAppQueryOptions, createAppQueryOptionsWithSelect, createComplexKey, createDomainKeyFactory, createFilteredKey, createListQueryOptions, createMutationKeyFactory, createPaginatedKey, createSearchKey, createSortedKey, extractEntityId, matchesKeyPattern, normalizeQueryKey, queryKeys, validateQueryKey } from './chunk-ADS2QTMP.js';
|
|
6
|
+
export { ReactQueryDevtools, createDevToolsConfig, defaultDevToolsConfig, isDevToolsEnabled } from './chunk-ZUEMBY4W.js';
|
|
7
|
+
import { setupOnlineManager, createPersister, isOnline, subscribeToOnlineStatus, clearCache } from './chunk-YEV73J4J.js';
|
|
8
|
+
export { deepClone, formatBytes, getStorageUsage, isStorageAvailable } from './chunk-STOMAA2X.js';
|
|
9
|
+
export { CachePriority, ConnectionQuality, PersistenceStrategyType, StorageType } from './chunk-LHEHSLD5.js';
|
|
10
|
+
export { batchQueryUtils, calculateBatchStats, createBatchQueryConfig, createCursorPaginationOptions, createInfiniteQueryOptions, createOffsetPaginationOptions, createPageNumberPaginationOptions, createSuspenseInfiniteQuery, createSuspenseQuery, setupMutationDefaults, useAutoRefreshBatchQueries, useBatchPrefetch, useBatchQueryPerformance, useCombinedQueries, useConditionalBatchQueries, useConditionalFocusRefetch, useConditionalPrefetch, useDashboardQueries, useDataGuardMutation, useDataGuardQueryConfig, useDependentBatchQueries, useDynamicBatchQueries, useEnhancedInfiniteQuery, useEnhancedQueries, useEnhancedQuery, useEnhancedSuspenseInfiniteQuery, useEnhancedSuspenseQueries, useEnhancedSuspenseQuery, useFocusCallback, useFocusRefetch, useFocusState, useHoverPrefetch, useIdlePrefetch, useIsFetching, useListMutation, useMutation, useMutationState, usePageVisibility, usePaginatedBatchQueries, usePauseFocus, usePeriodicPrefetch, usePredictivePrefetch, usePriorityPrefetch, useRetryBatchQueries, useRoutePrefetch, useSmartFocusManager, useSmartPrefetch } from './chunk-JHDKUQSB.js';
|
|
11
|
+
export { ConflictError } from './chunk-HRO2DWKZ.js';
|
|
12
|
+
export { addHashToData, applyDataGuard, clearRecentlyUpdated, createQueryKeyFactory, createSimpleQueryKeyFactory, deriveFamilyKey, extractParamsFromKey, getNetworkInfo, getNetworkSpeed, hashObject, isFastNetwork, isListFamilyKey, isQueryKeyEqual, isSlowNetwork, markRecentlyUpdated, normalizeQueryParams, startsWithKeyPrefix, updateFamilyMetadata } from './chunk-X3ZTSLBQ.js';
|
|
13
|
+
export { SmartFocusManager, focusManager, getSmartFocusManager, pauseFocusManager, resetSmartFocusManager, resumeFocusManager, setupFocusManager } from './chunk-KC62H4VJ.js';
|
|
14
|
+
import { TIME_CONSTANTS } from './chunk-EXITP7QO.js';
|
|
15
|
+
export { DEFAULT_GC_TIME, DEFAULT_MUTATION_CONFIG, DEFAULT_QUERY_CONFIG, DEFAULT_STALE_TIME, DEVELOPMENT_CONFIG, GLOBAL_QUERY_CONFIG, LONG_CACHE_CONFIG, PRODUCTION_CONFIG, REALTIME_CONFIG, SMART_RETRY_MUTATION_CONFIG, TIME_CONSTANTS, createCustomConfig, createErrorSafeConfig, createSafeRetryStrategy, defaultMutationRetryStrategy, defaultQueryRetryStrategy, ensureBestPractices, exponentialBackoff, getConfigByEnvironment, validateConfig, validateGcTime } from './chunk-EXITP7QO.js';
|
|
16
|
+
export { isDev, isProd, isTest } from './chunk-JN2Y6RSY.js';
|
|
17
|
+
import { QueryClientProvider } from '@tanstack/react-query';
|
|
18
|
+
export { QueryClient, QueryClientProvider, skipToken, useIsMutating, useQueryClient } from '@tanstack/react-query';
|
|
19
|
+
import { PersistQueryClientProvider as PersistQueryClientProvider$1 } from '@tanstack/react-query-persist-client';
|
|
20
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
21
|
+
import { jsx } from 'react/jsx-runtime';
|
|
22
|
+
|
|
23
|
+
function PersistQueryClientProvider({
|
|
24
|
+
children,
|
|
25
|
+
client,
|
|
26
|
+
cacheKey = "tanstack-query-cache",
|
|
27
|
+
enablePersistence = true,
|
|
28
|
+
enableOfflineSupport = true,
|
|
29
|
+
onPersistError: _onPersistError,
|
|
30
|
+
onPersistRestore
|
|
31
|
+
}) {
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (enableOfflineSupport) {
|
|
34
|
+
setupOnlineManager();
|
|
35
|
+
}
|
|
36
|
+
}, [enableOfflineSupport]);
|
|
37
|
+
const persister = useMemo(() => {
|
|
38
|
+
if (!enablePersistence) return null;
|
|
39
|
+
return createPersister(cacheKey, void 0, _onPersistError);
|
|
40
|
+
}, [cacheKey, enablePersistence, _onPersistError]);
|
|
41
|
+
const persistOptions = useMemo(() => {
|
|
42
|
+
if (!persister) return null;
|
|
43
|
+
return {
|
|
44
|
+
persister,
|
|
45
|
+
maxAge: TIME_CONSTANTS.ONE_DAY
|
|
46
|
+
};
|
|
47
|
+
}, [persister]);
|
|
48
|
+
if (enablePersistence) {
|
|
49
|
+
if (!persistOptions) {
|
|
50
|
+
return /* @__PURE__ */ jsx(QueryClientProvider, { client, children });
|
|
51
|
+
}
|
|
52
|
+
return /* @__PURE__ */ jsx(
|
|
53
|
+
PersistQueryClientProvider$1,
|
|
54
|
+
{
|
|
55
|
+
client,
|
|
56
|
+
persistOptions,
|
|
57
|
+
onSuccess: onPersistRestore,
|
|
58
|
+
children
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
return /* @__PURE__ */ jsx(QueryClientProvider, { client, children });
|
|
63
|
+
}
|
|
64
|
+
function usePersistenceStatus() {
|
|
65
|
+
const [online, setOnline] = useState(isOnline());
|
|
66
|
+
useEffect(() => {
|
|
67
|
+
return subscribeToOnlineStatus(setOnline);
|
|
68
|
+
}, []);
|
|
69
|
+
return {
|
|
70
|
+
isOnline: online,
|
|
71
|
+
isOffline: !online
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
function usePersistenceManager() {
|
|
75
|
+
const clearPersistenceCache = (cacheKey = "tanstack-query-cache") => {
|
|
76
|
+
clearCache(cacheKey);
|
|
77
|
+
};
|
|
78
|
+
const getOnlineStatus = () => {
|
|
79
|
+
return isOnline();
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
clearCache: clearPersistenceCache,
|
|
83
|
+
getOnlineStatus
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { PersistQueryClientProvider, usePersistenceManager, usePersistenceStatus };
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
89
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/PersistQueryClientProvider.tsx"],"names":["TanStackPersistProvider"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBO,SAAS,0BAAA,CAA2B;AAAA,EACzC,QAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,sBAAA;AAAA,EACX,iBAAA,GAAoB,IAAA;AAAA,EACpB,oBAAA,GAAuB,IAAA;AAAA,EACvB,cAAA,EAAgB,eAAA;AAAA,EAChB;AACF,CAAA,EAAoC;AAClC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,oBAAA,EAAsB;AACxB,MAAA,kBAAA,EAAmB;AAAA,IACrB;AAAA,EACF,CAAA,EAAG,CAAC,oBAAoB,CAAC,CAAA;AAEzB,EAAA,MAAM,SAAA,GAAY,QAAQ,MAAM;AAC9B,IAAA,IAAI,CAAC,mBAAmB,OAAO,IAAA;AAC/B,IAAA,OAAO,eAAA,CAAgB,QAAA,EAAU,MAAA,EAAW,eAAe,CAAA;AAAA,EAC7D,CAAA,EAAG,CAAC,QAAA,EAAU,iBAAA,EAAmB,eAAe,CAAC,CAAA;AAEjD,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM;AACnC,IAAA,IAAI,CAAC,WAAW,OAAO,IAAA;AACvB,IAAA,OAAO;AAAA,MACL,SAAA;AAAA,MACA,QAAQ,cAAA,CAAe;AAAA,KACzB;AAAA,EACF,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,IAAI,CAAC,cAAA,EAAgB;AACnB,MAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAiB,QAAA,EAAS,CAAA;AAAA,IACxD;AACA,IAAA,uBACE,GAAA;AAAA,MAACA,4BAAA;AAAA,MAAA;AAAA,QACC,MAAA;AAAA,QACA,cAAA;AAAA,QACA,SAAA,EAAW,gBAAA;AAAA,QAEV;AAAA;AAAA,KACH;AAAA,EAEJ;AACA,EAAA,uBAAO,GAAA,CAAC,mBAAA,EAAA,EAAoB,MAAA,EAAiB,QAAA,EAAS,CAAA;AACxD;AAEO,SAAS,oBAAA,GAAuB;AACrC,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAI,QAAA,CAAS,UAAU,CAAA;AAC/C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,wBAAwB,SAAS,CAAA;AAAA,EAC1C,CAAA,EAAG,EAAE,CAAA;AACL,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,MAAA;AAAA,IACV,WAAW,CAAC;AAAA,GACd;AACF;AAEO,SAAS,qBAAA,GAAwB;AACtC,EAAA,MAAM,qBAAA,GAAwB,CAAC,QAAA,GAAW,sBAAA,KAA2B;AACnE,IAAA,UAAA,CAAW,QAAQ,CAAA;AAAA,EACrB,CAAA;AACA,EAAA,MAAM,kBAAkB,MAAM;AAC5B,IAAA,OAAO,QAAA,EAAS;AAAA,EAClB,CAAA;AACA,EAAA,OAAO;AAAA,IACL,UAAA,EAAY,qBAAA;AAAA,IACZ;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import type { QueryClient } from \"@tanstack/react-query\";\nimport type { ReactNode } from \"react\";\nimport { QueryClientProvider } from \"@tanstack/react-query\";\nimport { PersistQueryClientProvider as TanStackPersistProvider } from \"@tanstack/react-query-persist-client\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { TIME_CONSTANTS } from \"./core/config.js\";\nimport { isOnline, setupOnlineManager, subscribeToOnlineStatus } from \"./features/offline.js\";\nimport { clearCache, createPersister } from \"./features/persistence.js\";\n\nexport interface PersistQueryClientProviderProps {\n children: ReactNode;\n client: QueryClient;\n cacheKey?: string;\n enablePersistence?: boolean;\n enableOfflineSupport?: boolean;\n onPersistError?: (error: Error) => void;\n onPersistRestore?: () => void;\n}\n\nexport function PersistQueryClientProvider({\n children,\n client,\n cacheKey = \"tanstack-query-cache\",\n enablePersistence = true,\n enableOfflineSupport = true,\n onPersistError: _onPersistError,\n onPersistRestore\n}: PersistQueryClientProviderProps) {\n useEffect(() => {\n if (enableOfflineSupport) {\n setupOnlineManager();\n }\n }, [enableOfflineSupport]);\n\n const persister = useMemo(() => {\n if (!enablePersistence) return null;\n return createPersister(cacheKey, undefined, _onPersistError);\n }, [cacheKey, enablePersistence, _onPersistError]);\n\n const persistOptions = useMemo(() => {\n if (!persister) return null;\n return {\n persister,\n maxAge: TIME_CONSTANTS.ONE_DAY\n };\n }, [persister]);\n\n if (enablePersistence) {\n if (!persistOptions) {\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n }\n return (\n <TanStackPersistProvider\n client={client}\n persistOptions={persistOptions}\n onSuccess={onPersistRestore}\n >\n {children}\n </TanStackPersistProvider>\n );\n }\n return <QueryClientProvider client={client}>{children}</QueryClientProvider>;\n}\n\nexport function usePersistenceStatus() {\n const [online, setOnline] = useState(isOnline());\n useEffect(() => {\n return subscribeToOnlineStatus(setOnline);\n }, []);\n return {\n isOnline: online,\n isOffline: !online\n };\n}\n\nexport function usePersistenceManager() {\n const clearPersistenceCache = (cacheKey = \"tanstack-query-cache\") => {\n clearCache(cacheKey);\n };\n const getOnlineStatus = () => {\n return isOnline();\n };\n return {\n clearCache: clearPersistenceCache,\n getOnlineStatus\n };\n}\n\nexport default PersistQueryClientProvider;\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { QueryKey } from '@tanstack/react-query';
|
|
2
|
+
import { b as NetworkStatus, O as OperationResult } from './base-CHnwqfyz.js';
|
|
3
|
+
|
|
4
|
+
interface OfflineRecoveryConfig {
|
|
4
5
|
enabled: boolean;
|
|
5
6
|
retryInterval: number;
|
|
6
7
|
maxRetries: number;
|
|
@@ -13,7 +14,7 @@ export interface OfflineRecoveryConfig {
|
|
|
13
14
|
checkInterval?: number;
|
|
14
15
|
refetchOnReconnect?: boolean;
|
|
15
16
|
}
|
|
16
|
-
|
|
17
|
+
interface OfflineQueryInfo {
|
|
17
18
|
queryKey: QueryKey;
|
|
18
19
|
queryFn: () => Promise<unknown>;
|
|
19
20
|
failedAt: Date;
|
|
@@ -22,14 +23,14 @@ export interface OfflineQueryInfo {
|
|
|
22
23
|
isPaused: boolean;
|
|
23
24
|
metadata?: Record<string, unknown>;
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
+
declare enum MutationOperationType {
|
|
26
27
|
CREATE = "create",
|
|
27
28
|
UPDATE = "update",
|
|
28
29
|
DELETE = "delete",
|
|
29
30
|
PATCH = "patch",
|
|
30
31
|
CUSTOM = "custom"
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
+
interface OfflineMutationOperation {
|
|
33
34
|
id: string;
|
|
34
35
|
type: MutationOperationType;
|
|
35
36
|
mutationKey: QueryKey;
|
|
@@ -42,7 +43,7 @@ export interface OfflineMutationOperation {
|
|
|
42
43
|
dependsOn?: string[];
|
|
43
44
|
metadata?: Record<string, unknown>;
|
|
44
45
|
}
|
|
45
|
-
|
|
46
|
+
interface OfflineQueueConfig {
|
|
46
47
|
enabled: boolean;
|
|
47
48
|
maxSize: number;
|
|
48
49
|
persist: boolean;
|
|
@@ -52,14 +53,14 @@ export interface OfflineQueueConfig {
|
|
|
52
53
|
operationTimeout: number;
|
|
53
54
|
concurrency: number;
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
interface MutationFunctionRegistry {
|
|
56
57
|
register: (key: string, fn: () => Promise<unknown>) => void;
|
|
57
58
|
get: (key: string) => (() => Promise<unknown>) | undefined;
|
|
58
59
|
unregister: (key: string) => void;
|
|
59
60
|
clear: () => void;
|
|
60
61
|
getKeys: () => string[];
|
|
61
62
|
}
|
|
62
|
-
|
|
63
|
+
interface OfflineManagerConfig {
|
|
63
64
|
networkCheck: {
|
|
64
65
|
interval: number;
|
|
65
66
|
url?: string;
|
|
@@ -73,7 +74,7 @@ export interface OfflineManagerConfig {
|
|
|
73
74
|
onRecoveryComplete?: (recoveredCount: number) => void;
|
|
74
75
|
};
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
+
interface OfflineState {
|
|
77
78
|
isOffline: boolean;
|
|
78
79
|
networkStatus: NetworkStatus;
|
|
79
80
|
queuedOperations: number;
|
|
@@ -81,17 +82,18 @@ export interface OfflineState {
|
|
|
81
82
|
lastSyncAt?: Date;
|
|
82
83
|
isRecovering: boolean;
|
|
83
84
|
}
|
|
84
|
-
|
|
85
|
+
interface OfflineQueryOptions {
|
|
85
86
|
enabled?: boolean;
|
|
86
87
|
fallbackData?: unknown;
|
|
87
88
|
showStaleWhileOffline?: boolean;
|
|
88
89
|
onReconnect?: "refetch" | "keep" | "invalidate";
|
|
89
90
|
}
|
|
90
|
-
|
|
91
|
+
interface OfflineMutationOptions {
|
|
91
92
|
enableQueue?: boolean;
|
|
92
93
|
priority?: number;
|
|
93
94
|
dependsOn?: string[];
|
|
94
95
|
optimisticUpdate?: (variables: unknown) => void;
|
|
95
96
|
rollback?: (variables: unknown) => void;
|
|
96
97
|
}
|
|
97
|
-
|
|
98
|
+
|
|
99
|
+
export { MutationOperationType as M, type OfflineRecoveryConfig as O, type OfflineQueryInfo as a, type OfflineMutationOperation as b, type OfflineQueueConfig as c, type MutationFunctionRegistry as d, type OfflineManagerConfig as e, type OfflineState as f, type OfflineQueryOptions as g, type OfflineMutationOptions as h };
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { QueryKey } from '@tanstack/react-query';
|
|
2
|
+
import { b as NetworkStatus, O as OperationResult } from './base-CHnwqfyz.cjs';
|
|
3
|
+
|
|
4
|
+
interface OfflineRecoveryConfig {
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
retryInterval: number;
|
|
7
|
+
maxRetries: number;
|
|
8
|
+
retryDelay: number;
|
|
9
|
+
customRetryDelay?: (attempt: number) => number;
|
|
10
|
+
networkCheckInterval: number;
|
|
11
|
+
retryOnReconnect: boolean;
|
|
12
|
+
refetchOnWindowFocus: boolean;
|
|
13
|
+
queryFilter?: (queryKey: QueryKey) => boolean;
|
|
14
|
+
checkInterval?: number;
|
|
15
|
+
refetchOnReconnect?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface OfflineQueryInfo {
|
|
18
|
+
queryKey: QueryKey;
|
|
19
|
+
queryFn: () => Promise<unknown>;
|
|
20
|
+
failedAt: Date;
|
|
21
|
+
retryCount: number;
|
|
22
|
+
lastError?: Error;
|
|
23
|
+
isPaused: boolean;
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
declare enum MutationOperationType {
|
|
27
|
+
CREATE = "create",
|
|
28
|
+
UPDATE = "update",
|
|
29
|
+
DELETE = "delete",
|
|
30
|
+
PATCH = "patch",
|
|
31
|
+
CUSTOM = "custom"
|
|
32
|
+
}
|
|
33
|
+
interface OfflineMutationOperation {
|
|
34
|
+
id: string;
|
|
35
|
+
type: MutationOperationType;
|
|
36
|
+
mutationKey: QueryKey;
|
|
37
|
+
mutationFn: () => Promise<unknown>;
|
|
38
|
+
variables: unknown;
|
|
39
|
+
createdAt: Date;
|
|
40
|
+
retryCount: number;
|
|
41
|
+
lastError?: Error;
|
|
42
|
+
priority: number;
|
|
43
|
+
dependsOn?: string[];
|
|
44
|
+
metadata?: Record<string, unknown>;
|
|
45
|
+
}
|
|
46
|
+
interface OfflineQueueConfig {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
maxSize: number;
|
|
49
|
+
persist: boolean;
|
|
50
|
+
storageKey: string;
|
|
51
|
+
autoExecuteInterval: number;
|
|
52
|
+
executeOnReconnect: boolean;
|
|
53
|
+
operationTimeout: number;
|
|
54
|
+
concurrency: number;
|
|
55
|
+
}
|
|
56
|
+
interface MutationFunctionRegistry {
|
|
57
|
+
register: (key: string, fn: () => Promise<unknown>) => void;
|
|
58
|
+
get: (key: string) => (() => Promise<unknown>) | undefined;
|
|
59
|
+
unregister: (key: string) => void;
|
|
60
|
+
clear: () => void;
|
|
61
|
+
getKeys: () => string[];
|
|
62
|
+
}
|
|
63
|
+
interface OfflineManagerConfig {
|
|
64
|
+
networkCheck: {
|
|
65
|
+
interval: number;
|
|
66
|
+
url?: string;
|
|
67
|
+
timeout: number;
|
|
68
|
+
};
|
|
69
|
+
queue: OfflineQueueConfig;
|
|
70
|
+
recovery: OfflineRecoveryConfig;
|
|
71
|
+
callbacks?: {
|
|
72
|
+
onNetworkChange?: (status: NetworkStatus) => void;
|
|
73
|
+
onQueueOperation?: (operation: OfflineMutationOperation, result: OperationResult) => void;
|
|
74
|
+
onRecoveryComplete?: (recoveredCount: number) => void;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
interface OfflineState {
|
|
78
|
+
isOffline: boolean;
|
|
79
|
+
networkStatus: NetworkStatus;
|
|
80
|
+
queuedOperations: number;
|
|
81
|
+
failedQueries: number;
|
|
82
|
+
lastSyncAt?: Date;
|
|
83
|
+
isRecovering: boolean;
|
|
84
|
+
}
|
|
85
|
+
interface OfflineQueryOptions {
|
|
86
|
+
enabled?: boolean;
|
|
87
|
+
fallbackData?: unknown;
|
|
88
|
+
showStaleWhileOffline?: boolean;
|
|
89
|
+
onReconnect?: "refetch" | "keep" | "invalidate";
|
|
90
|
+
}
|
|
91
|
+
interface OfflineMutationOptions {
|
|
92
|
+
enableQueue?: boolean;
|
|
93
|
+
priority?: number;
|
|
94
|
+
dependsOn?: string[];
|
|
95
|
+
optimisticUpdate?: (variables: unknown) => void;
|
|
96
|
+
rollback?: (variables: unknown) => void;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export { MutationOperationType as M, type OfflineRecoveryConfig as O, type OfflineQueryInfo as a, type OfflineMutationOperation as b, type OfflineQueueConfig as c, type MutationFunctionRegistry as d, type OfflineManagerConfig as e, type OfflineState as f, type OfflineQueryOptions as g, type OfflineMutationOptions as h };
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { QueryKey } from '@tanstack/react-query';
|
|
2
|
+
import { S as StorageType } from './base-CHnwqfyz.cjs';
|
|
3
|
+
|
|
4
|
+
type Selector<TInput, TOutput> = (data: TInput | undefined) => TOutput;
|
|
5
|
+
type EntityWithId<T = string | number> = {
|
|
6
|
+
id: T;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
};
|
|
9
|
+
type PaginatedData<T> = {
|
|
10
|
+
items: T[];
|
|
11
|
+
total?: number;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
interface OptimisticUpdateConfig<TData = unknown, TVariables = unknown> {
|
|
16
|
+
queryKey: QueryKey;
|
|
17
|
+
updater: (oldData: TData | undefined, variables: TVariables) => TData | undefined;
|
|
18
|
+
rollback?: (previousData: TData, error: Error) => void;
|
|
19
|
+
enabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface OptimisticContext<TData = unknown> {
|
|
22
|
+
previousData?: TData;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
operationType: OptimisticOperationTypeValue;
|
|
25
|
+
}
|
|
26
|
+
declare const OptimisticOperationType: {
|
|
27
|
+
readonly CREATE: "create";
|
|
28
|
+
readonly UPDATE: "update";
|
|
29
|
+
readonly DELETE: "delete";
|
|
30
|
+
readonly BATCH: "batch";
|
|
31
|
+
};
|
|
32
|
+
type OptimisticOperationTypeValue = (typeof OptimisticOperationType)[keyof typeof OptimisticOperationType];
|
|
33
|
+
interface ListOperationConfig<T extends EntityWithId> {
|
|
34
|
+
queryKey: QueryKey;
|
|
35
|
+
operation: ListOperationType;
|
|
36
|
+
onRollback?: (error: Error, context: OptimisticContext<T[]>) => void;
|
|
37
|
+
}
|
|
38
|
+
declare enum ListOperationType {
|
|
39
|
+
ADD = "add",
|
|
40
|
+
UPDATE = "update",
|
|
41
|
+
REMOVE = "remove"
|
|
42
|
+
}
|
|
43
|
+
interface BatchQueryResult<TData = unknown, TError = Error> {
|
|
44
|
+
data: TData | undefined;
|
|
45
|
+
isLoading: boolean;
|
|
46
|
+
isError: boolean;
|
|
47
|
+
error: TError | null;
|
|
48
|
+
status: "pending" | "error" | "success";
|
|
49
|
+
}
|
|
50
|
+
type OptimisticUpdater<TData = unknown, TVariables = unknown> = (oldData: TData | undefined, variables: TVariables) => TData;
|
|
51
|
+
type RollbackFunction<TData = unknown> = (previousData: TData, error: Error) => void;
|
|
52
|
+
type ListUpdater<T extends EntityWithId> = {
|
|
53
|
+
add: (items: T[] | undefined, newItem: T) => T[];
|
|
54
|
+
update: (items: T[] | undefined, updatedItem: Partial<T> & {
|
|
55
|
+
id: T["id"];
|
|
56
|
+
}) => T[];
|
|
57
|
+
remove: (items: T[] | undefined, itemId: T["id"]) => T[];
|
|
58
|
+
};
|
|
59
|
+
interface OptimisticGlobalConfig {
|
|
60
|
+
enabledByDefault: boolean;
|
|
61
|
+
defaultRollbackDelay: number;
|
|
62
|
+
debugMode: boolean;
|
|
63
|
+
maxRetries: number;
|
|
64
|
+
}
|
|
65
|
+
interface BatchQueryStats {
|
|
66
|
+
total: number;
|
|
67
|
+
loading: number;
|
|
68
|
+
success: number;
|
|
69
|
+
error: number;
|
|
70
|
+
stale: number;
|
|
71
|
+
successRate: number;
|
|
72
|
+
errorRate: number;
|
|
73
|
+
}
|
|
74
|
+
interface BatchQueryConfig<TData = unknown, TError = Error> {
|
|
75
|
+
enableStats?: boolean;
|
|
76
|
+
enableBatchOperations?: boolean;
|
|
77
|
+
autoRefreshInterval?: number;
|
|
78
|
+
onBatchSuccess?: (results: TData[]) => void;
|
|
79
|
+
onBatchError?: (errors: TError[]) => void;
|
|
80
|
+
onBatchSettled?: (results: TData[], errors: TError[]) => void;
|
|
81
|
+
retryConfig?: BatchRetryConfig;
|
|
82
|
+
enablePartialSuccess?: boolean;
|
|
83
|
+
onPartialSuccess?: (report: BatchOperationReport<TData, TError>) => void;
|
|
84
|
+
}
|
|
85
|
+
interface BatchRetryConfig {
|
|
86
|
+
maxRetries?: number;
|
|
87
|
+
retryDelay?: number | ((attemptIndex: number) => number);
|
|
88
|
+
retryOnlyFailed?: boolean;
|
|
89
|
+
shouldRetry?: (error: Error, attemptCount: number) => boolean;
|
|
90
|
+
}
|
|
91
|
+
interface BatchOperationReport<TData = unknown, TError = Error> {
|
|
92
|
+
total: number;
|
|
93
|
+
successful: number;
|
|
94
|
+
failed: number;
|
|
95
|
+
successResults: Array<{
|
|
96
|
+
index: number;
|
|
97
|
+
data: TData;
|
|
98
|
+
}>;
|
|
99
|
+
failureErrors: Array<{
|
|
100
|
+
index: number;
|
|
101
|
+
error: TError;
|
|
102
|
+
queryKey?: unknown[];
|
|
103
|
+
}>;
|
|
104
|
+
isPartialSuccess: boolean;
|
|
105
|
+
isFullSuccess: boolean;
|
|
106
|
+
isFullFailure: boolean;
|
|
107
|
+
duration: number;
|
|
108
|
+
retryCount?: number;
|
|
109
|
+
}
|
|
110
|
+
interface BatchErrorAggregate<TError = Error> {
|
|
111
|
+
totalErrors: number;
|
|
112
|
+
errors: Array<{
|
|
113
|
+
index: number;
|
|
114
|
+
error: TError;
|
|
115
|
+
queryKey?: unknown[];
|
|
116
|
+
}>;
|
|
117
|
+
errorsByType: Map<string, TError[]>;
|
|
118
|
+
firstError: TError | null;
|
|
119
|
+
lastError: TError | null;
|
|
120
|
+
errorSummary: string;
|
|
121
|
+
}
|
|
122
|
+
interface BatchQueryOperations {
|
|
123
|
+
refetchAll: () => Promise<PromiseSettledResult<unknown>[]>;
|
|
124
|
+
invalidateAll: () => Promise<PromiseSettledResult<void>[]>;
|
|
125
|
+
cancelAll: () => Promise<PromiseSettledResult<void>[]>;
|
|
126
|
+
resetAll: () => Promise<PromiseSettledResult<void>[]>;
|
|
127
|
+
removeAll: () => void;
|
|
128
|
+
retryFailed: () => Promise<BatchOperationReport>;
|
|
129
|
+
getErrorAggregate: () => BatchErrorAggregate;
|
|
130
|
+
getOperationReport: () => BatchOperationReport;
|
|
131
|
+
}
|
|
132
|
+
interface EnhancedBatchQueryResult<TData = unknown, TCombinedResult = TData, TError = Error> {
|
|
133
|
+
data: TCombinedResult;
|
|
134
|
+
stats: BatchQueryStats;
|
|
135
|
+
operations: BatchQueryOperations;
|
|
136
|
+
config: BatchQueryConfig<TData, TError>;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* 数据防护策略类型
|
|
141
|
+
*/
|
|
142
|
+
type DataGuardStrategy = "version" | "timestamp" | "hash" | "none";
|
|
143
|
+
/**
|
|
144
|
+
* 带版本控制的实体基础接口
|
|
145
|
+
*/
|
|
146
|
+
interface VersionedEntity {
|
|
147
|
+
id: string | number;
|
|
148
|
+
version?: number;
|
|
149
|
+
updatedAt?: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 带版本控制的分页响应
|
|
153
|
+
*/
|
|
154
|
+
interface VersionedPaginatedResponse<T> {
|
|
155
|
+
items: T[];
|
|
156
|
+
total: number;
|
|
157
|
+
page?: number;
|
|
158
|
+
pageSize?: number;
|
|
159
|
+
version?: number;
|
|
160
|
+
updatedAt?: string;
|
|
161
|
+
_hash?: string;
|
|
162
|
+
_recentlyUpdatedIds?: Array<string | number> | Set<string | number>;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* 旧数据检测信息
|
|
166
|
+
*/
|
|
167
|
+
interface StaleDataInfo {
|
|
168
|
+
reason: string;
|
|
169
|
+
strategy: DataGuardStrategy;
|
|
170
|
+
queryKey: QueryKey;
|
|
171
|
+
cached: any;
|
|
172
|
+
rejected: any;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 数据防护应用信息
|
|
176
|
+
*/
|
|
177
|
+
interface DataGuardInfo {
|
|
178
|
+
strategy: DataGuardStrategy;
|
|
179
|
+
passed: boolean;
|
|
180
|
+
details: any;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* 数据防护配置选项
|
|
184
|
+
*/
|
|
185
|
+
interface DataGuardOptions {
|
|
186
|
+
/** 时间戳模式下,最大接受的数据年龄(毫秒),默认 10000 */
|
|
187
|
+
maxDataAge?: number;
|
|
188
|
+
/** 启用版本号检查,默认 true */
|
|
189
|
+
enableVersionCheck?: boolean;
|
|
190
|
+
/** 启用时间戳检查,默认 true */
|
|
191
|
+
enableTimestampCheck?: boolean;
|
|
192
|
+
/** 启用哈希检查(兜底),默认 true */
|
|
193
|
+
enableHashCheck?: boolean;
|
|
194
|
+
/** 检测到旧数据时的回调 */
|
|
195
|
+
onStaleDataDetected?: (info: StaleDataInfo) => void;
|
|
196
|
+
/** 应用防护时的回调 */
|
|
197
|
+
onDataGuardApplied?: (info: DataGuardInfo) => void;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* 冲突错误类
|
|
201
|
+
*/
|
|
202
|
+
declare class ConflictError extends Error {
|
|
203
|
+
details: any;
|
|
204
|
+
constructor(details: any);
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
interface StorageInfo {
|
|
208
|
+
type: StorageType;
|
|
209
|
+
used: number;
|
|
210
|
+
total: number;
|
|
211
|
+
usage: number;
|
|
212
|
+
available: boolean;
|
|
213
|
+
error?: string;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
export { type BatchQueryResult as B, ConflictError as C, type DataGuardStrategy as D, type EnhancedBatchQueryResult as E, type ListOperationConfig as L, type OptimisticUpdateConfig as O, type PaginatedData as P, type RollbackFunction as R, type StaleDataInfo as S, type VersionedEntity as V, type VersionedPaginatedResponse as a, type DataGuardInfo as b, type DataGuardOptions as c, type OptimisticContext as d, OptimisticOperationType as e, type OptimisticOperationTypeValue as f, ListOperationType as g, type OptimisticUpdater as h, type ListUpdater as i, type OptimisticGlobalConfig as j, type BatchQueryStats as k, type BatchQueryConfig as l, type BatchRetryConfig as m, type BatchOperationReport as n, type BatchErrorAggregate as o, type BatchQueryOperations as p, type StorageInfo as q, type Selector as r, type EntityWithId as s };
|