@vlian/framework 1.2.25 → 1.2.37

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 (213) hide show
  1. package/dist/analytics.umd.js +208 -2395
  2. package/dist/analytics.umd.js.map +1 -1
  3. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  4. package/dist/core/error/ErrorHandler.d.ts +1 -1
  5. package/dist/core/error/ErrorHandler.js.map +1 -1
  6. package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -1
  7. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  8. package/dist/core/router/monitoring/RouterMonitoring.js +1 -1
  9. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  10. package/dist/core/router/utils/adapters/react-router/transform.cjs +4 -0
  11. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  12. package/dist/core/router/utils/adapters/react-router/transform.js +4 -0
  13. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  14. package/dist/core/startup/initializeServices.cjs +1 -1
  15. package/dist/core/startup/initializeServices.cjs.map +1 -1
  16. package/dist/core/startup/initializeServices.d.ts +1 -1
  17. package/dist/core/startup/initializeServices.js +1 -1
  18. package/dist/core/startup/initializeServices.js.map +1 -1
  19. package/dist/core/startup/performanceTracker.cjs.map +1 -1
  20. package/dist/core/startup/performanceTracker.d.ts +1 -1
  21. package/dist/core/startup/performanceTracker.js.map +1 -1
  22. package/dist/core/startup/renderApp.cjs +1 -1
  23. package/dist/core/startup/renderApp.cjs.map +1 -1
  24. package/dist/core/startup/renderApp.d.ts +1 -1
  25. package/dist/core/startup/renderApp.js +1 -1
  26. package/dist/core/startup/renderApp.js.map +1 -1
  27. package/dist/core/startup/startApp.cjs +2 -2
  28. package/dist/core/startup/startApp.cjs.map +1 -1
  29. package/dist/core/startup/startApp.js +3 -3
  30. package/dist/core/startup/startApp.js.map +1 -1
  31. package/dist/core/types.d.ts +1 -1
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/index.cjs +15 -2
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.ts +6 -4
  36. package/dist/index.js +5 -4
  37. package/dist/index.js.map +1 -1
  38. package/dist/index.umd.js +11648 -32616
  39. package/dist/index.umd.js.map +1 -1
  40. package/dist/kernel/constants.cjs +67 -0
  41. package/dist/kernel/constants.cjs.map +1 -0
  42. package/dist/kernel/constants.d.ts +5 -0
  43. package/dist/kernel/constants.js +43 -0
  44. package/dist/kernel/constants.js.map +1 -0
  45. package/dist/kernel/index.cjs +40 -0
  46. package/dist/kernel/index.cjs.map +1 -0
  47. package/dist/kernel/index.d.ts +3 -0
  48. package/dist/kernel/index.js +4 -0
  49. package/dist/kernel/index.js.map +1 -0
  50. package/dist/kernel/kernel.cjs +296 -0
  51. package/dist/kernel/kernel.cjs.map +1 -0
  52. package/dist/kernel/kernel.d.ts +40 -0
  53. package/dist/kernel/kernel.js +272 -0
  54. package/dist/kernel/kernel.js.map +1 -0
  55. package/dist/kernel/manager/cacheManager.cjs +46 -0
  56. package/dist/kernel/manager/cacheManager.cjs.map +1 -0
  57. package/dist/kernel/manager/cacheManager.d.ts +6 -0
  58. package/dist/kernel/manager/cacheManager.js +36 -0
  59. package/dist/kernel/manager/cacheManager.js.map +1 -0
  60. package/dist/kernel/manager/i18nManager.cjs +68 -0
  61. package/dist/kernel/manager/i18nManager.cjs.map +1 -0
  62. package/dist/kernel/manager/i18nManager.d.ts +8 -0
  63. package/dist/kernel/manager/i18nManager.js +58 -0
  64. package/dist/kernel/manager/i18nManager.js.map +1 -0
  65. package/dist/kernel/manager/index.cjs +30 -0
  66. package/dist/kernel/manager/index.cjs.map +1 -0
  67. package/dist/kernel/manager/index.d.ts +4 -0
  68. package/dist/kernel/manager/index.js +6 -0
  69. package/dist/kernel/manager/index.js.map +1 -0
  70. package/dist/kernel/manager/loggerManager.cjs +70 -0
  71. package/dist/kernel/manager/loggerManager.cjs.map +1 -0
  72. package/dist/kernel/manager/loggerManager.d.ts +14 -0
  73. package/dist/kernel/manager/loggerManager.js +60 -0
  74. package/dist/kernel/manager/loggerManager.js.map +1 -0
  75. package/dist/kernel/manager/persistence.cjs +93 -0
  76. package/dist/kernel/manager/persistence.cjs.map +1 -0
  77. package/dist/kernel/manager/persistence.d.ts +3 -0
  78. package/dist/kernel/manager/persistence.js +75 -0
  79. package/dist/kernel/manager/persistence.js.map +1 -0
  80. package/dist/kernel/manager/themeManager.cjs +85 -0
  81. package/dist/kernel/manager/themeManager.cjs.map +1 -0
  82. package/dist/kernel/manager/themeManager.d.ts +9 -0
  83. package/dist/kernel/manager/themeManager.js +75 -0
  84. package/dist/kernel/manager/themeManager.js.map +1 -0
  85. package/dist/kernel/types.cjs +6 -0
  86. package/dist/kernel/types.cjs.map +1 -0
  87. package/dist/kernel/types.d.ts +72 -0
  88. package/dist/kernel/types.js +3 -0
  89. package/dist/kernel/types.js.map +1 -0
  90. package/dist/request/adapter.d.ts +1 -0
  91. package/dist/request/core.d.ts +1 -0
  92. package/dist/request/index.d.ts +1 -42
  93. package/dist/request/plugin/csrfPlugin.d.ts +2 -2
  94. package/dist/request/plugin/queue.d.ts +2 -2
  95. package/dist/request/plugin.d.ts +1 -0
  96. package/dist/request/runtime.d.ts +1 -0
  97. package/dist/request/types.d.ts +1 -394
  98. package/dist/request/utils.d.ts +1 -0
  99. package/dist/state.umd.js +1 -1
  100. package/dist/utils/csrf.cjs +13 -152
  101. package/dist/utils/csrf.cjs.map +1 -1
  102. package/dist/utils/csrf.d.ts +1 -72
  103. package/dist/utils/csrf.js +1 -142
  104. package/dist/utils/csrf.js.map +1 -1
  105. package/dist/utils/errors/ErrorCodes.cjs +6 -76
  106. package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
  107. package/dist/utils/errors/ErrorCodes.d.ts +1 -45
  108. package/dist/utils/errors/ErrorCodes.js +1 -84
  109. package/dist/utils/errors/ErrorCodes.js.map +1 -1
  110. package/dist/utils/errors.cjs +15 -344
  111. package/dist/utils/errors.cjs.map +1 -1
  112. package/dist/utils/errors.d.ts +1 -183
  113. package/dist/utils/errors.js +1 -352
  114. package/dist/utils/errors.js.map +1 -1
  115. package/dist/utils/logger.cjs +5 -374
  116. package/dist/utils/logger.cjs.map +1 -1
  117. package/dist/utils/logger.d.ts +2 -189
  118. package/dist/utils/logger.js +1 -379
  119. package/dist/utils/logger.js.map +1 -1
  120. package/dist/utils/logger.types.cjs +3 -12
  121. package/dist/utils/logger.types.cjs.map +1 -1
  122. package/dist/utils/logger.types.d.ts +2 -57
  123. package/dist/utils/logger.types.js +1 -10
  124. package/dist/utils/logger.types.js.map +1 -1
  125. package/dist/utils/monitoring.cjs +11 -302
  126. package/dist/utils/monitoring.cjs.map +1 -1
  127. package/dist/utils/monitoring.d.ts +1 -163
  128. package/dist/utils/monitoring.js +1 -294
  129. package/dist/utils/monitoring.js.map +1 -1
  130. package/dist/utils/performance.cjs +5 -352
  131. package/dist/utils/performance.cjs.map +1 -1
  132. package/dist/utils/performance.d.ts +2 -246
  133. package/dist/utils/performance.js +1 -354
  134. package/dist/utils/performance.js.map +1 -1
  135. package/dist/utils/resourceLoader.cjs +5 -303
  136. package/dist/utils/resourceLoader.cjs.map +1 -1
  137. package/dist/utils/resourceLoader.d.ts +2 -130
  138. package/dist/utils/resourceLoader.js +1 -305
  139. package/dist/utils/resourceLoader.js.map +1 -1
  140. package/dist/utils/runtimeSecurity.cjs +2 -140
  141. package/dist/utils/runtimeSecurity.cjs.map +1 -1
  142. package/dist/utils/runtimeSecurity.d.ts +2 -104
  143. package/dist/utils/runtimeSecurity.js +1 -141
  144. package/dist/utils/runtimeSecurity.js.map +1 -1
  145. package/dist/utils/security.cjs +3 -314
  146. package/dist/utils/security.cjs.map +1 -1
  147. package/dist/utils/security.d.ts +2 -80
  148. package/dist/utils/security.js +1 -311
  149. package/dist/utils/security.js.map +1 -1
  150. package/dist/utils/traceId.cjs +10 -111
  151. package/dist/utils/traceId.cjs.map +1 -1
  152. package/dist/utils/traceId.d.ts +1 -63
  153. package/dist/utils/traceId.js +1 -116
  154. package/dist/utils/traceId.js.map +1 -1
  155. package/dist/utils/validation.cjs +3 -173
  156. package/dist/utils/validation.cjs.map +1 -1
  157. package/dist/utils/validation.d.ts +2 -110
  158. package/dist/utils/validation.js +1 -175
  159. package/dist/utils/validation.js.map +1 -1
  160. package/package.json +15 -24
  161. package/dist/lazy/index.cjs +0 -104
  162. package/dist/lazy/index.cjs.map +0 -1
  163. package/dist/lazy/index.d.ts +0 -19
  164. package/dist/lazy/index.js +0 -24
  165. package/dist/lazy/index.js.map +0 -1
  166. package/dist/request/adapter/RequestAdapter.cjs +0 -78
  167. package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
  168. package/dist/request/adapter/axiosAdapter.cjs +0 -164
  169. package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
  170. package/dist/request/adapter/fetchAdapter.cjs +0 -134
  171. package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
  172. package/dist/request/adapter/index.cjs +0 -80
  173. package/dist/request/adapter/index.cjs.map +0 -1
  174. package/dist/request/adapter/kyAdapter.cjs +0 -191
  175. package/dist/request/adapter/kyAdapter.cjs.map +0 -1
  176. package/dist/request/adapter/undiciAdapter.cjs +0 -213
  177. package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
  178. package/dist/request/core/RequestClient.cjs +0 -558
  179. package/dist/request/core/RequestClient.cjs.map +0 -1
  180. package/dist/request/core/index.cjs +0 -15
  181. package/dist/request/core/index.cjs.map +0 -1
  182. package/dist/request/index.cjs +0 -149
  183. package/dist/request/index.cjs.map +0 -1
  184. package/dist/request/plugin/RequestPlugin.cjs +0 -218
  185. package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
  186. package/dist/request/plugin/cache.cjs +0 -269
  187. package/dist/request/plugin/cache.cjs.map +0 -1
  188. package/dist/request/plugin/csrfPlugin.cjs +0 -40
  189. package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
  190. package/dist/request/plugin/index.cjs +0 -53
  191. package/dist/request/plugin/index.cjs.map +0 -1
  192. package/dist/request/plugin/monitoring.cjs +0 -216
  193. package/dist/request/plugin/monitoring.cjs.map +0 -1
  194. package/dist/request/plugin/queue.cjs +0 -140
  195. package/dist/request/plugin/queue.cjs.map +0 -1
  196. package/dist/request/plugin/retry.cjs +0 -98
  197. package/dist/request/plugin/retry.cjs.map +0 -1
  198. package/dist/request/plugin/validation.cjs +0 -121
  199. package/dist/request/plugin/validation.cjs.map +0 -1
  200. package/dist/request/runtime/RequestContext.cjs +0 -77
  201. package/dist/request/runtime/RequestContext.cjs.map +0 -1
  202. package/dist/request/runtime/index.cjs +0 -32
  203. package/dist/request/runtime/index.cjs.map +0 -1
  204. package/dist/request/types.cjs +0 -112
  205. package/dist/request/types.cjs.map +0 -1
  206. package/dist/request/utils/RequestQueueManager.cjs +0 -168
  207. package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
  208. package/dist/request/utils/dependencyCheck.cjs +0 -237
  209. package/dist/request/utils/dependencyCheck.cjs.map +0 -1
  210. package/dist/request/utils/index.cjs +0 -30
  211. package/dist/request/utils/index.cjs.map +0 -1
  212. package/dist/request.umd.js +0 -5392
  213. package/dist/request.umd.js.map +0 -1
