@certd/basic 1.38.2 → 1.38.4
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/CHANGELOG.md +17 -0
- package/build.md +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/util.domain.js +8 -2
- package/dist/utils/util.request.js +35 -21
- package/dist/utils/util.string.d.ts +1 -0
- package/dist/utils/util.string.js +9 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [1.38.4](https://github.com/certd/certd/compare/v1.38.3...v1.38.4) (2026-01-31)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* 修复1:: 形式的ipv6校验失败的bug ([8b96f21](https://github.com/certd/certd/commit/8b96f218d5284033f10c186c0ce18e4c16d8e9b2))
|
|
11
|
+
|
|
12
|
+
### Performance Improvements
|
|
13
|
+
|
|
14
|
+
* 支持部署到阿里云GA ([1a0d3ee](https://github.com/certd/certd/commit/1a0d3eeb1b0b5ce08f05af84b6161e00c1fe1815))
|
|
15
|
+
* 支持部署到华为elb ([60c8ace](https://github.com/certd/certd/commit/60c8ace443e848155d3ce12e95b84766a4610d3a))
|
|
16
|
+
|
|
17
|
+
## [1.38.3](https://github.com/certd/certd/compare/v1.38.2...v1.38.3) (2026-01-28)
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* 站点检查多个ip连接超时的报错显示不出来的bug ([33b284a](https://github.com/certd/certd/commit/33b284afc0ae6391658d573e32b1ce7765e51cb2))
|
|
22
|
+
|
|
6
23
|
## [1.38.2](https://github.com/certd/certd/compare/v1.38.1...v1.38.2) (2026-01-22)
|
|
7
24
|
|
|
8
25
|
**Note:** Version bump only for package @certd/basic
|
package/build.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
02:08
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -74,6 +74,7 @@ export declare const utils: {
|
|
|
74
74
|
};
|
|
75
75
|
string: {
|
|
76
76
|
maxLength(str?: string, length?: number): string;
|
|
77
|
+
appendTimeSuffix(str?: string): string;
|
|
77
78
|
};
|
|
78
79
|
locker: import("./util.lock.js").Locker;
|
|
79
80
|
mitter: import("mitt").Emitter<Record<import("mitt").EventType, unknown>>;
|
|
@@ -54,8 +54,14 @@ function isIpv6(d) {
|
|
|
54
54
|
if (!d) {
|
|
55
55
|
return false;
|
|
56
56
|
}
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
try {
|
|
58
|
+
// 尝试构造URL,用IPv6作为hostname
|
|
59
|
+
new URL(`http://[${d}]`);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
function isIp(d) {
|
|
61
67
|
if (!d) {
|
|
@@ -23,23 +23,26 @@ export class HttpError extends Error {
|
|
|
23
23
|
if (!error) {
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
-
|
|
27
|
-
const message = error?.message;
|
|
26
|
+
let message = error?.message || error?.response.statusText || error?.code;
|
|
28
27
|
if (message && typeof message === "string" && message.indexOf) {
|
|
29
28
|
for (const key in errorMap) {
|
|
30
29
|
if (message.indexOf(key) > -1) {
|
|
31
|
-
|
|
30
|
+
message = `${message}(${errorMap[key]})`;
|
|
32
31
|
break;
|
|
33
32
|
}
|
|
34
33
|
}
|
|
35
34
|
}
|
|
35
|
+
if (!message) {
|
|
36
|
+
message = error.message;
|
|
37
|
+
}
|
|
38
|
+
if (error.errors && error.errors.length > 0) {
|
|
39
|
+
message += " \n" + error.errors.map((item) => item.message).join("\n ");
|
|
40
|
+
}
|
|
41
|
+
super(message);
|
|
36
42
|
this.name = error.name;
|
|
37
43
|
this.code = error.code;
|
|
38
44
|
this.status = error.response?.status;
|
|
39
45
|
this.statusText = error.response?.statusText || error.code;
|
|
40
|
-
if (!this.message) {
|
|
41
|
-
this.message = error.code;
|
|
42
|
-
}
|
|
43
46
|
this.request = {
|
|
44
47
|
baseURL: error.config?.baseURL,
|
|
45
48
|
url: error.config?.url,
|
|
@@ -151,39 +154,40 @@ export function createAxiosService({ logger }) {
|
|
|
151
154
|
return response.data;
|
|
152
155
|
}, (error) => {
|
|
153
156
|
const status = error.response?.status;
|
|
157
|
+
let message = "";
|
|
154
158
|
switch (status) {
|
|
155
159
|
case 400:
|
|
156
|
-
|
|
160
|
+
message = "请求错误";
|
|
157
161
|
break;
|
|
158
162
|
case 401:
|
|
159
|
-
|
|
163
|
+
message = "认证/登录失败";
|
|
160
164
|
break;
|
|
161
165
|
case 403:
|
|
162
|
-
|
|
166
|
+
message = "拒绝访问";
|
|
163
167
|
break;
|
|
164
168
|
case 404:
|
|
165
|
-
|
|
169
|
+
message = `请求地址出错`;
|
|
166
170
|
break;
|
|
167
171
|
case 408:
|
|
168
|
-
|
|
172
|
+
message = "请求超时";
|
|
169
173
|
break;
|
|
170
174
|
case 500:
|
|
171
|
-
|
|
175
|
+
message = "服务器内部错误";
|
|
172
176
|
break;
|
|
173
177
|
case 501:
|
|
174
|
-
|
|
178
|
+
message = "服务未实现";
|
|
175
179
|
break;
|
|
176
180
|
case 502:
|
|
177
|
-
|
|
181
|
+
message = "网关错误";
|
|
178
182
|
break;
|
|
179
183
|
case 503:
|
|
180
|
-
|
|
184
|
+
message = "服务不可用";
|
|
181
185
|
break;
|
|
182
186
|
case 504:
|
|
183
|
-
|
|
187
|
+
message = "网关超时";
|
|
184
188
|
break;
|
|
185
189
|
case 505:
|
|
186
|
-
|
|
190
|
+
message = "HTTP版本不受支持";
|
|
187
191
|
break;
|
|
188
192
|
case 302:
|
|
189
193
|
//重定向
|
|
@@ -191,8 +195,11 @@ export function createAxiosService({ logger }) {
|
|
|
191
195
|
default:
|
|
192
196
|
break;
|
|
193
197
|
}
|
|
198
|
+
if (status) {
|
|
199
|
+
message += ` [${status}] `;
|
|
200
|
+
}
|
|
194
201
|
const errorCode = error.code;
|
|
195
|
-
let errorMessage =
|
|
202
|
+
let errorMessage = "";
|
|
196
203
|
if (errorCode === "ECONNABORTED") {
|
|
197
204
|
errorMessage = "请求连接终止";
|
|
198
205
|
}
|
|
@@ -208,10 +215,17 @@ export function createAxiosService({ logger }) {
|
|
|
208
215
|
else if (errorCode === "ENOTFOUND") {
|
|
209
216
|
errorMessage = "请求地址不存在";
|
|
210
217
|
}
|
|
211
|
-
if (
|
|
212
|
-
|
|
218
|
+
if (errorCode) {
|
|
219
|
+
errorMessage += ` [${errorCode}] `;
|
|
220
|
+
}
|
|
221
|
+
if (message) {
|
|
222
|
+
errorMessage += `,${message}`;
|
|
223
|
+
}
|
|
224
|
+
if (error.message) {
|
|
225
|
+
errorMessage += `(${error.message})`;
|
|
213
226
|
}
|
|
214
|
-
|
|
227
|
+
error.message = errorMessage;
|
|
228
|
+
logger.error(`请求出错:${errorMessage} status:${status},statusText:${error.response?.statusText || error.code},url:${error.config?.url},method:${error.config?.method}。`);
|
|
215
229
|
logger.error("返回数据:", JSON.stringify(error.response?.data));
|
|
216
230
|
if (error.response?.data) {
|
|
217
231
|
const message = error.response.data.message || error.response.data.msg || error.response.data.error;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
1
2
|
export const stringUtils = {
|
|
2
3
|
maxLength(str, length = 100) {
|
|
3
4
|
if (str) {
|
|
4
|
-
return str.length > length ? str.slice(0, length) +
|
|
5
|
+
return str.length > length ? str.slice(0, length) + "..." : str;
|
|
5
6
|
}
|
|
6
|
-
return
|
|
7
|
+
return "";
|
|
8
|
+
},
|
|
9
|
+
appendTimeSuffix(str) {
|
|
10
|
+
if (str) {
|
|
11
|
+
return `${str}-${dayjs().format("YYYYMMDDHHmmssSSS")}`;
|
|
12
|
+
}
|
|
13
|
+
return "";
|
|
7
14
|
},
|
|
8
15
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@certd/basic",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.38.
|
|
4
|
+
"version": "1.38.4",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
@@ -47,5 +47,5 @@
|
|
|
47
47
|
"tslib": "^2.8.1",
|
|
48
48
|
"typescript": "^5.4.2"
|
|
49
49
|
},
|
|
50
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "84291482732687cc8162c6505666ba2b29b02918"
|
|
51
51
|
}
|