@robot-admin/request-core 0.2.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +109 -0
  2. package/LICENSE +21 -0
  3. package/README.md +248 -357
  4. package/SECURITY.md +14 -0
  5. package/dist/axios.cjs +134 -809
  6. package/dist/axios.cjs.map +1 -1
  7. package/dist/axios.d.cts +55 -220
  8. package/dist/axios.d.ts +55 -220
  9. package/dist/axios.js +2 -790
  10. package/dist/axios.js.map +1 -1
  11. package/dist/chunk-2JXH7SIL.js +711 -0
  12. package/dist/chunk-2JXH7SIL.js.map +1 -0
  13. package/dist/chunk-56QOEWUS.js +8 -0
  14. package/dist/chunk-56QOEWUS.js.map +1 -0
  15. package/dist/chunk-DUP3Y4DN.js +320 -0
  16. package/dist/chunk-DUP3Y4DN.js.map +1 -0
  17. package/dist/chunk-JGFRUAZT.cjs +1007 -0
  18. package/dist/chunk-JGFRUAZT.cjs.map +1 -0
  19. package/dist/chunk-KHI6XQRN.cjs +717 -0
  20. package/dist/chunk-KHI6XQRN.cjs.map +1 -0
  21. package/dist/chunk-OAZ5BUBU.js +969 -0
  22. package/dist/chunk-OAZ5BUBU.js.map +1 -0
  23. package/dist/chunk-QSDNDTOZ.js +28 -0
  24. package/dist/chunk-QSDNDTOZ.js.map +1 -0
  25. package/dist/chunk-UHXBAFY6.cjs +323 -0
  26. package/dist/chunk-UHXBAFY6.cjs.map +1 -0
  27. package/dist/chunk-WUZ43MLM.cjs +30 -0
  28. package/dist/chunk-WUZ43MLM.cjs.map +1 -0
  29. package/dist/chunk-WXHQXPS4.cjs +10 -0
  30. package/dist/chunk-WXHQXPS4.cjs.map +1 -0
  31. package/dist/crud.cjs +12 -484
  32. package/dist/crud.cjs.map +1 -1
  33. package/dist/crud.d.cts +8 -269
  34. package/dist/crud.d.ts +8 -269
  35. package/dist/crud.js +4 -487
  36. package/dist/crud.js.map +1 -1
  37. package/dist/index.cjs +136 -1302
  38. package/dist/index.cjs.map +1 -1
  39. package/dist/index.d.cts +7 -165
  40. package/dist/index.d.ts +7 -165
  41. package/dist/index.js +5 -1283
  42. package/dist/index.js.map +1 -1
  43. package/dist/naive.cjs +14 -0
  44. package/dist/naive.cjs.map +1 -0
  45. package/dist/naive.d.cts +9 -0
  46. package/dist/naive.d.ts +9 -0
  47. package/dist/naive.js +5 -0
  48. package/dist/naive.js.map +1 -0
  49. package/dist/types-BRDRqYFs.d.cts +197 -0
  50. package/dist/types-BVJhlSuh.d.cts +310 -0
  51. package/dist/types-BVJhlSuh.d.ts +310 -0
  52. package/dist/types-CUyibJZX.d.ts +197 -0
  53. package/dist/vue.cjs +93 -0
  54. package/dist/vue.cjs.map +1 -0
  55. package/dist/vue.d.cts +38 -0
  56. package/dist/vue.d.ts +38 -0
  57. package/dist/vue.js +71 -0
  58. package/dist/vue.js.map +1 -0
  59. package/package.json +60 -16
package/dist/axios.d.ts CHANGED
@@ -1,232 +1,67 @@
1
- import { AxiosRequestConfig, AxiosInstance, InternalAxiosRequestConfig } from 'axios';
1
+ import { AxiosInstance, AxiosRequestConfig } from 'axios';
2
+ import { b as CacheStore, o as RequestPolicyDefaults, e as EnhancedAxiosRequestConfig, p as RequestScope, E as EnhancedAxiosInstance, g as RequestClientConfig, f as RequestClient, M as MemoryCacheOptions, m as RequestKeyOptions } from './types-BVJhlSuh.js';
3
+ export { B as BusinessErrorDescriptor, C as CacheConfig, a as CacheItem, c as CancelConfig, d as ConcurrencyPolicy, D as DedupeConfig, F as FieldAliases, I as InterceptorConfig, R as RequestAuthConfig, h as RequestConfig, i as RequestCoreConfig, j as RequestError, k as RequestHooks, l as RequestInterceptors, n as RequestKeyParams, q as ResponseAdapter, r as RetryConfig, s as RetryContext, t as createRequestCore, u as getGlobalConfig, v as isCanceledError, w as isRequestError, x as normalizeRequestError } from './types-BVJhlSuh.js';
4
+ import 'vue';
2
5
 
