@vlian/framework 1.2.25 → 1.2.38

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 (319) hide show
  1. package/dist/analytics.umd.js +208 -2395
  2. package/dist/analytics.umd.js.map +1 -1
  3. package/dist/core/Test.cjs +2 -2
  4. package/dist/core/Test.cjs.map +1 -1
  5. package/dist/core/Test.js +1 -1
  6. package/dist/core/Test.js.map +1 -1
  7. package/dist/core/config/ConfigLoader.cjs +7 -7
  8. package/dist/core/config/ConfigLoader.cjs.map +1 -1
  9. package/dist/core/config/ConfigLoader.js +1 -1
  10. package/dist/core/config/ConfigLoader.js.map +1 -1
  11. package/dist/core/error/ErrorBoundary.cjs +6 -6
  12. package/dist/core/error/ErrorBoundary.cjs.map +1 -1
  13. package/dist/core/error/ErrorBoundary.d.ts +1 -1
  14. package/dist/core/error/ErrorBoundary.js +2 -2
  15. package/dist/core/error/ErrorBoundary.js.map +1 -1
  16. package/dist/core/error/ErrorHandler.cjs +19 -19
  17. package/dist/core/error/ErrorHandler.cjs.map +1 -1
  18. package/dist/core/error/ErrorHandler.d.ts +2 -2
  19. package/dist/core/error/ErrorHandler.js +2 -2
  20. package/dist/core/error/ErrorHandler.js.map +1 -1
  21. package/dist/core/event/AppEventBus.cjs +5 -5
  22. package/dist/core/event/AppEventBus.cjs.map +1 -1
  23. package/dist/core/event/AppEventBus.js +1 -1
  24. package/dist/core/event/AppEventBus.js.map +1 -1
  25. package/dist/core/initialization/InitializationErrorThrower.cjs.map +1 -1
  26. package/dist/core/initialization/InitializationErrorThrower.js.map +1 -1
  27. package/dist/core/initialization/initialization.cjs +3 -3
  28. package/dist/core/initialization/initialization.cjs.map +1 -1
  29. package/dist/core/initialization/initialization.d.ts +1 -1
  30. package/dist/core/initialization/initialization.js +1 -1
  31. package/dist/core/initialization/initialization.js.map +1 -1
  32. package/dist/core/initialization/initializationErrorState.cjs +2 -2
  33. package/dist/core/initialization/initializationErrorState.cjs.map +1 -1
  34. package/dist/core/initialization/initializationErrorState.d.ts +1 -1
  35. package/dist/core/initialization/initializationErrorState.js +1 -1
  36. package/dist/core/initialization/initializationErrorState.js.map +1 -1
  37. package/dist/core/kernel/defaultAdapters.cjs +14 -13
  38. package/dist/core/kernel/defaultAdapters.cjs.map +1 -1
  39. package/dist/core/kernel/defaultAdapters.js +2 -1
  40. package/dist/core/kernel/defaultAdapters.js.map +1 -1
  41. package/dist/core/kernel/types.d.ts +1 -1
  42. package/dist/core/kernel/types.js.map +1 -1
  43. package/dist/core/router/RouterManager.cjs +9 -9
  44. package/dist/core/router/RouterManager.cjs.map +1 -1
  45. package/dist/core/router/RouterManager.js +1 -1
  46. package/dist/core/router/RouterManager.js.map +1 -1
  47. package/dist/core/router/adapter/AdapterManager.cjs +10 -10
  48. package/dist/core/router/adapter/AdapterManager.cjs.map +1 -1
  49. package/dist/core/router/adapter/AdapterManager.js +1 -1
  50. package/dist/core/router/adapter/AdapterManager.js.map +1 -1
  51. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs +4 -4
  52. package/dist/core/router/adapter/react-router/ReactRouterAdapter.cjs.map +1 -1
  53. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js +1 -1
  54. package/dist/core/router/adapter/react-router/ReactRouterAdapter.js.map +1 -1
  55. package/dist/core/router/dynamic/DynamicRouteManager.cjs +8 -8
  56. package/dist/core/router/dynamic/DynamicRouteManager.cjs.map +1 -1
  57. package/dist/core/router/dynamic/DynamicRouteManager.js +1 -1
  58. package/dist/core/router/dynamic/DynamicRouteManager.js.map +1 -1
  59. package/dist/core/router/errors/RouterError.cjs +4 -4
  60. package/dist/core/router/errors/RouterError.cjs.map +1 -1
  61. package/dist/core/router/errors/RouterError.d.ts +1 -1
  62. package/dist/core/router/errors/RouterError.js +1 -1
  63. package/dist/core/router/errors/RouterError.js.map +1 -1
  64. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs +8 -8
  65. package/dist/core/router/lifecycle/RouterLifecycleManager.cjs.map +1 -1
  66. package/dist/core/router/lifecycle/RouterLifecycleManager.js +1 -1
  67. package/dist/core/router/lifecycle/RouterLifecycleManager.js.map +1 -1
  68. package/dist/core/router/middleware/RouterMiddlewareManager.cjs +11 -11
  69. package/dist/core/router/middleware/RouterMiddlewareManager.cjs.map +1 -1
  70. package/dist/core/router/middleware/RouterMiddlewareManager.js +1 -1
  71. package/dist/core/router/middleware/RouterMiddlewareManager.js.map +1 -1
  72. package/dist/core/router/middleware/auth.cjs +4 -4
  73. package/dist/core/router/middleware/auth.cjs.map +1 -1
  74. package/dist/core/router/middleware/auth.js +1 -1
  75. package/dist/core/router/middleware/auth.js.map +1 -1
  76. package/dist/core/router/monitoring/RouterMonitoring.cjs +2 -2
  77. package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
  78. package/dist/core/router/monitoring/RouterMonitoring.js +2 -2
  79. package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
  80. package/dist/core/router/navigation/RouterNavigation.cjs +7 -7
  81. package/dist/core/router/navigation/RouterNavigation.cjs.map +1 -1
  82. package/dist/core/router/navigation/RouterNavigation.js +1 -1
  83. package/dist/core/router/navigation/RouterNavigation.js.map +1 -1
  84. package/dist/core/router/performance/RouteCache.cjs +7 -7
  85. package/dist/core/router/performance/RouteCache.cjs.map +1 -1
  86. package/dist/core/router/performance/RouteCache.js +1 -1
  87. package/dist/core/router/performance/RouteCache.js.map +1 -1
  88. package/dist/core/router/performance/RoutePreloader.cjs +6 -6
  89. package/dist/core/router/performance/RoutePreloader.cjs.map +1 -1
  90. package/dist/core/router/performance/RoutePreloader.js +1 -1
  91. package/dist/core/router/performance/RoutePreloader.js.map +1 -1
  92. package/dist/core/router/plugin/RouterPluginManager.cjs +8 -8
  93. package/dist/core/router/plugin/RouterPluginManager.cjs.map +1 -1
  94. package/dist/core/router/plugin/RouterPluginManager.js +1 -1
  95. package/dist/core/router/plugin/RouterPluginManager.js.map +1 -1
  96. package/dist/core/router/utils/adapters/react-router/transform.cjs +6 -2
  97. package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
  98. package/dist/core/router/utils/adapters/react-router/transform.js +5 -1
  99. package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
  100. package/dist/core/router/utils/transform.cjs +13 -12
  101. package/dist/core/router/utils/transform.cjs.map +1 -1
  102. package/dist/core/router/utils/transform.js +2 -1
  103. package/dist/core/router/utils/transform.js.map +1 -1
  104. package/dist/core/router/validation/RouterConfigValidator.cjs +2 -2
  105. package/dist/core/router/validation/RouterConfigValidator.cjs.map +1 -1
  106. package/dist/core/router/validation/RouterConfigValidator.js +1 -1
  107. package/dist/core/router/validation/RouterConfigValidator.js.map +1 -1
  108. package/dist/core/router/version/RouteVersionManager.cjs +6 -6
  109. package/dist/core/router/version/RouteVersionManager.cjs.map +1 -1
  110. package/dist/core/router/version/RouteVersionManager.js +1 -1
  111. package/dist/core/router/version/RouteVersionManager.js.map +1 -1
  112. package/dist/core/splash/SplashScreen.cjs +4 -4
  113. package/dist/core/splash/SplashScreen.cjs.map +1 -1
  114. package/dist/core/splash/SplashScreen.js +1 -1
  115. package/dist/core/splash/SplashScreen.js.map +1 -1
  116. package/dist/core/startup/initializeServices.cjs +15 -15
  117. package/dist/core/startup/initializeServices.cjs.map +1 -1
  118. package/dist/core/startup/initializeServices.d.ts +2 -2
  119. package/dist/core/startup/initializeServices.js +3 -3
  120. package/dist/core/startup/initializeServices.js.map +1 -1
  121. package/dist/core/startup/performanceTracker.cjs.map +1 -1
  122. package/dist/core/startup/performanceTracker.d.ts +1 -1
  123. package/dist/core/startup/performanceTracker.js.map +1 -1
  124. package/dist/core/startup/renderApp.cjs +3 -3
  125. package/dist/core/startup/renderApp.cjs.map +1 -1
  126. package/dist/core/startup/renderApp.d.ts +1 -1
  127. package/dist/core/startup/renderApp.js +2 -2
  128. package/dist/core/startup/renderApp.js.map +1 -1
  129. package/dist/core/startup/startApp.cjs +24 -24
  130. package/dist/core/startup/startApp.cjs.map +1 -1
  131. package/dist/core/startup/startApp.js +5 -5
  132. package/dist/core/startup/startApp.js.map +1 -1
  133. package/dist/core/types.d.ts +3 -3
  134. package/dist/core/types.js.map +1 -1
  135. package/dist/index.cjs +15 -2
  136. package/dist/index.cjs.map +1 -1
  137. package/dist/index.d.ts +6 -4
  138. package/dist/index.js +5 -4
  139. package/dist/index.js.map +1 -1
  140. package/dist/index.umd.js +2150 -23125
  141. package/dist/index.umd.js.map +1 -1
  142. package/dist/kernel/constants.cjs +67 -0
  143. package/dist/kernel/constants.cjs.map +1 -0
  144. package/dist/kernel/constants.d.ts +5 -0
  145. package/dist/kernel/constants.js +43 -0
  146. package/dist/kernel/constants.js.map +1 -0
  147. package/dist/kernel/index.cjs +40 -0
  148. package/dist/kernel/index.cjs.map +1 -0
  149. package/dist/kernel/index.d.ts +3 -0
  150. package/dist/kernel/index.js +4 -0
  151. package/dist/kernel/index.js.map +1 -0
  152. package/dist/kernel/kernel.cjs +296 -0
  153. package/dist/kernel/kernel.cjs.map +1 -0
  154. package/dist/kernel/kernel.d.ts +40 -0
  155. package/dist/kernel/kernel.js +272 -0
  156. package/dist/kernel/kernel.js.map +1 -0
  157. package/dist/kernel/manager/cacheManager.cjs +46 -0
  158. package/dist/kernel/manager/cacheManager.cjs.map +1 -0
  159. package/dist/kernel/manager/cacheManager.d.ts +6 -0
  160. package/dist/kernel/manager/cacheManager.js +36 -0
  161. package/dist/kernel/manager/cacheManager.js.map +1 -0
  162. package/dist/kernel/manager/i18nManager.cjs +68 -0
  163. package/dist/kernel/manager/i18nManager.cjs.map +1 -0
  164. package/dist/kernel/manager/i18nManager.d.ts +8 -0
  165. package/dist/kernel/manager/i18nManager.js +58 -0
  166. package/dist/kernel/manager/i18nManager.js.map +1 -0
  167. package/dist/kernel/manager/index.cjs +30 -0
  168. package/dist/kernel/manager/index.cjs.map +1 -0
  169. package/dist/kernel/manager/index.d.ts +4 -0
  170. package/dist/kernel/manager/index.js +6 -0
  171. package/dist/kernel/manager/index.js.map +1 -0
  172. package/dist/kernel/manager/loggerManager.cjs +70 -0
  173. package/dist/kernel/manager/loggerManager.cjs.map +1 -0
  174. package/dist/kernel/manager/loggerManager.d.ts +14 -0
  175. package/dist/kernel/manager/loggerManager.js +60 -0
  176. package/dist/kernel/manager/loggerManager.js.map +1 -0
  177. package/dist/kernel/manager/persistence.cjs +93 -0
  178. package/dist/kernel/manager/persistence.cjs.map +1 -0
  179. package/dist/kernel/manager/persistence.d.ts +3 -0
  180. package/dist/kernel/manager/persistence.js +75 -0
  181. package/dist/kernel/manager/persistence.js.map +1 -0
  182. package/dist/kernel/manager/themeManager.cjs +85 -0
  183. package/dist/kernel/manager/themeManager.cjs.map +1 -0
  184. package/dist/kernel/manager/themeManager.d.ts +9 -0
  185. package/dist/kernel/manager/themeManager.js +75 -0
  186. package/dist/kernel/manager/themeManager.js.map +1 -0
  187. package/dist/kernel/types.cjs +6 -0
  188. package/dist/kernel/types.cjs.map +1 -0
  189. package/dist/kernel/types.d.ts +72 -0
  190. package/dist/kernel/types.js +3 -0
  191. package/dist/kernel/types.js.map +1 -0
  192. package/dist/library/storage/encryption.cjs +12 -13
  193. package/dist/library/storage/encryption.cjs.map +1 -1
  194. package/dist/library/storage/encryption.js +1 -2
  195. package/dist/library/storage/encryption.js.map +1 -1
  196. package/dist/request/adapter.d.ts +1 -0
  197. package/dist/request/core.d.ts +1 -0
  198. package/dist/request/index.d.ts +1 -42
  199. package/dist/request/plugin/csrfPlugin.d.ts +2 -2
  200. package/dist/request/plugin/queue.d.ts +2 -2
  201. package/dist/request/plugin.d.ts +1 -0
  202. package/dist/request/runtime.d.ts +1 -0
  203. package/dist/request/types.d.ts +1 -394
  204. package/dist/request/utils.d.ts +1 -0
  205. package/dist/state.umd.js +1 -1
  206. package/dist/utils/csrf.cjs +13 -152
  207. package/dist/utils/csrf.cjs.map +1 -1
  208. package/dist/utils/csrf.d.ts +1 -72
  209. package/dist/utils/csrf.js +1 -142
  210. package/dist/utils/csrf.js.map +1 -1
  211. package/dist/utils/errors/ErrorCodes.cjs +6 -76
  212. package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
  213. package/dist/utils/errors/ErrorCodes.d.ts +1 -45
  214. package/dist/utils/errors/ErrorCodes.js +1 -84
  215. package/dist/utils/errors/ErrorCodes.js.map +1 -1
  216. package/dist/utils/errors.cjs +53 -326
  217. package/dist/utils/errors.cjs.map +1 -1
  218. package/dist/utils/errors.d.ts +19 -172
  219. package/dist/utils/errors.js +16 -352
  220. package/dist/utils/errors.js.map +1 -1
  221. package/dist/utils/logger.cjs +5 -374
  222. package/dist/utils/logger.cjs.map +1 -1
  223. package/dist/utils/logger.d.ts +2 -189
  224. package/dist/utils/logger.js +1 -379
  225. package/dist/utils/logger.js.map +1 -1
  226. package/dist/utils/logger.types.cjs +3 -12
  227. package/dist/utils/logger.types.cjs.map +1 -1
  228. package/dist/utils/logger.types.d.ts +2 -57
  229. package/dist/utils/logger.types.js +1 -10
  230. package/dist/utils/logger.types.js.map +1 -1
  231. package/dist/utils/monitoring.cjs +11 -302
  232. package/dist/utils/monitoring.cjs.map +1 -1
  233. package/dist/utils/monitoring.d.ts +1 -163
  234. package/dist/utils/monitoring.js +1 -294
  235. package/dist/utils/monitoring.js.map +1 -1
  236. package/dist/utils/performance.cjs +5 -352
  237. package/dist/utils/performance.cjs.map +1 -1
  238. package/dist/utils/performance.d.ts +2 -246
  239. package/dist/utils/performance.js +1 -354
  240. package/dist/utils/performance.js.map +1 -1
  241. package/dist/utils/resourceLoader.cjs +5 -303
  242. package/dist/utils/resourceLoader.cjs.map +1 -1
  243. package/dist/utils/resourceLoader.d.ts +2 -130
  244. package/dist/utils/resourceLoader.js +1 -305
  245. package/dist/utils/resourceLoader.js.map +1 -1
  246. package/dist/utils/runtimeSecurity.cjs +2 -140
  247. package/dist/utils/runtimeSecurity.cjs.map +1 -1
  248. package/dist/utils/runtimeSecurity.d.ts +2 -104
  249. package/dist/utils/runtimeSecurity.js +1 -141
  250. package/dist/utils/runtimeSecurity.js.map +1 -1
  251. package/dist/utils/security.cjs +3 -314
  252. package/dist/utils/security.cjs.map +1 -1
  253. package/dist/utils/security.d.ts +2 -80
  254. package/dist/utils/security.js +1 -311
  255. package/dist/utils/security.js.map +1 -1
  256. package/dist/utils/traceId.cjs +10 -111
  257. package/dist/utils/traceId.cjs.map +1 -1
  258. package/dist/utils/traceId.d.ts +1 -63
  259. package/dist/utils/traceId.js +1 -116
  260. package/dist/utils/traceId.js.map +1 -1
  261. package/dist/utils/validation.cjs +3 -173
  262. package/dist/utils/validation.cjs.map +1 -1
  263. package/dist/utils/validation.d.ts +2 -110
  264. package/dist/utils/validation.js +1 -175
  265. package/dist/utils/validation.js.map +1 -1
  266. package/package.json +15 -24
  267. package/dist/lazy/index.cjs +0 -104
  268. package/dist/lazy/index.cjs.map +0 -1
  269. package/dist/lazy/index.d.ts +0 -19
  270. package/dist/lazy/index.js +0 -24
  271. package/dist/lazy/index.js.map +0 -1
  272. package/dist/request/adapter/RequestAdapter.cjs +0 -78
  273. package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
  274. package/dist/request/adapter/axiosAdapter.cjs +0 -164
  275. package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
  276. package/dist/request/adapter/fetchAdapter.cjs +0 -134
  277. package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
  278. package/dist/request/adapter/index.cjs +0 -80
  279. package/dist/request/adapter/index.cjs.map +0 -1
  280. package/dist/request/adapter/kyAdapter.cjs +0 -191
  281. package/dist/request/adapter/kyAdapter.cjs.map +0 -1
  282. package/dist/request/adapter/undiciAdapter.cjs +0 -213
  283. package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
  284. package/dist/request/core/RequestClient.cjs +0 -558
  285. package/dist/request/core/RequestClient.cjs.map +0 -1
  286. package/dist/request/core/index.cjs +0 -15
  287. package/dist/request/core/index.cjs.map +0 -1
  288. package/dist/request/index.cjs +0 -149
  289. package/dist/request/index.cjs.map +0 -1
  290. package/dist/request/plugin/RequestPlugin.cjs +0 -218
  291. package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
  292. package/dist/request/plugin/cache.cjs +0 -269
  293. package/dist/request/plugin/cache.cjs.map +0 -1
  294. package/dist/request/plugin/csrfPlugin.cjs +0 -40
  295. package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
  296. package/dist/request/plugin/index.cjs +0 -53
  297. package/dist/request/plugin/index.cjs.map +0 -1
  298. package/dist/request/plugin/monitoring.cjs +0 -216
  299. package/dist/request/plugin/monitoring.cjs.map +0 -1
  300. package/dist/request/plugin/queue.cjs +0 -140
  301. package/dist/request/plugin/queue.cjs.map +0 -1
  302. package/dist/request/plugin/retry.cjs +0 -98
  303. package/dist/request/plugin/retry.cjs.map +0 -1
  304. package/dist/request/plugin/validation.cjs +0 -121
  305. package/dist/request/plugin/validation.cjs.map +0 -1
  306. package/dist/request/runtime/RequestContext.cjs +0 -77
  307. package/dist/request/runtime/RequestContext.cjs.map +0 -1
  308. package/dist/request/runtime/index.cjs +0 -32
  309. package/dist/request/runtime/index.cjs.map +0 -1
  310. package/dist/request/types.cjs +0 -112
  311. package/dist/request/types.cjs.map +0 -1
  312. package/dist/request/utils/RequestQueueManager.cjs +0 -168
  313. package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
  314. package/dist/request/utils/dependencyCheck.cjs +0 -237
  315. package/dist/request/utils/dependencyCheck.cjs.map +0 -1
  316. package/dist/request/utils/index.cjs +0 -30
  317. package/dist/request/utils/index.cjs.map +0 -1
  318. package/dist/request.umd.js +0 -5392
  319. 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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"}