@vlian/framework 1.2.19 → 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.
- package/dist/analytics.umd.js +208 -2395
- package/dist/analytics.umd.js.map +1 -1
- package/dist/core/error/ErrorHandler.cjs.map +1 -1
- package/dist/core/error/ErrorHandler.d.ts +1 -1
- package/dist/core/error/ErrorHandler.js.map +1 -1
- package/dist/core/index.cjs +0 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +1 -2
- package/dist/core/index.js +0 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/initialization/index.cjs.map +1 -1
- package/dist/core/initialization/index.d.ts +1 -1
- package/dist/core/initialization/index.js.map +1 -1
- package/dist/core/initialization/initialization.cjs +2 -147
- package/dist/core/initialization/initialization.cjs.map +1 -1
- package/dist/core/initialization/initialization.d.ts +0 -57
- package/dist/core/initialization/initialization.js +2 -148
- package/dist/core/initialization/initialization.js.map +1 -1
- package/dist/core/kernel/startKernel.cjs +1 -2
- package/dist/core/kernel/startKernel.cjs.map +1 -1
- package/dist/core/kernel/startKernel.js +1 -2
- package/dist/core/kernel/startKernel.js.map +1 -1
- package/dist/core/plugin.cjs +16 -16
- package/dist/core/plugin.cjs.map +1 -1
- package/dist/core/plugin.d.ts +5 -1
- package/dist/core/plugin.js +17 -17
- package/dist/core/plugin.js.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.cjs.map +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.js +1 -1
- package/dist/core/router/monitoring/RouterMonitoring.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs +13 -8
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js +13 -8
- package/dist/core/router/utils/adapters/react-router/RouteErrorBoundary.js.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.cjs +4 -0
- package/dist/core/router/utils/adapters/react-router/transform.cjs.map +1 -1
- package/dist/core/router/utils/adapters/react-router/transform.js +4 -0
- package/dist/core/router/utils/adapters/react-router/transform.js.map +1 -1
- package/dist/core/startup/initializeServices.cjs +1 -1
- package/dist/core/startup/initializeServices.cjs.map +1 -1
- package/dist/core/startup/initializeServices.d.ts +1 -1
- package/dist/core/startup/initializeServices.js +1 -1
- package/dist/core/startup/initializeServices.js.map +1 -1
- package/dist/core/startup/performanceTracker.cjs.map +1 -1
- package/dist/core/startup/performanceTracker.d.ts +1 -1
- package/dist/core/startup/performanceTracker.js.map +1 -1
- package/dist/core/startup/renderApp.cjs +1 -1
- package/dist/core/startup/renderApp.cjs.map +1 -1
- package/dist/core/startup/renderApp.d.ts +1 -1
- package/dist/core/startup/renderApp.js +1 -1
- package/dist/core/startup/renderApp.js.map +1 -1
- package/dist/core/startup/startApp.cjs +2 -4
- package/dist/core/startup/startApp.cjs.map +1 -1
- package/dist/core/startup/startApp.js +3 -5
- package/dist/core/startup/startApp.js.map +1 -1
- package/dist/core/types.d.ts +2 -6
- package/dist/core/types.js.map +1 -1
- package/dist/index.cjs +15 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +11758 -32895
- package/dist/index.umd.js.map +1 -1
- package/dist/kernel/constants.cjs +67 -0
- package/dist/kernel/constants.cjs.map +1 -0
- package/dist/kernel/constants.d.ts +5 -0
- package/dist/kernel/constants.js +43 -0
- package/dist/kernel/constants.js.map +1 -0
- package/dist/kernel/index.cjs +40 -0
- package/dist/kernel/index.cjs.map +1 -0
- package/dist/kernel/index.d.ts +3 -0
- package/dist/kernel/index.js +4 -0
- package/dist/kernel/index.js.map +1 -0
- package/dist/kernel/kernel.cjs +296 -0
- package/dist/kernel/kernel.cjs.map +1 -0
- package/dist/kernel/kernel.d.ts +40 -0
- package/dist/kernel/kernel.js +272 -0
- package/dist/kernel/kernel.js.map +1 -0
- package/dist/kernel/manager/cacheManager.cjs +46 -0
- package/dist/kernel/manager/cacheManager.cjs.map +1 -0
- package/dist/kernel/manager/cacheManager.d.ts +6 -0
- package/dist/kernel/manager/cacheManager.js +36 -0
- package/dist/kernel/manager/cacheManager.js.map +1 -0
- package/dist/kernel/manager/i18nManager.cjs +68 -0
- package/dist/kernel/manager/i18nManager.cjs.map +1 -0
- package/dist/kernel/manager/i18nManager.d.ts +8 -0
- package/dist/kernel/manager/i18nManager.js +58 -0
- package/dist/kernel/manager/i18nManager.js.map +1 -0
- package/dist/kernel/manager/index.cjs +30 -0
- package/dist/kernel/manager/index.cjs.map +1 -0
- package/dist/kernel/manager/index.d.ts +4 -0
- package/dist/kernel/manager/index.js +6 -0
- package/dist/kernel/manager/index.js.map +1 -0
- package/dist/kernel/manager/loggerManager.cjs +70 -0
- package/dist/kernel/manager/loggerManager.cjs.map +1 -0
- package/dist/kernel/manager/loggerManager.d.ts +14 -0
- package/dist/kernel/manager/loggerManager.js +60 -0
- package/dist/kernel/manager/loggerManager.js.map +1 -0
- package/dist/kernel/manager/persistence.cjs +93 -0
- package/dist/kernel/manager/persistence.cjs.map +1 -0
- package/dist/kernel/manager/persistence.d.ts +3 -0
- package/dist/kernel/manager/persistence.js +75 -0
- package/dist/kernel/manager/persistence.js.map +1 -0
- package/dist/kernel/manager/themeManager.cjs +85 -0
- package/dist/kernel/manager/themeManager.cjs.map +1 -0
- package/dist/kernel/manager/themeManager.d.ts +9 -0
- package/dist/kernel/manager/themeManager.js +75 -0
- package/dist/kernel/manager/themeManager.js.map +1 -0
- package/dist/kernel/types.cjs.map +1 -0
- package/dist/kernel/types.d.ts +72 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/library/storage/index.cjs +1 -1
- package/dist/library/storage/index.cjs.map +1 -1
- package/dist/library/storage/index.d.ts +1 -0
- package/dist/library/storage/index.js +1 -1
- package/dist/library/storage/index.js.map +1 -1
- package/dist/request/adapter.d.ts +1 -0
- package/dist/request/core.d.ts +1 -0
- package/dist/request/index.d.ts +1 -42
- package/dist/request/plugin/csrfPlugin.d.ts +2 -2
- package/dist/request/plugin/queue.d.ts +2 -2
- package/dist/request/plugin.d.ts +1 -0
- package/dist/request/runtime.d.ts +1 -0
- package/dist/request/types.d.ts +1 -394
- package/dist/request/utils.d.ts +1 -0
- package/dist/state.umd.js +1 -1
- package/dist/utils/csrf.cjs +13 -152
- package/dist/utils/csrf.cjs.map +1 -1
- package/dist/utils/csrf.d.ts +1 -72
- package/dist/utils/csrf.js +1 -142
- package/dist/utils/csrf.js.map +1 -1
- package/dist/utils/errors/ErrorCodes.cjs +6 -76
- package/dist/utils/errors/ErrorCodes.cjs.map +1 -1
- package/dist/utils/errors/ErrorCodes.d.ts +1 -45
- package/dist/utils/errors/ErrorCodes.js +1 -84
- package/dist/utils/errors/ErrorCodes.js.map +1 -1
- package/dist/utils/errors.cjs +15 -344
- package/dist/utils/errors.cjs.map +1 -1
- package/dist/utils/errors.d.ts +1 -183
- package/dist/utils/errors.js +1 -352
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.cjs +5 -374
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.d.ts +2 -189
- package/dist/utils/logger.js +1 -379
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/logger.types.cjs +3 -12
- package/dist/utils/logger.types.cjs.map +1 -1
- package/dist/utils/logger.types.d.ts +2 -57
- package/dist/utils/logger.types.js +1 -10
- package/dist/utils/logger.types.js.map +1 -1
- package/dist/utils/monitoring.cjs +11 -302
- package/dist/utils/monitoring.cjs.map +1 -1
- package/dist/utils/monitoring.d.ts +1 -163
- package/dist/utils/monitoring.js +1 -294
- package/dist/utils/monitoring.js.map +1 -1
- package/dist/utils/performance.cjs +5 -352
- package/dist/utils/performance.cjs.map +1 -1
- package/dist/utils/performance.d.ts +2 -246
- package/dist/utils/performance.js +1 -354
- package/dist/utils/performance.js.map +1 -1
- package/dist/utils/resourceLoader.cjs +5 -303
- package/dist/utils/resourceLoader.cjs.map +1 -1
- package/dist/utils/resourceLoader.d.ts +2 -130
- package/dist/utils/resourceLoader.js +1 -305
- package/dist/utils/resourceLoader.js.map +1 -1
- package/dist/utils/runtimeSecurity.cjs +2 -140
- package/dist/utils/runtimeSecurity.cjs.map +1 -1
- package/dist/utils/runtimeSecurity.d.ts +2 -104
- package/dist/utils/runtimeSecurity.js +1 -141
- package/dist/utils/runtimeSecurity.js.map +1 -1
- package/dist/utils/security.cjs +3 -314
- package/dist/utils/security.cjs.map +1 -1
- package/dist/utils/security.d.ts +2 -80
- package/dist/utils/security.js +1 -311
- package/dist/utils/security.js.map +1 -1
- package/dist/utils/traceId.cjs +10 -111
- package/dist/utils/traceId.cjs.map +1 -1
- package/dist/utils/traceId.d.ts +1 -63
- package/dist/utils/traceId.js +1 -116
- package/dist/utils/traceId.js.map +1 -1
- package/dist/utils/validation.cjs +3 -173
- package/dist/utils/validation.cjs.map +1 -1
- package/dist/utils/validation.d.ts +2 -110
- package/dist/utils/validation.js +1 -175
- package/dist/utils/validation.js.map +1 -1
- package/package.json +98 -13
- package/dist/core/ui-adapter/adapters.cjs +0 -45
- package/dist/core/ui-adapter/adapters.cjs.map +0 -1
- package/dist/core/ui-adapter/adapters.d.ts +0 -4
- package/dist/core/ui-adapter/adapters.js +0 -27
- package/dist/core/ui-adapter/adapters.js.map +0 -1
- package/dist/core/ui-adapter/index.cjs +0 -21
- package/dist/core/ui-adapter/index.cjs.map +0 -1
- package/dist/core/ui-adapter/index.d.ts +0 -2
- package/dist/core/ui-adapter/index.js +0 -3
- package/dist/core/ui-adapter/index.js.map +0 -1
- package/dist/core/ui-adapter/types.cjs.map +0 -1
- package/dist/core/ui-adapter/types.d.ts +0 -24
- package/dist/core/ui-adapter/types.js.map +0 -1
- package/dist/request/adapter/RequestAdapter.cjs +0 -78
- package/dist/request/adapter/RequestAdapter.cjs.map +0 -1
- package/dist/request/adapter/axiosAdapter.cjs +0 -164
- package/dist/request/adapter/axiosAdapter.cjs.map +0 -1
- package/dist/request/adapter/fetchAdapter.cjs +0 -134
- package/dist/request/adapter/fetchAdapter.cjs.map +0 -1
- package/dist/request/adapter/index.cjs +0 -80
- package/dist/request/adapter/index.cjs.map +0 -1
- package/dist/request/adapter/kyAdapter.cjs +0 -191
- package/dist/request/adapter/kyAdapter.cjs.map +0 -1
- package/dist/request/adapter/undiciAdapter.cjs +0 -213
- package/dist/request/adapter/undiciAdapter.cjs.map +0 -1
- package/dist/request/core/RequestClient.cjs +0 -558
- package/dist/request/core/RequestClient.cjs.map +0 -1
- package/dist/request/core/index.cjs +0 -15
- package/dist/request/core/index.cjs.map +0 -1
- package/dist/request/index.cjs +0 -149
- package/dist/request/index.cjs.map +0 -1
- package/dist/request/plugin/RequestPlugin.cjs +0 -218
- package/dist/request/plugin/RequestPlugin.cjs.map +0 -1
- package/dist/request/plugin/cache.cjs +0 -269
- package/dist/request/plugin/cache.cjs.map +0 -1
- package/dist/request/plugin/csrfPlugin.cjs +0 -40
- package/dist/request/plugin/csrfPlugin.cjs.map +0 -1
- package/dist/request/plugin/index.cjs +0 -53
- package/dist/request/plugin/index.cjs.map +0 -1
- package/dist/request/plugin/monitoring.cjs +0 -216
- package/dist/request/plugin/monitoring.cjs.map +0 -1
- package/dist/request/plugin/queue.cjs +0 -140
- package/dist/request/plugin/queue.cjs.map +0 -1
- package/dist/request/plugin/retry.cjs +0 -98
- package/dist/request/plugin/retry.cjs.map +0 -1
- package/dist/request/plugin/validation.cjs +0 -121
- package/dist/request/plugin/validation.cjs.map +0 -1
- package/dist/request/runtime/RequestContext.cjs +0 -77
- package/dist/request/runtime/RequestContext.cjs.map +0 -1
- package/dist/request/runtime/index.cjs +0 -32
- package/dist/request/runtime/index.cjs.map +0 -1
- package/dist/request/types.cjs +0 -112
- package/dist/request/types.cjs.map +0 -1
- package/dist/request/utils/RequestQueueManager.cjs +0 -168
- package/dist/request/utils/RequestQueueManager.cjs.map +0 -1
- package/dist/request/utils/dependencyCheck.cjs +0 -237
- package/dist/request/utils/dependencyCheck.cjs.map +0 -1
- package/dist/request/utils/index.cjs +0 -30
- package/dist/request/utils/index.cjs.map +0 -1
- package/dist/request.umd.js +0 -5392
- package/dist/request.umd.js.map +0 -1
- /package/dist/{core/ui-adapter → kernel}/types.cjs +0 -0
- /package/dist/{core/ui-adapter → kernel}/types.js +0 -0
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fetch 适配器
|
|
3
|
-
*
|
|
4
|
-
* 基于原生 fetch API 的适配器实现
|
|
5
|
-
*/ "use strict";
|
|
6
|
-
Object.defineProperty(exports, "__esModule", {
|
|
7
|
-
value: true
|
|
8
|
-
});
|
|
9
|
-
Object.defineProperty(exports, "fetchAdapter", {
|
|
10
|
-
enumerable: true,
|
|
11
|
-
get: function() {
|
|
12
|
-
return fetchAdapter;
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
async function fetchAdapter() {
|
|
16
|
-
if (typeof fetch === 'undefined') {
|
|
17
|
-
throw new Error('fetch API 不可用');
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
name: 'fetch',
|
|
21
|
-
capabilities: {
|
|
22
|
-
supportsAbort: true,
|
|
23
|
-
supportsTimeout: true,
|
|
24
|
-
supportsProgress: false,
|
|
25
|
-
supportsInterceptors: false
|
|
26
|
-
},
|
|
27
|
-
async request (options) {
|
|
28
|
-
const { url, method = 'GET', headers = {}, query, body, timeout, signal, credentials } = options;
|
|
29
|
-
// 构建完整 URL
|
|
30
|
-
let fullUrl = url;
|
|
31
|
-
if (query) {
|
|
32
|
-
const searchParams = new URLSearchParams();
|
|
33
|
-
for (const [key, value] of Object.entries(query)){
|
|
34
|
-
if (value !== null && value !== undefined) {
|
|
35
|
-
searchParams.append(key, String(value));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
const queryString = searchParams.toString();
|
|
39
|
-
if (queryString) {
|
|
40
|
-
fullUrl += (fullUrl.includes('?') ? '&' : '?') + queryString;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// 构建请求头
|
|
44
|
-
const requestHeaders = {};
|
|
45
|
-
for (const [key, value] of Object.entries(headers)){
|
|
46
|
-
requestHeaders[key] = String(value);
|
|
47
|
-
}
|
|
48
|
-
// 构建请求体
|
|
49
|
-
let requestBody;
|
|
50
|
-
if (body !== undefined && body !== null) {
|
|
51
|
-
if (typeof body === 'string' || body instanceof FormData || body instanceof URLSearchParams || body instanceof Blob || body instanceof ArrayBuffer) {
|
|
52
|
-
requestBody = body;
|
|
53
|
-
} else {
|
|
54
|
-
// 对象转换为 JSON
|
|
55
|
-
requestHeaders['Content-Type'] = requestHeaders['Content-Type'] || 'application/json';
|
|
56
|
-
requestBody = JSON.stringify(body);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// 创建中止控制器(如果支持超时)
|
|
60
|
-
let abortController;
|
|
61
|
-
let timeoutId;
|
|
62
|
-
if (timeout && timeout > 0) {
|
|
63
|
-
abortController = new AbortController();
|
|
64
|
-
timeoutId = setTimeout(()=>{
|
|
65
|
-
abortController.abort();
|
|
66
|
-
}, timeout);
|
|
67
|
-
}
|
|
68
|
-
// 合并中止信号
|
|
69
|
-
const abortSignal = signal || abortController?.signal;
|
|
70
|
-
try {
|
|
71
|
-
// 执行请求
|
|
72
|
-
const fetchResponse = await fetch(fullUrl, {
|
|
73
|
-
method,
|
|
74
|
-
headers: requestHeaders,
|
|
75
|
-
body: requestBody,
|
|
76
|
-
signal: abortSignal,
|
|
77
|
-
credentials: credentials || 'same-origin'
|
|
78
|
-
});
|
|
79
|
-
// 解析响应数据
|
|
80
|
-
let data;
|
|
81
|
-
const responseType = options.responseType || 'json';
|
|
82
|
-
switch(responseType){
|
|
83
|
-
case 'text':
|
|
84
|
-
data = await fetchResponse.text();
|
|
85
|
-
break;
|
|
86
|
-
case 'blob':
|
|
87
|
-
data = await fetchResponse.blob();
|
|
88
|
-
break;
|
|
89
|
-
case 'arrayBuffer':
|
|
90
|
-
data = await fetchResponse.arrayBuffer();
|
|
91
|
-
break;
|
|
92
|
-
case 'formData':
|
|
93
|
-
data = await fetchResponse.formData();
|
|
94
|
-
break;
|
|
95
|
-
case 'json':
|
|
96
|
-
default:
|
|
97
|
-
try {
|
|
98
|
-
data = await fetchResponse.json();
|
|
99
|
-
} catch {
|
|
100
|
-
// 如果 JSON 解析失败,返回空对象
|
|
101
|
-
data = {};
|
|
102
|
-
}
|
|
103
|
-
break;
|
|
104
|
-
}
|
|
105
|
-
// 构建响应头对象
|
|
106
|
-
const responseHeaders = {};
|
|
107
|
-
fetchResponse.headers.forEach((value, key)=>{
|
|
108
|
-
responseHeaders[key] = value;
|
|
109
|
-
});
|
|
110
|
-
// 检查 HTTP 状态码
|
|
111
|
-
if (!fetchResponse.ok) {
|
|
112
|
-
throw new Error(`HTTP ${fetchResponse.status} ${fetchResponse.statusText}`);
|
|
113
|
-
}
|
|
114
|
-
// 返回响应对象
|
|
115
|
-
return {
|
|
116
|
-
data,
|
|
117
|
-
status: fetchResponse.status,
|
|
118
|
-
statusText: fetchResponse.statusText,
|
|
119
|
-
headers: responseHeaders,
|
|
120
|
-
raw: fetchResponse
|
|
121
|
-
};
|
|
122
|
-
} catch (error) {
|
|
123
|
-
// 清理超时定时器
|
|
124
|
-
if (timeoutId) {
|
|
125
|
-
clearTimeout(timeoutId);
|
|
126
|
-
}
|
|
127
|
-
// 重新抛出错误
|
|
128
|
-
throw error;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
//# sourceMappingURL=fetchAdapter.js.map
|
|
@@ -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
|