3
- /**
4
- * 请求去重配置
5
- */
6
- interface DedupeConfig {
7
- /** 是否启用去重(默认 true) */
8
- enabled?: boolean;
9
- /** 自定义请求 key 生成函数 */
10
- keyGenerator?: (config: AxiosRequestConfig) => string;
11
- }
12
- /**
13
- * 请求缓存配置
14
- */
15
- interface CacheConfig {
16
- /** 是否启用缓存(默认 false,只对 GET 请求有效) */
17
- enabled?: boolean;
18
- /** 缓存时间(毫秒,默认 5 分钟) */
19
- ttl?: number;
20
- /** 是否强制刷新缓存 */
21
- forceUpdate?: boolean;
22
- }
23
- /**
24
- * 请求重试配置
25
- */
26
- interface RetryConfig {
27
- /** 是否启用重试(默认 false) */
28
- enabled?: boolean;
29
- /** 重试次数(默认 3) */
30
- count?: number;
31
- /** 重试延迟(毫秒,默认 1000) */
32
- delay?: number;
33
- /** 是否使用指数退避(默认 true) */
34
- exponentialBackoff?: boolean;
35
- /** 是否启用随机抖动(默认 true),避免重试风暴 */
36
- jitter?: boolean;
37
- /** 可重试的 HTTP 状态码 */
38
- retryableStatusCodes?: number[];
39
- /** 允许重试的 HTTP 方法(默认仅幂等方法,避免对非幂等 POST/PUT/DELETE 重复执行副作用) */
40
- retryableMethods?: string[];
41
- }
42
- /**
43
- * 路由取消配置
44
- */
45
- interface CancelConfig {
46
- /** 是否启用路由切换时自动取消(默认 true) */
47
- enabled?: boolean;
48
- /** 白名单:不需要取消的请求 URL 模式 */
49
- whitelist?: RegExp[];
50
- }
51
- /**
52
- * 扩展的 Axios 请求配置
53
- */
54
- interface EnhancedAxiosRequestConfig extends AxiosRequestConfig {
55
- /** 请求去重配置 */
56
- dedupe?: boolean | DedupeConfig;
57
- /** 请求缓存配置 */
58
- cache?: boolean | CacheConfig;
59
- /** 请求重试配置 */
60
- retry?: boolean | RetryConfig;
61
- /** 路由取消配置 */
62
- cancel?: boolean | CancelConfig;
63
- /** 内部标记:当前重试次数 */
64
- __retryCount?: number;
65
- /** 内部标记:取消请求 ID */
66
- __cancelId?: string;
67
- /** 内部标记:去重请求键 */
68
- __requestKey?: string;
69
- /** 内部标记:是否来自缓存 */
70
- __fromCache?: boolean;
71
- /** 内部标记:共享的 AbortController(dedupe 与 cancel 复用,避免 signal 互相覆盖) */
72
- __abortController?: EnhancedAbortController;
73
- /** 内部标记:调用方原始 AbortSignal,用于在最终响应阶段恢复配置 */
74
- __externalSignal?: AxiosRequestConfig["signal"];
75
- /** 内部标记:移除外部 AbortSignal 桥接监听器 */
76
- __abortCleanup?: () => void;
77
- /** 内部标记:是否被 cancel 插件管理(保留兼容) */
78
- __managedByCancel?: boolean;
79
- /** 内部标记:是否正在处理 401 错误 */
80
- __handling401?: boolean;
81
- }
82
- /**
83
- * 缓存项
84
- */
85
- interface CacheItem<T = any> {
86
- /** 缓存数据 */
87
- data: T;
88
- /** 过期时间戳 */
89
- expireAt: number;
90
- }
91
- /**
92
- * 请求 key 生成器参数
93
- */
94
- interface RequestKeyParams {
95
- method?: string;
96
- url?: string;
97
- params?: any;
98
- data?: any;
99
- }
100
- /**
101
- * 扩展的 AbortController 接口
102
- */
103
- interface EnhancedAbortController extends AbortController {
104
- /** 请求开始时间 */
105
- _startTime?: number;
6
+ interface CreateRequestRuntimeOptions {
7
+ cache?: CacheStore;
8
+ defaults?: RequestPolicyDefaults;
106
9
  }
107
10
 
108
11
  declare function setGlobalAxiosInstance(instance: AxiosInstance): void;
109
12
  declare function getGlobalAxiosInstance(): AxiosInstance;
110
- declare function getData<T = any>(url: string, config?: EnhancedAxiosRequestConfig): Promise<T>;
111
- declare function postData<T = any>(url: string, data?: any, config?: EnhancedAxiosRequestConfig): Promise<T>;
112
- declare function putData<T = any>(url: string, data?: any, config?: EnhancedAxiosRequestConfig): Promise<T>;
113
- declare function deleteData<T = any>(url: string, config?: EnhancedAxiosRequestConfig): Promise<T>;
13
+ declare function getData<T = unknown>(url: string, config?: EnhancedAxiosRequestConfig): Promise<T>;
14
+ declare function postData<T = unknown, D = unknown>(url: string, data?: D, config?: EnhancedAxiosRequestConfig<D>): Promise<T>;
15
+ declare function putData<T = unknown, D = unknown>(url: string, data?: D, config?: EnhancedAxiosRequestConfig<D>): Promise<T>;
16
+ declare function patchData<T = unknown, D = unknown>(url: string, data?: D, config?: EnhancedAxiosRequestConfig<D>): Promise<T>;
17
+ declare function deleteData<T = unknown>(url: string, config?: EnhancedAxiosRequestConfig): Promise<T>;
18
+
19
+ declare function waitForReLogin(instance?: AxiosInstance): Promise<void>;
20
+ declare function getReLoginPromise(instance?: AxiosInstance): Promise<void> | null;
114
21
 
115
- /**
116
- * 创建重新登录 Promise
117
- */
118
- declare function waitForReLogin(): Promise<void>;
119
- /**
120
- * 获取重新登录 Promise
121
- */
122
- declare function getReLoginPromise(): Promise<void> | null;
22
+ declare function cancelAllPendingRequests(instance?: AxiosInstance): void;
23
+ declare function getPendingRequestCount(instance?: AxiosInstance): number;
123
24
 
124
- /**
125
- * 取消所有待处理的请求
126
- *
127
- * 使用场景:
128
- * - 用户登出时清理所有请求
129
- * - 网络异常时重置请求状态
130
- * - 调试和测试场景
131
- *
132
- * 安全机制:
133
- * - 捕获每个取消操作的异常
134
- * - 确保一个请求的失败不影响其他请求的取消
135
- * - 完全清理 Map 中的所有引用
136
- */
137
- declare function cancelAllPendingRequests(): void;
138
- /**
139
- * 获取待处理请求数量
140
- *
141
- * @returns 当前待处理的请求数量
142
- *
143
- * 监控用途:
144
- * - 性能监控和分析
145
- * - 调试请求状态
146
- * - 检测潜在的请求泄漏
147
- * - 评估去重效果
148
- */
149
- declare function getPendingRequestCount(): number;
25
+ declare function clearAllCache(instance?: AxiosInstance): void;
26
+ declare function clearCache(config: AxiosRequestConfig, instance?: AxiosInstance): boolean;
27
+ declare function clearCacheByPrefix(prefix: string, instance?: AxiosInstance): number;
28
+ declare function clearCacheByTag(tag: string, instance?: AxiosInstance): number;
29
+ declare function cleanupExpiredCache(instance?: AxiosInstance): void;
30
+ declare function getCacheSize(instance?: AxiosInstance): number;
150
31
 
151
- /**
152
- * 清空所有缓存
153
- *
154
- * 用于:
155
- * - 用户登出时清理敏感数据
156
- * - 开发调试时重置缓存状态
157
- */
158
- declare function clearAllCache(): void;
159
- /**
160
- * 删除指定缓存
161
- *
162
- * @param config 请求配置
163
- * @returns 是否删除成功
164
- *
165
- * 用于:
166
- * - 数据更新时清理特定缓存
167
- * - 缓存失效时的精确清理
168
- */
169
- declare function clearCache(config: InternalAxiosRequestConfig): boolean;
170
- /**
171
- * 清理过期缓存
172
- *
173
- * 自动清理机制:
174
- * - 由 globalCache 内部实现
175
- * - 基于 TTL 过期时间
176
- * - 定期清理防止内存泄漏
177
- */
178
- declare function cleanupExpiredCache(): void;
179
- /**
180
- * 获取缓存大小
181
- *
182
- * @returns 当前缓存条目数量
183
- *
184
- * 用于:
185
- * - 监控缓存使用情况
186
- * - 性能分析和调试
187
- */
188
- declare function getCacheSize(): number;
32
+ declare function cancelAllRequests(instance?: AxiosInstance): void;
33
+ declare function cancelRequestScope(scope: RequestScope, instance?: AxiosInstance): number;
34
+ declare function getCancelableRequestCount(instance?: AxiosInstance): number;
189
35
 
190
- /**
191
- * 取消所有待处理的请求
192
- *
193
- * 使用场景:
194
- * - 路由切换时取消当前页面的所有请求
195
- * - 用户登出时清理所有请求
196
- * - 网络异常时重置请求状态
197
- *
198
- * 安全机制:
199
- * - 捕获每个取消操作的异常
200
- * - 确保一个请求的失败不影响其他请求的取消
201
- */
202
- declare function cancelAllRequests(): void;
203
- /**
204
- * 获取待取消请求数量
205
- *
206
- * @returns 当前待取消的请求数量
207
- *
208
- * 监控用途:
209
- * - 性能监控和分析
210
- * - 调试请求状态
211
- * - 检测潜在的请求泄漏
212
- */
213
- declare function getCancelableRequestCount(): number;
36
+ /** Creates an isolated Axios instance with request-core lifecycle policies. */
37
+ declare function createAxiosInstance(config?: AxiosRequestConfig, runtimeOptions?: CreateRequestRuntimeOptions): EnhancedAxiosInstance;
214
38
 
215
- /**
216
- * 创建 axios 实例
217
- * @param config axios 配置
218
- */
219
- declare function createAxiosInstance(config?: AxiosRequestConfig): AxiosInstance;
39
+ declare const onReLoginSuccess: (instance?: AxiosInstance) => void;
40
+ declare const onReLoginCancel: (instance?: AxiosInstance) => void;
220
41
 
221
- /**
222
- * 重新登录成功后的回调
223
- * 调用此函数会 resolve 所有等待中的请求
224
- */
225
- declare const onReLoginSuccess: () => void;
226
- /**
227
- * 重新登录取消后的回调
228
- * 调用此函数会 reject 所有等待中的请求
229
- */
230
- declare const onReLoginCancel: () => void;
42
+ declare function createRequestClient(config?: RequestClientConfig): RequestClient;
43
+ declare function setDefaultRequestClient(client: RequestClient): void;
44
+
45
+ declare function generateRequestKey(config: AxiosRequestConfig, options?: RequestKeyOptions): string;
46
+ declare class MemoryCache implements CacheStore {
47
+ private readonly cache;
48
+ private readonly accessOrder;
49
+ private maxSize;
50
+ private readonly cloneValue;
51
+ constructor(options?: MemoryCacheOptions);
52
+ get<T = unknown>(key: string): T | null;
53
+ set<T = unknown>(key: string, data: T, ttl: number, options?: {
54
+ tags?: readonly string[];
55
+ }): void;
56
+ delete(key: string): boolean;
57
+ clear(): void;
58
+ cleanup(): void;
59
+ deleteByPrefix(prefix: string): number;
60
+ deleteByTag(tag: string): number;
61
+ get size(): number;
62
+ setMaxSize(size: number): void;
63
+ private assertMaxSize;
64
+ private evictOldest;
65
+ }
231
66
 
232
- export { type CacheConfig, type CacheItem, type CancelConfig, type DedupeConfig, type EnhancedAxiosRequestConfig, type RequestKeyParams, type RetryConfig, cancelAllPendingRequests, cancelAllRequests, cleanupExpiredCache, clearAllCache, clearCache, createAxiosInstance, deleteData, getCacheSize, getCancelableRequestCount, getData, getGlobalAxiosInstance, getPendingRequestCount, getReLoginPromise, onReLoginCancel, onReLoginSuccess, postData, putData, setGlobalAxiosInstance, waitForReLogin };
67
+ export { CacheStore, EnhancedAxiosInstance, EnhancedAxiosRequestConfig, MemoryCache, MemoryCacheOptions, RequestClient, RequestClientConfig, RequestKeyOptions, RequestPolicyDefaults, RequestScope, cancelAllPendingRequests, cancelAllRequests, cancelRequestScope, cleanupExpiredCache, clearAllCache, clearCache, clearCacheByPrefix, clearCacheByTag, createAxiosInstance, createRequestClient, deleteData, generateRequestKey, getCacheSize, getCancelableRequestCount, getData, getGlobalAxiosInstance, getPendingRequestCount, getReLoginPromise, onReLoginCancel, onReLoginSuccess, patchData, postData, putData, setDefaultRequestClient, setGlobalAxiosInstance, waitForReLogin };