@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 +0,0 @@
1
- {"version":3,"sources":["../../../src/request/adapter/fetchAdapter.ts"],"sourcesContent":["/**\n * Fetch 适配器\n * \n * 基于原生 fetch API 的适配器实现\n */\n\nimport type { RequestAdapter } from './RequestAdapter';\nimport type { RequestOptions, Response } from '../types';\n\n/**\n * 创建 Fetch 适配器\n */\nexport async function fetchAdapter(): Promise<RequestAdapter> {\n if (typeof fetch === 'undefined') {\n throw new Error('fetch API 不可用');\n }\n\n return {\n name: 'fetch',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false,\n },\n\n async request<TResponse = unknown>(options: RequestOptions<TResponse>): Promise<Response<TResponse>> {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;\n\n // 构建完整 URL\n let fullUrl = url;\n if (query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n }\n const queryString = searchParams.toString();\n if (queryString) {\n fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;\n }\n }\n\n // 构建请求头\n const requestHeaders: HeadersInit = {};\n for (const [key, value] of Object.entries(headers)) {\n requestHeaders[key] = String(value);\n }\n\n // 构建请求体\n let requestBody: BodyInit | undefined;\n if (body !== undefined && body !== null) {\n if (typeof body === 'string' || body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer) {\n requestBody = body;\n } else {\n // 对象转换为 JSON\n requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';\n requestBody = JSON.stringify(body);\n }\n }\n\n // 创建中止控制器(如果支持超时)\n let abortController: AbortController | undefined;\n let timeoutId: NodeJS.Timeout | undefined;\n\n if (timeout && timeout > 0) {\n abortController = new AbortController();\n timeoutId = setTimeout(() => {\n abortController!.abort();\n }, timeout);\n }\n\n // 合并中止信号\n const abortSignal = signal || abortController?.signal;\n\n try {\n // 执行请求\n const fetchResponse = await fetch(fullUrl, {\n method,\n headers: requestHeaders,\n body: requestBody,\n signal: abortSignal,\n credentials: credentials || 'same-origin',\n });\n\n // 解析响应数据\n let data: TResponse;\n const responseType = options.responseType || 'json';\n\n switch (responseType) {\n case 'text':\n data = (await fetchResponse.text()) as TResponse;\n break;\n case 'blob':\n data = (await fetchResponse.blob()) as TResponse;\n break;\n case 'arrayBuffer':\n data = (await fetchResponse.arrayBuffer()) as TResponse;\n break;\n case 'formData':\n data = (await fetchResponse.formData()) as TResponse;\n break;\n case 'json':\n default:\n try {\n data = await fetchResponse.json() as TResponse;\n } catch {\n // 如果 JSON 解析失败,返回空对象\n data = {} as TResponse;\n }\n break;\n }\n\n // 构建响应头对象\n const responseHeaders: Record<string, string> = {};\n fetchResponse.headers.forEach((value, key) => {\n responseHeaders[key] = value;\n });\n\n // 检查 HTTP 状态码\n if (!fetchResponse.ok) {\n throw new Error(`HTTP ${fetchResponse.status} ${fetchResponse.statusText}`);\n }\n\n // 返回响应对象\n return {\n data,\n status: fetchResponse.status,\n statusText: fetchResponse.statusText,\n headers: responseHeaders,\n raw: fetchResponse,\n };\n } catch (error) {\n // 清理超时定时器\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n // 重新抛出错误\n throw error;\n }\n },\n };\n}\n"],"names":["fetchAdapter","fetch","Error","name","capabilities","supportsAbort","supportsTimeout","supportsProgress","supportsInterceptors","request","options","url","method","headers","query","body","timeout","signal","credentials","fullUrl","searchParams","URLSearchParams","key","value","Object","entries","undefined","append","String","queryString","toString","includes","requestHeaders","requestBody","FormData","Blob","ArrayBuffer","JSON","stringify","abortController","timeoutId","AbortController","setTimeout","abort","abortSignal","fetchResponse","data","responseType","text","blob","arrayBuffer","formData","json","responseHeaders","forEach","ok","status","statusText","raw","error","clearTimeout"],"mappings":"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"}
@@ -1,80 +0,0 @@
1
- /**
2
- * 适配器模块导出
3
- */ "use strict";
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- function _export(target, all) {
8
- for(var name in all)Object.defineProperty(target, name, {
9
- enumerable: true,
10
- get: Object.getOwnPropertyDescriptor(all, name).get
11
- });
12
- }
13
- _export(exports, {
14
- get adapterRegistry () {
15
- return _RequestAdapter.adapterRegistry;
16
- },
17
- get axiosAdapter () {
18
- return _axiosAdapter.axiosAdapter;
19
- },
20
- get fetchAdapter () {
21
- return _fetchAdapter.fetchAdapter;
22
- },
23
- get kyAdapter () {
24
- return _kyAdapter.kyAdapter;
25
- },
26
- get undiciAdapter () {
27
- return undiciAdapter;
28
- }
29
- });
30
- const _RequestAdapter = require("./RequestAdapter");
31
- const _fetchAdapter = require("./fetchAdapter");
32
- const _kyAdapter = require("./kyAdapter");
33
- const _axiosAdapter = require("./axiosAdapter");
34
- function _getRequireWildcardCache(nodeInterop) {
35
- if (typeof WeakMap !== "function") return null;
36
- var cacheBabelInterop = new WeakMap();
37
- var cacheNodeInterop = new WeakMap();
38
- return (_getRequireWildcardCache = function(nodeInterop) {
39
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
40
- })(nodeInterop);
41
- }
42
- function _interop_require_wildcard(obj, nodeInterop) {
43
- if (!nodeInterop && obj && obj.__esModule) {
44
- return obj;
45
- }
46
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
47
- return {
48
- default: obj
49
- };
50
- }
51
- var cache = _getRequireWildcardCache(nodeInterop);
52
- if (cache && cache.has(obj)) {
53
- return cache.get(obj);
54
- }
55
- var newObj = {
56
- __proto__: null
57
- };
58
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
59
- for(var key in obj){
60
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
61
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
62
- if (desc && (desc.get || desc.set)) {
63
- Object.defineProperty(newObj, key, desc);
64
- } else {
65
- newObj[key] = obj[key];
66
- }
67
- }
68
- }
69
- newObj.default = obj;
70
- if (cache) {
71
- cache.set(obj, newObj);
72
- }
73
- return newObj;
74
- }
75
- async function undiciAdapter() {
76
- const { undiciAdapter: adapter } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./undiciAdapter")));
77
- return adapter();
78
- }
79
-
80
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/request/adapter/index.ts"],"sourcesContent":["/**\n * 适配器模块导出\n */\n\nexport type { RequestAdapter, AdapterFactory } from './RequestAdapter';\nexport { adapterRegistry } from './RequestAdapter';\n\n// 导出适配器工厂函数(按需加载)\nexport { fetchAdapter } from './fetchAdapter';\nexport { kyAdapter } from './kyAdapter';\nexport { axiosAdapter } from './axiosAdapter';\n\n// undiciAdapter 使用懒加载,避免在未使用时触发依赖检查\nexport async function undiciAdapter() {\n const { undiciAdapter: adapter } = await import('./undiciAdapter');\n return adapter();\n}\n"],"names":["adapterRegistry","axiosAdapter","fetchAdapter","kyAdapter","undiciAdapter","adapter"],"mappings":"AAAA;;CAEC;;;;;;;;;;;QAGQA;eAAAA,+BAAe;;QAKfC;eAAAA,0BAAY;;QAFZC;eAAAA,0BAAY;;QACZC;eAAAA,oBAAS;;QAIIC;eAAAA;;;gCARU;8BAGH;2BACH;8BACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGtB,eAAeA;IACpB,MAAM,EAAEA,eAAeC,OAAO,EAAE,GAAG,MAAM,mEAAA,QAAO;IAChD,OAAOA;AACT"}
@@ -1,191 +0,0 @@
1
- /**
2
- * Ky 适配器
3
- *
4
- * 基于 ky 库的适配器实现(浏览器环境)
5
- */ "use strict";
6
- Object.defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- Object.defineProperty(exports, "kyAdapter", {
10
- enumerable: true,
11
- get: function() {
12
- return kyAdapter;
13
- }
14
- });
15
- function _getRequireWildcardCache(nodeInterop) {
16
- if (typeof WeakMap !== "function") return null;
17
- var cacheBabelInterop = new WeakMap();
18
- var cacheNodeInterop = new WeakMap();
19
- return (_getRequireWildcardCache = function(nodeInterop) {
20
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
21
- })(nodeInterop);
22
- }
23
- function _interop_require_wildcard(obj, nodeInterop) {
24
- if (!nodeInterop && obj && obj.__esModule) {
25
- return obj;
26
- }
27
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
28
- return {
29
- default: obj
30
- };
31
- }
32
- var cache = _getRequireWildcardCache(nodeInterop);
33
- if (cache && cache.has(obj)) {
34
- return cache.get(obj);
35
- }
36
- var newObj = {
37
- __proto__: null
38
- };
39
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
- for(var key in obj){
41
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
42
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
43
- if (desc && (desc.get || desc.set)) {
44
- Object.defineProperty(newObj, key, desc);
45
- } else {
46
- newObj[key] = obj[key];
47
- }
48
- }
49
- }
50
- newObj.default = obj;
51
- if (cache) {
52
- cache.set(obj, newObj);
53
- }
54
- return newObj;
55
- }
56
- async function kyAdapter() {
57
- // 动态导入 ky(按需加载)
58
- // 使用多种方式尝试导入,以兼容不同的构建工具
59
- let ky;
60
- let importError = null;
61
- // 方法1:使用 Function 构造函数(避免构建时解析)
62
- try {
63
- // @ts-ignore - ky 是可选依赖
64
- ky = await new Function('return import("ky")')();
65
- } catch (error) {
66
- importError = error;
67
- // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)
68
- try {
69
- // @ts-ignore - ky 是可选依赖
70
- ky = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("ky")));
71
- } catch (error2) {
72
- importError = error2;
73
- }
74
- }
75
- // 如果两种方法都失败,检查是否是模块未找到错误
76
- if (!ky || !ky.default) {
77
- if (importError instanceof Error) {
78
- const errorMessage = importError.message.toLowerCase();
79
- // 检查是否是模块未找到相关的错误
80
- const isModuleNotFound = errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('failed to fetch dynamically imported module') || errorMessage.includes('loading chunk') || errorMessage.includes('networkerror') || errorMessage.includes('ky') && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'));
81
- if (isModuleNotFound) {
82
- // 模块未找到,抛出友好的依赖缺失错误
83
- const { createDependencyError } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../utils/dependencyCheck")));
84
- const errorMessage = createDependencyError('ky', {
85
- adapterName: 'ky',
86
- environment: 'browser'
87
- });
88
- throw new Error(errorMessage);
89
- }
90
- }
91
- throw new Error('ky 库导入失败,请检查安装是否正确');
92
- }
93
- const kyInstance = ky.default;
94
- return {
95
- name: 'ky',
96
- capabilities: {
97
- supportsAbort: true,
98
- supportsTimeout: true,
99
- supportsProgress: false,
100
- supportsInterceptors: false
101
- },
102
- async request (options) {
103
- const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;
104
- // 构建 ky 选项
105
- const kyOptions = {
106
- method: method,
107
- headers: headers,
108
- searchParams: query,
109
- json: typeof body === 'object' && body !== null && !(body instanceof FormData) ? body : undefined,
110
- body: body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer ? body : undefined,
111
- timeout: timeout,
112
- signal: signal,
113
- credentials: credentials,
114
- retry: 0
115
- };
116
- try {
117
- // 执行请求
118
- const kyResponse = await kyInstance(url, kyOptions);
119
- // 解析响应数据
120
- let data;
121
- const responseType = options.responseType || 'json';
122
- switch(responseType){
123
- case 'text':
124
- data = await kyResponse.text();
125
- break;
126
- case 'blob':
127
- data = await kyResponse.blob();
128
- break;
129
- case 'arrayBuffer':
130
- data = await kyResponse.arrayBuffer();
131
- break;
132
- case 'formData':
133
- data = await kyResponse.formData();
134
- break;
135
- case 'json':
136
- default:
137
- // @ts-ignore - ky 类型定义
138
- data = await kyResponse.json();
139
- break;
140
- }
141
- // 构建响应头对象
142
- const responseHeaders = {};
143
- kyResponse.headers.forEach((value, key)=>{
144
- responseHeaders[key] = value;
145
- });
146
- // 返回响应对象
147
- return {
148
- data,
149
- status: kyResponse.status,
150
- statusText: kyResponse.statusText,
151
- headers: responseHeaders,
152
- raw: kyResponse
153
- };
154
- } catch (error) {
155
- // ky 的错误处理
156
- if (error.response) {
157
- // HTTP 错误
158
- const status = error.response.status;
159
- const statusText = error.response.statusText || '';
160
- // 尝试解析错误响应体
161
- let errorData;
162
- try {
163
- errorData = await error.response.json();
164
- } catch {
165
- try {
166
- errorData = await error.response.text();
167
- } catch {
168
- errorData = null;
169
- }
170
- }
171
- throw {
172
- message: `HTTP ${status} ${statusText}`,
173
- status,
174
- statusText,
175
- response: {
176
- data: errorData,
177
- status,
178
- statusText,
179
- headers: {}
180
- },
181
- request: options
182
- };
183
- }
184
- // 其他错误
185
- throw error;
186
- }
187
- }
188
- };
189
- }
190
-
191
- //# sourceMappingURL=kyAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/request/adapter/kyAdapter.ts"],"sourcesContent":["/**\n * Ky 适配器\n * \n * 基于 ky 库的适配器实现(浏览器环境)\n */\n\nimport type { RequestAdapter } from './RequestAdapter';\nimport type { RequestOptions, Response } from '../types';\n\n/**\n * 创建 Ky 适配器\n */\nexport async function kyAdapter(): Promise<RequestAdapter> {\n // 动态导入 ky(按需加载)\n // 使用多种方式尝试导入,以兼容不同的构建工具\n let ky: any;\n let importError: unknown = null;\n\n // 方法1:使用 Function 构造函数(避免构建时解析)\n try {\n // @ts-ignore - ky 是可选依赖\n ky = await new Function('return import(\"ky\")')();\n } catch (error) {\n importError = error;\n // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)\n try {\n // @ts-ignore - ky 是可选依赖\n ky = await import('ky');\n } catch (error2) {\n importError = error2;\n }\n }\n\n // 如果两种方法都失败,检查是否是模块未找到错误\n if (!ky || !ky.default) {\n if (importError instanceof Error) {\n const errorMessage = importError.message.toLowerCase();\n // 检查是否是模块未找到相关的错误\n const isModuleNotFound = \n errorMessage.includes('cannot find module') ||\n errorMessage.includes('cannot resolve') ||\n errorMessage.includes('module not found') ||\n errorMessage.includes('failed to resolve') ||\n errorMessage.includes('does not exist') ||\n errorMessage.includes('failed to fetch dynamically imported module') ||\n errorMessage.includes('loading chunk') ||\n errorMessage.includes('networkerror') ||\n (errorMessage.includes('ky') && (\n errorMessage.includes('resolve') ||\n errorMessage.includes('find') ||\n errorMessage.includes('not found')\n ));\n\n if (isModuleNotFound) {\n // 模块未找到,抛出友好的依赖缺失错误\n const { createDependencyError } = await import('../utils/dependencyCheck');\n const errorMessage = createDependencyError('ky', {\n adapterName: 'ky',\n environment: 'browser',\n });\n throw new Error(errorMessage);\n }\n }\n throw new Error('ky 库导入失败,请检查安装是否正确');\n }\n\n const kyInstance = ky.default;\n\n return {\n name: 'ky',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false,\n },\n\n async request<TResponse = unknown>(options: RequestOptions<TResponse>): Promise<Response<TResponse>> {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;\n\n // 构建 ky 选项\n const kyOptions: Parameters<typeof kyInstance>[1] = {\n method: method as any,\n headers: headers as Record<string, string>,\n searchParams: query as Record<string, string | number | boolean>,\n json: typeof body === 'object' && body !== null && !(body instanceof FormData) ? body : undefined,\n body: body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer ? body : undefined,\n timeout: timeout,\n signal: signal,\n credentials: credentials,\n retry: 0, // 禁用 ky 的重试,由插件系统处理\n };\n\n try {\n // 执行请求\n const kyResponse = await kyInstance(url, kyOptions);\n\n // 解析响应数据\n let data: TResponse;\n const responseType = options.responseType || 'json';\n\n switch (responseType) {\n case 'text':\n data = (await kyResponse.text()) as TResponse;\n break;\n case 'blob':\n data = (await kyResponse.blob()) as TResponse;\n break;\n case 'arrayBuffer':\n data = (await kyResponse.arrayBuffer()) as TResponse;\n break;\n case 'formData':\n data = (await kyResponse.formData()) as TResponse;\n break;\n case 'json':\n default:\n // @ts-ignore - ky 类型定义\n data = await kyResponse.json<TResponse>();\n break;\n }\n\n // 构建响应头对象\n const responseHeaders: Record<string, string> = {};\n kyResponse.headers.forEach((value: string, key: string) => {\n responseHeaders[key] = value;\n });\n\n // 返回响应对象\n return {\n data,\n status: kyResponse.status,\n statusText: kyResponse.statusText,\n headers: responseHeaders,\n raw: kyResponse,\n };\n } catch (error: any) {\n // ky 的错误处理\n if (error.response) {\n // HTTP 错误\n const status = error.response.status;\n const statusText = error.response.statusText || '';\n\n // 尝试解析错误响应体\n let errorData: unknown;\n try {\n errorData = await error.response.json();\n } catch {\n try {\n errorData = await error.response.text();\n } catch {\n errorData = null;\n }\n }\n\n throw {\n message: `HTTP ${status} ${statusText}`,\n status,\n statusText,\n response: {\n data: errorData,\n status,\n statusText,\n headers: {},\n },\n request: options,\n };\n }\n\n // 其他错误\n throw error;\n }\n },\n };\n}\n"],"names":["kyAdapter","ky","importError","Function","error","error2","default","Error","errorMessage","message","toLowerCase","isModuleNotFound","includes","createDependencyError","adapterName","environment","kyInstance","name","capabilities","supportsAbort","supportsTimeout","supportsProgress","supportsInterceptors","request","options","url","method","headers","query","body","timeout","signal","credentials","kyOptions","searchParams","json","FormData","undefined","URLSearchParams","Blob","ArrayBuffer","retry","kyResponse","data","responseType","text","blob","arrayBuffer","formData","responseHeaders","forEach","value","key","status","statusText","raw","response","errorData"],"mappings":"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"}
@@ -1,213 +0,0 @@
1
- /**
2
- * Undici 适配器
3
- *
4
- * 基于 undici 库的适配器实现(Node.js 环境,高性能)
5
- */ "use strict";
6
- Object.defineProperty(exports, "__esModule", {
7
- value: true
8
- });
9
- Object.defineProperty(exports, "undiciAdapter", {
10
- enumerable: true,
11
- get: function() {
12
- return undiciAdapter;
13
- }
14
- });
15
- function _getRequireWildcardCache(nodeInterop) {
16
- if (typeof WeakMap !== "function") return null;
17
- var cacheBabelInterop = new WeakMap();
18
- var cacheNodeInterop = new WeakMap();
19
- return (_getRequireWildcardCache = function(nodeInterop) {
20
- return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
21
- })(nodeInterop);
22
- }
23
- function _interop_require_wildcard(obj, nodeInterop) {
24
- if (!nodeInterop && obj && obj.__esModule) {
25
- return obj;
26
- }
27
- if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
28
- return {
29
- default: obj
30
- };
31
- }
32
- var cache = _getRequireWildcardCache(nodeInterop);
33
- if (cache && cache.has(obj)) {
34
- return cache.get(obj);
35
- }
36
- var newObj = {
37
- __proto__: null
38
- };
39
- var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
40
- for(var key in obj){
41
- if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
42
- var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
43
- if (desc && (desc.get || desc.set)) {
44
- Object.defineProperty(newObj, key, desc);
45
- } else {
46
- newObj[key] = obj[key];
47
- }
48
- }
49
- }
50
- newObj.default = obj;
51
- if (cache) {
52
- cache.set(obj, newObj);
53
- }
54
- return newObj;
55
- }
56
- async function undiciAdapter() {
57
- // 动态导入 undici(按需加载)
58
- // 使用多种方式尝试导入,以兼容不同的构建工具
59
- let undici;
60
- let importError = null;
61
- // 方法1:使用 Function 构造函数(避免构建时解析)
62
- try {
63
- // @ts-ignore - undici 是可选依赖
64
- undici = await new Function('return import("undici")')();
65
- } catch (error) {
66
- importError = error;
67
- // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)
68
- try {
69
- // @ts-ignore - undici 是可选依赖
70
- undici = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("undici")));
71
- } catch (error2) {
72
- importError = error2;
73
- }
74
- }
75
- // 如果两种方法都失败,检查是否是模块未找到错误
76
- if (!undici || !undici.request) {
77
- if (importError instanceof Error) {
78
- const errorMessage = importError.message.toLowerCase();
79
- // 检查是否是模块未找到相关的错误
80
- const isModuleNotFound = errorMessage.includes('cannot find module') || errorMessage.includes('cannot resolve') || errorMessage.includes('module not found') || errorMessage.includes('failed to resolve') || errorMessage.includes('does not exist') || errorMessage.includes('failed to fetch dynamically imported module') || errorMessage.includes('loading chunk') || errorMessage.includes('networkerror') || errorMessage.includes('undici') && (errorMessage.includes('resolve') || errorMessage.includes('find') || errorMessage.includes('not found'));
81
- if (isModuleNotFound) {
82
- // 模块未找到,抛出友好的依赖缺失错误
83
- const { createDependencyError } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../utils/dependencyCheck")));
84
- const errorMessage = createDependencyError('undici', {
85
- adapterName: 'undici',
86
- environment: 'node'
87
- });
88
- throw new Error(errorMessage);
89
- }
90
- }
91
- throw new Error('undici 库导入失败,请检查安装是否正确');
92
- }
93
- return {
94
- name: 'undici',
95
- capabilities: {
96
- supportsAbort: true,
97
- supportsTimeout: true,
98
- supportsProgress: false,
99
- supportsInterceptors: false
100
- },
101
- async request (options) {
102
- const { url, method = 'GET', headers = {}, query, body, timeout, signal } = options;
103
- // 构建完整 URL
104
- let fullUrl = url;
105
- if (query) {
106
- const searchParams = new URLSearchParams();
107
- for (const [key, value] of Object.entries(query)){
108
- if (value !== null && value !== undefined) {
109
- searchParams.append(key, String(value));
110
- }
111
- }
112
- const queryString = searchParams.toString();
113
- if (queryString) {
114
- fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;
115
- }
116
- }
117
- // 构建请求头
118
- const requestHeaders = {};
119
- for (const [key, value] of Object.entries(headers)){
120
- requestHeaders[key] = String(value);
121
- }
122
- // 构建请求体
123
- let requestBody;
124
- if (body !== undefined && body !== null) {
125
- if (typeof body === 'string') {
126
- requestBody = body;
127
- } else if (body instanceof ArrayBuffer) {
128
- requestBody = Buffer.from(body);
129
- } else if (Buffer.isBuffer(body)) {
130
- requestBody = body;
131
- } else {
132
- // 对象转换为 JSON
133
- requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';
134
- requestBody = JSON.stringify(body);
135
- }
136
- }
137
- // 构建 undici 选项
138
- // @ts-ignore - undici 类型定义
139
- const undiciOptions = {
140
- method: method,
141
- headers: requestHeaders,
142
- body: requestBody,
143
- signal: signal
144
- };
145
- // 如果设置了超时,使用 AbortController
146
- let abortController;
147
- let timeoutId;
148
- if (timeout && timeout > 0) {
149
- abortController = new AbortController();
150
- timeoutId = setTimeout(()=>{
151
- abortController.abort();
152
- }, timeout);
153
- undiciOptions.signal = abortController.signal;
154
- }
155
- try {
156
- // 执行请求
157
- const undiciResponse = await undici.request(fullUrl, undiciOptions);
158
- // 解析响应数据
159
- let data;
160
- const responseType = options.responseType || 'json';
161
- switch(responseType){
162
- case 'text':
163
- data = await undiciResponse.body.text();
164
- break;
165
- case 'blob':
166
- data = await undiciResponse.body.blob();
167
- break;
168
- case 'arrayBuffer':
169
- data = await undiciResponse.body.arrayBuffer();
170
- break;
171
- case 'formData':
172
- data = await undiciResponse.body.formData();
173
- break;
174
- case 'json':
175
- default:
176
- try {
177
- data = await undiciResponse.body.json();
178
- } catch {
179
- // 如果 JSON 解析失败,返回空对象
180
- data = {};
181
- }
182
- break;
183
- }
184
- // 构建响应头对象
185
- const responseHeaders = {};
186
- for (const [key, value] of Object.entries(undiciResponse.headers)){
187
- responseHeaders[key] = Array.isArray(value) ? value.join(', ') : String(value);
188
- }
189
- // 检查 HTTP 状态码
190
- if (undiciResponse.statusCode >= 400) {
191
- throw new Error(`HTTP ${undiciResponse.statusCode} ${undiciResponse.statusText || ''}`);
192
- }
193
- // 返回响应对象
194
- return {
195
- data,
196
- status: undiciResponse.statusCode,
197
- statusText: undiciResponse.statusText || '',
198
- headers: responseHeaders,
199
- raw: undiciResponse
200
- };
201
- } catch (error) {
202
- // 清理超时定时器
203
- if (timeoutId) {
204
- clearTimeout(timeoutId);
205
- }
206
- // 重新抛出错误
207
- throw error;
208
- }
209
- }
210
- };
211
- }
212
-
213
- //# sourceMappingURL=undiciAdapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/request/adapter/undiciAdapter.ts"],"sourcesContent":["/**\n * Undici 适配器\n * \n * 基于 undici 库的适配器实现(Node.js 环境,高性能)\n */\n\nimport type { RequestAdapter } from './RequestAdapter';\nimport type { RequestOptions, Response } from '../types';\n\n/**\n * 创建 Undici 适配器\n */\nexport async function undiciAdapter(): Promise<RequestAdapter> {\n // 动态导入 undici(按需加载)\n // 使用多种方式尝试导入,以兼容不同的构建工具\n let undici: any;\n let importError: unknown = null;\n\n // 方法1:使用 Function 构造函数(避免构建时解析)\n try {\n // @ts-ignore - undici 是可选依赖\n undici = await new Function('return import(\"undici\")')();\n } catch (error) {\n importError = error;\n // 方法2:直接使用动态导入(某些构建工具可能需要这种方式)\n try {\n // @ts-ignore - undici 是可选依赖\n undici = await import('undici');\n } catch (error2) {\n importError = error2;\n }\n }\n\n // 如果两种方法都失败,检查是否是模块未找到错误\n if (!undici || !undici.request) {\n if (importError instanceof Error) {\n const errorMessage = importError.message.toLowerCase();\n // 检查是否是模块未找到相关的错误\n const isModuleNotFound = \n errorMessage.includes('cannot find module') ||\n errorMessage.includes('cannot resolve') ||\n errorMessage.includes('module not found') ||\n errorMessage.includes('failed to resolve') ||\n errorMessage.includes('does not exist') ||\n errorMessage.includes('failed to fetch dynamically imported module') ||\n errorMessage.includes('loading chunk') ||\n errorMessage.includes('networkerror') ||\n (errorMessage.includes('undici') && (\n errorMessage.includes('resolve') ||\n errorMessage.includes('find') ||\n errorMessage.includes('not found')\n ));\n\n if (isModuleNotFound) {\n // 模块未找到,抛出友好的依赖缺失错误\n const { createDependencyError } = await import('../utils/dependencyCheck');\n const errorMessage = createDependencyError('undici', {\n adapterName: 'undici',\n environment: 'node',\n });\n throw new Error(errorMessage);\n }\n }\n throw new Error('undici 库导入失败,请检查安装是否正确');\n }\n\n return {\n name: 'undici',\n capabilities: {\n supportsAbort: true,\n supportsTimeout: true,\n supportsProgress: false,\n supportsInterceptors: false,\n },\n\n async request<TResponse = unknown>(options: RequestOptions<TResponse>): Promise<Response<TResponse>> {\n const { url, method = 'GET', headers = {}, query, body, timeout, signal } = options;\n\n // 构建完整 URL\n let fullUrl = url;\n if (query) {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(query)) {\n if (value !== null && value !== undefined) {\n searchParams.append(key, String(value));\n }\n }\n const queryString = searchParams.toString();\n if (queryString) {\n fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;\n }\n }\n\n // 构建请求头\n const requestHeaders: Record<string, string> = {};\n for (const [key, value] of Object.entries(headers)) {\n requestHeaders[key] = String(value);\n }\n\n // 构建请求体\n let requestBody: string | Buffer | undefined;\n if (body !== undefined && body !== null) {\n if (typeof body === 'string') {\n requestBody = body;\n } else if (body instanceof ArrayBuffer) {\n requestBody = Buffer.from(body);\n } else if (Buffer.isBuffer(body)) {\n requestBody = body;\n } else {\n // 对象转换为 JSON\n requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';\n requestBody = JSON.stringify(body);\n }\n }\n\n // 构建 undici 选项\n // @ts-ignore - undici 类型定义\n const undiciOptions: any = {\n method: method as any,\n headers: requestHeaders,\n body: requestBody,\n signal: signal,\n };\n\n // 如果设置了超时,使用 AbortController\n let abortController: AbortController | undefined;\n let timeoutId: NodeJS.Timeout | undefined;\n\n if (timeout && timeout > 0) {\n abortController = new AbortController();\n timeoutId = setTimeout(() => {\n abortController!.abort();\n }, timeout);\n undiciOptions.signal = abortController.signal;\n }\n\n try {\n // 执行请求\n const undiciResponse = await undici.request(fullUrl, undiciOptions);\n\n // 解析响应数据\n let data: TResponse;\n const responseType = options.responseType || 'json';\n\n switch (responseType) {\n case 'text':\n data = (await undiciResponse.body.text()) as TResponse;\n break;\n case 'blob':\n data = (await undiciResponse.body.blob()) as TResponse;\n break;\n case 'arrayBuffer':\n data = (await undiciResponse.body.arrayBuffer()) as TResponse;\n break;\n case 'formData':\n data = (await undiciResponse.body.formData()) as TResponse;\n break;\n case 'json':\n default:\n try {\n data = await undiciResponse.body.json() as TResponse;\n } catch {\n // 如果 JSON 解析失败,返回空对象\n data = {} as TResponse;\n }\n break;\n }\n\n // 构建响应头对象\n const responseHeaders: Record<string, string> = {};\n for (const [key, value] of Object.entries(undiciResponse.headers)) {\n responseHeaders[key] = Array.isArray(value) ? value.join(', ') : String(value);\n }\n\n // 检查 HTTP 状态码\n if (undiciResponse.statusCode >= 400) {\n throw new Error(`HTTP ${undiciResponse.statusCode} ${undiciResponse.statusText || ''}`);\n }\n\n // 返回响应对象\n return {\n data,\n status: undiciResponse.statusCode,\n statusText: undiciResponse.statusText || '',\n headers: responseHeaders,\n raw: undiciResponse,\n };\n } catch (error) {\n // 清理超时定时器\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n\n // 重新抛出错误\n throw error;\n }\n },\n };\n}\n"],"names":["undiciAdapter","undici","importError","Function","error","error2","request","Error","errorMessage","message","toLowerCase","isModuleNotFound","includes","createDependencyError","adapterName","environment","name","capabilities","supportsAbort","supportsTimeout","supportsProgress","supportsInterceptors","options","url","method","headers","query","body","timeout","signal","fullUrl","searchParams","URLSearchParams","key","value","Object","entries","undefined","append","String","queryString","toString","requestHeaders","requestBody","ArrayBuffer","Buffer","from","isBuffer","JSON","stringify","undiciOptions","abortController","timeoutId","AbortController","setTimeout","abort","undiciResponse","data","responseType","text","blob","arrayBuffer","formData","json","responseHeaders","Array","isArray","join","statusCode","statusText","status","raw","clearTimeout"],"mappings":"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"}