@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.
Files changed (250) hide show
  1. package/README.md +155 -95
  2. package/dist/{types/base.d.ts → base-CHnwqfyz.d.cts} +12 -14
  3. package/dist/base-CHnwqfyz.d.ts +52 -0
  4. package/dist/chunk-52ZO6Y67.cjs +1121 -0
  5. package/dist/chunk-52ZO6Y67.cjs.map +1 -0
  6. package/dist/chunk-5J6OXSLW.cjs +36 -0
  7. package/dist/chunk-5J6OXSLW.cjs.map +1 -0
  8. package/dist/chunk-6MAYHLTE.cjs +310 -0
  9. package/dist/chunk-6MAYHLTE.cjs.map +1 -0
  10. package/dist/chunk-ADS2QTMP.js +144 -0
  11. package/dist/chunk-ADS2QTMP.js.map +1 -0
  12. package/dist/chunk-APXNNHBD.cjs +374 -0
  13. package/dist/chunk-APXNNHBD.cjs.map +1 -0
  14. package/dist/chunk-AXMWOGNX.js +134 -0
  15. package/dist/chunk-AXMWOGNX.js.map +1 -0
  16. package/dist/chunk-B4KO3K3E.cjs +521 -0
  17. package/dist/chunk-B4KO3K3E.cjs.map +1 -0
  18. package/dist/chunk-BK3OTIBD.cjs +15 -0
  19. package/dist/chunk-BK3OTIBD.cjs.map +1 -0
  20. package/dist/chunk-BYAOQALW.js +13 -0
  21. package/dist/chunk-BYAOQALW.js.map +1 -0
  22. package/dist/chunk-CRTVS7VI.cjs +162 -0
  23. package/dist/chunk-CRTVS7VI.cjs.map +1 -0
  24. package/dist/chunk-EXITP7QO.js +288 -0
  25. package/dist/chunk-EXITP7QO.js.map +1 -0
  26. package/dist/chunk-GMO3PRZZ.js +565 -0
  27. package/dist/chunk-GMO3PRZZ.js.map +1 -0
  28. package/dist/chunk-HRO2DWKZ.js +12 -0
  29. package/dist/chunk-HRO2DWKZ.js.map +1 -0
  30. package/dist/chunk-JHDKUQSB.js +1069 -0
  31. package/dist/chunk-JHDKUQSB.js.map +1 -0
  32. package/dist/chunk-JN2Y6RSY.js +23 -0
  33. package/dist/chunk-JN2Y6RSY.js.map +1 -0
  34. package/dist/chunk-JRJSKRZW.cjs +29 -0
  35. package/dist/chunk-JRJSKRZW.cjs.map +1 -0
  36. package/dist/chunk-KC62H4VJ.js +123 -0
  37. package/dist/chunk-KC62H4VJ.js.map +1 -0
  38. package/dist/chunk-LHEHSLD5.js +31 -0
  39. package/dist/chunk-LHEHSLD5.js.map +1 -0
  40. package/dist/chunk-N4264P7N.cjs +156 -0
  41. package/dist/chunk-N4264P7N.cjs.map +1 -0
  42. package/dist/chunk-NF5QYPYC.cjs +133 -0
  43. package/dist/chunk-NF5QYPYC.cjs.map +1 -0
  44. package/dist/chunk-OFLCHKKE.cjs +28 -0
  45. package/dist/chunk-OFLCHKKE.cjs.map +1 -0
  46. package/dist/chunk-PCNSWVA5.cjs +602 -0
  47. package/dist/chunk-PCNSWVA5.cjs.map +1 -0
  48. package/dist/chunk-STOMAA2X.js +85 -0
  49. package/dist/chunk-STOMAA2X.js.map +1 -0
  50. package/dist/chunk-UVF5S6LX.cjs +15 -0
  51. package/dist/chunk-UVF5S6LX.cjs.map +1 -0
  52. package/dist/chunk-WEIXCDCA.cjs +90 -0
  53. package/dist/chunk-WEIXCDCA.cjs.map +1 -0
  54. package/dist/chunk-X3ZTSLBQ.js +355 -0
  55. package/dist/chunk-X3ZTSLBQ.js.map +1 -0
  56. package/dist/chunk-YEV73J4J.js +504 -0
  57. package/dist/chunk-YEV73J4J.js.map +1 -0
  58. package/dist/chunk-YW5PNTRU.cjs +14 -0
  59. package/dist/chunk-YW5PNTRU.cjs.map +1 -0
  60. package/dist/chunk-ZNXSWUIS.js +12 -0
  61. package/dist/chunk-ZNXSWUIS.js.map +1 -0
  62. package/dist/chunk-ZUEMBY4W.js +21 -0
  63. package/dist/chunk-ZUEMBY4W.js.map +1 -0
  64. package/dist/components/index.cjs +60 -0
  65. package/dist/components/index.cjs.map +1 -0
  66. package/dist/components/index.d.cts +43 -0
  67. package/dist/components/index.d.ts +43 -4
  68. package/dist/components/index.js +3 -4
  69. package/dist/components/index.js.map +1 -0
  70. package/dist/core/devtools.cjs +25 -0
  71. package/dist/core/devtools.cjs.map +1 -0
  72. package/dist/core/devtools.d.cts +17 -0
  73. package/dist/core/devtools.d.ts +9 -7
  74. package/dist/core/devtools.js +4 -16
  75. package/dist/core/devtools.js.map +1 -0
  76. package/dist/core/index.cjs +220 -0
  77. package/dist/core/index.cjs.map +1 -0
  78. package/dist/core/index.d.cts +196 -0
  79. package/dist/core/index.d.ts +196 -9
  80. package/dist/core/index.js +7 -8
  81. package/dist/core/index.js.map +1 -0
  82. package/dist/features/index.cjs +76 -0
  83. package/dist/features/index.cjs.map +1 -0
  84. package/dist/features/index.d.cts +86 -0
  85. package/dist/features/index.d.ts +86 -4
  86. package/dist/features/index.js +7 -3
  87. package/dist/features/index.js.map +1 -0
  88. package/dist/hooks/index.cjs +209 -0
  89. package/dist/hooks/index.cjs.map +1 -0
  90. package/dist/hooks/index.d.cts +377 -0
  91. package/dist/hooks/index.d.ts +377 -10
  92. package/dist/hooks/index.js +8 -9
  93. package/dist/hooks/index.js.map +1 -0
  94. package/dist/hooks/useInViewPrefetch.cjs +33 -0
  95. package/dist/hooks/useInViewPrefetch.cjs.map +1 -0
  96. package/dist/hooks/useInViewPrefetch.d.cts +12 -0
  97. package/dist/hooks/useInViewPrefetch.d.ts +6 -4
  98. package/dist/hooks/useInViewPrefetch.js +30 -20
  99. package/dist/hooks/useInViewPrefetch.js.map +1 -0
  100. package/dist/index.cjs +811 -0
  101. package/dist/index.cjs.map +1 -0
  102. package/dist/index.d.cts +36 -0
  103. package/dist/index.d.ts +36 -8
  104. package/dist/index.js +89 -7
  105. package/dist/index.js.map +1 -0
  106. package/dist/{types/offline.d.ts → offline-DVPtgoAS.d.ts} +15 -13
  107. package/dist/offline-xxeA_-6V.d.cts +99 -0
  108. package/dist/persistence-MRtkmhqq.d.cts +216 -0
  109. package/dist/persistence-tIrEb0pR.d.ts +216 -0
  110. package/dist/react-query/index.cjs +52 -0
  111. package/dist/react-query/index.cjs.map +1 -0
  112. package/dist/react-query/index.d.cts +1 -0
  113. package/dist/react-query/index.d.ts +1 -3
  114. package/dist/react-query/index.js +3 -1
  115. package/dist/react-query/index.js.map +1 -0
  116. package/dist/types/index.cjs +43 -0
  117. package/dist/types/index.cjs.map +1 -0
  118. package/dist/types/index.d.cts +157 -0
  119. package/dist/types/index.d.ts +116 -12
  120. package/dist/types/index.js +6 -8
  121. package/dist/types/index.js.map +1 -0
  122. package/dist/utils/index.cjs +234 -0
  123. package/dist/utils/index.cjs.map +1 -0
  124. package/dist/utils/index.d.cts +272 -0
  125. package/dist/utils/index.d.ts +272 -10
  126. package/dist/utils/index.js +9 -9
  127. package/dist/utils/index.js.map +1 -0
  128. package/package.json +13 -3
  129. package/dist/PersistQueryClientProvider.d.ts +0 -22
  130. package/dist/PersistQueryClientProvider.d.ts.map +0 -1
  131. package/dist/PersistQueryClientProvider.js +0 -47
  132. package/dist/components/LoadingFallback.d.ts +0 -16
  133. package/dist/components/LoadingFallback.d.ts.map +0 -1
  134. package/dist/components/LoadingFallback.js +0 -27
  135. package/dist/components/QueryErrorBoundary.d.ts +0 -12
  136. package/dist/components/QueryErrorBoundary.d.ts.map +0 -1
  137. package/dist/components/QueryErrorBoundary.js +0 -9
  138. package/dist/components/SuspenseWrapper.d.ts +0 -14
  139. package/dist/components/SuspenseWrapper.d.ts.map +0 -1
  140. package/dist/components/SuspenseWrapper.js +0 -9
  141. package/dist/components/index.d.ts.map +0 -1
  142. package/dist/components/internal/ErrorBoundary.d.ts +0 -27
  143. package/dist/components/internal/ErrorBoundary.d.ts.map +0 -1
  144. package/dist/components/internal/ErrorBoundary.js +0 -37
  145. package/dist/core/config.d.ts +0 -80
  146. package/dist/core/config.d.ts.map +0 -1
  147. package/dist/core/config.js +0 -321
  148. package/dist/core/devtools.d.ts.map +0 -1
  149. package/dist/core/env.d.ts +0 -4
  150. package/dist/core/env.d.ts.map +0 -1
  151. package/dist/core/env.js +0 -26
  152. package/dist/core/focusManager.d.ts +0 -33
  153. package/dist/core/focusManager.d.ts.map +0 -1
  154. package/dist/core/focusManager.js +0 -122
  155. package/dist/core/index.d.ts.map +0 -1
  156. package/dist/core/keys.d.ts +0 -59
  157. package/dist/core/keys.d.ts.map +0 -1
  158. package/dist/core/keys.js +0 -107
  159. package/dist/core/queryOptions.d.ts +0 -19
  160. package/dist/core/queryOptions.d.ts.map +0 -1
  161. package/dist/core/queryOptions.js +0 -44
  162. package/dist/features/index.d.ts.map +0 -1
  163. package/dist/features/offline.d.ts +0 -48
  164. package/dist/features/offline.d.ts.map +0 -1
  165. package/dist/features/offline.js +0 -269
  166. package/dist/features/persistence.d.ts +0 -36
  167. package/dist/features/persistence.d.ts.map +0 -1
  168. package/dist/features/persistence.js +0 -186
  169. package/dist/hooks/batchQueries.d.ts +0 -129
  170. package/dist/hooks/batchQueries.d.ts.map +0 -1
  171. package/dist/hooks/batchQueries.js +0 -301
  172. package/dist/hooks/index.d.ts.map +0 -1
  173. package/dist/hooks/useDataGuardMutation.d.ts +0 -39
  174. package/dist/hooks/useDataGuardMutation.d.ts.map +0 -1
  175. package/dist/hooks/useDataGuardMutation.js +0 -151
  176. package/dist/hooks/useDataGuardQuery.d.ts +0 -28
  177. package/dist/hooks/useDataGuardQuery.d.ts.map +0 -1
  178. package/dist/hooks/useDataGuardQuery.js +0 -71
  179. package/dist/hooks/useFocusManager.d.ts +0 -41
  180. package/dist/hooks/useFocusManager.d.ts.map +0 -1
  181. package/dist/hooks/useFocusManager.js +0 -109
  182. package/dist/hooks/useInViewPrefetch.d.ts.map +0 -1
  183. package/dist/hooks/useInfiniteQuery.d.ts +0 -33
  184. package/dist/hooks/useInfiniteQuery.d.ts.map +0 -1
  185. package/dist/hooks/useInfiniteQuery.js +0 -61
  186. package/dist/hooks/useMutation.d.ts +0 -25
  187. package/dist/hooks/useMutation.d.ts.map +0 -1
  188. package/dist/hooks/useMutation.js +0 -180
  189. package/dist/hooks/usePrefetch.d.ts +0 -54
  190. package/dist/hooks/usePrefetch.d.ts.map +0 -1
  191. package/dist/hooks/usePrefetch.js +0 -229
  192. package/dist/hooks/useQuery.d.ts +0 -21
  193. package/dist/hooks/useQuery.d.ts.map +0 -1
  194. package/dist/hooks/useQuery.js +0 -46
  195. package/dist/hooks/useSuspenseQuery.d.ts +0 -11
  196. package/dist/hooks/useSuspenseQuery.d.ts.map +0 -1
  197. package/dist/hooks/useSuspenseQuery.js +0 -19
  198. package/dist/index.d.ts.map +0 -1
  199. package/dist/react-query/index.d.ts.map +0 -1
  200. package/dist/types/base.d.ts.map +0 -1
  201. package/dist/types/base.js +0 -26
  202. package/dist/types/dataGuard.d.ts +0 -69
  203. package/dist/types/dataGuard.d.ts.map +0 -1
  204. package/dist/types/dataGuard.js +0 -10
  205. package/dist/types/index.d.ts.map +0 -1
  206. package/dist/types/infinite.d.ts +0 -39
  207. package/dist/types/infinite.d.ts.map +0 -1
  208. package/dist/types/infinite.js +0 -1
  209. package/dist/types/offline.d.ts.map +0 -1
  210. package/dist/types/offline.js +0 -8
  211. package/dist/types/optimistic.d.ts +0 -126
  212. package/dist/types/optimistic.d.ts.map +0 -1
  213. package/dist/types/optimistic.js +0 -7
  214. package/dist/types/persistence.d.ts +0 -9
  215. package/dist/types/persistence.d.ts.map +0 -1
  216. package/dist/types/persistence.js +0 -1
  217. package/dist/types/selectors.d.ts +0 -11
  218. package/dist/types/selectors.d.ts.map +0 -1
  219. package/dist/types/selectors.js +0 -1
  220. package/dist/types/suspense.d.ts +0 -67
  221. package/dist/types/suspense.d.ts.map +0 -1
  222. package/dist/types/suspense.js +0 -1
  223. package/dist/utils/dataGuard.d.ts +0 -37
  224. package/dist/utils/dataGuard.d.ts.map +0 -1
  225. package/dist/utils/dataGuard.js +0 -257
  226. package/dist/utils/fieldMapper.d.ts +0 -9
  227. package/dist/utils/fieldMapper.d.ts.map +0 -1
  228. package/dist/utils/fieldMapper.js +0 -27
  229. package/dist/utils/index.d.ts.map +0 -1
  230. package/dist/utils/network.d.ts +0 -9
  231. package/dist/utils/network.d.ts.map +0 -1
  232. package/dist/utils/network.js +0 -43
  233. package/dist/utils/optimisticUtils.d.ts +0 -45
  234. package/dist/utils/optimisticUtils.d.ts.map +0 -1
  235. package/dist/utils/optimisticUtils.js +0 -116
  236. package/dist/utils/placeholderData.d.ts +0 -3
  237. package/dist/utils/placeholderData.d.ts.map +0 -1
  238. package/dist/utils/placeholderData.js +0 -28
  239. package/dist/utils/prefetchManager.d.ts +0 -111
  240. package/dist/utils/prefetchManager.d.ts.map +0 -1
  241. package/dist/utils/prefetchManager.js +0 -246
  242. package/dist/utils/queryKey.d.ts +0 -24
  243. package/dist/utils/queryKey.d.ts.map +0 -1
  244. package/dist/utils/queryKey.js +0 -77
  245. package/dist/utils/selectors.d.ts +0 -30
  246. package/dist/utils/selectors.d.ts.map +0 -1
  247. package/dist/utils/selectors.js +0 -18
  248. package/dist/utils/storage.d.ts +0 -7
  249. package/dist/utils/storage.d.ts.map +0 -1
  250. package/dist/utils/storage.js +0 -84