@@ -1,42 +1 @@
1
- /**
2
- * 请求库主入口
3
- *
4
- * 提供企业级、可扩展、类型安全的 HTTP 请求能力
5
- */
6
- export type { RequestOptions, Response, RequestContext, RequestHeaders, RequestQuery, RequestBody, HttpMethod, RetryConfig, CacheConfig, ValidationConfig, AdapterCapabilities, } from './types';
7
- export { RequestError, RequestErrorType, RequestErrorCode, } from './types';
8
- export { RequestClient } from './core/RequestClient';
9
- export type { RequestClientConfig } from './types';
10
- export type { RequestAdapter, AdapterFactory } from './adapter/RequestAdapter';
11
- export { adapterRegistry } from './adapter/RequestAdapter';
12
- export { fetchAdapter, kyAdapter, axiosAdapter } from './adapter';
13
- export declare function undiciAdapter(): Promise<import("./adapter").RequestAdapter>;
14
- export type { RequestPlugin } from './plugin/RequestPlugin';
15
- export { PluginManager, PluginLifecycleStage, PluginPriority } from './plugin/RequestPlugin';
16
- export { createCachePlugin, createRetryPlugin, createValidationPlugin, createMonitoringPlugin, createQueuePlugin, } from './plugin';
17
- export type { CachePluginConfig, RetryPluginConfig, ValidationPluginConfig, MonitoringPluginConfig, MonitoringEvent, MonitoringReporter, QueuePluginConfig, QueueTriggerCondition, } from './plugin';
18
- export { MonitoringEventType } from './plugin';
19
- export { createRequestContext, updateRequestContext, completeRequestContext, failRequestContext, cancelRequestContext, } from './runtime/RequestContext';
20
- /**
21
- * 创建请求客户端实例
22
- *
23
- * @param config - 请求客户端配置
24
- * @returns 请求客户端实例
25
- *
26
- * @example
27
- * ```typescript
28
- * import { createRequestClient } from '@vlian/framework/request';
29
- *
30
- * const client = createRequestClient({
31
- * baseURL: 'https://api.example.com',
32
- * defaultTimeout: 5000,
33
- * plugins: [
34
- * createCachePlugin(),
35
- * createRetryPlugin(),
36
- * ],
37
- * });
38
- *
39
- * const response = await client.get<User>('/user/1');
40
- * ```
41
- */
42
- export declare function createRequestClient(config?: import('./types').RequestClientConfig): Promise<import(".").RequestClient>;
1
+ export * from '@vlian/request';
@@ -8,8 +8,8 @@ import type { RequestPlugin } from './RequestPlugin';
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
- * import { createRequestClient } from '@vlian/framework/request';
12
- * import { createCSRFPlugin } from '@vlian/framework/request/plugin';
11
+ * import { createRequestClient } from '@vlian/request';
12
+ * import { createCSRFPlugin } from '@vlian/request/plugin';
13
13
  *
