nstarter-http-request 0.1.12 → 0.1.13

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 (60) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/adapter/axios.adapter.js +93 -1
  3. package/dist/cjs/adapter/axios.adapter.js.map +1 -1
  4. package/dist/cjs/adapter/base.js +20 -1
  5. package/dist/cjs/adapter/base.js.map +1 -1
  6. package/dist/cjs/adapter/undici.adapter.js +82 -70
  7. package/dist/cjs/adapter/undici.adapter.js.map +1 -1
  8. package/dist/cjs/client.js +99 -56
  9. package/dist/cjs/client.js.map +1 -1
  10. package/dist/cjs/const/config.const.js +7 -1
  11. package/dist/cjs/const/config.const.js.map +1 -1
  12. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  13. package/dist/cjs/types/errors.js +30 -2
  14. package/dist/cjs/types/errors.js.map +1 -1
  15. package/dist/cjs/utils/index.js +2 -1
  16. package/dist/cjs/utils/index.js.map +1 -1
  17. package/dist/cjs/utils/redirect.js +138 -0
  18. package/dist/cjs/utils/redirect.js.map +1 -0
  19. package/dist/esm/adapter/axios.adapter.js +95 -3
  20. package/dist/esm/adapter/axios.adapter.js.map +1 -1
  21. package/dist/esm/adapter/base.js +20 -1
  22. package/dist/esm/adapter/base.js.map +1 -1
  23. package/dist/esm/adapter/undici.adapter.js +83 -71
  24. package/dist/esm/adapter/undici.adapter.js.map +1 -1
  25. package/dist/esm/client.js +100 -57
  26. package/dist/esm/client.js.map +1 -1
  27. package/dist/esm/const/config.const.js +6 -0
  28. package/dist/esm/const/config.const.js.map +1 -1
  29. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  30. package/dist/esm/types/errors.js +28 -1
  31. package/dist/esm/types/errors.js.map +1 -1
  32. package/dist/esm/utils/index.js +1 -0
  33. package/dist/esm/utils/index.js.map +1 -1
  34. package/dist/esm/utils/redirect.js +133 -0
  35. package/dist/esm/utils/redirect.js.map +1 -0
  36. package/dist/types/adapter/axios.adapter.d.ts +22 -0
  37. package/dist/types/adapter/axios.adapter.d.ts.map +1 -1
  38. package/dist/types/adapter/base.d.ts +6 -0
  39. package/dist/types/adapter/base.d.ts.map +1 -1
  40. package/dist/types/adapter/undici.adapter.d.ts +20 -11
  41. package/dist/types/adapter/undici.adapter.d.ts.map +1 -1
  42. package/dist/types/client.d.ts +11 -0
  43. package/dist/types/client.d.ts.map +1 -1
  44. package/dist/types/const/config.const.d.ts +6 -0
  45. package/dist/types/const/config.const.d.ts.map +1 -1
  46. package/dist/types/types/errors.d.ts +26 -1
  47. package/dist/types/types/errors.d.ts.map +1 -1
  48. package/dist/types/utils/index.d.ts +1 -0
  49. package/dist/types/utils/index.d.ts.map +1 -1
  50. package/dist/types/utils/redirect.d.ts +26 -0
  51. package/dist/types/utils/redirect.d.ts.map +1 -0
  52. package/package.json +1 -1
  53. package/src/adapter/axios.adapter.ts +124 -3
  54. package/src/adapter/base.ts +22 -1
  55. package/src/adapter/undici.adapter.ts +95 -83
  56. package/src/client.ts +114 -63
  57. package/src/const/config.const.ts +7 -0
  58. package/src/types/errors.ts +39 -1
  59. package/src/utils/index.ts +1 -0
  60. package/src/utils/redirect.ts +163 -0
@@ -7,8 +7,9 @@ import { AxiosAdapter, UndiciAdapter } from './adapter';
7
7
  import { NullLogger, NsHttpClientLogger } from './logger';
8
8
  import { EClientAdapter } from './const';
9
9
  import { HttpError } from './types';
10
- import { DomainUtils, TraceContextUtils } from './utils';
10
+ import { DomainUtils, RedirectUtils, TraceContextUtils } from './utils';
11
11
  import { PassThrough, pipeline, Readable } from 'node:stream';
12
+ import { finished } from 'node:stream/promises';
12
13
  import { MetricsTransform } from './stream';
