nstarter-http-request 0.1.0
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 +5 -0
- package/README.md +160 -0
- package/dist/cjs/adapter/axios.adapter.js +224 -0
- package/dist/cjs/adapter/axios.adapter.js.map +1 -0
- package/dist/cjs/adapter/base.js +134 -0
- package/dist/cjs/adapter/base.js.map +1 -0
- package/dist/cjs/adapter/index.js +20 -0
- package/dist/cjs/adapter/index.js.map +1 -0
- package/dist/cjs/adapter/undici.adapter.js +272 -0
- package/dist/cjs/adapter/undici.adapter.js.map +1 -0
- package/dist/cjs/client.js +409 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/config.js +69 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/const/config.const.js +53 -0
- package/dist/cjs/const/config.const.js.map +1 -0
- package/dist/cjs/const/dns.const.js +16 -0
- package/dist/cjs/const/dns.const.js.map +1 -0
- package/dist/cjs/const/enum.const.js +22 -0
- package/dist/cjs/const/enum.const.js.map +1 -0
- package/dist/cjs/const/index.js +21 -0
- package/dist/cjs/const/index.js.map +1 -0
- package/dist/cjs/const/ip.const.js +110 -0
- package/dist/cjs/const/ip.const.js.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/logger/base.js +60 -0
- package/dist/cjs/logger/base.js.map +1 -0
- package/dist/cjs/logger/http_client.logger.js +209 -0
- package/dist/cjs/logger/http_client.logger.js.map +1 -0
- package/dist/cjs/logger/index.js +20 -0
- package/dist/cjs/logger/index.js.map +1 -0
- package/dist/cjs/logger/log.filter.js +126 -0
- package/dist/cjs/logger/log.filter.js.map +1 -0
- package/dist/cjs/security/dns.validator.js +137 -0
- package/dist/cjs/security/dns.validator.js.map +1 -0
- package/dist/cjs/security/index.js +21 -0
- package/dist/cjs/security/index.js.map +1 -0
- package/dist/cjs/security/ip.validator.js +107 -0
- package/dist/cjs/security/ip.validator.js.map +1 -0
- package/dist/cjs/security/ssrf.guard.js +180 -0
- package/dist/cjs/security/ssrf.guard.js.map +1 -0
- package/dist/cjs/security/url.validator.js +170 -0
- package/dist/cjs/security/url.validator.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/cjs/types/adapter.js +6 -0
- package/dist/cjs/types/adapter.js.map +1 -0
- package/dist/cjs/types/client.js +6 -0
- package/dist/cjs/types/client.js.map +1 -0
- package/dist/cjs/types/config.js +6 -0
- package/dist/cjs/types/config.js.map +1 -0
- package/dist/cjs/types/errors.js +35 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/index.js +35 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/ip.js +6 -0
- package/dist/cjs/types/ip.js.map +1 -0
- package/dist/cjs/types/logger.js +6 -0
- package/dist/cjs/types/logger.js.map +1 -0
- package/dist/cjs/types/request_response.js +6 -0
- package/dist/cjs/types/request_response.js.map +1 -0
- package/dist/cjs/types/security.js +6 -0
- package/dist/cjs/types/security.js.map +1 -0
- package/dist/cjs/types/trace.js +14 -0
- package/dist/cjs/types/trace.js.map +1 -0
- package/dist/cjs/utils/common.js +31 -0
- package/dist/cjs/utils/common.js.map +1 -0
- package/dist/cjs/utils/domain.js +79 -0
- package/dist/cjs/utils/domain.js.map +1 -0
- package/dist/cjs/utils/index.js +44 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/ip.range.js +200 -0
- package/dist/cjs/utils/ip.range.js.map +1 -0
- package/dist/cjs/utils/trace.context.js +213 -0
- package/dist/cjs/utils/trace.context.js.map +1 -0
- package/dist/esm/adapter/axios.adapter.js +184 -0
- package/dist/esm/adapter/axios.adapter.js.map +1 -0
- package/dist/esm/adapter/base.js +130 -0
- package/dist/esm/adapter/base.js.map +1 -0
- package/dist/esm/adapter/index.js +4 -0
- package/dist/esm/adapter/index.js.map +1 -0
- package/dist/esm/adapter/undici.adapter.js +235 -0
- package/dist/esm/adapter/undici.adapter.js.map +1 -0
- package/dist/esm/client.js +405 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/config.js +65 -0
- package/dist/esm/config.js.map +1 -0
- package/dist/esm/const/config.const.js +50 -0
- package/dist/esm/const/config.const.js.map +1 -0
- package/dist/esm/const/dns.const.js +13 -0
- package/dist/esm/const/dns.const.js.map +1 -0
- package/dist/esm/const/enum.const.js +19 -0
- package/dist/esm/const/enum.const.js.map +1 -0
- package/dist/esm/const/index.js +5 -0
- package/dist/esm/const/index.js.map +1 -0
- package/dist/esm/const/ip.const.js +107 -0
- package/dist/esm/const/ip.const.js.map +1 -0
- package/dist/esm/index.js +9 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/logger/base.js +55 -0
- package/dist/esm/logger/base.js.map +1 -0
- package/dist/esm/logger/http_client.logger.js +205 -0
- package/dist/esm/logger/http_client.logger.js.map +1 -0
- package/dist/esm/logger/index.js +4 -0
- package/dist/esm/logger/index.js.map +1 -0
- package/dist/esm/logger/log.filter.js +122 -0
- package/dist/esm/logger/log.filter.js.map +1 -0
- package/dist/esm/security/dns.validator.js +133 -0
- package/dist/esm/security/dns.validator.js.map +1 -0
- package/dist/esm/security/index.js +5 -0
- package/dist/esm/security/index.js.map +1 -0
- package/dist/esm/security/ip.validator.js +103 -0
- package/dist/esm/security/ip.validator.js.map +1 -0
- package/dist/esm/security/ssrf.guard.js +176 -0
- package/dist/esm/security/ssrf.guard.js.map +1 -0
- package/dist/esm/security/url.validator.js +166 -0
- package/dist/esm/security/url.validator.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/esm/types/adapter.js +5 -0
- package/dist/esm/types/adapter.js.map +1 -0
- package/dist/esm/types/client.js +5 -0
- package/dist/esm/types/client.js.map +1 -0
- package/dist/esm/types/config.js +5 -0
- package/dist/esm/types/config.js.map +1 -0
- package/dist/esm/types/errors.js +30 -0
- package/dist/esm/types/errors.js.map +1 -0
- package/dist/esm/types/index.js +19 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/ip.js +5 -0
- package/dist/esm/types/ip.js.map +1 -0
- package/dist/esm/types/logger.js +5 -0
- package/dist/esm/types/logger.js.map +1 -0
- package/dist/esm/types/request_response.js +5 -0
- package/dist/esm/types/request_response.js.map +1 -0
- package/dist/esm/types/security.js +5 -0
- package/dist/esm/types/security.js.map +1 -0
- package/dist/esm/types/trace.js +11 -0
- package/dist/esm/types/trace.js.map +1 -0
- package/dist/esm/utils/common.js +27 -0
- package/dist/esm/utils/common.js.map +1 -0
- package/dist/esm/utils/domain.js +71 -0
- package/dist/esm/utils/domain.js.map +1 -0
- package/dist/esm/utils/index.js +7 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/ip.range.js +187 -0
- package/dist/esm/utils/ip.range.js.map +1 -0
- package/dist/esm/utils/trace.context.js +199 -0
- package/dist/esm/utils/trace.context.js.map +1 -0
- package/dist/types/adapter/axios.adapter.d.ts +51 -0
- package/dist/types/adapter/axios.adapter.d.ts.map +1 -0
- package/dist/types/adapter/base.d.ts +56 -0
- package/dist/types/adapter/base.d.ts.map +1 -0
- package/dist/types/adapter/index.d.ts +4 -0
- package/dist/types/adapter/index.d.ts.map +1 -0
- package/dist/types/adapter/undici.adapter.d.ts +68 -0
- package/dist/types/adapter/undici.adapter.d.ts.map +1 -0
- package/dist/types/client.d.ts +105 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/config.d.ts +14 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/const/config.const.d.ts +23 -0
- package/dist/types/const/config.const.d.ts.map +1 -0
- package/dist/types/const/dns.const.d.ts +13 -0
- package/dist/types/const/dns.const.d.ts.map +1 -0
- package/dist/types/const/enum.const.d.ts +17 -0
- package/dist/types/const/enum.const.d.ts.map +1 -0
- package/dist/types/const/index.d.ts +5 -0
- package/dist/types/const/index.d.ts.map +1 -0
- package/dist/types/const/ip.const.d.ts +42 -0
- package/dist/types/const/ip.const.d.ts.map +1 -0
- package/dist/types/index.d.ts +9 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/logger/base.d.ts +42 -0
- package/dist/types/logger/base.d.ts.map +1 -0
- package/dist/types/logger/http_client.logger.d.ts +49 -0
- package/dist/types/logger/http_client.logger.d.ts.map +1 -0
- package/dist/types/logger/index.d.ts +4 -0
- package/dist/types/logger/index.d.ts.map +1 -0
- package/dist/types/logger/log.filter.d.ts +56 -0
- package/dist/types/logger/log.filter.d.ts.map +1 -0
- package/dist/types/security/dns.validator.d.ts +61 -0
- package/dist/types/security/dns.validator.d.ts.map +1 -0
- package/dist/types/security/index.d.ts +5 -0
- package/dist/types/security/index.d.ts.map +1 -0
- package/dist/types/security/ip.validator.d.ts +31 -0
- package/dist/types/security/ip.validator.d.ts.map +1 -0
- package/dist/types/security/ssrf.guard.d.ts +54 -0
- package/dist/types/security/ssrf.guard.d.ts.map +1 -0
- package/dist/types/security/url.validator.d.ts +76 -0
- package/dist/types/security/url.validator.d.ts.map +1 -0
- package/dist/types/types/adapter.d.ts +30 -0
- package/dist/types/types/adapter.d.ts.map +1 -0
- package/dist/types/types/client.d.ts +85 -0
- package/dist/types/types/client.d.ts.map +1 -0
- package/dist/types/types/config.d.ts +99 -0
- package/dist/types/types/config.d.ts.map +1 -0
- package/dist/types/types/errors.d.ts +23 -0
- package/dist/types/types/errors.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +10 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/ip.d.ts +32 -0
- package/dist/types/types/ip.d.ts.map +1 -0
- package/dist/types/types/logger.d.ts +136 -0
- package/dist/types/types/logger.d.ts.map +1 -0
- package/dist/types/types/request_response.d.ts +54 -0
- package/dist/types/types/request_response.d.ts.map +1 -0
- package/dist/types/types/security.d.ts +115 -0
- package/dist/types/types/security.d.ts.map +1 -0
- package/dist/types/types/trace.d.ts +34 -0
- package/dist/types/types/trace.d.ts.map +1 -0
- package/dist/types/utils/common.d.ts +14 -0
- package/dist/types/utils/common.d.ts.map +1 -0
- package/dist/types/utils/domain.d.ts +39 -0
- package/dist/types/utils/domain.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/ip.range.d.ts +61 -0
- package/dist/types/utils/ip.range.d.ts.map +1 -0
- package/dist/types/utils/trace.context.d.ts +106 -0
- package/dist/types/utils/trace.context.d.ts.map +1 -0
- package/docs/adapters.md +53 -0
- package/docs/configuration.md +149 -0
- package/docs/logging.md +70 -0
- package/docs/proxy.md +44 -0
- package/docs/security.md +56 -0
- package/docs/trace-context.md +436 -0
- package/package.json +50 -0
- package/src/adapter/axios.adapter.ts +228 -0
- package/src/adapter/base.ts +180 -0
- package/src/adapter/index.ts +3 -0
- package/src/adapter/undici.adapter.ts +282 -0
- package/src/client.ts +552 -0
- package/src/config.ts +86 -0
- package/src/const/config.const.ts +60 -0
- package/src/const/dns.const.ts +15 -0
- package/src/const/enum.const.ts +17 -0
- package/src/const/index.ts +4 -0
- package/src/const/ip.const.ts +139 -0
- package/src/index.ts +8 -0
- package/src/logger/base.ts +75 -0
- package/src/logger/http_client.logger.ts +272 -0
- package/src/logger/index.ts +3 -0
- package/src/logger/log.filter.ts +149 -0
- package/src/security/dns.validator.ts +170 -0
- package/src/security/index.ts +4 -0
- package/src/security/ip.validator.ts +124 -0
- package/src/security/ssrf.guard.ts +224 -0
- package/src/security/url.validator.ts +192 -0
- package/src/types/adapter.ts +38 -0
- package/src/types/client.ts +119 -0
- package/src/types/config.ts +110 -0
- package/src/types/errors.ts +38 -0
- package/src/types/index.ts +27 -0
- package/src/types/ip.ts +34 -0
- package/src/types/logger.ts +150 -0
- package/src/types/request_response.ts +65 -0
- package/src/types/security.ts +126 -0
- package/src/types/trace.ts +35 -0
- package/src/utils/common.ts +28 -0
- package/src/utils/domain.ts +78 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/ip.range.ts +218 -0
- package/src/utils/trace.context.ts +240 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSRF 防护
|
|
3
|
+
* 整合 IP、DNS 和 URL 验证,防止服务器端请求伪造攻击
|
|
4
|
+
*/
|
|
5
|
+
import type { ISsrfGuard, SecurityConfig, SsrfGuardResult } from '../types';
|
|
6
|
+
/**
|
|
7
|
+
* SSRF 防护类
|
|
8
|
+
*/
|
|
9
|
+
export declare class SsrfGuard implements ISsrfGuard {
|
|
10
|
+
private dnsValidator;
|
|
11
|
+
private urlValidator;
|
|
12
|
+
private config;
|
|
13
|
+
constructor(config: SecurityConfig);
|
|
14
|
+
/**
|
|
15
|
+
* 验证 URL 是否安全
|
|
16
|
+
* @param url 要验证的 URL
|
|
17
|
+
* @returns 验证结果
|
|
18
|
+
*/
|
|
19
|
+
validate(url: string): Promise<SsrfGuardResult>;
|
|
20
|
+
/**
|
|
21
|
+
* 验证并返回安全的 URL
|
|
22
|
+
* @param url 要验证的 URL
|
|
23
|
+
* @returns 安全的 URL 和验证结果
|
|
24
|
+
* @throws {SecurityError} 验证失败时抛出错误
|
|
25
|
+
*/
|
|
26
|
+
validateAndGetSafeUrl(url: string): Promise<{
|
|
27
|
+
safeUrl: string;
|
|
28
|
+
result: SsrfGuardResult;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* 更新配置
|
|
32
|
+
* @param config 新的安全配置
|
|
33
|
+
*/
|
|
34
|
+
updateConfig(config: Partial<SecurityConfig>): void;
|
|
35
|
+
/**
|
|
36
|
+
* 清空 DNS 缓存
|
|
37
|
+
*/
|
|
38
|
+
clearDnsCache(): void;
|
|
39
|
+
/**
|
|
40
|
+
* 获取 DNS 缓存大小
|
|
41
|
+
* @returns 缓存条目数量
|
|
42
|
+
*/
|
|
43
|
+
getDnsCacheSize(): number;
|
|
44
|
+
/**
|
|
45
|
+
* 清理过期的 DNS 缓存
|
|
46
|
+
*/
|
|
47
|
+
cleanExpiredDnsCache(): void;
|
|
48
|
+
/**
|
|
49
|
+
* 获取当前配置
|
|
50
|
+
* @returns 安全配置副本
|
|
51
|
+
*/
|
|
52
|
+
getConfig(): SecurityConfig;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ssrf.guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssrf.guard.d.ts","sourceRoot":"","sources":["../../../src/security/ssrf.guard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EACR,UAAU,EACV,cAAc,EACd,eAAe,EAClB,MAAM,UAAU,CAAC;AAMlB;;GAEG;AACH,qBAAa,SAAU,YAAW,UAAU;IACxC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,cAAc;IAUlC;;;;OAIG;IACU,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA0G5D;;;;;OAKG;IACU,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC;IAiBtG;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAoB1D;;OAEG;IACI,aAAa,IAAI,IAAI;IAI5B;;;OAGG;IACI,eAAe,IAAI,MAAM;IAIhC;;OAEG;IACI,oBAAoB,IAAI,IAAI;IAInC;;;OAGG;IACI,SAAS,IAAI,cAAc;CAGrC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URL 验证器
|
|
3
|
+
*/
|
|
4
|
+
import type { UrlValidationResult } from '../types';
|
|
5
|
+
/**
|
|
6
|
+
* URL 验证器类
|
|
7
|
+
*/
|
|
8
|
+
export declare class UrlValidator {
|
|
9
|
+
private whitelist;
|
|
10
|
+
private blacklist;
|
|
11
|
+
private whitelistRegexps;
|
|
12
|
+
private blacklistRegexps;
|
|
13
|
+
constructor(whitelist?: string[], blacklist?: string[]);
|
|
14
|
+
/**
|
|
15
|
+
* 验证 URL
|
|
16
|
+
* @param url URL 字符串
|
|
17
|
+
* @returns 验证结果
|
|
18
|
+
*/
|
|
19
|
+
validate(url: string): UrlValidationResult;
|
|
20
|
+
/**
|
|
21
|
+
* 检查域名是否匹配任一模式(使用预生成的正则表达式)
|
|
22
|
+
* @param hostname 域名
|
|
23
|
+
* @param regexps 正则表达式列表
|
|
24
|
+
* @returns 是否匹配
|
|
25
|
+
*/
|
|
26
|
+
private matchesAny;
|
|
27
|
+
/**
|
|
28
|
+
* 更新白名单
|
|
29
|
+
* @param whitelist 新的白名单
|
|
30
|
+
*/
|
|
31
|
+
setWhitelist(whitelist: string[]): void;
|
|
32
|
+
/**
|
|
33
|
+
* 更新黑名单
|
|
34
|
+
* @param blacklist 新的黑名单
|
|
35
|
+
*/
|
|
36
|
+
setBlacklist(blacklist: string[]): void;
|
|
37
|
+
/**
|
|
38
|
+
* 添加到白名单
|
|
39
|
+
* @param patterns 要添加的模式
|
|
40
|
+
*/
|
|
41
|
+
addToWhitelist(...patterns: string[]): void;
|
|
42
|
+
/**
|
|
43
|
+
* 添加到黑名单
|
|
44
|
+
* @param patterns 要添加的模式
|
|
45
|
+
*/
|
|
46
|
+
addToBlacklist(...patterns: string[]): void;
|
|
47
|
+
/**
|
|
48
|
+
* 从白名单移除
|
|
49
|
+
* @param patterns 要移除的模式
|
|
50
|
+
*/
|
|
51
|
+
removeFromWhitelist(...patterns: string[]): void;
|
|
52
|
+
/**
|
|
53
|
+
* 从黑名单移除
|
|
54
|
+
* @param patterns 要移除的模式
|
|
55
|
+
*/
|
|
56
|
+
removeFromBlacklist(...patterns: string[]): void;
|
|
57
|
+
/**
|
|
58
|
+
* 获取白名单
|
|
59
|
+
* @returns 白名单副本
|
|
60
|
+
*/
|
|
61
|
+
getWhitelist(): string[];
|
|
62
|
+
/**
|
|
63
|
+
* 获取黑名单
|
|
64
|
+
* @returns 黑名单副本
|
|
65
|
+
*/
|
|
66
|
+
getBlacklist(): string[];
|
|
67
|
+
/**
|
|
68
|
+
* 清空白名单
|
|
69
|
+
*/
|
|
70
|
+
clearWhitelist(): void;
|
|
71
|
+
/**
|
|
72
|
+
* 清空黑名单
|
|
73
|
+
*/
|
|
74
|
+
clearBlacklist(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=url.validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"url.validator.d.ts","sourceRoot":"","sources":["../../../src/security/url.validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAGpD;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,SAAS,CAAW;IAC5B,OAAO,CAAC,gBAAgB,CAAW;IACnC,OAAO,CAAC,gBAAgB,CAAW;gBAEvB,SAAS,GAAE,MAAM,EAAO,EAAE,SAAS,GAAE,MAAM,EAAO;IAQ9D;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB;IAiEjD;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAIlB;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9C;;;OAGG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9C;;;OAGG;IACI,cAAc,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlD;;;OAGG;IACI,cAAc,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKlD;;;OAGG;IACI,mBAAmB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKvD;;;OAGG;IACI,mBAAmB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAKvD;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B;;;OAGG;IACI,YAAY,IAAI,MAAM,EAAE;IAI/B;;OAEG;IACI,cAAc,IAAI,IAAI;IAK7B;;OAEG;IACI,cAAc,IAAI,IAAI;CAIhC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 适配器相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { HttpRequestOptions, HttpResponse } from './request_response';
|
|
5
|
+
import type { RequestConfig } from './config';
|
|
6
|
+
import type { EClientAdapter } from '../const';
|
|
7
|
+
/**
|
|
8
|
+
* HTTP 适配器接口
|
|
9
|
+
*/
|
|
10
|
+
export interface IHttpAdapter {
|
|
11
|
+
/** 适配器名称 */
|
|
12
|
+
readonly name: EClientAdapter;
|
|
13
|
+
/**
|
|
14
|
+
* 发送 HTTP 请求
|
|
15
|
+
* @param options 请求选项
|
|
16
|
+
* @returns 响应结果
|
|
17
|
+
*/
|
|
18
|
+
request: <T = any>(options: HttpRequestOptions) => Promise<HttpResponse<T>>;
|
|
19
|
+
/**
|
|
20
|
+
* 检查适配器是否可用
|
|
21
|
+
* @returns 是否可用
|
|
22
|
+
*/
|
|
23
|
+
isAvailable: () => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* 更新适配器配置
|
|
26
|
+
* @param config 请求配置
|
|
27
|
+
*/
|
|
28
|
+
updateConfig: (config: Partial<RequestConfig>) => void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/types/adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAClB,YAAY,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,YAAY;IACZ,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAE9B;;;;OAIG;IACH,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E;;;OAGG;IACH,WAAW,EAAE,MAAM,OAAO,CAAC;IAE3B;;;OAGG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;CAC1D"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 客户端相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { HttpRequestOptions, HttpResponse } from './request_response';
|
|
5
|
+
import type { EClientAdapter } from '../const';
|
|
6
|
+
/**
|
|
7
|
+
* 正向代理配置
|
|
8
|
+
*/
|
|
9
|
+
export interface IForwardProxy {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
https_proxy: string;
|
|
12
|
+
http_proxy: string;
|
|
13
|
+
no_proxy: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* HTTP 客户端接口
|
|
17
|
+
*/
|
|
18
|
+
export interface IHttpClient {
|
|
19
|
+
/**
|
|
20
|
+
* 挂载适配器.
|
|
21
|
+
* @param adapter
|
|
22
|
+
* @returns this
|
|
23
|
+
*/
|
|
24
|
+
withAdapter: (adapter: EClientAdapter) => this;
|
|
25
|
+
/**
|
|
26
|
+
* 挂载正向代理.
|
|
27
|
+
* @param proxy
|
|
28
|
+
* @returns this
|
|
29
|
+
*/
|
|
30
|
+
withForwardProxy: (proxy: IForwardProxy) => this;
|
|
31
|
+
/**
|
|
32
|
+
* 发送 HTTP 请求
|
|
33
|
+
* @param options 请求选项
|
|
34
|
+
* @returns 响应结果
|
|
35
|
+
*/
|
|
36
|
+
request: <T = any>(options: HttpRequestOptions) => Promise<HttpResponse<T>>;
|
|
37
|
+
/**
|
|
38
|
+
* GET 请求
|
|
39
|
+
* @param url 请求 URL
|
|
40
|
+
* @param options 其他请求选项
|
|
41
|
+
* @returns 响应结果
|
|
42
|
+
*/
|
|
43
|
+
get: <T = any>(url: string, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url'>>) => Promise<HttpResponse<T>>;
|
|
44
|
+
/**
|
|
45
|
+
* POST 请求
|
|
46
|
+
* @param url 请求 URL
|
|
47
|
+
* @param body 请求体
|
|
48
|
+
* @param options 其他请求选项
|
|
49
|
+
* @returns 响应结果
|
|
50
|
+
*/
|
|
51
|
+
post: <T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>) => Promise<HttpResponse<T>>;
|
|
52
|
+
/**
|
|
53
|
+
* PUT 请求
|
|
54
|
+
* @param url 请求 URL
|
|
55
|
+
* @param body 请求体
|
|
56
|
+
* @param options 其他请求选项
|
|
57
|
+
* @returns 响应结果
|
|
58
|
+
*/
|
|
59
|
+
put: <T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>) => Promise<HttpResponse<T>>;
|
|
60
|
+
/**
|
|
61
|
+
* DELETE 请求
|
|
62
|
+
* @param url 请求 URL
|
|
63
|
+
* @param options 其他请求选项
|
|
64
|
+
* @returns 响应结果
|
|
65
|
+
*/
|
|
66
|
+
delete: <T = any>(url: string, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url'>>) => Promise<HttpResponse<T>>;
|
|
67
|
+
/**
|
|
68
|
+
* PATCH 请求
|
|
69
|
+
* @param url 请求 URL
|
|
70
|
+
* @param body 请求体
|
|
71
|
+
* @param options 其他请求选项
|
|
72
|
+
* @returns 响应结果
|
|
73
|
+
*/
|
|
74
|
+
patch: <T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>) => Promise<HttpResponse<T>>;
|
|
75
|
+
/**
|
|
76
|
+
* 清空 DNS 缓存
|
|
77
|
+
*/
|
|
78
|
+
clearDnsCache: () => void;
|
|
79
|
+
/**
|
|
80
|
+
* 获取 DNS 缓存大小
|
|
81
|
+
* @returns 缓存条目数量
|
|
82
|
+
*/
|
|
83
|
+
getDnsCacheSize: () => number;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/types/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAClB,YAAY,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IAE/C;;;;OAIG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAEjD;;;;OAIG;IACH,OAAO,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5E;;;;;OAKG;IACH,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,EACT,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,KAC5D,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,EACV,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KACrE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,EACT,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KACrE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;OAKG;IACH,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,EACZ,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC,KAC5D,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9B;;;;;;OAMG;IACH,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,GAAG,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC,CAAC,KACrE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAG9B;;OAEG;IACH,aAAa,EAAE,MAAM,IAAI,CAAC;IAE1B;;;OAGG;IACH,eAAe,EAAE,MAAM,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 配置相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { ILogger, IHttpClientLogger, LogFilterConfig } from './logger';
|
|
5
|
+
import type { EClientAdapter } from '../const';
|
|
6
|
+
/**
|
|
7
|
+
* 代理配置
|
|
8
|
+
*/
|
|
9
|
+
export interface ProxyConfig {
|
|
10
|
+
host: string;
|
|
11
|
+
port: number;
|
|
12
|
+
protocol: 'http' | 'https';
|
|
13
|
+
auth?: {
|
|
14
|
+
username: string;
|
|
15
|
+
password: string;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 安全配置
|
|
20
|
+
*/
|
|
21
|
+
export interface SecurityConfig {
|
|
22
|
+
/** 证书校验 **/
|
|
23
|
+
rejectUnauthorized: boolean;
|
|
24
|
+
/** 启用 DNS 验证 */
|
|
25
|
+
enableDnsValidation: boolean;
|
|
26
|
+
/** 启用 IP 地址验证 */
|
|
27
|
+
enableIpValidation: boolean;
|
|
28
|
+
/** 允许访问私有 IP */
|
|
29
|
+
allowPrivateIp: boolean;
|
|
30
|
+
/** 域名白名单(支持通配符,如 *.example.com 匹配一级子域名) */
|
|
31
|
+
whitelist: string[];
|
|
32
|
+
/** 域名黑名单(支持通配符,如 *.example.com 匹配一级子域名) */
|
|
33
|
+
blacklist: string[];
|
|
34
|
+
/** DNS 缓存 TTL(毫秒) */
|
|
35
|
+
dnsCacheTtl: number;
|
|
36
|
+
/** DNS 缓存最大条目数 */
|
|
37
|
+
dnsCacheMaxSize: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 日志配置
|
|
41
|
+
*/
|
|
42
|
+
export interface LoggingConfig {
|
|
43
|
+
/** 启用日志 */
|
|
44
|
+
enabled: boolean;
|
|
45
|
+
/** 自定义日志记录器(通用) */
|
|
46
|
+
logger?: ILogger;
|
|
47
|
+
/** 自定义 HTTP 客户端日志记录器 */
|
|
48
|
+
httpLogger?: IHttpClientLogger;
|
|
49
|
+
/** 记录请求体 */
|
|
50
|
+
logRequestBody: boolean;
|
|
51
|
+
/** 记录响应体 */
|
|
52
|
+
logResponseBody: boolean;
|
|
53
|
+
/** 响应体最大记录长度(字节) */
|
|
54
|
+
bodyMaxLength: number;
|
|
55
|
+
/** 日志过滤器配置 */
|
|
56
|
+
filter?: LogFilterConfig;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 请求配置
|
|
60
|
+
*/
|
|
61
|
+
export interface RequestConfig {
|
|
62
|
+
/** 超时时间(毫秒) */
|
|
63
|
+
timeout: number;
|
|
64
|
+
/** 重试次数 */
|
|
65
|
+
retries: number;
|
|
66
|
+
/** 重试延迟(毫秒) */
|
|
67
|
+
retryDelay: number;
|
|
68
|
+
/** 代理配置 */
|
|
69
|
+
proxy?: ProxyConfig;
|
|
70
|
+
/** 最大重定向次数 */
|
|
71
|
+
maxRedirects: number;
|
|
72
|
+
/** 最大请求体大小(字节) */
|
|
73
|
+
maxRequestBodySize: number;
|
|
74
|
+
/** 最大响应体大小(字节) */
|
|
75
|
+
maxResponseBodySize: number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* HTTP 客户端配置
|
|
79
|
+
*/
|
|
80
|
+
export interface HttpClientConfig {
|
|
81
|
+
/** 适配器类型 */
|
|
82
|
+
adapter: EClientAdapter;
|
|
83
|
+
/** 安全配置 */
|
|
84
|
+
security: SecurityConfig;
|
|
85
|
+
/** 日志配置 */
|
|
86
|
+
logging: LoggingConfig;
|
|
87
|
+
/** 请求配置 */
|
|
88
|
+
request: RequestConfig;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 部分 HTTP 客户端配置(用于创建实例时)
|
|
92
|
+
*/
|
|
93
|
+
export interface PartialHttpClientConfig {
|
|
94
|
+
adapter?: EClientAdapter;
|
|
95
|
+
security?: Partial<SecurityConfig>;
|
|
96
|
+
logging?: Partial<LoggingConfig>;
|
|
97
|
+
request?: Partial<RequestConfig>;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,OAAO,EACP,iBAAiB,EACjB,eAAe,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAC;CACL;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,YAAY;IACZ,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB;IAChB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qBAAqB;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB;IAClB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,WAAW;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wBAAwB;IACxB,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,YAAY;IACZ,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY;IACZ,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc;IACd,MAAM,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW;IACX,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,cAAc;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,YAAY;IACZ,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW;IACX,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW;IACX,OAAO,EAAE,aAAa,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACpC,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACpC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 错误类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { HttpRequestOptions, HttpResponse } from './request_response';
|
|
5
|
+
/**
|
|
6
|
+
* HTTP 错误
|
|
7
|
+
*/
|
|
8
|
+
export declare class HttpError extends Error {
|
|
9
|
+
readonly code: string;
|
|
10
|
+
readonly status?: number | undefined;
|
|
11
|
+
readonly response?: HttpResponse | undefined;
|
|
12
|
+
readonly request?: HttpRequestOptions | undefined;
|
|
13
|
+
constructor(message: string, code: string, status?: number | undefined, response?: HttpResponse | undefined, request?: HttpRequestOptions | undefined);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 安全验证错误
|
|
17
|
+
*/
|
|
18
|
+
export declare class SecurityError extends Error {
|
|
19
|
+
readonly code: string;
|
|
20
|
+
readonly url?: string | undefined;
|
|
21
|
+
constructor(message: string, code: string, url?: string | undefined);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3E;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;aAGZ,IAAI,EAAE,MAAM;aACZ,MAAM,CAAC,EAAE,MAAM;aACf,QAAQ,CAAC,EAAE,YAAY;aACvB,OAAO,CAAC,EAAE,kBAAkB;gBAJ5C,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,YAAA,EACf,QAAQ,CAAC,EAAE,YAAY,YAAA,EACvB,OAAO,CAAC,EAAE,kBAAkB,YAAA;CAMnD;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGhB,IAAI,EAAE,MAAM;aACZ,GAAG,CAAC,EAAE,MAAM;gBAF5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,YAAA;CAMnC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './request_response';
|
|
2
|
+
export * from './config';
|
|
3
|
+
export * from './errors';
|
|
4
|
+
export * from './security';
|
|
5
|
+
export * from './ip';
|
|
6
|
+
export * from './logger';
|
|
7
|
+
export * from './adapter';
|
|
8
|
+
export * from './client';
|
|
9
|
+
export * from './trace';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AAGnC,cAAc,UAAU,CAAC;AAGzB,cAAc,UAAU,CAAC;AAGzB,cAAc,YAAY,CAAC;AAG3B,cAAc,MAAM,CAAC;AAGrB,cAAc,UAAU,CAAC;AAGzB,cAAc,WAAW,CAAC;AAG1B,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IP 相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* 预编译的 IPv4 CIDR 范围
|
|
6
|
+
*/
|
|
7
|
+
export interface CompiledIpv4Range {
|
|
8
|
+
/** 网络地址(数字形式) */
|
|
9
|
+
network: number;
|
|
10
|
+
/** 子网掩码(数字形式) */
|
|
11
|
+
mask: number;
|
|
12
|
+
/** 原始 CIDR 字符串 */
|
|
13
|
+
cidr: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 预编译的 IPv6 CIDR 范围
|
|
17
|
+
*/
|
|
18
|
+
export interface CompiledIpv6Range {
|
|
19
|
+
/** 网络地址高 64 位 */
|
|
20
|
+
networkHigh: bigint;
|
|
21
|
+
/** 网络地址低 64 位 */
|
|
22
|
+
networkLow: bigint;
|
|
23
|
+
/** 子网掩码高 64 位 */
|
|
24
|
+
maskHigh: bigint;
|
|
25
|
+
/** 子网掩码低 64 位 */
|
|
26
|
+
maskLow: bigint;
|
|
27
|
+
/** CIDR 前缀长度 */
|
|
28
|
+
prefix: number;
|
|
29
|
+
/** 原始 CIDR 字符串 */
|
|
30
|
+
cidr: string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=ip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ip.d.ts","sourceRoot":"","sources":["../../../src/types/ip.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,iBAAiB;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日志相关类型定义
|
|
3
|
+
*/
|
|
4
|
+
import type { HttpRequestOptions, HttpResponse } from './request_response';
|
|
5
|
+
/**
|
|
6
|
+
* 日志记录器接口
|
|
7
|
+
*/
|
|
8
|
+
export interface ILogger {
|
|
9
|
+
debug: (message: string, meta?: Record<string, any>) => void;
|
|
10
|
+
info: (message: string, meta?: Record<string, any>) => void;
|
|
11
|
+
warn: (message: string, meta?: Record<string, any>) => void;
|
|
12
|
+
error: (message: string, meta?: Record<string, any>) => void;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 请求失败选项
|
|
16
|
+
*/
|
|
17
|
+
export interface IResFailedOptions {
|
|
18
|
+
/** 是否成功 */
|
|
19
|
+
isSuccess: false;
|
|
20
|
+
/** 时间戳 */
|
|
21
|
+
timestamp: number;
|
|
22
|
+
/** 请求选项 */
|
|
23
|
+
request: HttpRequestOptions;
|
|
24
|
+
/** 错误信息 */
|
|
25
|
+
error: Error;
|
|
26
|
+
/** 错误码 */
|
|
27
|
+
errorCode?: string;
|
|
28
|
+
/** HTTP 状态码(如果有响应) */
|
|
29
|
+
status?: number;
|
|
30
|
+
/** 响应对象(如果有) */
|
|
31
|
+
response?: HttpResponse;
|
|
32
|
+
/** 请求耗时(毫秒) */
|
|
33
|
+
duration?: number;
|
|
34
|
+
/** 重试次数 */
|
|
35
|
+
retryCount?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 流式响应相关指标.
|
|
39
|
+
*/
|
|
40
|
+
export interface IStreamMetrics {
|
|
41
|
+
/** 首次响应时间(TTFB - Time To First Byte,毫秒) */
|
|
42
|
+
ttfb: number;
|
|
43
|
+
/** 流是否已完成 */
|
|
44
|
+
completed: boolean;
|
|
45
|
+
/** 流完成总耗时(毫秒,仅在流完成时有值) */
|
|
46
|
+
totalDuration?: number;
|
|
47
|
+
/** 流传输的字节数(如果可统计) */
|
|
48
|
+
bytesTransferred?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 请求成功选项
|
|
52
|
+
*/
|
|
53
|
+
export interface IResSuccessOptions {
|
|
54
|
+
/** 是否成功 */
|
|
55
|
+
isSuccess: true;
|
|
56
|
+
/** 时间戳 */
|
|
57
|
+
timestamp: number;
|
|
58
|
+
/** 请求选项 */
|
|
59
|
+
request: HttpRequestOptions;
|
|
60
|
+
/** 响应对象 */
|
|
61
|
+
response: HttpResponse;
|
|
62
|
+
/** 请求耗时(毫秒) */
|
|
63
|
+
duration: number;
|
|
64
|
+
/** 重试次数 */
|
|
65
|
+
retryCount?: number;
|
|
66
|
+
/** 流式响应相关指标(仅当 responseType 为 stream 时) */
|
|
67
|
+
streamMetrics?: IStreamMetrics;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 日志过滤器接口
|
|
71
|
+
*/
|
|
72
|
+
export interface ILogFilter {
|
|
73
|
+
/**
|
|
74
|
+
* 判断是否应该记录此日志
|
|
75
|
+
* @param options 日志选项(成功或失败)
|
|
76
|
+
* @returns 是否应该记录
|
|
77
|
+
*/
|
|
78
|
+
shouldLog: (options: IResSuccessOptions | IResFailedOptions) => boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 日志过滤器配置
|
|
82
|
+
*/
|
|
83
|
+
export interface LogFilterConfig {
|
|
84
|
+
/** 只记录特定 HTTP 方法 */
|
|
85
|
+
methods?: string[];
|
|
86
|
+
/** 只记录特定 URL 模式(支持正则表达式) */
|
|
87
|
+
urlPatterns?: (string | RegExp)[];
|
|
88
|
+
/** 只记录特定场景 */
|
|
89
|
+
scenarios?: string[];
|
|
90
|
+
/** 只记录特定状态码 */
|
|
91
|
+
statusCodes?: number[];
|
|
92
|
+
/** 只记录特定状态码范围 */
|
|
93
|
+
statusCodeRanges?: Array<{
|
|
94
|
+
min: number;
|
|
95
|
+
max: number;
|
|
96
|
+
}>;
|
|
97
|
+
/** 只记录失败的请求 */
|
|
98
|
+
onlyFailed?: boolean;
|
|
99
|
+
/** 只记录成功的请求 */
|
|
100
|
+
onlySuccess?: boolean;
|
|
101
|
+
/** 只记录耗时超过指定毫秒数的请求 */
|
|
102
|
+
minDuration?: number;
|
|
103
|
+
/** 自定义过滤函数 */
|
|
104
|
+
customFilter?: (options: IResSuccessOptions | IResFailedOptions) => boolean;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* HTTP 客户端日志记录器
|
|
108
|
+
*/
|
|
109
|
+
export interface IHttpClientLogger {
|
|
110
|
+
/**
|
|
111
|
+
* 记录失败的请求
|
|
112
|
+
* @param resOptions 请求失败选项
|
|
113
|
+
*/
|
|
114
|
+
logFailed: (resOptions: Omit<IResFailedOptions, 'isSuccess' | 'timestamp'>) => void;
|
|
115
|
+
/**
|
|
116
|
+
* 记录成功的请求
|
|
117
|
+
* @param resOptions 请求成功选项
|
|
118
|
+
*/
|
|
119
|
+
logSuccess: (resOptions: Omit<IResSuccessOptions, 'isSuccess' | 'timestamp'>) => void;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* HTTP 客户端日志记录器配置
|
|
123
|
+
*/
|
|
124
|
+
export interface HttpClientLoggerConfig {
|
|
125
|
+
/** 底层日志记录器 */
|
|
126
|
+
logger: ILogger;
|
|
127
|
+
/** 日志过滤器(可选) */
|
|
128
|
+
filter?: ILogFilter;
|
|
129
|
+
/** 是否记录请求体 */
|
|
130
|
+
logRequestBody?: boolean;
|
|
131
|
+
/** 是否记录响应体 */
|
|
132
|
+
logResponseBody?: boolean;
|
|
133
|
+
/** 响应体最大记录长度(字节) */
|
|
134
|
+
bodyMaxLength?: number;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/types/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 请求和响应类型定义
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* HTTP 方法
|
|
6
|
+
*/
|
|
7
|
+
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
|
|
8
|
+
/**
|
|
9
|
+
* 响应类型.
|
|
10
|
+
*/
|
|
11
|
+
export type ResponseType = 'arraybuffer' | 'blob' | 'document' | 'json' | 'text' | 'stream' | 'formdata';
|
|
12
|
+
/**
|
|
13
|
+
* HTTP 请求选项
|
|
14
|
+
*/
|
|
15
|
+
export interface HttpRequestOptions {
|
|
16
|
+
/** HTTP 方法 */
|
|
17
|
+
method: HttpMethod;
|
|
18
|
+
/** 请求 URL */
|
|
19
|
+
url: string;
|
|
20
|
+
/** 请求头 */
|
|
21
|
+
headers?: Record<string, string | number>;
|
|
22
|
+
/** URL 查询参数 */
|
|
23
|
+
params?: Record<string, string | number | boolean>;
|
|
24
|
+
/** 请求体 */
|
|
25
|
+
body?: any;
|
|
26
|
+
/** 请求超时(毫秒,覆盖全局配置) */
|
|
27
|
+
timeout?: number;
|
|
28
|
+
/** 重试次数(覆盖全局配置) */
|
|
29
|
+
retries?: number;
|
|
30
|
+
/** 业务场景标识 */
|
|
31
|
+
scenario?: string;
|
|
32
|
+
/** 业务元数据 */
|
|
33
|
+
meta?: Record<string, any>;
|
|
34
|
+
/** 响应类型 */
|
|
35
|
+
responseType?: ResponseType;
|
|
36
|
+
/** W3C Trace Context traceparent 头(用于分布式链路追踪) */
|
|
37
|
+
traceparent?: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* HTTP 响应
|
|
41
|
+
*/
|
|
42
|
+
export interface HttpResponse<T = any> {
|
|
43
|
+
/** 响应状态码 */
|
|
44
|
+
status: number;
|
|
45
|
+
/** 响应状态文本 */
|
|
46
|
+
statusText: string;
|
|
47
|
+
/** 响应头 */
|
|
48
|
+
headers: Record<string, string>;
|
|
49
|
+
/** 响应体 */
|
|
50
|
+
data: T;
|
|
51
|
+
/** 请求配置 */
|
|
52
|
+
config: HttpRequestOptions;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=request_response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request_response.d.ts","sourceRoot":"","sources":["../../../src/types/request_response.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,YAAY,GAClB,aAAa,GACb,MAAM,GACN,UAAU,GACV,MAAM,GACN,MAAM,GACN,QAAQ,GACR,UAAU,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,cAAc;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU;IACV,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC1C,eAAe;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,UAAU;IACV,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,WAAW;IACX,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACjC,YAAY;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU;IACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU;IACV,IAAI,EAAE,CAAC,CAAC;IACR,WAAW;IACX,MAAM,EAAE,kBAAkB,CAAC;CAC9B"}
|