14
14
  * const client = await createRequestClient({
15
15
  * plugins: [
@@ -69,8 +69,8 @@ export interface QueuePluginConfig {
69
69
  *
70
70
  * @example
71
71
  * ```typescript
72
- * import { createRequestClient } from '@vlian/framework/request';
73
- * import { createQueuePlugin } from '@vlian/framework/request/plugin';
72
+ * import { createRequestClient } from '@vlian/request';
73
+ * import { createQueuePlugin } from '@vlian/request/plugin';
74
74
  *
75
75
  * const client = await createRequestClient({
76
76
  * plugins: [
@@ -0,0 +1 @@
1
+ export * from '@vlian/request/plugin';
@@ -0,0 +1 @@
1
+ export * from '@vlian/request/runtime';
@@ -1,394 +1 @@
1
- /**
2
- * 请求库核心类型定义
3
- */
4
- /**
5
- * HTTP 请求方法
6
- */
7
- export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
8
- /**
9
- * 请求头类型
10
- */
11
- export type RequestHeaders = Record<string, string | number | boolean>;
12
- /**
13
- * 请求查询参数类型
14
- */
15
- export type RequestQuery = Record<string, string | number | boolean | null | undefined>;
16
- /**
17
- * 请求体类型
18
- */
19
- export type RequestBody = string | FormData | URLSearchParams | Blob | ArrayBuffer | Record<string, unknown> | null;
20
- /**
21
- * 请求配置选项
22
- *
23
- * @template TResponse - 响应数据类型(用于类型推导)
24
- */
25
- export interface RequestOptions<TResponse = unknown> {
26
- /**
27
- * 响应类型占位符(用于类型推导,实际不使用)
28
- * @internal
29
- */
30
- _responseType?: TResponse;
31
- /**
32
- * 请求方法
33
- */
34
- method?: HttpMethod;
35
- /**
36
- * 请求 URL
37
- */
38
- url: string;
39
- /**
40
- * 请求头
41
- */
42
- headers?: RequestHeaders;
43
- /**
44
- * 查询参数
45
- */
46
- query?: RequestQuery;
47
- /**
48
- * 请求体
49
- */
50
- body?: RequestBody;
51
- /**
52
- * 请求超时时间(毫秒)
53
- */
54
- timeout?: number;
55
- /**
56
- * 是否允许跨域请求
57
- */
58
- credentials?: 'include' | 'same-origin' | 'omit';
59
- /**
60
- * 响应类型
61
- */
62
- responseType?: 'json' | 'text' | 'blob' | 'arrayBuffer' | 'formData';
63
- /**
64
- * 是否中止请求
65
- */
66
- signal?: AbortSignal;
67
- /**
68
- * 请求元数据(用于插件扩展)
69
- */
70
- meta?: Record<string, unknown>;
71
- /**
72
- * 请求标签(用于缓存、监控等)
73
- */
74
- tags?: string[];
75
- /**
76
- * 是否跳过默认插件
77
- */
78
- skipPlugins?: string[];
79
- /**
80
- * 请求重试配置
81
- */
82
- retry?: RetryConfig;
83
- /**
84
- * 请求缓存配置
85
- */
86
- cache?: CacheConfig;
87
- /**
88
- * 请求验证配置
89
- */
90
- validation?: ValidationConfig;
91
- }
92
- /**
93
- * 重试配置
94
- */
95
- export interface RetryConfig {
96
- /**
97
- * 最大重试次数
98
- */
99
- maxAttempts?: number;
100
- /**
101
- * 重试延迟(毫秒)
102
- */
103
- delay?: number;
104
- /**
105
- * 重试延迟策略(指数退避)
106
- */
107
- exponentialBackoff?: boolean;
108
- /**
109
- * 重试条件函数
110
- */
111
- shouldRetry?: (error: unknown, attempt: number) => boolean;
112
- /**
113
- * 重试延迟计算函数
114
- */
115
- calculateDelay?: (attempt: number) => number;
116
- }
117
- /**
118
- * 缓存配置
119
- */
120
- export interface CacheConfig {
121
- /**
122
- * 缓存键
123
- */
124
- key?: string;
125
- /**
126
- * 缓存时间(毫秒)
127
- */
128
- ttl?: number;
129
- /**
130
- * 是否强制刷新
131
- */
132
- forceRefresh?: boolean;
133
- /**
134
- * 缓存存储类型
135
- */
136
- storage?: 'memory' | 'localStorage' | 'sessionStorage';
137
- /**
138
- * 缓存条件函数
139
- */
140
- shouldCache?: (response: Response<unknown>) => boolean;
141
- }
142
- /**
143
- * 验证配置
144
- *
145
- * @template TResponse - 响应数据类型
146
- */
147
- export interface ValidationConfig {
148
- /**
149
- * 请求参数验证 Schema(Zod)
150
- */
151
- requestSchema?: unknown;
152
- /**
153
- * 响应数据验证 Schema(Zod)
154
- */
155
- responseSchema?: unknown;
156
- /**
157
- * 验证失败时的处理方式
158
- */
159
- onValidationError?: (error: unknown) => void;
160
- }
161
- /**
162
- * 响应对象
163
- *
164
- * @template TData - 响应数据类型
165
- * @template TMeta - 响应元数据类型
166
- */
167
- export interface Response<TData = unknown, TMeta = Record<string, unknown>> {
168
- /**
169
- * 响应数据
170
- */
171
- data: TData;
172
- /**
173
- * HTTP 状态码
174
- */
175
- status: number;
176
- /**
177
- * HTTP 状态文本
178
- */
179
- statusText: string;
180
- /**
181
- * 响应头
182
- */
183
- headers: RequestHeaders;
184
- /**
185
- * 响应元数据(由插件注入)
186
- */
187
- meta?: TMeta;
188
- /**
189
- * 原始响应对象(适配器提供)
190
- */
191
- raw?: unknown;
192
- }
193
- /**
194
- * 请求错误类型
195
- */
196
- export declare enum RequestErrorType {
197
- /**
198
- * 网络错误
199
- */
200
- NETWORK_ERROR = "NETWORK_ERROR",
201
- /**
202
- * 超时错误
203
- */
204
- TIMEOUT_ERROR = "TIMEOUT_ERROR",
205
- /**
206
- * HTTP 错误(4xx, 5xx)
207
- */
208
- HTTP_ERROR = "HTTP_ERROR",
209
- /**
210
- * 取消错误
211
- */
212
- ABORT_ERROR = "ABORT_ERROR",
213
- /**
214
- * 验证错误
215
- */
216
- VALIDATION_ERROR = "VALIDATION_ERROR",
217
- /**
218
- * 未知错误
219
- */
220
- UNKNOWN_ERROR = "UNKNOWN_ERROR"
221
- }
222
- /**
223
- * 请求错误代码
224
- */
225
- export declare enum RequestErrorCode {
226
- /**
227
- * 网络连接失败
228
- */
229
- NETWORK_CONNECTION_FAILED = "NETWORK_CONNECTION_FAILED",
230
- /**
231
- * 请求超时
232
- */
233
- REQUEST_TIMEOUT = "REQUEST_TIMEOUT",
234
- /**
235
- * 服务器错误(5xx)
236
- */
237
- SERVER_ERROR = "SERVER_ERROR",
238
- /**
239
- * 客户端错误(4xx)
240
- */
241
- CLIENT_ERROR = "CLIENT_ERROR",
242
- /**
243
- * 请求被取消
244
- */
245
- REQUEST_ABORTED = "REQUEST_ABORTED",
246
- /**
247
- * 响应验证失败
248
- */
249
- RESPONSE_VALIDATION_FAILED = "RESPONSE_VALIDATION_FAILED",
250
- /**
251
- * 请求参数验证失败
252
- */
253
- REQUEST_VALIDATION_FAILED = "REQUEST_VALIDATION_FAILED"
254
- }
255
- /**
256
- * 请求错误类
257
- */
258
- export declare class RequestError extends Error {
259
- /**
260
- * 错误类型
261
- */
262
- type: RequestErrorType;
263
- /**
264
- * 错误代码
265
- */
266
- code: RequestErrorCode;
267
- /**
268
- * HTTP 状态码(如果有)
269
- */
270
- status?: number;
271
- /**
272
- * 原始错误
273
- */
274
- cause?: unknown;
275
- /**
276
- * 请求配置
277
- */
278
- request?: RequestOptions;
279
- /**
280
- * 响应数据(如果有)
281
- */
282
- response?: Response;
283
- /**
284
- * 错误上下文
285
- */
286
- context?: Record<string, unknown>;
287
- constructor(message: string, type: RequestErrorType, code: RequestErrorCode, options?: {
288
- status?: number;
289
- cause?: unknown;
290
- request?: RequestOptions;
291
- response?: Response;
292
- context?: Record<string, unknown>;
293
- });
294
- }
295
- /**
296
- * 请求上下文
297
- *
298
- * @template TRequest - 请求配置类型
299
- * @template TResponse - 响应类型
300
- * @template TMeta - 元数据类型
301
- */
302
- export interface RequestContext<TRequest = RequestOptions, TResponse = Response, TMeta = Record<string, unknown>> {
303
- /**
304
- * 请求配置
305
- */
306
- request: TRequest;
307
- /**
308
- * 响应(如果已收到)
309
- */
310
- response?: TResponse;
311
- /**
312
- * 错误(如果发生)
313
- */
314
- error?: RequestError;
315
- /**
316
- * 上下文元数据(由插件注入)
317
- */
318
- meta: TMeta;
319
- /**
320
- * 请求开始时间
321
- */
322
- startTime: number;
323
- /**
324
- * 请求结束时间(如果已完成)
325
- */
326
- endTime?: number;
327
- /**
328
- * 请求耗时(毫秒)
329
- */
330
- duration?: number;
331
- /**
332
- * 重试次数
333
- */
334
- retryCount: number;
335
- /**
336
- * 是否已取消
337
- */
338
- cancelled: boolean;
339
- /**
340
- * 中止控制器
341
- */
342
- abortController?: AbortController;
343
- }
344
- /**
345
- * 适配器能力声明
346
- */
347
- export interface AdapterCapabilities {
348
- /**
349
- * 是否支持取消请求
350
- */
351
- supportsAbort?: boolean;
352
- /**
353
- * 是否支持超时
354
- */
355
- supportsTimeout?: boolean;
356
- /**
357
- * 是否支持进度追踪
358
- */
359
- supportsProgress?: boolean;
360
- /**
361
- * 是否支持拦截器
362
- */
363
- supportsInterceptors?: boolean;
364
- }
365
- /**
366
- * 请求客户端配置
367
- */
368
- export interface RequestClientConfig {
369
- /**
370
- * 基础 URL
371
- */
372
- baseURL?: string;
373
- /**
374
- * 默认请求头
375
- */
376
- defaultHeaders?: RequestHeaders;
377
- /**
378
- * 默认超时时间(毫秒)
379
- */
380
- defaultTimeout?: number;
381
- /**
382
- * 默认适配器(按需加载)
383
- * 可以是适配器名称字符串,或返回适配器的工厂函数
384
- */
385
- defaultAdapter?: string | (() => Promise<import('./adapter/RequestAdapter').RequestAdapter>);
386
- /**
387
- * 插件列表
388
- */
389
- plugins?: Array<import('./plugin/RequestPlugin').RequestPlugin>;
390
- /**
391
- * 是否启用开发模式
392
- */
393
- devMode?: boolean;
394
- }
1
+ export * from '@vlian/request/types';
@@ -0,0 +1 @@
1
+ export * from '@vlian/request/utils';
package/dist/state.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @vlian/framework v1.2.25
2
+ * @vlian/framework v1.2.36
3
3
  * Secra Framework - 一个现代化的低代码框架
4
4
  * (c) 2026 Secra Framework Contributors
5
5
  * Licensed under Apache-2.0
@@ -1,159 +1,20 @@
1
- /**
2
- * CSRF 防护工具
3
- * 提供 CSRF Token 的生成、存储和验证功能
4
- */ /**
5
- * CSRF Token 存储接口
6
- */ "use strict";
1
+ "use strict";
7
2
  Object.defineProperty(exports, "__esModule", {
8
3
  value: true
9
4
  });
10
- function _export(target, all) {
11
- for(var name in all)Object.defineProperty(target, name, {
12
- enumerable: true,
13
- get: Object.getOwnPropertyDescriptor(all, name).get
14
- });
15
- }
16
- _export(exports, {
17
- get CSRFTokenManager () {
18
- return CSRFTokenManager;
19
- },
20
- get getCSRFManager () {
21
- return getCSRFManager;
22
- },
23
- get initCSRFManager () {
24
- return initCSRFManager;
25
- }
26
- });
27
- function _define_property(obj, key, value) {
28
- if (key in obj) {
29
- Object.defineProperty(obj, key, {
30
- value: value,
31
- enumerable: true,
32
- configurable: true,
33
- writable: true
34
- });
35
- } else {
36
- obj[key] = value;
37
- }
38
- return obj;
39
- }
40
- /**
41
- * 默认 Token 存储(使用 Cookie)
42
- */ let CookieTokenStorage = class CookieTokenStorage {
43
- getToken() {
44
- if (typeof document === 'undefined') {
45
- return null;
46
- }
47
- const cookies = document.cookie.split(';');
48
- for (const cookie of cookies){
49
- const [name, value] = cookie.trim().split('=');
50
- if (name === this.cookieName) {
51
- return decodeURIComponent(value);
52
- }
53
- }
54
- return null;
55
- }
56
- setToken(token) {
57
- if (typeof document === 'undefined') {
58
- return;
5
+ _export_star(require("@vlian/csrf"), exports);
6
+ function _export_star(from, to) {
7
+ Object.keys(from).forEach(function(k) {
8
+ if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
9
+ Object.defineProperty(to, k, {
10
+ enumerable: true,
11
+ get: function() {
12
+ return from[k];
13
+ }
14
+ });
59
15
  }
60
- // 设置 Cookie(HttpOnly 由服务端设置,这里只设置客户端可访问的)
61
- document.cookie = `${this.cookieName}=${encodeURIComponent(token)}; path=/; SameSite=Strict`;
62
- }
63
- clearToken() {
64
- if (typeof document === 'undefined') {
65
- return;
66
- }
67
- document.cookie = `${this.cookieName}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
68
- }
69
- constructor(cookieName = 'csrf-token'){
70
- _define_property(this, "cookieName", void 0);
71
- this.cookieName = cookieName;
72
- }
73
- };
74
- /**
75
- * 内存 Token 存储(用于 SSR 或测试)
76
- */ let MemoryTokenStorage = class MemoryTokenStorage {
77
- getToken() {
78
- return this.token;
79
- }
80
- setToken(token) {
81
- this.token = token;
82
- }
83
- clearToken() {
84
- this.token = null;
85
- }
86
- constructor(){
87
- _define_property(this, "token", null);
88
- }
89
- };
90
- let CSRFTokenManager = class CSRFTokenManager {
91
- /**
92
- * 获取 CSRF Token
93
- */ async getToken() {
94
- if (this.getTokenFn) {
95
- try {
96
- return await Promise.resolve(this.getTokenFn());
97
- } catch (error) {
98
- console.warn('CSRF Token 获取失败:', error);
99
- return null;
100
- }
101
- }
102
- // 从存储中获取
103
- return this.storage.getToken();
104
- }
105
- /**
106
- * 设置 CSRF Token
107
- */ setToken(token) {
108
- this.storage.setToken(token);
109
- }
110
- /**
111
- * 验证 CSRF Token
112
- */ async validateToken(token) {
113
- if (this.validateTokenFn) {
114
- try {
115
- return await Promise.resolve(this.validateTokenFn(token));
116
- } catch (error) {
117
- console.warn('CSRF Token 验证失败:', error);
118
- return false;
119
- }
120
- }
121
- // 默认验证:检查存储中的 Token 是否匹配
122
- const storedToken = this.storage.getToken();
123
- return storedToken !== null && storedToken === token;
124
- }
125
- /**
126
- * 清除 CSRF Token
127
- */ clearToken() {
128
- this.storage.clearToken();
129
- }
130
- /**
131
- * 获取请求头名称
132
- */ getHeaderName() {
133
- return this.headerName;
134
- }
135
- constructor(config){
136
- _define_property(this, "storage", void 0);
137
- _define_property(this, "headerName", void 0);
138
- _define_property(this, "cookieName", void 0);
139
- _define_property(this, "getTokenFn", void 0);
140
- _define_property(this, "validateTokenFn", void 0);
141
- this.headerName = config?.headerName ?? 'X-CSRF-Token';
142
- this.cookieName = config?.cookieName ?? 'csrf-token';
143
- this.storage = config?.storage ?? (typeof document !== 'undefined' ? new CookieTokenStorage(this.cookieName) : new MemoryTokenStorage());
144
- this.getTokenFn = config?.getToken;
145
- this.validateTokenFn = config?.validateToken;
146
- }
147
- };
148
- /**
149
- * 全局 CSRF Token 管理器实例
150
- */ let globalCSRFManager = null;
151
- function initCSRFManager(config) {
152
- globalCSRFManager = new CSRFTokenManager(config);
153
- return globalCSRFManager;
154
- }
155
- function getCSRFManager() {
156
- return globalCSRFManager;
16
+ });
17
+ return from;
157
18
  }