@@ -1,37 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Component } from "react";
3
- export class ErrorBoundary extends Component {
4
- constructor(props) {
5
- super(props);
6
- this.resetErrorBoundary = () => {
7
- this.props.onReset?.();
8
- this.setState({ hasError: false, error: undefined });
9
- };
10
- this.state = { hasError: false };
11
- }
12
- static getDerivedStateFromError(error) {
13
- return { hasError: true, error };
14
- }
15
- componentDidCatch(error, errorInfo) {
16
- this.props.onError?.(error, errorInfo);
17
- }
18
- componentDidUpdate(prevProps) {
19
- if (this.state.hasError && this.props.resetKeys && prevProps.resetKeys) {
20
- const hasResetKeyChanged = this.props.resetKeys.length !== prevProps.resetKeys.length ||
21
- this.props.resetKeys.some((key, index) => key !== prevProps.resetKeys?.[index]);
22
- if (hasResetKeyChanged) {
23
- this.resetErrorBoundary();
24
- }
25
- }
26
- }
27
- render() {
28
- const { hasError, error } = this.state;
29
- const { children, fallback } = this.props;
30
- if (hasError && error) {
31
- if (fallback)
32
- return fallback(error, this.resetErrorBoundary);
33
- return (_jsx("div", { className: "flex items-center justify-center p-6", children: _jsxs("div", { className: "text-center max-w-md", children: [_jsx("h3", { className: "text-lg font-semibold text-foreground mb-2", children: "\u53D1\u751F\u9519\u8BEF" }), _jsx("p", { className: "text-sm text-muted-foreground mb-4", children: error.message || "请稍后重试" }), _jsx("button", { onClick: this.resetErrorBoundary, className: "px-4 py-2 bg-primary text-primary-foreground rounded-md", children: "\u91CD\u8BD5" })] }) }));
34
- }
35
- return children;
36
- }
37
- }
@@ -1,80 +0,0 @@
1
- import type { DefaultOptions } from "@tanstack/react-query";
2
- export declare const TIME_CONSTANTS: {
3
- readonly THIRTY_SECONDS: number;
4
- readonly ONE_MINUTE: number;
5
- readonly FIVE_MINUTES: number;
6
- readonly TEN_MINUTES: number;
7
- readonly FIFTEEN_MINUTES: number;
8
- readonly THIRTY_MINUTES: number;
9
- readonly ONE_HOUR: number;
10
- readonly ONE_DAY: number;
11
- };
12
- export declare const DEFAULT_STALE_TIME: number;
13
- export declare const DEFAULT_GC_TIME: number;
14
- /**
15
- * 默认 Query 重试策略
16
- * - 4XX 客户端错误:不重试(客户端问题,重试无意义)
17
- * - 5XX 服务端错误:最多重试 1 次(避免过度重试)
18
- * - 其他错误(网络等):最多重试 2 次
19
- */
20
- export declare function defaultQueryRetryStrategy(failureCount: number, error: unknown): boolean;
21
- /**
22
- * 默认 Mutation 重试策略
23
- * - 4XX 客户端错误:不重试
24
- * - 5XX 服务端错误:不重试(Mutation 更谨慎,避免重复操作)
25
- * - 其他错误:最多重试 1 次
26
- */
27
- export declare function defaultMutationRetryStrategy(failureCount: number, error: unknown): boolean;
28
- export declare function exponentialBackoff(attemptIndex: number): number;
29
- export declare const DEFAULT_QUERY_CONFIG: DefaultOptions["queries"];
30
- export declare const DEFAULT_MUTATION_CONFIG: DefaultOptions["mutations"];
31
- export declare const GLOBAL_QUERY_CONFIG: DefaultOptions;
32
- export declare const SMART_RETRY_MUTATION_CONFIG: DefaultOptions["mutations"];
33
- export declare const DEVELOPMENT_CONFIG: DefaultOptions;
34
- export declare const PRODUCTION_CONFIG: DefaultOptions;
35
- export declare const LONG_CACHE_CONFIG: DefaultOptions;
36
- export declare const REALTIME_CONFIG: DefaultOptions;
37
- export declare function getConfigByEnvironment(env: "development" | "production" | "test"): DefaultOptions;
38
- export declare function createCustomConfig(overrides: Partial<DefaultOptions>): DefaultOptions;
39
- export declare function validateGcTime(staleTime: number, gcTime: number): {
40
- isValid: boolean;
41
- warning?: string;
42
- };
43
- export declare function validateConfig(config: DefaultOptions): {
44
- isValid: boolean;
45
- warnings: string[];
46
- };
47
- export declare function ensureBestPractices(config: DefaultOptions): DefaultOptions;
48
- /**
49
- * 创建安全的重试策略
50
- * @param maxRetries4xx - 4XX 错误最大重试次数(默认 0,不重试)
51
- * @param maxRetries5xx - 5XX 错误最大重试次数(默认 0,不重试)
52
- * @param maxRetriesOther - 其他错误最大重试次数(默认 1)
53
- */
54
- export declare function createSafeRetryStrategy(maxRetries4xx?: number, maxRetries5xx?: number, maxRetriesOther?: number): (failureCount: number, error: unknown) => boolean;
55
- /**
56
- * 创建错误安全配置
57
- * 适用于需要严格控制重试和 refetch 行为的场景
58
- *
59
- * @example
60
- * ```typescript
61
- * // 完全禁用重试
62
- * const config = createErrorSafeConfig({
63
- * maxRetries4xx: 0,
64
- * maxRetries5xx: 0,
65
- * maxRetriesOther: 0,
66
- * disableFocus: true,
67
- * disableReconnect: true
68
- * });
69
- * ```
70
- */
71
- export declare function createErrorSafeConfig(options?: {
72
- maxRetries4xx?: number;
73
- maxRetries5xx?: number;
74
- maxRetriesOther?: number;
75
- disableFocus?: boolean;
76
- disableReconnect?: boolean;
77
- conditionalRefetchInterval?: number | ((data: unknown, query: any) => number | false);
78
- overrides?: Partial<DefaultOptions>;
79
- }): DefaultOptions;
80
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,eAAO,MAAM,cAAc;;;;;;;;;CASjB,CAAC;AAEX,eAAO,MAAM,kBAAkB,QAAgC,CAAC;AAChE,eAAO,MAAM,eAAe,QAA6B,CAAC;AAkC1D;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAevF;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAe1F;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,eAAO,MAAM,oBAAoB,EAAE,cAAc,CAAC,SAAS,CAQ1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,cAAc,CAAC,WAAW,CAI/D,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,cAGjC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,cAAc,CAAC,WAAW,CAInE,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAYhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAY/B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,cAa/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAW7B,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,cAAc,CAwBjG;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAWrF;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAQxG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA2B/F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAkC1E;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,GAAE,MAAU,EACzB,aAAa,GAAE,MAAU,EACzB,eAAe,GAAE,MAAU,IAEnB,cAAc,MAAM,EAAE,OAAO,OAAO,KAAG,OAAO,CAgBvD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0BAA0B,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,GAAG,KAAK,CAAC,CAAC;IACtF,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;CAChC,GAAG,cAAc,CAsCtB"}
@@ -1,321 +0,0 @@
1
- import { isProd } from "./env.js";
2
- export const TIME_CONSTANTS = {
3
- THIRTY_SECONDS: 30 * 1000,
4
- ONE_MINUTE: 60 * 1000,
5
- FIVE_MINUTES: 5 * 60 * 1000,
6
- TEN_MINUTES: 10 * 60 * 1000,
7
- FIFTEEN_MINUTES: 15 * 60 * 1000,
8
- THIRTY_MINUTES: 30 * 60 * 1000,
9
- ONE_HOUR: 60 * 60 * 1000,
10
- ONE_DAY: 24 * 60 * 60 * 1000
11
- };
12
- export const DEFAULT_STALE_TIME = TIME_CONSTANTS.THIRTY_SECONDS;
13
- export const DEFAULT_GC_TIME = TIME_CONSTANTS.TEN_MINUTES;
14
- /**
15
- * 从错误对象中提取 HTTP 状态码
16
- * 兼容多种错误对象结构:axios、fetch、自定义等
17
- */
18
- function extractHttpStatus(error) {
19
- if (!error || typeof error !== "object")
20
- return undefined;
21
- const err = error;
22
- // 直接在错误对象上的 status
23
- if (typeof err.status === "number")
24
- return err.status;
25
- if (typeof err.statusCode === "number")
26
- return err.statusCode;
27
- // 在 response 对象中的 status (axios 等)
28
- if (err.response) {
29
- if (typeof err.response.status === "number")
30
- return err.response.status;
31
- if (typeof err.response.statusCode === "number")
32
- return err.response.statusCode;
33
- }
34
- return undefined;
35
- }
36
- /**
37
- * 默认 Query 重试策略
38
- * - 4XX 客户端错误:不重试(客户端问题,重试无意义)
39
- * - 5XX 服务端错误:最多重试 1 次(避免过度重试)
40
- * - 其他错误(网络等):最多重试 2 次
41
- */
42
- export function defaultQueryRetryStrategy(failureCount, error) {
43
- const status = extractHttpStatus(error);
44
- // 4XX 客户端错误:不重试
45
- if (status && status >= 400 && status < 500) {
46
- return false;
47
- }
48
- // 5XX 服务端错误:最多重试 1 次
49
- if (status && status >= 500 && status < 600) {
50
- return failureCount < 1;
51
- }
52
- // 其他错误(网络错误等):最多重试 2 次
53
- return failureCount < 2;
54
- }
55
- /**
56
- * 默认 Mutation 重试策略
57
- * - 4XX 客户端错误:不重试
58
- * - 5XX 服务端错误:不重试(Mutation 更谨慎,避免重复操作)
59
- * - 其他错误:最多重试 1 次
60
- */
61
- export function defaultMutationRetryStrategy(failureCount, error) {
62
- const status = extractHttpStatus(error);
63
- // 4XX 客户端错误:不重试
64
- if (status && status >= 400 && status < 500) {
65
- return false;
66
- }
67
- // 5XX 服务端错误:不重试(Mutation 避免重复操作)
68
- if (status && status >= 500 && status < 600) {
69
- return false;
70
- }
71
- // 其他错误(网络错误等):最多重试 1 次
72
- return failureCount < 1;
73
- }
74
- export function exponentialBackoff(attemptIndex) {
75
- return Math.min(1000 * 2 ** attemptIndex, 30000);
76
- }
77
- export const DEFAULT_QUERY_CONFIG = {
78
- staleTime: DEFAULT_STALE_TIME,
79
- gcTime: DEFAULT_GC_TIME,
80
- retry: defaultQueryRetryStrategy,
81
- retryDelay: exponentialBackoff,
82
- refetchOnWindowFocus: true,
83
- refetchOnReconnect: true,
84
- refetchOnMount: true
85
- };
86
- export const DEFAULT_MUTATION_CONFIG = {
87
- retry: 0,
88
- retryDelay: exponentialBackoff,
89
- gcTime: DEFAULT_GC_TIME
90
- };
91
- export const GLOBAL_QUERY_CONFIG = {
92
- queries: DEFAULT_QUERY_CONFIG,
93
- mutations: DEFAULT_MUTATION_CONFIG
94
- };
95
- export const SMART_RETRY_MUTATION_CONFIG = {
96
- retry: defaultMutationRetryStrategy,
97
- retryDelay: exponentialBackoff,
98
- gcTime: DEFAULT_GC_TIME
99
- };
100
- export const DEVELOPMENT_CONFIG = {
101
- queries: {
102
- ...DEFAULT_QUERY_CONFIG,
103
- staleTime: 0,
104
- gcTime: TIME_CONSTANTS.TEN_MINUTES,
105
- retry: defaultQueryRetryStrategy,
106
- refetchOnWindowFocus: true
107
- },
108
- mutations: {
109
- ...DEFAULT_MUTATION_CONFIG,
110
- retry: 0
111
- }
112
- };
113
- export const PRODUCTION_CONFIG = {
114
- queries: {
115
- ...DEFAULT_QUERY_CONFIG,
116
- staleTime: TIME_CONSTANTS.TEN_MINUTES,
117
- gcTime: TIME_CONSTANTS.THIRTY_MINUTES,
118
- retry: defaultQueryRetryStrategy,
119
- refetchOnWindowFocus: true
120
- },
121
- mutations: {
122
- ...DEFAULT_MUTATION_CONFIG,
123
- retry: 0
124
- }
125
- };
126
- export const LONG_CACHE_CONFIG = {
127
- queries: {
128
- ...DEFAULT_QUERY_CONFIG,
129
- staleTime: TIME_CONSTANTS.FIFTEEN_MINUTES,
130
- gcTime: TIME_CONSTANTS.ONE_HOUR,
131
- retry: defaultQueryRetryStrategy,
132
- refetchOnWindowFocus: true,
133
- refetchOnReconnect: true
134
- },
135
- mutations: {
136
- ...DEFAULT_MUTATION_CONFIG,
137
- retry: 0
138
- }
139
- };
140
- export const REALTIME_CONFIG = {
141
- queries: {
142
- ...DEFAULT_QUERY_CONFIG,
143
- staleTime: 0,
144
- gcTime: TIME_CONSTANTS.ONE_MINUTE * 2,
145
- retry: defaultQueryRetryStrategy,
146
- refetchOnWindowFocus: true,
147
- refetchOnReconnect: true,
148
- refetchInterval: TIME_CONSTANTS.THIRTY_SECONDS
149
- },
150
- mutations: DEFAULT_MUTATION_CONFIG
151
- };
152
- export function getConfigByEnvironment(env) {
153
- switch (env) {
154
- case "development":
155
- return DEVELOPMENT_CONFIG;
156
- case "production":
157
- return PRODUCTION_CONFIG;
158
- case "test":
159
- return {
160
- queries: {
161
- ...DEFAULT_QUERY_CONFIG,
162
- retry: 0,
163
- staleTime: 0,
164
- refetchOnWindowFocus: false,
165
- refetchOnReconnect: false,
166
- refetchOnMount: true
167
- },
168
- mutations: {
169
- ...DEFAULT_MUTATION_CONFIG,
170
- retry: 0
171
- }
172
- };
173
- default:
174
- return GLOBAL_QUERY_CONFIG;
175
- }
176
- }
177
- export function createCustomConfig(overrides) {
178
- return {
179
- queries: {
180
- ...DEFAULT_QUERY_CONFIG,
181
- ...overrides.queries
182
- },
183
- mutations: {
184
- ...DEFAULT_MUTATION_CONFIG,
185
- ...overrides.mutations
186
- }
187
- };
188
- }
189
- export function validateGcTime(staleTime, gcTime) {
190
- if (gcTime <= staleTime) {
191
- return {
192
- isValid: false,
193
- warning: `gcTime (${gcTime}ms) 必须大于 staleTime (${staleTime}ms)。当前 gcTime 过小,可能导致缓存数据过早被清理。`
194
- };
195
- }
196
- return { isValid: true };
197
- }
198
- export function validateConfig(config) {
199
- const warnings = [];
200
- let isValid = true;
201
- if (config.queries) {
202
- const staleTime = typeof config.queries.staleTime === "number" ? config.queries.staleTime : DEFAULT_STALE_TIME;
203
- const gcTime = typeof config.queries.gcTime === "number" ? config.queries.gcTime : DEFAULT_GC_TIME;
204
- const gcTimeValidation = validateGcTime(staleTime, gcTime);
205
- if (!gcTimeValidation.isValid && gcTimeValidation.warning) {
206
- warnings.push(gcTimeValidation.warning);
207
- isValid = false;
208
- }
209
- else if (gcTimeValidation.warning) {
210
- warnings.push(gcTimeValidation.warning);
211
- }
212
- if ("cacheTime" in config.queries) {
213
- warnings.push("检测到已废弃的 'cacheTime' 属性。在 React Query v5 中,请使用 'gcTime' 代替。");
214
- isValid = false;
215
- }
216
- if (config.queries.refetchOnWindowFocus === false) {
217
- warnings.push("建议启用 'refetchOnWindowFocus' 以提供更好的用户体验。当用户切换回应用时,数据会自动刷新。");
218
- }
219
- if (typeof config.queries.retryDelay === "number") {
220
- warnings.push("建议使用指数退避策略作为重试延迟,而不是固定延迟。例如:(attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000)");
221
- }
222
- }
223
- return { isValid, warnings };
224
- }
225
- export function ensureBestPractices(config) {
226
- const result = { ...config };
227
- if (result.queries) {
228
- const queries = { ...result.queries };
229
- if ("cacheTime" in queries) {
230
- const cacheTime = queries.cacheTime;
231
- if (typeof cacheTime === "number" && typeof queries.gcTime !== "number") {
232
- queries.gcTime = cacheTime;
233
- }
234
- delete queries.cacheTime;
235
- if (!isProd) {
236
- console.warn("[TanStack Query Config] 已移除废弃的 'cacheTime' 属性,改用 'gcTime'.");
237
- }
238
- }
239
- const staleTime = typeof queries.staleTime === "number" ? queries.staleTime : DEFAULT_STALE_TIME;
240
- const gcTime = typeof queries.gcTime === "number" ? queries.gcTime : DEFAULT_GC_TIME;
241
- const validation = validateGcTime(staleTime, gcTime);
242
- if (!validation.isValid) {
243
- queries.gcTime = staleTime + TIME_CONSTANTS.ONE_MINUTE;
244
- if (!isProd) {
245
- console.warn(`[TanStack Query Config] 自动调整 gcTime 从 ${gcTime}ms 到 ${queries.gcTime}ms,以确保大于 staleTime (${staleTime}ms)。`);
246
- }
247
- }
248
- if (typeof queries.retryDelay === "number" || !queries.retryDelay) {
249
- queries.retryDelay = exponentialBackoff;
250
- }
251
- if (queries.refetchOnWindowFocus === undefined) {
252
- queries.refetchOnWindowFocus = true;
253
- }
254
- result.queries = queries;
255
- }
256
- return result;
257
- }
258
- /**
259
- * 创建安全的重试策略
260
- * @param maxRetries4xx - 4XX 错误最大重试次数(默认 0,不重试)
261
- * @param maxRetries5xx - 5XX 错误最大重试次数(默认 0,不重试)
262
- * @param maxRetriesOther - 其他错误最大重试次数(默认 1)
263
- */
264
- export function createSafeRetryStrategy(maxRetries4xx = 0, maxRetries5xx = 0, maxRetriesOther = 1) {
265
- return (failureCount, error) => {
266
- const status = extractHttpStatus(error);
267
- // 4XX 客户端错误
268
- if (status && status >= 400 && status < 500) {
269
- return failureCount < maxRetries4xx;
270
- }
271
- // 5XX 服务端错误
272
- if (status && status >= 500 && status < 600) {
273
- return failureCount < maxRetries5xx;
274
- }
275
- // 其他错误(网络等)
276
- return failureCount < maxRetriesOther;
277
- };
278
- }
279
- /**
280
- * 创建错误安全配置
281
- * 适用于需要严格控制重试和 refetch 行为的场景
282
- *
283
- * @example
284
- * ```typescript
285
- * // 完全禁用重试
286
- * const config = createErrorSafeConfig({
287
- * maxRetries4xx: 0,
288
- * maxRetries5xx: 0,
289
- * maxRetriesOther: 0,
290
- * disableFocus: true,
291
- * disableReconnect: true
292
- * });
293
- * ```
294
- */
295
- export function createErrorSafeConfig(options = {}) {
296
- const { maxRetries4xx = 0, maxRetries5xx = 0, maxRetriesOther = 1, disableFocus = false, disableReconnect = false, conditionalRefetchInterval, overrides } = options;
297
- const queries = {
298
- ...DEFAULT_QUERY_CONFIG,
299
- retry: createSafeRetryStrategy(maxRetries4xx, maxRetries5xx, maxRetriesOther),
300
- retryDelay: exponentialBackoff,
301
- refetchOnWindowFocus: disableFocus ? false : true,
302
- refetchOnReconnect: disableReconnect ? false : true
303
- };
304
- if (conditionalRefetchInterval !== undefined) {
305
- if (typeof conditionalRefetchInterval === "number") {
306
- queries.refetchInterval = (_data, query) => (query?.state?.error ? false : conditionalRefetchInterval);
307
- }
308
- else {
309
- queries.refetchInterval = conditionalRefetchInterval;
310
- }
311
- }
312
- const mutations = {
313
- ...DEFAULT_MUTATION_CONFIG,
314
- retry: createSafeRetryStrategy(maxRetries4xx, maxRetries5xx, maxRetriesOther)
315
- };
316
- const result = {
317
- queries: { ...queries, ...(overrides?.queries || {}) },
318
- mutations: { ...mutations, ...(overrides?.mutations || {}) }
319
- };
320
- return result;
321
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"devtools.d.ts","sourceRoot":"","sources":["../../src/core/devtools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,MAAM,WAAW,cAAc;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,cAAc,CAAC;IAC3E,UAAU,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;CAC9C;AAED,eAAO,MAAM,qBAAqB,EAAE,cAInC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAKxF;AAED,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -1,4 +0,0 @@
1
- export declare const isProd: boolean;
2
- export declare const isDev: boolean;
3
- export declare const isTest: boolean;
4
- //# sourceMappingURL=env.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/core/env.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,MAAM,SAA2B,CAAC;AAC/C,eAAO,MAAM,KAAK,SAA+D,CAAC;AAClF,eAAO,MAAM,MAAM,SAAqB,CAAC"}
package/dist/core/env.js DELETED
@@ -1,26 +0,0 @@
1
- function getEnvironment() {
2
- // Node.js / Webpack / CRA
3
- if (typeof process !== "undefined" && process?.env?.NODE_ENV) {
4
- return process.env.NODE_ENV;
5
- }
6
- // Vite / modern bundlers
7
- try {
8
- // @ts-expect-error import.meta.env may not exist in all environments
9
- if (typeof import.meta !== "undefined" && import.meta.env) {
10
- // @ts-expect-error accessing Vite-specific env
11
- const env = import.meta.env;
12
- if (env.MODE)
13
- return env.MODE;
14
- if (typeof env.PROD === "boolean")
15
- return env.PROD ? "production" : "development";
16
- }
17
- }
18
- catch {
19
- // import.meta not supported
20
- }
21
- return undefined;
22
- }
23
- const nodeEnv = getEnvironment();
24
- export const isProd = nodeEnv === "production";
25
- export const isDev = nodeEnv === "development" || (!isProd && nodeEnv !== "test");
26
- export const isTest = nodeEnv === "test";
@@ -1,33 +0,0 @@
1
- import type { QueryKey } from "@tanstack/react-query";
2
- import { focusManager } from "@tanstack/react-query";
3
- export { focusManager };
4
- export interface FocusManagerConfig {
5
- enabled?: boolean;
6
- customEventListener?: (handleFocus: () => void) => () => void;
7
- refetchOnWindowFocus?: boolean;
8
- }
9
- export declare function setupFocusManager(config?: FocusManagerConfig): void;
10
- export declare function pauseFocusManager(): void;
11
- export declare function resumeFocusManager(): void;
12
- export declare class SmartFocusManager {
13
- private pauseCount;
14
- private originalFocusState;
15
- private refetchHistory;
16
- private serializeKey;
17
- pause(): void;
18
- resume(): void;
19
- reset(): void;
20
- destroy(): void;
21
- shouldRefetch(queryKey: QueryKey, minInterval?: number): boolean;
22
- clearHistory(): void;
23
- clearHistoryByKey(queryKey: QueryKey): void;
24
- getLastRefetchTime(queryKey: QueryKey): number | undefined;
25
- getStats(): {
26
- isPaused: boolean;
27
- pauseCount: number;
28
- isFocused: boolean;
29
- };
30
- }
31
- export declare function getSmartFocusManager(): SmartFocusManager;
32
- export declare function resetSmartFocusManager(): void;
33
- //# sourceMappingURL=focusManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"focusManager.d.ts","sourceRoot":"","sources":["../../src/core/focusManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAC9D,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,kBAAuB,QA0BhE;AAED,wBAAgB,iBAAiB,SAEhC;AAED,wBAAgB,kBAAkB,SAGjC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,YAAY;IAiBpB,KAAK,IAAI,IAAI;IAOb,MAAM,IAAI,IAAI;IAQd,KAAK,IAAI,IAAI;IAOb,OAAO,IAAI,IAAI;IAIf,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAE,MAAa,GAAG,OAAO;IAUtE,YAAY,IAAI,IAAI;IAGpB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAI3C,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;IAI1D,QAAQ,IAAI;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE;CAG1E;AAGD,wBAAgB,oBAAoB,IAAI,iBAAiB,CAKxD;AACD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -1,122 +0,0 @@
1
- import { focusManager } from "@tanstack/react-query";
2
- export { focusManager };
3
- export function setupFocusManager(config = {}) {
4
- const { enabled = true, customEventListener } = config;
5
- if (!enabled) {
6
- focusManager.setEventListener(() => () => { });
7
- focusManager.setFocused(false);
8
- return;
9
- }
10
- if (customEventListener) {
11
- focusManager.setEventListener(customEventListener);
12
- }
13
- else {
14
- focusManager.setEventListener((handleFocus) => {
15
- if (typeof window === "undefined" || !window.addEventListener) {
16
- return () => { };
17
- }
18
- const handleVisibilityChange = () => {
19
- handleFocus();
20
- };
21
- const handleWindowFocus = () => handleFocus();
22
- window.addEventListener("visibilitychange", handleVisibilityChange, false);
23
- window.addEventListener("focus", handleWindowFocus, false);
24
- return () => {
25
- window.removeEventListener("visibilitychange", handleVisibilityChange);
26
- window.removeEventListener("focus", handleWindowFocus);
27
- };
28
- });
29
- }
30
- }
31
- export function pauseFocusManager() {
32
- focusManager.setFocused(false);
33
- }
34
- export function resumeFocusManager() {
35
- const isVisible = typeof document !== "undefined" ? !document.hidden : true;
36
- focusManager.setFocused(isVisible);
37
- }
38
- export class SmartFocusManager {
39
- constructor() {
40
- this.pauseCount = 0;
41
- this.refetchHistory = new Map();
42
- }
43
- serializeKey(queryKey) {
44
- try {
45
- return JSON.stringify(queryKey);
46
- }
47
- catch {
48
- return Array.isArray(queryKey)
49
- ? queryKey
50
- .map((v) => {
51
- try {
52
- return JSON.stringify(v);
53
- }
54
- catch {
55
- return String(v);
56
- }
57
- })
58
- .join("|")
59
- : String(queryKey);
60
- }
61
- }
62
- pause() {
63
- if (this.pauseCount === 0) {
64
- this.originalFocusState = focusManager.isFocused();
65
- focusManager.setFocused(false);
66
- }
67
- this.pauseCount++;
68
- }
69
- resume() {
70
- if (this.pauseCount > 0) {
71
- this.pauseCount--;
72
- if (this.pauseCount === 0) {
73
- focusManager.setFocused(this.originalFocusState);
74
- }
75
- }
76
- }
77
- reset() {
78
- if (this.pauseCount > 0) {
79
- this.pauseCount = 0;
80
- focusManager.setFocused(this.originalFocusState);
81
- this.originalFocusState = undefined;
82
- }
83
- }
84
- destroy() {
85
- this.reset();
86
- this.clearHistory();
87
- }
88
- shouldRefetch(queryKey, minInterval = 5000) {
89
- const key = this.serializeKey(queryKey);
90
- const lastRefetchTime = this.refetchHistory.has(key) ? this.refetchHistory.get(key) : -Infinity;
91
- const now = Date.now();
92
- if (now - lastRefetchTime < minInterval) {
93
- return false;
94
- }
95
- this.refetchHistory.set(key, now);
96
- return true;
97
- }
98
- clearHistory() {
99
- this.refetchHistory.clear();
100
- }
101
- clearHistoryByKey(queryKey) {
102
- const key = this.serializeKey(queryKey);
103
- this.refetchHistory.delete(key);
104
- }
105
- getLastRefetchTime(queryKey) {
106
- const key = this.serializeKey(queryKey);
107
- return this.refetchHistory.get(key);
108
- }
109
- getStats() {
110
- return { isPaused: this.pauseCount > 0, pauseCount: this.pauseCount, isFocused: focusManager.isFocused() };
111
- }
112
- }
113
- let smartFocusManagerInstance = null;
114
- export function getSmartFocusManager() {
115
- if (!smartFocusManagerInstance) {
116
- smartFocusManagerInstance = new SmartFocusManager();
117
- }
118
- return smartFocusManagerInstance;
119
- }
120
- export function resetSmartFocusManager() {
121
- smartFocusManagerInstance = null;
122
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC"}