13
14
  /**
14
15
  * HTTP 客户端
@@ -113,71 +114,101 @@ export class NsHttpClient {
113
114
  async request(options) {
114
115
  const startTime = Date.now();
115
116
  try {
116
- const forwardProxyDecision = this.resolveForwardProxyDecision(options.url);
117
- // 安全验证
118
- const { safeUrl, result: ssrfResult } = await this.ssrfGuard.validateAndGetSafeUrl(options.url, {
119
- skipDnsValidation: forwardProxyDecision.shouldProxy,
120
- skipDnsValidationReason: forwardProxyDecision.shouldProxy ? 'forward_proxy' : undefined
121
- });
122
- this.logger.debug('URL validation passed', {
123
- originalUrl: options.url,
124
- safeUrl,
125
- resolvedIps: ssrfResult.resolvedIps,
126
- dnsValidationSkipped: ssrfResult.dnsValidationSkipped,
127
- dnsValidationSkipReason: ssrfResult.dnsValidationSkipReason,
128
- scenario: options.scenario
117
+ return await this.safeRequest(options, this.config.request.maxRedirects);
118
+ }
119
+ catch (error) {
120
+ // 记录错误日志
121
+ this.logError(options, error, Date.now() - startTime);
122
+ throw error;
123
+ }
124
+ }
125
+ /**
126
+ *
127
+ * @param options 请求选项
128
+ * @param remainedRedirects 剩余可重定向次数
129
+ * @returns 响应结果
130
+ */
131
+ async safeRequest(options, remainedRedirects) {
132
+ const startTime = Date.now();
133
+ const forwardProxyDecision = this.resolveForwardProxyDecision(options.url);
134
+ // 安全验证
135
+ const { safeUrl, result: ssrfResult } = await this.ssrfGuard.validateAndGetSafeUrl(options.url, {
136
+ skipDnsValidation: forwardProxyDecision.shouldProxy,
137
+ skipDnsValidationReason: forwardProxyDecision.shouldProxy ? 'forward_proxy' : undefined
138
+ });
139
+ this.logger.debug('URL validation passed', {
140
+ originalUrl: options.url,
141
+ safeUrl,
142
+ resolvedIps: ssrfResult.resolvedIps,
143
+ dnsValidationSkipped: ssrfResult.dnsValidationSkipped,
144
+ dnsValidationSkipReason: ssrfResult.dnsValidationSkipReason,
145
+ scenario: options.scenario
146
+ });
147
+ if (ssrfResult.dnsValidationSkipped && forwardProxyDecision.shouldProxy) {
148
+ this.logger.debug('Skipped target DNS validation because request uses forward proxy', {
149
+ hostname: forwardProxyDecision.hostname,
150
+ proxyUrl: forwardProxyDecision.proxyUrl
129
151
  });
130
- if (ssrfResult.dnsValidationSkipped && forwardProxyDecision.shouldProxy) {
131
- this.logger.debug('Skipped target DNS validation because request uses forward proxy', {
132
- hostname: forwardProxyDecision.hostname,
133
- proxyUrl: forwardProxyDecision.proxyUrl
152
+ }
153
+ // 使用安全的 URL 发起请求
154
+ const safeOptions = {
155
+ ...options,
156
+ url: safeUrl
157
+ };
158
+ // 处理 W3C Trace Context traceparent 头
159
+ if (options.traceparent) {
160
+ // 验证 traceparent 格式
161
+ if (!TraceContextUtils.isValidTraceParent(options.traceparent)) {
162
+ this.logger.warn('Invalid traceparent format, ignoring', {
163
+ traceparent: options.traceparent
134
164
  });
135
165
  }
136
- // 使用安全的 URL 发起请求
137
- const safeOptions = {
138
- ...options,
139
- url: safeUrl
140
- };
141
- // 处理 W3C Trace Context traceparent 头
142
- if (options.traceparent) {
143
- // 验证 traceparent 格式
144
- if (!TraceContextUtils.isValidTraceParent(options.traceparent)) {
145
- this.logger.warn('Invalid traceparent format, ignoring', {
146
- traceparent: options.traceparent
147
- });
166
+ else {
167
+ safeOptions.headers = {
168
+ ...safeOptions.headers,
169
+ traceparent: options.traceparent
170
+ };
171
+ this.logger.debug('Traceparent header added', {
172
+ traceparent: options.traceparent,
173
+ sampled: TraceContextUtils.isSampled(options.traceparent)
174
+ });
175
+ }
176
+ }
177
+ // 应用正向代理配置
178
+ if (this.forwardProxy) {
179
+ this.applyForwardProxy(safeOptions, forwardProxyDecision);
180
+ }
181
+ // 发起请求
182
+ const response = await this.adapter.request(safeOptions);
183
+ // 需要重定向时,继续跟跳
184
+ if (RedirectUtils.isRedirectStatus(response.status)) {
185
+ try {
186
+ if (remainedRedirects === undefined || remainedRedirects <= 0) {
187
+ throw new Error('max redirects');
148
188
  }
149
- else {
150
- safeOptions.headers = {
151
- ...safeOptions.headers,
152
- traceparent: options.traceparent
153
- };
154
- this.logger.debug('Traceparent header added', {
155
- traceparent: options.traceparent,
156
- sampled: TraceContextUtils.isSampled(options.traceparent)
157
- });
189
+ const redirectOptions = RedirectUtils.buildRedirectOptions(safeOptions, response, this.adapter.name, this.config.request.timeout);
190
+ if (redirectOptions) {
191
+ RedirectUtils.consumeRedirectTimeout(redirectOptions, startTime);
192
+ // 下一跳前,把中间响应的流先丢掉,以免占用连接
193
+ await this.discardResponseStream(response);
194
+ const nextRemainedRedirects = remainedRedirects - 1;
195
+ return await this.safeRequest(redirectOptions, nextRemainedRedirects);
158
196
  }
159
197
  }
160
- // 应用正向代理配置
161
- if (this.forwardProxy) {
162
- this.applyForwardProxy(safeOptions, forwardProxyDecision);
198
+ catch (error) {
199
+ await this.discardResponseStream(response);
200
+ throw error;
163
201
  }
164
- // 发起请求
165
- const response = await this.adapter.request(safeOptions);
166
- // 首次响应时间(TTFB)
167
- const ttfb = Date.now() - startTime;
168
- // 如果是流式响应,包装流对象以追踪完整生命周期
169
- if (options.responseType === 'stream' && this.isStreamResponse(response.data)) {
170
- return this.wrapStreamResponse(safeOptions, response, startTime, ttfb);
171
- }
172
- // 记录非流式响应日志
173
- this.logResponse(safeOptions, response, ttfb);
174
- return response;
175
202
  }
176
- catch (error) {
177
- // 记录错误日志
178
- this.logError(options, error, Date.now() - startTime);
179
- throw error;
203
+ // 首次响应时间(TTFB)
204
+ const ttfb = Date.now() - startTime;
205
+ // 如果是流式响应,包装流对象以追踪完整生命周期
206
+ if (options.responseType === 'stream' && this.isStreamResponse(response.data)) {
207
+ return this.wrapStreamResponse(safeOptions, response, startTime, ttfb);
180
208
  }
209
+ // 记录非流式响应日志
210
+ this.logResponse(safeOptions, response, ttfb);
211
+ return response;
181
212
  }
182
213
  /**
183
214
  * 便捷方法:GET 请求
@@ -233,6 +264,18 @@ export class NsHttpClient {
233
264
  streamMetrics
234
265
  });
235
266
  }
267
+ /**
268
+ * 销毁不再交给调用方的响应流
269
+ */
270
+ async discardResponseStream(response) {
271
+ const data = response.data;
272
+ if (!(data instanceof Readable) || data.destroyed) {
273
+ return;
274
+ }
275
+ const done = finished(data);
276
+ data.destroy();
277
+ await done.catch(() => undefined);
278
+ }
236
279
  /**
237
280
  * 判断响应数据是否为流对象(Node.js Readable)
238
281
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAeH,OAAO,EACH,WAAW,EACX,cAAc,EACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACH,YAAY,EACZ,aAAa,EAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACH,UAAU,EACV,kBAAkB,EACrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EACH,WAAW,EACX,iBAAiB,EACpB,MAAM,SAAS,CAAC;AACjB,OAAO,EACH,WAAW,EACX,QAAQ,EACR,QAAQ,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgB5C;;GAEG;AACH,MAAM,OAAO,YAAY;IAQrB,YAAY,aAAsC,EAAE;QAChD,OAAO;QACP,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QAEtC,OAAO;QACP,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,WAAW;QACX,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAExC,cAAc;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAErD,SAAS;QACT,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;YAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,QAAQ,EAAE;gBACN,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB;gBAC7D,kBAAkB,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB;gBAC3D,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc;aACtD;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,oBAAoB,CAAC,SAAkC,EAAE;QACnE,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,OAAuB;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,KAAoB;QACxC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;YACzC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,cAAc,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC;SAC9C,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,IAAI,UAAU,EAAE,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,cAAc;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;QAC1C,CAAC;QAED,wCAAwC;QACxC,OAAO,kBAAkB,CAAC,MAAM,CAC5B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAC1B;YACI,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc;YAClD,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe;YACpD,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa;SACnD,CACJ,CAAC;IACN,CAAC;IAED;;OAEG;IACK,WAAW;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,cAAc,CAAC,KAAK;YACxD,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;YAC1E,CAAC,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEhF,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACX,YAAa,IAAI,CAAC,MAAM,CAAC,OAAQ,sBAAsB;gBACvD,kCAAmC,IAAI,CAAC,MAAM,CAAC,OAAQ,EAAE,CAC5D,CAAC;QACN,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAU,OAA2B;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAE3E,OAAO;YACP,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAC9E,OAAO,CAAC,GAAG,EACX;gBACI,iBAAiB,EAAE,oBAAoB,CAAC,WAAW;gBACnD,uBAAuB,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAC1F,CACJ,CAAC;YAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACvC,WAAW,EAAE,OAAO,CAAC,GAAG;gBACxB,OAAO;gBACP,WAAW,EAAE,UAAU,CAAC,WAAW;gBACnC,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;gBACrD,uBAAuB,EAAE,UAAU,CAAC,uBAAuB;gBAC3D,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC7B,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,WAAW,EAAE,CAAC;gBACtE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,EAAE;oBAClF,QAAQ,EAAE,oBAAoB,CAAC,QAAQ;oBACvC,QAAQ,EAAE,oBAAoB,CAAC,QAAQ;iBAC1C,CAAC,CAAC;YACP,CAAC;YAED,iBAAiB;YACjB,MAAM,WAAW,GAAuB;gBACpC,GAAG,OAAO;gBACV,GAAG,EAAE,OAAO;aACf,CAAC;YAEF,qCAAqC;YACrC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACtB,oBAAoB;gBACpB,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE;wBACrD,WAAW,EAAE,OAAO,CAAC,WAAW;qBACnC,CAAC,CAAC;gBACP,CAAC;qBAAM,CAAC;oBACJ,WAAW,CAAC,OAAO,GAAG;wBAClB,GAAG,WAAW,CAAC,OAAO;wBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;qBACnC,CAAC;oBAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;wBAC1C,WAAW,EAAE,OAAO,CAAC,WAAW;wBAChC,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC;qBAC5D,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YAED,WAAW;YACX,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;YAC9D,CAAC;YAED,OAAO;YACP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAI,WAAW,CAAC,CAAC;YAE5D,eAAe;YACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEpC,yBAAyB;YACzB,IAAI,OAAO,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YAC3E,CAAC;YAED,YAAY;YACZ,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAE9C,OAAO,QAAQ,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,SAAS;YACT,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CACZ,GAAW,EACX,OAA6D;QAE7D,OAAO,IAAI,CAAC,OAAO,CAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI,CACb,GAAW,EACX,IAAU,EACV,OAAsE;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,GAAG,CACZ,GAAW,EACX,IAAU,EACV,OAAsE;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,MAAM,CACf,GAAW,EACX,OAA6D;QAE7D,OAAO,IAAI,CAAC,OAAO,CAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CACd,GAAW,EACX,IAAU,EACV,OAAsE;QAEtE,OAAO,IAAI,CAAC,OAAO,CAAI,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,WAAW,CACf,OAA2B,EAC3B,QAAsB,EACtB,QAAgB,EAChB,aAA8B;QAE9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAElE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YACvB,OAAO,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;aACrB;YACD,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,aAAa;SAChB,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,IAAS;QAC9B,sCAAsC;QACtC,OAAO,IAAI,YAAY,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IAEH,2CAA2C;IACnC,kBAAkB,CACtB,OAA2B,EAC3B,QAAyB,EACzB,gBAAwB,EACxB,IAAY;QAEZ,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAW,CAAC;QAEpC,gBAAgB;QAChB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YACtC,IAAI;YACJ,SAAS,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;YACzC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI;YACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,cAAc,GAAG,MAAkB,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACvC,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;QAExC,6BAA6B;QAC7B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACzB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACvD,IAAI,CAAC,kBAAkB,CACnB,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,gBAAgB,CACnB,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YACpD,MAAM,gBAAgB,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBACnC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI;gBACJ,aAAa;gBACb,gBAAgB;gBAChB,KAAK,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,QAAQ,CAAC,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3D,WAAW;QACX,OAAO;YACH,GAAG,QAAQ;YACX,IAAI,EAAE,aAAkB;SAC3B,CAAC;IACN,CAAC;IAED;;OAEG;IACK,kBAAkB,CACtB,OAA2B,EAC3B,QAAsB,EACtB,IAAY,EACZ,aAAqB,EACrB,gBAAwB;QAExB,UAAU;QACV,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE;YAC/C,IAAI;YACJ,SAAS,EAAE,IAAI;YACf,aAAa;YACb,gBAAgB;SACnB,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE;YAC3C,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI;YACJ,aAAa;YACb,cAAc,EAAE,aAAa,GAAG,IAAI;YACpC,gBAAgB;YAChB,UAAU,EAAE,gBAAgB,GAAG,CAAC,IAAI,aAAa,GAAG,IAAI;gBACpD,CAAC,CAAC,GAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,OAAO;gBACpF,CAAC,CAAC,KAAK;SACd,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,OAA2B,EAAE,KAAU,EAAE,QAAgB;QACtE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,WAAW;QACX,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;QAElE,MAAM,SAAS,GAAG,KAAK,YAAY,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YACtB,OAAO,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;aACrB;YACD,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChE,SAAS,EAAE,SAAS,EAAE,IAAI,IAAI,eAAe;YAC7C,MAAM,EAAE,SAAS,EAAE,MAAM;YACzB,QAAQ,EAAE,SAAS,EAAE,QAAQ;YAC7B,QAAQ;YACR,UAAU;SACb,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CACrB,OAA2B,EAC3B,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,GAAG,CAAC;QAExD,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACK,2BAA2B,CAAC,GAAW;QAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACnD,OAAO;gBACH,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,UAAU;aACrB,CAAC;QACN,CAAC;QAED,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAEhE,WAAW;QACX,IAAI,SAAc,CAAC;QACnB,IAAI,CAAC;YACD,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACL,OAAO;gBACH,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,aAAa;aACxB,CAAC;QACN,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAEpC,2BAA2B;QAC3B,MAAM,cAAc,GAAG,WAAW,CAAC,0BAA0B,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;YACxC,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;gBACxC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC9B,OAAO;wBACH,WAAW,EAAE,KAAK;wBAClB,MAAM,EAAE,UAAU;wBAClB,QAAQ;wBACR,OAAO,EAAE,YAAY,CAAC,MAAM;qBAC/B,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,OAAO,CAAC;QAC/C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChD,OAAO;gBACH,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,sBAAsB;gBAC9B,QAAQ;gBACR,QAAQ;aACX,CAAC;QACN,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,KAAK,QAAQ,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QAEpD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO;gBACH,WAAW,EAAE,KAAK;gBAClB,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ;gBACR,QAAQ;aACX,CAAC;QACN,CAAC;QAED,OAAO;YACH,WAAW,EAAE,IAAI;YACjB,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,QAAQ;SACX,CAAC;IACN,CAAC;IAED;;;;OAIG;IACK,yBAAyB,CAAC,OAA2B,EAAE,QAA8B;QACzF,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE;oBACtD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;iBAC5B,CAAC,CAAC;gBACH,OAAO;YACX,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE;oBACnE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC9B,CAAC,CAAC;YACP,CAAC;YACD,OAAO;QACX,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEjD,wBAAwB;QACxB,OAAO,CAAC,IAAI,GAAG;YACX,GAAG,OAAO,CAAC,IAAI;YACf,cAAc,EAAE;gBACZ,QAAQ;gBACR,OAAO;gBACP,QAAQ;aACX;SACJ,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;YACvC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,QAAQ;YACR,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAGD;;OAEG;IACI,aAAa;QAChB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,eAAe;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC;IAC5C,CAAC;CACJ"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,12 @@ export const DEFAULT_REQUEST_CONFIG = {
37
37
  maxRequestBodySize: 10 * 1024 * 1024, // 10MB
38
38
  maxResponseBodySize: 50 * 1024 * 1024 // 50MB
39
39
  };
40
+ /**
41
+ * 响应体大小预检的线上长度容差比例。
42
+ * axios 的 onDownloadProgress.total 是压缩后的 Content-Length,而 maxContentLength 按解压后计数;
43
+ * 不可压缩数据经 gzip 等压缩后可能略大于解压大小,预检仅在超过上限该比例时提前中止。
44
+ */
45
+ export const MAX_RESPONSE_SIZE_TOLERANCE_RATIO = 0.01;
40
46
  /**
41
47
  * 默认 HTTP 客户端配置
42
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.const.js","sourceRoot":"","sources":["../../../src/const/config.const.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,kBAAkB;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACnD,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,qBAAqB;IAClC,eAAe,EAAE,0BAA0B;CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACjD,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACjD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI,EAAE,MAAM;IACxB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAC7C,mBAAmB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;CAChD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqB;IACxD,OAAO,EAAE,cAAc,CAAC,KAAK;IAC7B,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,sBAAsB;CAClC,CAAC"}
1
+ {"version":3,"file":"config.const.js","sourceRoot":"","sources":["../../../src/const/config.const.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,kBAAkB;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmB;IACnD,kBAAkB,EAAE,IAAI;IACxB,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,KAAK;IACzB,cAAc,EAAE,KAAK;IACrB,SAAS,EAAE,EAAE;IACb,SAAS,EAAE,EAAE;IACb,WAAW,EAAE,qBAAqB;IAClC,eAAe,EAAE,0BAA0B;CAC9C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACjD,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC,MAAM;CACpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAkB;IACjD,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI,EAAE,MAAM;IACxB,YAAY,EAAE,CAAC;IACf,kBAAkB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO;IAC7C,mBAAmB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO;CAChD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAqB;IACxD,OAAO,EAAE,cAAc,CAAC,KAAK;IAC7B,QAAQ,EAAE,uBAAuB;IACjC,OAAO,EAAE,sBAAsB;IAC/B,OAAO,EAAE,sBAAsB;CAClC,CAAC"}
@@ -1 +1 @@
1
- {"root":["../../src/client.ts","../../src/config.ts","../../src/index.ts","../../src/adapter/axios.adapter.ts","../../src/adapter/base.ts","../../src/adapter/index.ts","../../src/adapter/undici.adapter.ts","../../src/const/config.const.ts","../../src/const/dns.const.ts","../../src/const/enum.const.ts","../../src/const/index.ts","../../src/const/ip.const.ts","../../src/logger/base.ts","../../src/logger/http_client.logger.ts","../../src/logger/index.ts","../../src/logger/log.filter.ts","../../src/security/dns.validator.ts","../../src/security/index.ts","../../src/security/ip.validator.ts","../../src/security/ssrf.guard.ts","../../src/security/url.validator.ts","../../src/stream/index.ts","../../src/stream/metrics.transform.ts","../../src/types/adapter.ts","../../src/types/client.ts","../../src/types/config.ts","../../src/types/errors.ts","../../src/types/index.ts","../../src/types/ip.ts","../../src/types/logger.ts","../../src/types/request_response.ts","../../src/types/security.ts","../../src/types/trace.ts","../../src/utils/common.ts","../../src/utils/domain.ts","../../src/utils/index.ts","../../src/utils/ip.range.ts","../../src/utils/trace.context.ts"],"version":"5.9.3"}
1
+ {"root":["../../src/client.ts","../../src/config.ts","../../src/index.ts","../../src/adapter/axios.adapter.ts","../../src/adapter/base.ts","../../src/adapter/index.ts","../../src/adapter/undici.adapter.ts","../../src/const/config.const.ts","../../src/const/dns.const.ts","../../src/const/enum.const.ts","../../src/const/index.ts","../../src/const/ip.const.ts","../../src/logger/base.ts","../../src/logger/http_client.logger.ts","../../src/logger/index.ts","../../src/logger/log.filter.ts","../../src/security/dns.validator.ts","../../src/security/index.ts","../../src/security/ip.validator.ts","../../src/security/ssrf.guard.ts","../../src/security/url.validator.ts","../../src/stream/index.ts","../../src/stream/metrics.transform.ts","../../src/types/adapter.ts","../../src/types/client.ts","../../src/types/config.ts","../../src/types/errors.ts","../../src/types/index.ts","../../src/types/ip.ts","../../src/types/logger.ts","../../src/types/request_response.ts","../../src/types/security.ts","../../src/types/trace.ts","../../src/utils/common.ts","../../src/utils/domain.ts","../../src/utils/index.ts","../../src/utils/ip.range.ts","../../src/utils/redirect.ts","../../src/utils/trace.context.ts"],"version":"5.9.3"}
@@ -5,16 +5,43 @@
5
5
  * HTTP 错误
6
6
  */
7
7
  export class HttpError extends Error {
8
- constructor(message, code, status, response, request) {
8
+ /**
9
+ * @param message 错误信息
10
+ * @param code 错误码
11
+ * @param status HTTP 状态码
12
+ * @param response 响应(不应携带不再需要的大体积响应体)
13
+ * @param request 请求选项
14
+ * @param retriable 是否允许重试,默认 true;重试无法改变结果的确定性失败应传 false
15
+ */
16
+ constructor(message, code, status, response, request, retriable = true) {
9
17
  super(message);
10
18
  this.code = code;
11
19
  this.status = status;
12
20
  this.response = response;
13
21
  this.request = request;
22
+ this.retriable = retriable;
14
23
  this.name = 'HttpError';
15
24
  Error.captureStackTrace(this, this.constructor);
16
25
  }
17
26
  }
27
+ /**
28
+ * 响应体超过 maxResponseBodySize 限制的错误。
29
+ *
30
+ * - 错误码与文案对齐 axios 的 maxContentLength(ERR_BAD_RESPONSE)。
31
+ * - 重试不会改变响应体大小,因此标记为不可重试,避免每次重试都重复下载。
32
+ * - 不携带 response:仅保留状态码,防止超限数据随错误对象存活(与 axios 抛出该错误时一致)。
33
+ */
34
+ export class ResponseTooLargeError extends HttpError {
35
+ /**
36
+ * @param maxResponseBodySize 响应体大小上限
37
+ * @param request 请求选项
38
+ * @param status 响应状态码(未知时不传)
39
+ */
40
+ constructor(maxResponseBodySize, request, status) {
41
+ super(`maxContentLength size of ${maxResponseBodySize} exceeded`, 'ERR_BAD_RESPONSE', status, undefined, request, false);
42
+ this.maxResponseBodySize = maxResponseBodySize;
43
+ }
44
+ }
18
45
  /**
19
46
  * 安全验证错误
20
47
  */
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAChC,YACI,OAAe,EACC,IAAY,EACZ,MAAe,EACf,QAAuB,EACvB,OAA4B;QAE5C,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAS;QACf,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAqB;QAG5C,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpC,YACI,OAAe,EACC,IAAY,EACZ,GAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/types/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAChC;;;;;;;OAOG;IACH,YACI,OAAe,EACC,IAAY,EACZ,MAAe,EACf,QAAuB,EACvB,OAA4B,EAC5B,YAAY,IAAI;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QANC,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAS;QACf,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAAqB;QAC5B,cAAS,GAAT,SAAS,CAAO;QAGhC,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ;AAED;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,SAAS;IAChD;;;;OAIG;IACH,YACoB,mBAA2B,EAC3C,OAA2B,EAC3B,MAAe;QAEf,KAAK,CACD,4BAA6B,mBAAoB,WAAW,EAC5D,kBAAkB,EAClB,MAAM,EACN,SAAS,EACT,OAAO,EACP,KAAK,CACR,CAAC;QAXc,wBAAmB,GAAnB,mBAAmB,CAAQ;IAY/C,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACpC,YACI,OAAe,EACC,IAAY,EACZ,GAAY;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QACZ,QAAG,GAAH,GAAG,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;CACJ"}
@@ -1,6 +1,7 @@
1
1
  export * as IpRangeUtils from './ip.range';
2
2
  export * as CommonUtils from './common';
3
3
  export * as DomainUtils from './domain';
4
+ export * as RedirectUtils from './redirect';
4
5
  export * as TraceContextUtils from './trace.context';
5
6
  // 导出 TraceContext 类供外部直接使用
6
7
  export { TraceContext } from './trace.context';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,iBAAiB,MAAM,iBAAiB,CAAC;AAErD,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,aAAa,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,iBAAiB,MAAM,iBAAiB,CAAC;AAErD,2BAA2B;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { HttpError } from '../types';
2
+ import { Readable } from 'node:stream';
3
+ import { EClientAdapter } from '../const';
4
+ /**
5
+ * 交给调用方跟跳的状态码,与 undici 的 redirectableStatusCodes 一致。
6
+ * 304 表示未修改,305 表示改走代理,306 已废弃,这三类不跟。
7
+ */
8
+ const REDIRECT_STATUS = new Set([
9
+ 300,
10
+ 301,
11
+ 302,
12
+ 303,
13
+ 307,
14
+ 308
15
+ ]);
16
+ /**
17
+ * 判断状态码是否需要跟跳。
18
+ * @param status HTTP 状态码
19
+ */
20
+ export function isRedirectStatus(status) {
21
+ return REDIRECT_STATUS.has(status);
22
+ }
23
+ /**
24
+ * 根据响应里的 Location 构造下一跳请求。
25
+ * 没有 Location 时返回 undefined,调用方把当前 3xx 原样返回。
26
+ * axios:POST 的 301/302,以及非 GET/HEAD 的 303,改成 GET 并去掉 body 和 content-*。
27
+ * undici:只有非 HEAD 的 303 改成 GET 并去掉 body;303 仍去掉 content-*。
28
+ * 两边都去掉 host;跨域去掉 authorization、cookie、proxy-authorization。
29
+ * @param options 当前这一跳的请求
30
+ * @param response 当前这一跳的响应
31
+ * @param adapter 当前适配器
32
+ * @param configuredTimeout 客户端配置中的超时。请求未单独设置时使用。
33
+ */
34
+ export function buildRedirectOptions(options, response, adapter, configuredTimeout) {
35
+ const location = response.headers?.location;
36
+ if (!location) {
37
+ return;
38
+ }
39
+ const status = response.status;
40
+ const currentUrl = new URL(options.url);
41
+ const nextUrl = new URL(location, currentUrl);
42
+ const headers = { ...options.headers };
43
+ const crossOrigin = currentUrl.origin !== nextUrl.origin;
44
+ const rewriteToGet = shouldRewriteToGet(adapter, status, options.method);
45
+ const removeContentHeaders = adapter === EClientAdapter.axios
46
+ ? rewriteToGet
47
+ : status === 303;
48
+ // 清理请求头
49
+ for (const key of Object.keys(headers)) {
50
+ const name = key.toLowerCase();
51
+ if (name === 'host'
52
+ || (removeContentHeaders && name.startsWith('content-'))
53
+ || (crossOrigin && (name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'))) {
54
+ delete headers[key];
55
+ }
56
+ }
57
+ const nextOptions = {
58
+ ...options,
59
+ url: nextUrl.toString(),
60
+ params: undefined,
61
+ headers,
62
+ timeout: options.timeout ?? configuredTimeout,
63
+ meta: options.meta ? { ...options.meta } : undefined
64
+ };
65
+ // 清理 meta 中的正向代理信息
66
+ if (nextOptions.meta) {
67
+ delete nextOptions.meta.__forwardProxy;
68
+ }
69
+ if (rewriteToGet) {
70
+ nextOptions.method = 'GET';
71
+ nextOptions.body = undefined;
72
+ }
73
+ else if (!isReplayable(options.body)) {
74
+ throw new Error('Request body is not replayable');
75
+ }
76
+ return nextOptions;
77
+ }
78
+ /**
79
+ * axios 的 301/302 只改 POST。undici 的 301/302 保持原方法。
80
+ * 303 时两边都把非 HEAD 改成 GET;axios 额外保留已经是 GET 的请求。
81
+ */
82
+ function shouldRewriteToGet(adapter, status, method) {
83
+ if (adapter === EClientAdapter.axios) {
84
+ return ((status === 301 || status === 302) && method === 'POST')
85
+ || (status === 303 && method !== 'GET' && method !== 'HEAD');
86
+ }
87
+ return status === 303 && method !== 'HEAD';
88
+ }
89
+ /**
90
+ * 字符串、Buffer、普通对象每次都能重新序列化。
91
+ * 流和异步可迭代对象读过一次就不能再发。
92
+ */
93
+ function isReplayable(body) {
94
+ if (body === null
95
+ || body === undefined
96
+ || typeof body === 'string'
97
+ || typeof body === 'number'
98
+ || typeof body === 'boolean'
99
+ || Buffer.isBuffer(body)
100
+ || body instanceof ArrayBuffer
101
+ || ArrayBuffer.isView(body)
102
+ || body instanceof URLSearchParams
103
+ || (typeof Blob !== 'undefined' && body instanceof Blob)
104
+ || (typeof FormData !== 'undefined' && body instanceof FormData)) {
105
+ return true;
106
+ }
107
+ if (body instanceof Readable) {
108
+ return false;
109
+ }
110
+ if (typeof body !== 'object') {
111
+ return true;
112
+ }
113
+ const candidate = body;
114
+ return typeof candidate.getReader !== 'function'
115
+ && typeof candidate[Symbol.asyncIterator] !== 'function';
116
+ }
117
+ /**
118
+ * 跟跳共用同一次超时。把本跳已经花掉的时间从 redirectOptions.timeout 扣掉。
119
+ * @param redirectOptions 下一跳请求
120
+ * @param startTime 本跳开始时间
121
+ */
122
+ export function consumeRedirectTimeout(redirectOptions, startTime) {
123
+ const timeout = redirectOptions.timeout;
124
+ if (typeof timeout !== 'number' || !Number.isFinite(timeout) || timeout <= 0) {
125
+ return;
126
+ }
127
+ const remaining = timeout - (Date.now() - startTime);
128
+ if (remaining <= 0) {
129
+ throw new HttpError(`timeout of ${timeout}ms exceeded`, 'ECONNABORTED', undefined, undefined, redirectOptions);
130
+ }
131
+ redirectOptions.timeout = remaining;
132
+ }
133
+ //# sourceMappingURL=redirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redirect.js","sourceRoot":"","sources":["../../../src/utils/redirect.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,22 @@ export declare class AxiosAdapter extends BaseHttpAdapter {
18
18
  * @param options 请求选项
19
19
  */
20
20
  protected sendRequest<T>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
21
+ /**
22
+ * 创建整次请求超时与响应体超限两个中止信号,合并后写入 axiosConfig(原地修改)。
23
+ * 返回 catch 中还原中止原因的 abortError(非本方法中止时返回 undefined),以及 finally 中清理定时器的 cleanup。
24
+ */
25
+ private buildAxiosSignals;
26
+ /**
27
+ * 创建 Content-Length 预检。
28
+ *
29
+ * axios 的 Node http 适配器只按已收到的分块累计 maxContentLength,响应头已声明超限时仍会下载到上限才中断。
30
+ * 这里借助 onDownloadProgress 的 total(响应头 Content-Length),在首个分块到达时就中止请求。
31
+ * - 无 Content-Length(chunked)时不触发,由 axios 的分块累计兜底;
32
+ * - stream 响应不启用,避免额外插入转换流;
33
+ * - total 是线上字节,对几乎不可压缩的 gzip 响应可能略大于解压后的大小,
34
+ * 因此比较时保留 MAX_RESPONSE_SIZE_TOLERANCE_RATIO 的容差。
35
+ */
36
+ private createBodySizeGuard;
21
37
  /**
22
38
  * 构建 Axios 配置
23
39
  * @param options 请求选项
@@ -47,5 +63,11 @@ export declare class AxiosAdapter extends BaseHttpAdapter {
47
63
  * @param proxy 代理配置
48
64
  */
49
65
  private buildProxyConfig;
66
+ /**
67
+ * 按墙钟时间中止请求,到点后 timedOut 为 true
68
+ * @param timeout 超时时间,单位毫秒
69
+ * @returns 中止信号、是否超时、清理函数
70
+ */
71
+ private createDeadline;
50
72
  }
51
73
  //# sourceMappingURL=axios.adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"axios.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapter/axios.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;AAQzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG1C;;GAEG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC7C,SAAgB,IAAI,uBAAiC;IAErD;;OAEG;IACI,WAAW,IAAI,OAAO;IAI7B;;;OAGG;cACa,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAmCrF;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAiCxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAgB3B"}
1
+ {"version":3,"file":"axios.adapter.d.ts","sourceRoot":"","sources":["../../../src/adapter/axios.adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAClB,YAAY,EAEf,MAAM,UAAU,CAAC;AAKlB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AASzC,OAAO,EAEH,cAAc,EACjB,MAAM,UAAU,CAAC;AAIlB;;GAEG;AACH,qBAAa,YAAa,SAAQ,eAAe;IAC7C,SAAgB,IAAI,uBAAiC;IAErD;;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,iBAAiB;IAgCzB;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAoCxB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAgCxB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;OAIG;IACH,OAAO,CAAC,cAAc;CAwBzB"}
@@ -5,6 +5,8 @@ import type { IHttpAdapter, HttpRequestOptions, HttpResponse, RequestConfig, Sec
5
5
  import type { EClientAdapter } from '../const';
6
6
  /**
7
7
  * HTTP 适配器抽象基类
8
+ *
9
+ * g-7114106599:不允许直接跟跳3XX,防止SSRF。调用方需要自行处理 3XX 响应。
8
10
  */
9
11
  export declare abstract class BaseHttpAdapter implements IHttpAdapter {
10
12
  protected requestConfig: RequestConfig;
@@ -26,6 +28,10 @@ export declare abstract class BaseHttpAdapter implements IHttpAdapter {
26
28
  * @param options 请求选项
27
29
  */
28
30
  request<T = any>(options: HttpRequestOptions): Promise<HttpResponse<T>>;
31
+ /**
32
+ * @returns 有效的响应体大小上限;不限制时返回 undefined
33
+ */
34
+ protected resolveMaxResponseBodySize(): number | undefined;
29
35
  /**
30
36
  * 更新请求配置
31
37
  * @param config 新的请求配置
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapter/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,EACV,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;GAEG;AACH,8BAAsB,eAAgB,YAAW,YAAY;IACzD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IACzC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;gBAEf,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO;IAM1F,kBAAyB,IAAI,EAAE,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAExF;;OAEG;aACa,WAAW,IAAI,OAAO;IAEtC;;;OAGG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IA8DpF;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAIzD;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIvC;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM;IAatF;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM;IAU3F;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAkBnE"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/adapter/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,EACV,MAAM,UAAU,CAAC;AAGlB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;GAIG;AACH,8BAAsB,eAAgB,YAAW,YAAY;IACzD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IACzC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;gBAEf,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO;IAM1F,kBAAyB,IAAI,EAAE,cAAc,CAAC;IAE9C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAExF;;OAEG;aACa,WAAW,IAAI,OAAO;IAEtC;;;OAGG;IACU,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAwEpF;;OAEG;IACH,SAAS,CAAC,0BAA0B,IAAI,MAAM,GAAG,SAAS;IAK1D;;;OAGG;IACI,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAIzD;;;OAGG;IACI,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIvC;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM;IAatF;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,MAAM;IAU3F;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAkBnE"}
@@ -77,28 +77,37 @@ export declare class UndiciAdapter extends BaseHttpAdapter {
77
77
  */
78
78
  private handleUndiciError;
79
79
  /**
80
- * 按 axios 默认行为处理非 2xx 状态码。
80
+ * 2xx 和 304 作为成功结果返回。undici 未跟跳的 3xx 交回调用方。
81
81
  */
82
82
  private ensureSuccessStatus;
83
83
  /**
84
- * 按 axios maxContentLength 行为限制非流式响应体大小。
84
+ * 解析 Content-Length 响应头。仅接受合法的非负整数,重复头/非法值视为未知。
85
85
  */
86
- private ensureResponseBodySize;
86
+ private parseContentLength;
87
87
  /**
88
- * 计算已读取响应体的字节大小。
88
+ * 丢弃未读完的响应体并终止下载。
89
+ * undici 的 BodyReadable.destroy() 不带错误时会以 RequestAbortedError 触发 error 事件,
90
+ * 没有监听器会变成未捕获异常,因此先挂空监听器。
89
91
  */
90
- private getBodySize;
92
+ private discardBody;
93
+ /**
94
+ * 带大小上限地读取非流式响应体。
95
+ *
96
+ * 1. Content-Length 预检:响应头已声明超限时,不读取响应体,直接销毁并拒绝。
97
+ * 2. 逐分块累计字节数,累计值超过上限(等于上限放行)立即销毁响应流并拒绝,后续数据不再下载;
98
+ * 该行为对齐 axios(Node http 适配器)的 maxContentLength。
99
+ */
100
+ private readBodyWithLimit;
101
+ /**
102
+ * 基于已读取(已受大小限制)的字节构造 Response,复用运行时的 blob/formData 解析逻辑。
103
+ */
104
+ private toFetchResponse;
91
105
  /**
92
106
  * 读取响应体
93
107
  * @param response Undici 响应对象
94
- * @param responseType 响应类型
108
+ * @param options 请求选项
95
109
  */
96
110
  private readResponseBody;
97
- /**
98
- * 按 axios 的默认兼容行为读取 JSON 响应。
99
- * 空响应体或非 JSON 文本不应让成功状态码请求因为解析失败变成异常。
100
- */
101
- private readJsonResponseBody;
102
111
  /**
103
112
  * 获取状态文本
104
113
  * @param statusCode 状态码
@@ -1 +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;AAS1C;;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;IA0DrF;;;OAGG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA0B9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;OAIG;YACW,gBAAgB;IAsC9B;;;OAGG;YACW,oBAAoB;IAalC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAGxB"}
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,EACf,MAAM,UAAU,CAAC;AAKlB,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAOzC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAU1C;;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;IA4DrF;;;OAGG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IA4BvB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA4B9B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IA4BjC;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAKnB;;;;;;OAMG;YACW,iBAAiB;IAgC/B;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;OAIG;YACW,gBAAgB;IA0C9B;;;OAGG;IACH,OAAO,CAAC,aAAa;CAGxB"}