158
19
 
159
20
  //# sourceMappingURL=csrf.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/csrf.ts"],"sourcesContent":["/**\n * CSRF 防护工具\n * 提供 CSRF Token 的生成、存储和验证功能\n */\n\n/**\n * CSRF Token 存储接口\n */\nexport interface CSRFTokenStorage {\n /**\n * 获取 Token\n */\n getToken(): string | null;\n /**\n * 设置 Token\n */\n setToken(token: string): void;\n /**\n * 清除 Token\n */\n clearToken(): void;\n}\n\n/**\n * 默认 Token 存储(使用 Cookie)\n */\nclass CookieTokenStorage implements CSRFTokenStorage {\n private cookieName: string;\n\n constructor(cookieName: string = 'csrf-token') {\n this.cookieName = cookieName;\n }\n\n getToken(): string | null {\n if (typeof document === 'undefined') {\n return null;\n }\n\n const cookies = document.cookie.split(';');\n for (const cookie of cookies) {\n const [name, value] = cookie.trim().split('=');\n if (name === this.cookieName) {\n return decodeURIComponent(value);\n }\n }\n return null;\n }\n\n setToken(token: string): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n // 设置 Cookie(HttpOnly 由服务端设置,这里只设置客户端可访问的)\n document.cookie = `${this.cookieName}=${encodeURIComponent(token)}; path=/; SameSite=Strict`;\n }\n\n clearToken(): void {\n if (typeof document === 'undefined') {\n return;\n }\n\n document.cookie = `${this.cookieName}=; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n }\n}\n\n/**\n * 内存 Token 存储(用于 SSR 或测试)\n */\nclass MemoryTokenStorage implements CSRFTokenStorage {\n private token: string | null = null;\n\n getToken(): string | null {\n return this.token;\n }\n\n setToken(token: string): void {\n this.token = token;\n }\n\n clearToken(): void {\n this.token = null;\n }\n}\n\n/**\n * CSRF Token 管理器\n */\nexport class CSRFTokenManager {\n private storage: CSRFTokenStorage;\n private headerName: string;\n private cookieName: string;\n private getTokenFn?: () => string | Promise<string>;\n private validateTokenFn?: (token: string) => boolean | Promise<boolean>;\n\n constructor(config?: {\n storage?: CSRFTokenStorage;\n headerName?: string;\n cookieName?: string;\n getToken?: () => string | Promise<string>;\n validateToken?: (token: string) => boolean | Promise<boolean>;\n }) {\n this.headerName = config?.headerName ?? 'X-CSRF-Token';\n this.cookieName = config?.cookieName ?? 'csrf-token';\n this.storage = config?.storage ?? (typeof document !== 'undefined' \n ? new CookieTokenStorage(this.cookieName)\n : new MemoryTokenStorage());\n this.getTokenFn = config?.getToken;\n this.validateTokenFn = config?.validateToken;\n }\n\n /**\n * 获取 CSRF Token\n */\n async getToken(): Promise<string | null> {\n if (this.getTokenFn) {\n try {\n return await Promise.resolve(this.getTokenFn());\n } catch (error) {\n console.warn('CSRF Token 获取失败:', error);\n return null;\n }\n }\n\n // 从存储中获取\n return this.storage.getToken();\n }\n\n /**\n * 设置 CSRF Token\n */\n setToken(token: string): void {\n this.storage.setToken(token);\n }\n\n /**\n * 验证 CSRF Token\n */\n async validateToken(token: string): Promise<boolean> {\n if (this.validateTokenFn) {\n try {\n return await Promise.resolve(this.validateTokenFn(token));\n } catch (error) {\n console.warn('CSRF Token 验证失败:', error);\n return false;\n }\n }\n\n // 默认验证:检查存储中的 Token 是否匹配\n const storedToken = this.storage.getToken();\n return storedToken !== null && storedToken === token;\n }\n\n /**\n * 清除 CSRF Token\n */\n clearToken(): void {\n this.storage.clearToken();\n }\n\n /**\n * 获取请求头名称\n */\n getHeaderName(): string {\n return this.headerName;\n }\n}\n\n/**\n * 全局 CSRF Token 管理器实例\n */\nlet globalCSRFManager: CSRFTokenManager | null = null;\n\n/**\n * 初始化 CSRF Token 管理器\n */\nexport function initCSRFManager(config?: {\n storage?: CSRFTokenStorage;\n headerName?: string;\n cookieName?: string;\n getToken?: () => string | Promise<string>;\n validateToken?: (token: string) => boolean | Promise<boolean>;\n}): CSRFTokenManager {\n globalCSRFManager = new CSRFTokenManager(config);\n return globalCSRFManager;\n}\n\n/**\n * 获取全局 CSRF Token 管理器\n */\nexport function getCSRFManager(): CSRFTokenManager | null {\n return globalCSRFManager;\n}\n"],"names":["CSRFTokenManager","getCSRFManager","initCSRFManager","CookieTokenStorage","getToken","document","cookies","cookie","split","name","value","trim","cookieName","decodeURIComponent","setToken","token","encodeURIComponent","clearToken","MemoryTokenStorage","getTokenFn","Promise","resolve","error","console","warn","storage","validateToken","validateTokenFn","storedToken","getHeaderName","headerName","config","globalCSRFManager"],"mappings":"AAAA;;;CAGC,GAED;;CAEC;;;;;;;;;;;QAiFYA;eAAAA;;QAsGGC;eAAAA;;QAdAC;eAAAA;;;;;;;;;;;;;;;;AAzJhB;;CAEC,GACD,IAAA,AAAMC,qBAAN,MAAMA;IAOJC,WAA0B;QACxB,IAAI,OAAOC,aAAa,aAAa;YACnC,OAAO;QACT;QAEA,MAAMC,UAAUD,SAASE,MAAM,CAACC,KAAK,CAAC;QACtC,KAAK,MAAMD,UAAUD,QAAS;YAC5B,MAAM,CAACG,MAAMC,MAAM,GAAGH,OAAOI,IAAI,GAAGH,KAAK,CAAC;YAC1C,IAAIC,SAAS,IAAI,CAACG,UAAU,EAAE;gBAC5B,OAAOC,mBAAmBH;YAC5B;QACF;QACA,OAAO;IACT;IAEAI,SAASC,KAAa,EAAQ;QAC5B,IAAI,OAAOV,aAAa,aAAa;YACnC;QACF;QAEA,0CAA0C;QAC1CA,SAASE,MAAM,GAAG,GAAG,IAAI,CAACK,UAAU,CAAC,CAAC,EAAEI,mBAAmBD,OAAO,yBAAyB,CAAC;IAC9F;IAEAE,aAAmB;QACjB,IAAI,OAAOZ,aAAa,aAAa;YACnC;QACF;QAEAA,SAASE,MAAM,GAAG,GAAG,IAAI,CAACK,UAAU,CAAC,gDAAgD,CAAC;IACxF;IAlCA,YAAYA,aAAqB,YAAY,CAAE;QAF/C,uBAAQA,cAAR,KAAA;QAGE,IAAI,CAACA,UAAU,GAAGA;IACpB;AAiCF;AAEA;;CAEC,GACD,IAAA,AAAMM,qBAAN,MAAMA;IAGJd,WAA0B;QACxB,OAAO,IAAI,CAACW,KAAK;IACnB;IAEAD,SAASC,KAAa,EAAQ;QAC5B,IAAI,CAACA,KAAK,GAAGA;IACf;IAEAE,aAAmB;QACjB,IAAI,CAACF,KAAK,GAAG;IACf;;QAZA,uBAAQA,SAAuB;;AAajC;AAKO,IAAA,AAAMf,mBAAN,MAAMA;IAuBX;;GAEC,GACD,MAAMI,WAAmC;QACvC,IAAI,IAAI,CAACe,UAAU,EAAE;YACnB,IAAI;gBACF,OAAO,MAAMC,QAAQC,OAAO,CAAC,IAAI,CAACF,UAAU;YAC9C,EAAE,OAAOG,OAAO;gBACdC,QAAQC,IAAI,CAAC,oBAAoBF;gBACjC,OAAO;YACT;QACF;QAEA,SAAS;QACT,OAAO,IAAI,CAACG,OAAO,CAACrB,QAAQ;IAC9B;IAEA;;GAEC,GACDU,SAASC,KAAa,EAAQ;QAC5B,IAAI,CAACU,OAAO,CAACX,QAAQ,CAACC;IACxB;IAEA;;GAEC,GACD,MAAMW,cAAcX,KAAa,EAAoB;QACnD,IAAI,IAAI,CAACY,eAAe,EAAE;YACxB,IAAI;gBACF,OAAO,MAAMP,QAAQC,OAAO,CAAC,IAAI,CAACM,eAAe,CAACZ;YACpD,EAAE,OAAOO,OAAO;gBACdC,QAAQC,IAAI,CAAC,oBAAoBF;gBACjC,OAAO;YACT;QACF;QAEA,yBAAyB;QACzB,MAAMM,cAAc,IAAI,CAACH,OAAO,CAACrB,QAAQ;QACzC,OAAOwB,gBAAgB,QAAQA,gBAAgBb;IACjD;IAEA;;GAEC,GACDE,aAAmB;QACjB,IAAI,CAACQ,OAAO,CAACR,UAAU;IACzB;IAEA;;GAEC,GACDY,gBAAwB;QACtB,OAAO,IAAI,CAACC,UAAU;IACxB;IAtEA,YAAYC,MAMX,CAAE;QAZH,uBAAQN,WAAR,KAAA;QACA,uBAAQK,cAAR,KAAA;QACA,uBAAQlB,cAAR,KAAA;QACA,uBAAQO,cAAR,KAAA;QACA,uBAAQQ,mBAAR,KAAA;QASE,IAAI,CAACG,UAAU,GAAGC,QAAQD,cAAc;QACxC,IAAI,CAAClB,UAAU,GAAGmB,QAAQnB,cAAc;QACxC,IAAI,CAACa,OAAO,GAAGM,QAAQN,WAAY,CAAA,OAAOpB,aAAa,cACnD,IAAIF,mBAAmB,IAAI,CAACS,UAAU,IACtC,IAAIM,oBAAmB;QAC3B,IAAI,CAACC,UAAU,GAAGY,QAAQ3B;QAC1B,IAAI,CAACuB,eAAe,GAAGI,QAAQL;IACjC;AAyDF;AAEA;;CAEC,GACD,IAAIM,oBAA6C;AAK1C,SAAS9B,gBAAgB6B,MAM/B;IACCC,oBAAoB,IAAIhC,iBAAiB+B;IACzC,OAAOC;AACT;AAKO,SAAS/B;IACd,OAAO+B;AACT"}
1
+ {"version":3,"sources":["../../src/utils/csrf.ts"],"sourcesContent":["export * from '@vlian/csrf';\n"],"names":[],"mappings":";;;;qBAAc"}