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.
Files changed (263) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +160 -0
  3. package/dist/cjs/adapter/axios.adapter.js +224 -0
  4. package/dist/cjs/adapter/axios.adapter.js.map +1 -0
  5. package/dist/cjs/adapter/base.js +134 -0
  6. package/dist/cjs/adapter/base.js.map +1 -0
  7. package/dist/cjs/adapter/index.js +20 -0
  8. package/dist/cjs/adapter/index.js.map +1 -0
  9. package/dist/cjs/adapter/undici.adapter.js +272 -0
  10. package/dist/cjs/adapter/undici.adapter.js.map +1 -0
  11. package/dist/cjs/client.js +409 -0
  12. package/dist/cjs/client.js.map +1 -0
  13. package/dist/cjs/config.js +69 -0
  14. package/dist/cjs/config.js.map +1 -0
  15. package/dist/cjs/const/config.const.js +53 -0
  16. package/dist/cjs/const/config.const.js.map +1 -0
  17. package/dist/cjs/const/dns.const.js +16 -0
  18. package/dist/cjs/const/dns.const.js.map +1 -0
  19. package/dist/cjs/const/enum.const.js +22 -0
  20. package/dist/cjs/const/enum.const.js.map +1 -0
  21. package/dist/cjs/const/index.js +21 -0
  22. package/dist/cjs/const/index.js.map +1 -0
  23. package/dist/cjs/const/ip.const.js +110 -0
  24. package/dist/cjs/const/ip.const.js.map +1 -0
  25. package/dist/cjs/index.js +25 -0
  26. package/dist/cjs/index.js.map +1 -0
  27. package/dist/cjs/logger/base.js +60 -0
  28. package/dist/cjs/logger/base.js.map +1 -0
  29. package/dist/cjs/logger/http_client.logger.js +209 -0
  30. package/dist/cjs/logger/http_client.logger.js.map +1 -0
  31. package/dist/cjs/logger/index.js +20 -0
  32. package/dist/cjs/logger/index.js.map +1 -0
  33. package/dist/cjs/logger/log.filter.js +126 -0
  34. package/dist/cjs/logger/log.filter.js.map +1 -0
  35. package/dist/cjs/security/dns.validator.js +137 -0
  36. package/dist/cjs/security/dns.validator.js.map +1 -0
  37. package/dist/cjs/security/index.js +21 -0
  38. package/dist/cjs/security/index.js.map +1 -0
  39. package/dist/cjs/security/ip.validator.js +107 -0
  40. package/dist/cjs/security/ip.validator.js.map +1 -0
  41. package/dist/cjs/security/ssrf.guard.js +180 -0
  42. package/dist/cjs/security/ssrf.guard.js.map +1 -0
  43. package/dist/cjs/security/url.validator.js +170 -0
  44. package/dist/cjs/security/url.validator.js.map +1 -0
  45. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  46. package/dist/cjs/types/adapter.js +6 -0
  47. package/dist/cjs/types/adapter.js.map +1 -0
  48. package/dist/cjs/types/client.js +6 -0
  49. package/dist/cjs/types/client.js.map +1 -0
  50. package/dist/cjs/types/config.js +6 -0
  51. package/dist/cjs/types/config.js.map +1 -0
  52. package/dist/cjs/types/errors.js +35 -0
  53. package/dist/cjs/types/errors.js.map +1 -0
  54. package/dist/cjs/types/index.js +35 -0
  55. package/dist/cjs/types/index.js.map +1 -0
  56. package/dist/cjs/types/ip.js +6 -0
  57. package/dist/cjs/types/ip.js.map +1 -0
  58. package/dist/cjs/types/logger.js +6 -0
  59. package/dist/cjs/types/logger.js.map +1 -0
  60. package/dist/cjs/types/request_response.js +6 -0
  61. package/dist/cjs/types/request_response.js.map +1 -0
  62. package/dist/cjs/types/security.js +6 -0
  63. package/dist/cjs/types/security.js.map +1 -0
  64. package/dist/cjs/types/trace.js +14 -0
  65. package/dist/cjs/types/trace.js.map +1 -0
  66. package/dist/cjs/utils/common.js +31 -0
  67. package/dist/cjs/utils/common.js.map +1 -0
  68. package/dist/cjs/utils/domain.js +79 -0
  69. package/dist/cjs/utils/domain.js.map +1 -0
  70. package/dist/cjs/utils/index.js +44 -0
  71. package/dist/cjs/utils/index.js.map +1 -0
  72. package/dist/cjs/utils/ip.range.js +200 -0
  73. package/dist/cjs/utils/ip.range.js.map +1 -0
  74. package/dist/cjs/utils/trace.context.js +213 -0
  75. package/dist/cjs/utils/trace.context.js.map +1 -0
  76. package/dist/esm/adapter/axios.adapter.js +184 -0
  77. package/dist/esm/adapter/axios.adapter.js.map +1 -0
  78. package/dist/esm/adapter/base.js +130 -0
  79. package/dist/esm/adapter/base.js.map +1 -0
  80. package/dist/esm/adapter/index.js +4 -0
  81. package/dist/esm/adapter/index.js.map +1 -0
  82. package/dist/esm/adapter/undici.adapter.js +235 -0
  83. package/dist/esm/adapter/undici.adapter.js.map +1 -0
  84. package/dist/esm/client.js +405 -0
  85. package/dist/esm/client.js.map +1 -0
  86. package/dist/esm/config.js +65 -0
  87. package/dist/esm/config.js.map +1 -0
  88. package/dist/esm/const/config.const.js +50 -0
  89. package/dist/esm/const/config.const.js.map +1 -0
  90. package/dist/esm/const/dns.const.js +13 -0
  91. package/dist/esm/const/dns.const.js.map +1 -0
  92. package/dist/esm/const/enum.const.js +19 -0
  93. package/dist/esm/const/enum.const.js.map +1 -0
  94. package/dist/esm/const/index.js +5 -0
  95. package/dist/esm/const/index.js.map +1 -0
  96. package/dist/esm/const/ip.const.js +107 -0
  97. package/dist/esm/const/ip.const.js.map +1 -0
  98. package/dist/esm/index.js +9 -0
  99. package/dist/esm/index.js.map +1 -0
  100. package/dist/esm/logger/base.js +55 -0
  101. package/dist/esm/logger/base.js.map +1 -0
  102. package/dist/esm/logger/http_client.logger.js +205 -0
  103. package/dist/esm/logger/http_client.logger.js.map +1 -0
  104. package/dist/esm/logger/index.js +4 -0
  105. package/dist/esm/logger/index.js.map +1 -0
  106. package/dist/esm/logger/log.filter.js +122 -0
  107. package/dist/esm/logger/log.filter.js.map +1 -0
  108. package/dist/esm/security/dns.validator.js +133 -0
  109. package/dist/esm/security/dns.validator.js.map +1 -0
  110. package/dist/esm/security/index.js +5 -0
  111. package/dist/esm/security/index.js.map +1 -0
  112. package/dist/esm/security/ip.validator.js +103 -0
  113. package/dist/esm/security/ip.validator.js.map +1 -0
  114. package/dist/esm/security/ssrf.guard.js +176 -0
  115. package/dist/esm/security/ssrf.guard.js.map +1 -0
  116. package/dist/esm/security/url.validator.js +166 -0
  117. package/dist/esm/security/url.validator.js.map +1 -0
  118. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  119. package/dist/esm/types/adapter.js +5 -0
  120. package/dist/esm/types/adapter.js.map +1 -0
  121. package/dist/esm/types/client.js +5 -0
  122. package/dist/esm/types/client.js.map +1 -0
  123. package/dist/esm/types/config.js +5 -0
  124. package/dist/esm/types/config.js.map +1 -0
  125. package/dist/esm/types/errors.js +30 -0
  126. package/dist/esm/types/errors.js.map +1 -0
  127. package/dist/esm/types/index.js +19 -0
  128. package/dist/esm/types/index.js.map +1 -0
  129. package/dist/esm/types/ip.js +5 -0
  130. package/dist/esm/types/ip.js.map +1 -0
  131. package/dist/esm/types/logger.js +5 -0
  132. package/dist/esm/types/logger.js.map +1 -0
  133. package/dist/esm/types/request_response.js +5 -0
  134. package/dist/esm/types/request_response.js.map +1 -0
  135. package/dist/esm/types/security.js +5 -0
  136. package/dist/esm/types/security.js.map +1 -0
  137. package/dist/esm/types/trace.js +11 -0
  138. package/dist/esm/types/trace.js.map +1 -0
  139. package/dist/esm/utils/common.js +27 -0
  140. package/dist/esm/utils/common.js.map +1 -0
  141. package/dist/esm/utils/domain.js +71 -0
  142. package/dist/esm/utils/domain.js.map +1 -0
  143. package/dist/esm/utils/index.js +7 -0
  144. package/dist/esm/utils/index.js.map +1 -0
  145. package/dist/esm/utils/ip.range.js +187 -0
  146. package/dist/esm/utils/ip.range.js.map +1 -0
  147. package/dist/esm/utils/trace.context.js +199 -0
  148. package/dist/esm/utils/trace.context.js.map +1 -0
  149. package/dist/types/adapter/axios.adapter.d.ts +51 -0
  150. package/dist/types/adapter/axios.adapter.d.ts.map +1 -0
  151. package/dist/types/adapter/base.d.ts +56 -0
  152. package/dist/types/adapter/base.d.ts.map +1 -0
  153. package/dist/types/adapter/index.d.ts +4 -0
  154. package/dist/types/adapter/index.d.ts.map +1 -0
  155. package/dist/types/adapter/undici.adapter.d.ts +68 -0
  156. package/dist/types/adapter/undici.adapter.d.ts.map +1 -0
  157. package/dist/types/client.d.ts +105 -0
  158. package/dist/types/client.d.ts.map +1 -0
  159. package/dist/types/config.d.ts +14 -0
  160. package/dist/types/config.d.ts.map +1 -0
  161. package/dist/types/const/config.const.d.ts +23 -0
  162. package/dist/types/const/config.const.d.ts.map +1 -0
  163. package/dist/types/const/dns.const.d.ts +13 -0
  164. package/dist/types/const/dns.const.d.ts.map +1 -0
  165. package/dist/types/const/enum.const.d.ts +17 -0
  166. package/dist/types/const/enum.const.d.ts.map +1 -0
  167. package/dist/types/const/index.d.ts +5 -0
  168. package/dist/types/const/index.d.ts.map +1 -0
  169. package/dist/types/const/ip.const.d.ts +42 -0
  170. package/dist/types/const/ip.const.d.ts.map +1 -0
  171. package/dist/types/index.d.ts +9 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/logger/base.d.ts +42 -0
  174. package/dist/types/logger/base.d.ts.map +1 -0
  175. package/dist/types/logger/http_client.logger.d.ts +49 -0
  176. package/dist/types/logger/http_client.logger.d.ts.map +1 -0
  177. package/dist/types/logger/index.d.ts +4 -0
  178. package/dist/types/logger/index.d.ts.map +1 -0
  179. package/dist/types/logger/log.filter.d.ts +56 -0
  180. package/dist/types/logger/log.filter.d.ts.map +1 -0
  181. package/dist/types/security/dns.validator.d.ts +61 -0
  182. package/dist/types/security/dns.validator.d.ts.map +1 -0
  183. package/dist/types/security/index.d.ts +5 -0
  184. package/dist/types/security/index.d.ts.map +1 -0
  185. package/dist/types/security/ip.validator.d.ts +31 -0
  186. package/dist/types/security/ip.validator.d.ts.map +1 -0
  187. package/dist/types/security/ssrf.guard.d.ts +54 -0
  188. package/dist/types/security/ssrf.guard.d.ts.map +1 -0
  189. package/dist/types/security/url.validator.d.ts +76 -0
  190. package/dist/types/security/url.validator.d.ts.map +1 -0
  191. package/dist/types/types/adapter.d.ts +30 -0
  192. package/dist/types/types/adapter.d.ts.map +1 -0
  193. package/dist/types/types/client.d.ts +85 -0
  194. package/dist/types/types/client.d.ts.map +1 -0
  195. package/dist/types/types/config.d.ts +99 -0
  196. package/dist/types/types/config.d.ts.map +1 -0
  197. package/dist/types/types/errors.d.ts +23 -0
  198. package/dist/types/types/errors.d.ts.map +1 -0
  199. package/dist/types/types/index.d.ts +10 -0
  200. package/dist/types/types/index.d.ts.map +1 -0
  201. package/dist/types/types/ip.d.ts +32 -0
  202. package/dist/types/types/ip.d.ts.map +1 -0
  203. package/dist/types/types/logger.d.ts +136 -0
  204. package/dist/types/types/logger.d.ts.map +1 -0
  205. package/dist/types/types/request_response.d.ts +54 -0
  206. package/dist/types/types/request_response.d.ts.map +1 -0
  207. package/dist/types/types/security.d.ts +115 -0
  208. package/dist/types/types/security.d.ts.map +1 -0
  209. package/dist/types/types/trace.d.ts +34 -0
  210. package/dist/types/types/trace.d.ts.map +1 -0
  211. package/dist/types/utils/common.d.ts +14 -0
  212. package/dist/types/utils/common.d.ts.map +1 -0
  213. package/dist/types/utils/domain.d.ts +39 -0
  214. package/dist/types/utils/domain.d.ts.map +1 -0
  215. package/dist/types/utils/index.d.ts +6 -0
  216. package/dist/types/utils/index.d.ts.map +1 -0
  217. package/dist/types/utils/ip.range.d.ts +61 -0
  218. package/dist/types/utils/ip.range.d.ts.map +1 -0
  219. package/dist/types/utils/trace.context.d.ts +106 -0
  220. package/dist/types/utils/trace.context.d.ts.map +1 -0
  221. package/docs/adapters.md +53 -0
  222. package/docs/configuration.md +149 -0
  223. package/docs/logging.md +70 -0
  224. package/docs/proxy.md +44 -0
  225. package/docs/security.md +56 -0
  226. package/docs/trace-context.md +436 -0
  227. package/package.json +50 -0
  228. package/src/adapter/axios.adapter.ts +228 -0
  229. package/src/adapter/base.ts +180 -0
  230. package/src/adapter/index.ts +3 -0
  231. package/src/adapter/undici.adapter.ts +282 -0
  232. package/src/client.ts +552 -0
  233. package/src/config.ts +86 -0
  234. package/src/const/config.const.ts +60 -0
  235. package/src/const/dns.const.ts +15 -0
  236. package/src/const/enum.const.ts +17 -0
  237. package/src/const/index.ts +4 -0
  238. package/src/const/ip.const.ts +139 -0
  239. package/src/index.ts +8 -0
  240. package/src/logger/base.ts +75 -0
  241. package/src/logger/http_client.logger.ts +272 -0
  242. package/src/logger/index.ts +3 -0
  243. package/src/logger/log.filter.ts +149 -0
  244. package/src/security/dns.validator.ts +170 -0
  245. package/src/security/index.ts +4 -0
  246. package/src/security/ip.validator.ts +124 -0
  247. package/src/security/ssrf.guard.ts +224 -0
  248. package/src/security/url.validator.ts +192 -0
  249. package/src/types/adapter.ts +38 -0
  250. package/src/types/client.ts +119 -0
  251. package/src/types/config.ts +110 -0
  252. package/src/types/errors.ts +38 -0
  253. package/src/types/index.ts +27 -0
  254. package/src/types/ip.ts +34 -0
  255. package/src/types/logger.ts +150 -0
  256. package/src/types/request_response.ts +65 -0
  257. package/src/types/security.ts +126 -0
  258. package/src/types/trace.ts +35 -0
  259. package/src/utils/common.ts +28 -0
  260. package/src/utils/domain.ts +78 -0
  261. package/src/utils/index.ts +7 -0
  262. package/src/utils/ip.range.ts +218 -0
  263. package/src/utils/trace.context.ts +240 -0
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Undici 适配器实现
3
+ */
4
+ import type { HttpRequestOptions, HttpResponse } from '../types';
5
+ import { BaseHttpAdapter } from './base';
6
+ import { EClientAdapter } from '../const';
7
+ /**
8
+ * Undici 适配器
9
+ */
10
+ export declare class UndiciAdapter extends BaseHttpAdapter {
11
+ readonly name: EClientAdapter.undici;
12
+ /**
13
+ * 检查 Undici 是否可用
14
+ */
15
+ isAvailable(): boolean;
16
+ /**
17
+ * 发送请求
18
+ * @param options 请求选项
19
+ */
20
+ protected sendRequest<T>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
21
+ /**
22
+ * 准备请求头
23
+ * @param headers 原始请求头
24
+ */
25
+ private prepareHeaders;
26
+ /**
27
+ * 准备请求体
28
+ * @param body 原始请求体
29
+ * @param headers 请求头
30
+ */
31
+ private prepareBody;
32
+ /**
33
+ * 构建 Dispatcher(代理或 TLS 配置)
34
+ * @param options 请求选项
35
+ */
36
+ private buildDispatcher;
37
+ /**
38
+ * 创建全局代理 Agent
39
+ */
40
+ private createGlobalProxyAgent;
41
+ /**
42
+ * 创建正向代理 Agent
43
+ * @param proxyUrl 代理 URL
44
+ */
45
+ private createForwardProxyAgent;
46
+ /**
47
+ * 构建 Undici 请求选项
48
+ */
49
+ private buildUndiciOptions;
50
+ /**
51
+ * 处理 Undici 错误
52
+ * @param error 错误对象
53
+ * @param options 请求选项
54
+ */
55
+ private handleUndiciError;
56
+ /**
57
+ * 读取响应体
58
+ * @param response Undici 响应对象
59
+ * @param responseType 响应类型
60
+ */
61
+ private readResponseBody;
62
+ /**
63
+ * 获取状态文本
64
+ * @param statusCode 状态码
65
+ */
66
+ private getStatusText;
67
+ }
68
+ //# sourceMappingURL=undici.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undici.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapter/undici.adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAClB,YAAY,EAEf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAOzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,qBAAa,aAAc,SAAQ,eAAe;IAC9C,SAAgB,IAAI,wBAAkC;IAEtD;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;OAGG;cACa,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAuCrF;;;OAGG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IA0BvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2B9B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAezB;;;;OAIG;YACW,gBAAgB;IAsC9B;;;OAGG;IACH,OAAO,CAAC,aAAa;CAGxB"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * HTTP 客户端核心类
3
+ */
4
+ import type { PartialHttpClientConfig, HttpRequestOptions, HttpResponse, IHttpClient, IForwardProxy } from './types';
5
+ import { EClientAdapter } from './const';
6
+ /**
7
+ * HTTP 客户端
8
+ */
9
+ export declare class NsHttpClient implements IHttpClient {
10
+ private config;
11
+ private adapter;
12
+ private ssrfGuard;
13
+ private logger;
14
+ private httpLogger?;
15
+ private forwardProxy?;
16
+ constructor(userConfig?: PartialHttpClientConfig);
17
+ /**
18
+ * 从配置创建 HTTP 客户端
19
+ * @param config
20
+ */
21
+ static fromHttpClientConfig(config?: PartialHttpClientConfig): NsHttpClient;
22
+ /**
23
+ * 挂载适配器.
24
+ * @param adapter
25
+ */
26
+ withAdapter(adapter: EClientAdapter): this;
27
+ /**
28
+ * 挂载正向代理.
29
+ * @param proxy
30
+ */
31
+ withForwardProxy(proxy: IForwardProxy): this;
32
+ /**
33
+ * 初始化日志记录器
34
+ */
35
+ private initLogger;
36
+ /**
37
+ * 初始化 HTTP 客户端日志记录器
38
+ */
39
+ private initHttpLogger;
40
+ /**
41
+ * 初始化适配器
42
+ */
43
+ private initAdapter;
44
+ /**
45
+ * 发送 HTTP 请求
46
+ * @param options 请求选项
47
+ * @returns 响应结果
48
+ */
49
+ request<T = any>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
50
+ /**
51
+ * 便捷方法:GET 请求
52
+ */
53
+ get<T = any>(url: string, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url'>>): Promise<HttpResponse<T>>;
54
+ /**
55
+ * 便捷方法:POST 请求
56
+ */
57
+ post<T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>): Promise<HttpResponse<T>>;
58
+ /**
59
+ * 便捷方法:PUT 请求
60
+ */
61
+ put<T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>): Promise<HttpResponse<T>>;
62
+ /**
63
+ * 便捷方法:DELETE 请求
64
+ */
65
+ delete<T = any>(url: string, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url'>>): Promise<HttpResponse<T>>;
66
+ /**
67
+ * 便捷方法:PATCH 请求
68
+ */
69
+ patch<T = any>(url: string, body?: any, options?: Partial<Omit<HttpRequestOptions, 'method' | 'url' | 'body'>>): Promise<HttpResponse<T>>;
70
+ /**
71
+ * 记录响应日志
72
+ */
73
+ private logResponse;
74
+ /**
75
+ * 判断响应数据是否为流对象(Node.js Readable)
76
+ */
77
+ private isStreamResponse;
78
+ /**
79
+ * 包装流式响应,追踪流的完整生命周期
80
+ */
81
+ private wrapStreamResponse;
82
+ /**
83
+ * 记录流完成日志
84
+ */
85
+ private logStreamCompleted;
86
+ /**
87
+ * 记录错误日志
88
+ */
89
+ private logError;
90
+ /**
91
+ * 应用正向代理配置
92
+ * @param options 请求选项
93
+ */
94
+ private applyForwardProxy;
95
+ /**
96
+ * 清空 DNS 缓存
97
+ */
98
+ clearDnsCache(): void;
99
+ /**
100
+ * 获取 DNS 缓存大小
101
+ * @returns 缓存条目数量
102
+ */
103
+ getDnsCacheSize(): number;
104
+ }
105
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { HttpClientConfig, PartialHttpClientConfig } from './types';
2
+ /**
3
+ * 合并配置
4
+ * @param userConfig 用户配置
5
+ * @returns 完整配置
6
+ */
7
+ export declare function mergeConfig(userConfig?: PartialHttpClientConfig): HttpClientConfig;
8
+ /**
9
+ * 验证配置
10
+ * @param config 配置
11
+ * @throws {Error} 配置无效时抛出错误
12
+ */
13
+ export declare function validateConfig(config: HttpClientConfig): void;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,gBAAgB,EAChB,uBAAuB,EAC1B,MAAM,SAAS,CAAC;AASjB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,uBAA4B,GAAG,gBAAgB,CAgBtF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CA4C7D"}
@@ -0,0 +1,23 @@
1
+ import type { HttpClientConfig, LoggingConfig, RequestConfig, SecurityConfig } from '../types';
2
+ /**
3
+ * DNS 缓存最大 TTL(毫秒)- 5 分钟
4
+ * 避免过长的缓存时间导致内存积压
5
+ */
6
+ export declare const MAX_DNS_CACHE_TTL: number;
7
+ /**
8
+ * 默认安全配置
9
+ */
10
+ export declare const DEFAULT_SECURITY_CONFIG: SecurityConfig;
11
+ /**
12
+ * 默认日志配置
13
+ */
14
+ export declare const DEFAULT_LOGGING_CONFIG: LoggingConfig;
15
+ /**
16
+ * 默认请求配置
17
+ */
18
+ export declare const DEFAULT_REQUEST_CONFIG: RequestConfig;
19
+ /**
20
+ * 默认 HTTP 客户端配置
21
+ */
22
+ export declare const DEFAULT_HTTP_CLIENT_CONFIG: HttpClientConfig;
23
+ //# sourceMappingURL=config.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.const.d.ts","sourceRoot":"","sources":["../../../src/const/config.const.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACjB,MAAM,UAAU,CAAC;AAIlB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cASrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAKpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAOpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,gBAKxC,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 默认 DNS 缓存 TTL(毫秒)- 60 秒
3
+ */
4
+ export declare const DEFAULT_DNS_CACHE_TTL = 60000;
5
+ /**
6
+ * 默认 DNS 解析超时时间(毫秒)- 3 秒
7
+ */
8
+ export declare const DEFAULT_DNS_RESOLVE_TIMEOUT = 3000;
9
+ /**
10
+ * 默认 DNS 缓存最大条目数
11
+ */
12
+ export declare const DEFAULT_DNS_CACHE_MAX_SIZE = 500;
13
+ //# sourceMappingURL=dns.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.const.d.ts","sourceRoot":"","sources":["../../../src/const/dns.const.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * HTTP请求客户端适配器枚举.
3
+ */
4
+ export declare enum EClientAdapter {
5
+ 'axios' = "axios",
6
+ 'undici' = "undici"
7
+ }
8
+ /**
9
+ * 日志级别
10
+ */
11
+ export declare enum ELogLevel {
12
+ DEBUG = "debug",
13
+ INFO = "info",
14
+ WARN = "warn",
15
+ ERROR = "error"
16
+ }
17
+ //# sourceMappingURL=enum.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enum.const.d.ts","sourceRoot":"","sources":["../../../src/const/enum.const.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,cAAc;IACtB,OAAO,UAAU;IACjB,QAAQ,WAAW;CACtB;AAED;;GAEG;AACH,oBAAY,SAAS;IACjB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAClB"}
@@ -0,0 +1,5 @@
1
+ export * from './ip.const';
2
+ export * from './config.const';
3
+ export * from './enum.const';
4
+ export * from './dns.const';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/const/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { CompiledIpv4Range, CompiledIpv6Range } from '../types';
2
+ /**
3
+ * IPV4 校验地址范围(原始 CIDR 字符串)
4
+ */
5
+ export declare const IPV4_RANGES: {
6
+ private: string[];
7
+ loopback: string[];
8
+ linkLocal: string[];
9
+ multicast: string[];
10
+ reserved: string[];
11
+ };
12
+ /**
13
+ * IPV6 校验地址范围(原始 CIDR 字符串)
14
+ */
15
+ export declare const IPV6_RANGES: {
16
+ private: string[];
17
+ loopback: string[];
18
+ linkLocal: string[];
19
+ multicast: string[];
20
+ reserved: string[];
21
+ };
22
+ /**
23
+ * 预编译的 IPV4 校验地址范围(高性能版本)
24
+ */
25
+ export declare const COMPILED_IPV4_RANGES: {
26
+ private: CompiledIpv4Range[];
27
+ loopback: CompiledIpv4Range[];
28
+ linkLocal: CompiledIpv4Range[];
29
+ multicast: CompiledIpv4Range[];
30
+ reserved: CompiledIpv4Range[];
31
+ };
32
+ /**
33
+ * 预编译的 IPV6 校验地址范围(高性能版本)
34
+ */
35
+ export declare const COMPILED_IPV6_RANGES: {
36
+ private: CompiledIpv6Range[];
37
+ loopback: CompiledIpv6Range[];
38
+ linkLocal: CompiledIpv6Range[];
39
+ multicast: CompiledIpv6Range[];
40
+ reserved: CompiledIpv6Range[];
41
+ };
42
+ //# sourceMappingURL=ip.const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip.const.d.ts","sourceRoot":"","sources":["../../../src/const/ip.const.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACR,iBAAiB,EACjB,iBAAiB,EACpB,MAAM,UAAU,CAAC;AA6ElB;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAOhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE;IAC/B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,QAAQ,EAAE,iBAAiB,EAAE,CAAA;CAOhC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export * from './adapter';
2
+ export * from './client';
3
+ export * from './config';
4
+ export * from './logger';
5
+ export * from './security';
6
+ export * from './types';
7
+ export * from './utils';
8
+ export * from './const';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * 日志记录器基础接口和实现
3
+ */
4
+ import type { ILogger } from '../types';
5
+ import { ELogLevel } from '../const';
6
+ /**
7
+ * 抽象日志记录器基类
8
+ */
9
+ export declare abstract class BaseLogger implements ILogger {
10
+ protected minLevel: ELogLevel;
11
+ constructor(minLevel?: ELogLevel);
12
+ /**
13
+ * 检查日志级别是否应该记录
14
+ * @param level 日志级别
15
+ * @returns 是否应该记录
16
+ */
17
+ protected shouldLog(level: ELogLevel): boolean;
18
+ /**
19
+ * 设置最小日志级别
20
+ * @param level 最小日志级别
21
+ */
22
+ setMinLevel(level: ELogLevel): void;
23
+ /**
24
+ * 获取当前最小日志级别
25
+ * @returns 最小日志级别
26
+ */
27
+ getMinLevel(): ELogLevel;
28
+ abstract debug(message: string, meta?: Record<string, any>): void;
29
+ abstract info(message: string, meta?: Record<string, any>): void;
30
+ abstract warn(message: string, meta?: Record<string, any>): void;
31
+ abstract error(message: string, meta?: Record<string, any>): void;
32
+ }
33
+ /**
34
+ * 空日志记录器(不记录任何日志)
35
+ */
36
+ export declare class NullLogger implements ILogger {
37
+ debug(): void;
38
+ info(): void;
39
+ warn(): void;
40
+ error(): void;
41
+ }
42
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/logger/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC;;GAEG;AACH,8BAAsB,UAAW,YAAW,OAAO;IAC/C,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC;gBAElB,QAAQ,GAAE,SAA0B;IAIhD;;;;OAIG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAO9C;;;OAGG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAI1C;;;OAGG;IACI,WAAW,IAAI,SAAS;aAIf,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;aAExD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;aAEvD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;aAEvD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;CAC3E;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,OAAO;IAC/B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAIZ,KAAK,IAAI,IAAI;CAGvB"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * HTTP 客户端日志记录器实现
3
+ */
4
+ import type { IHttpClientLogger, ILogger, IResFailedOptions, IResSuccessOptions, LogFilterConfig, HttpClientLoggerConfig } from '../types';
5
+ /**
6
+ * HTTP 客户端日志记录器
7
+ * 将通用 ILogger 包装成专门的 IHttpClientLogger
8
+ */
9
+ export declare class NsHttpClientLogger implements IHttpClientLogger {
10
+ private logger;
11
+ private filter?;
12
+ private logRequestBody;
13
+ private logResponseBody;
14
+ private bodyMaxLength;
15
+ constructor(config: HttpClientLoggerConfig);
16
+ /**
17
+ * 记录失败的请求
18
+ */
19
+ logFailed(resOptions: Omit<IResFailedOptions, 'isSuccess' | 'timestamp'>): void;
20
+ /**
21
+ * 记录成功的请求
22
+ */
23
+ logSuccess(resOptions: Omit<IResSuccessOptions, 'isSuccess' | 'timestamp'>): void;
24
+ /**
25
+ * 构建日志元数据
26
+ */
27
+ private buildLogMeta;
28
+ /**
29
+ * 格式化字节数为人类可读格式
30
+ */
31
+ private formatBytes;
32
+ /**
33
+ * 截断请求/响应体到指定长度
34
+ * 对于特殊类型(Stream、Buffer等)返回标记文本
35
+ */
36
+ private truncateBody;
37
+ /**
38
+ * 创建 HTTP 客户端日志记录器
39
+ * @param logger 底层日志记录器
40
+ * @param filterConfig 过滤器配置
41
+ * @param options 其他选项
42
+ */
43
+ static create(logger: ILogger, filterConfig?: LogFilterConfig, options?: {
44
+ logRequestBody?: boolean;
45
+ logResponseBody?: boolean;
46
+ bodyMaxLength?: number;
47
+ }): NsHttpClientLogger;
48
+ }
49
+ //# sourceMappingURL=http_client.logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http_client.logger.d.ts","sourceRoot":"","sources":["../../../src/logger/http_client.logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,iBAAiB,EACjB,OAAO,EAEP,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACzB,MAAM,UAAU,CAAC;AAGlB;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IACxD,OAAO,CAAC,MAAM,CAAU;IACxB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,cAAc,CAAU;IAChC,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,aAAa,CAAS;gBAElB,MAAM,EAAE,sBAAsB;IAQ1C;;OAEG;IACI,SAAS,CACZ,UAAU,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,GAAG,WAAW,CAAC,GAC/D,IAAI;IAoBP;;OAEG;IACI,UAAU,CACb,UAAU,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,WAAW,CAAC,GAChE,IAAI;IAoBP;;OAEG;IACH,OAAO,CAAC,YAAY;IAsFpB;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAuDpB;;;;;OAKG;WACW,MAAM,CAChB,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,eAAe,EAC9B,OAAO,CAAC,EAAE;QACN,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;KACzB,GACF,kBAAkB;CASxB"}
@@ -0,0 +1,4 @@
1
+ export * from './base';
2
+ export * from './http_client.logger';
3
+ export * from './log.filter';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/logger/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * 日志过滤器实现
3
+ */
4
+ import type { ILogFilter, LogFilterConfig, IResSuccessOptions, IResFailedOptions } from '../types';
5
+ /**
6
+ * 默认日志过滤器
7
+ */
8
+ export declare class LogFilter implements ILogFilter {
9
+ private config;
10
+ constructor(config?: LogFilterConfig);
11
+ /**
12
+ * 判断是否应该记录此日志
13
+ * @param options 日志选项(成功或失败)
14
+ * @returns 是否应该记录
15
+ */
16
+ shouldLog(options: IResSuccessOptions | IResFailedOptions): boolean;
17
+ /**
18
+ * 检查成功/失败过滤
19
+ */
20
+ private checkSuccessOrFailedFilter;
21
+ /**
22
+ * 检查 HTTP 方法过滤
23
+ */
24
+ private checkMethodFilter;
25
+ /**
26
+ * 检查 URL 模式过滤
27
+ */
28
+ private checkUrlPatternFilter;
29
+ /**
30
+ * 检查场景过滤
31
+ */
32
+ private checkScenarioFilter;
33
+ /**
34
+ * 检查状态码过滤
35
+ */
36
+ private checkStatusCodeFilter;
37
+ /**
38
+ * 检查请求耗时过滤
39
+ */
40
+ private checkDurationFilter;
41
+ /**
42
+ * 检查自定义过滤函数
43
+ */
44
+ private checkCustomFilter;
45
+ /**
46
+ * 更新过滤器配置
47
+ * @param config 新的配置
48
+ */
49
+ updateConfig(config: LogFilterConfig): void;
50
+ /**
51
+ * 获取当前配置
52
+ * @returns 当前配置
53
+ */
54
+ getConfig(): LogFilterConfig;
55
+ }
56
+ //# sourceMappingURL=log.filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.filter.d.ts","sourceRoot":"","sources":["../../../src/logger/log.filter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACpB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,SAAU,YAAW,UAAU;IACxC,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,GAAE,eAAoB;IAIxC;;;;OAIG;IACI,SAAS,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,OAAO;IAY1E;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAUlC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAuB7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,IAAI,eAAe;CAGtC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * DNS 验证器
3
+ */
4
+ import type { DnsResult } from '../types';
5
+ /**
6
+ * DNS 验证器类
7
+ */
8
+ export declare class DnsValidator {
9
+ private cache;
10
+ private cacheTtl;
11
+ private resolveTimeout;
12
+ constructor(cacheTtl?: number, resolveTimeout?: number, maxCacheSize?: number);
13
+ /**
14
+ * 解析域名
15
+ * @param hostname 域名
16
+ * @returns DNS 解析结果
17
+ */
18
+ resolve(hostname: string): Promise<DnsResult>;
19
+ /**
20
+ * 解析并验证域名(包括 IP 安全检查)
21
+ * @param hostname 域名
22
+ * @param allowPrivateIp 是否允许私有 IP
23
+ * @returns DNS 解析结果和验证结果
24
+ */
25
+ resolveAndValidate(hostname: string, allowPrivateIp?: boolean): Promise<{
26
+ dnsResult: DnsResult;
27
+ allValid: boolean;
28
+ invalidIps: string[];
29
+ }>;
30
+ /**
31
+ * 清空缓存
32
+ */
33
+ clearCache(): void;
34
+ /**
35
+ * 清除指定域名的缓存
36
+ * @param hostname 域名
37
+ */
38
+ clearCacheFor(hostname: string): void;
39
+ /**
40
+ * 获取缓存大小
41
+ * @returns 缓存条目数量
42
+ */
43
+ getCacheSize(): number;
44
+ /**
45
+ * 清理过期的缓存条目
46
+ * LRUCache 会自动清理过期条目(ttlAutopurge: true),此方法主动触发清理
47
+ */
48
+ cleanExpiredCache(): void;
49
+ /**
50
+ * 获取缓存的最大容量
51
+ * @returns 最大缓存条目数量
52
+ */
53
+ getMaxCacheSize(): number;
54
+ /**
55
+ * 检查缓存中是否存在指定域名
56
+ * @param hostname 域名
57
+ * @returns 是否存在
58
+ */
59
+ hasCache(hostname: string): boolean;
60
+ }
61
+ //# sourceMappingURL=dns.validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dns.validator.d.ts","sourceRoot":"","sources":["../../../src/security/dns.validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EACR,SAAS,EACZ,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;gBAG3B,QAAQ,SAAwB,EAChC,cAAc,SAA8B,EAC5C,YAAY,SAA6B;IAgB7C;;;;OAIG;IACU,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAgD1D;;;;;OAKG;IACU,kBAAkB,CAC3B,QAAQ,EAAE,MAAM,EAChB,cAAc,UAAQ,GACvB,OAAO,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAe7E;;OAEG;IACI,UAAU,IAAI,IAAI;IAIzB;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI5C;;;OAGG;IACI,YAAY,IAAI,MAAM;IAI7B;;;OAGG;IACI,iBAAiB,IAAI,IAAI;IAIhC;;;OAGG;IACI,eAAe,IAAI,MAAM;IAIhC;;;;OAIG;IACI,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG7C"}
@@ -0,0 +1,5 @@
1
+ export * from './dns.validator';
2
+ export * from './ip.validator';
3
+ export * from './url.validator';
4
+ export * from './ssrf.guard';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/security/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * IP 地址验证器
3
+ */
4
+ import type { IpValidationResult } from '../types';
5
+ /**
6
+ * IP 地址验证器类
7
+ */
8
+ export declare class IpValidator {
9
+ /**
10
+ * 验证 IP 地址是否安全
11
+ * @param ip IP 地址
12
+ * @param allowPrivateIp 是否允许私有 IP
13
+ * @returns 验证结果
14
+ */
15
+ static validate(ip: string, allowPrivateIp?: boolean): IpValidationResult;
16
+ /**
17
+ * 批量验证 IP 地址
18
+ * @param ips IP 地址列表
19
+ * @param allowPrivateIp 是否允许私有 IP
20
+ * @returns 验证结果列表
21
+ */
22
+ static validateMany(ips: string[], allowPrivateIp?: boolean): IpValidationResult[];
23
+ /**
24
+ * 检查是否所有 IP 地址都有效
25
+ * @param ips IP 地址列表
26
+ * @param allowPrivateIp 是否允许私有 IP
27
+ * @returns 是否所有 IP 都有效
28
+ */
29
+ static validateAll(ips: string[], allowPrivateIp?: boolean): boolean;
30
+ }
31
+ //# sourceMappingURL=ip.validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ip.validator.d.ts","sourceRoot":"","sources":["../../../src/security/ip.validator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAQnD;;GAEG;AACH,qBAAa,WAAW;IACpB;;;;;OAKG;WACW,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,kBAAkB;IA0E9E;;;;;OAKG;WACW,YAAY,CACtB,GAAG,EAAE,MAAM,EAAE,EACb,cAAc,UAAQ,GACvB,kBAAkB,EAAE;IAIvB;;;;;OAKG;WACW,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,cAAc,UAAQ,GAAG,OAAO;CAG5E"}