hyperttp 0.2.4 → 0.2.5

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 (105) hide show
  1. package/dist/Hyperttp/Core/CacheManager.d.ts +63 -40
  2. package/dist/Hyperttp/Core/CacheManager.d.ts.map +1 -1
  3. package/dist/Hyperttp/Core/CacheManager.js +64 -62
  4. package/dist/Hyperttp/Core/CacheManager.js.map +1 -1
  5. package/dist/Hyperttp/Core/HttpClientImproved.d.ts +55 -33
  6. package/dist/Hyperttp/Core/HttpClientImproved.d.ts.map +1 -1
  7. package/dist/Hyperttp/Core/HttpClientImproved.js +307 -211
  8. package/dist/Hyperttp/Core/HttpClientImproved.js.map +1 -1
  9. package/dist/Hyperttp/Core/InterceptorManager.d.ts +11 -11
  10. package/dist/Hyperttp/Core/InterceptorManager.d.ts.map +1 -1
  11. package/dist/Hyperttp/Core/InterceptorManager.js +10 -10
  12. package/dist/Hyperttp/Core/InterceptorManager.js.map +1 -1
  13. package/dist/Hyperttp/Core/MetricsManager.d.ts +33 -42
  14. package/dist/Hyperttp/Core/MetricsManager.d.ts.map +1 -1
  15. package/dist/Hyperttp/Core/MetricsManager.js +147 -58
  16. package/dist/Hyperttp/Core/MetricsManager.js.map +1 -1
  17. package/dist/Hyperttp/Core/QueueManager.d.ts +6 -4
  18. package/dist/Hyperttp/Core/QueueManager.d.ts.map +1 -1
  19. package/dist/Hyperttp/Core/QueueManager.js +36 -34
  20. package/dist/Hyperttp/Core/QueueManager.js.map +1 -1
  21. package/dist/Hyperttp/Core/RateLimiter.d.ts +29 -36
  22. package/dist/Hyperttp/Core/RateLimiter.d.ts.map +1 -1
  23. package/dist/Hyperttp/Core/RateLimiter.js +96 -36
  24. package/dist/Hyperttp/Core/RateLimiter.js.map +1 -1
  25. package/dist/Hyperttp/Core/RequestBuilder.d.ts +3 -1
  26. package/dist/Hyperttp/Core/RequestBuilder.d.ts.map +1 -1
  27. package/dist/Hyperttp/Core/RequestBuilder.js +10 -3
  28. package/dist/Hyperttp/Core/RequestBuilder.js.map +1 -1
  29. package/dist/Hyperttp/Core/RequestExecutor.d.ts +7 -34
  30. package/dist/Hyperttp/Core/RequestExecutor.d.ts.map +1 -1
  31. package/dist/Hyperttp/Core/RequestExecutor.js +120 -114
  32. package/dist/Hyperttp/Core/RequestExecutor.js.map +1 -1
  33. package/dist/Hyperttp/Core/ResponseConverter.d.ts +23 -0
  34. package/dist/Hyperttp/Core/ResponseConverter.d.ts.map +1 -0
  35. package/dist/Hyperttp/Core/ResponseConverter.js +368 -0
  36. package/dist/Hyperttp/Core/ResponseConverter.js.map +1 -0
  37. package/dist/Hyperttp/Core/index.d.ts +7 -10
  38. package/dist/Hyperttp/Core/index.d.ts.map +1 -1
  39. package/dist/Hyperttp/Core/index.js +26 -15
  40. package/dist/Hyperttp/Core/index.js.map +1 -1
  41. package/dist/Hyperttp/UrlExtractor.d.ts +1 -1
  42. package/dist/Hyperttp/UrlExtractor.d.ts.map +1 -1
  43. package/dist/Hyperttp/index.d.ts +1 -3
  44. package/dist/Hyperttp/index.d.ts.map +1 -1
  45. package/dist/Hyperttp/index.js +7 -8
  46. package/dist/Hyperttp/index.js.map +1 -1
  47. package/dist/Types/cache.d.ts +10 -0
  48. package/dist/Types/cache.d.ts.map +1 -0
  49. package/dist/Types/cache.js +3 -0
  50. package/dist/Types/cache.js.map +1 -0
  51. package/dist/Types/errors.d.ts +15 -0
  52. package/dist/Types/errors.d.ts.map +1 -0
  53. package/dist/Types/errors.js +34 -0
  54. package/dist/Types/errors.js.map +1 -0
  55. package/dist/Types/http-client.d.ts +39 -0
  56. package/dist/Types/http-client.d.ts.map +1 -0
  57. package/dist/Types/http-client.js +3 -0
  58. package/dist/Types/http-client.js.map +1 -0
  59. package/dist/Types/http.d.ts +5 -0
  60. package/dist/Types/http.d.ts.map +1 -0
  61. package/dist/Types/http.js +3 -0
  62. package/dist/Types/http.js.map +1 -0
  63. package/dist/Types/index.d.ts +12 -127
  64. package/dist/Types/index.d.ts.map +1 -1
  65. package/dist/Types/index.js +12 -39
  66. package/dist/Types/index.js.map +1 -1
  67. package/dist/Types/interceptors.d.ts +13 -0
  68. package/dist/Types/interceptors.d.ts.map +1 -0
  69. package/dist/Types/interceptors.js +3 -0
  70. package/dist/Types/interceptors.js.map +1 -0
  71. package/dist/Types/metrics.d.ts +67 -0
  72. package/dist/Types/metrics.d.ts.map +1 -0
  73. package/dist/Types/metrics.js +3 -0
  74. package/dist/Types/metrics.js.map +1 -0
  75. package/dist/Types/options.d.ts +233 -0
  76. package/dist/Types/options.d.ts.map +1 -0
  77. package/dist/Types/options.js +3 -0
  78. package/dist/Types/options.js.map +1 -0
  79. package/dist/Types/queue.d.ts +8 -0
  80. package/dist/Types/queue.d.ts.map +1 -0
  81. package/dist/Types/queue.js +3 -0
  82. package/dist/Types/queue.js.map +1 -0
  83. package/dist/Types/request.d.ts +148 -9
  84. package/dist/Types/request.d.ts.map +1 -1
  85. package/dist/Types/response.d.ts +28 -0
  86. package/dist/Types/response.d.ts.map +1 -0
  87. package/dist/Types/response.js +3 -0
  88. package/dist/Types/response.js.map +1 -0
  89. package/dist/Types/stream.d.ts +39 -0
  90. package/dist/Types/stream.d.ts.map +1 -0
  91. package/dist/Types/stream.js +3 -0
  92. package/dist/Types/stream.js.map +1 -0
  93. package/dist/Types/url-extractor.d.ts +10 -0
  94. package/dist/Types/url-extractor.d.ts.map +1 -0
  95. package/dist/Types/url-extractor.js +3 -0
  96. package/dist/Types/url-extractor.js.map +1 -0
  97. package/dist/index.d.ts +1 -2
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +7 -3
  100. package/dist/index.js.map +1 -1
  101. package/package.json +7 -5
  102. package/dist/Hyperttp/Core/ResponseTransformer.d.ts +0 -35
  103. package/dist/Hyperttp/Core/ResponseTransformer.d.ts.map +0 -1
  104. package/dist/Hyperttp/Core/ResponseTransformer.js +0 -171
  105. package/dist/Hyperttp/Core/ResponseTransformer.js.map +0 -1
@@ -1,15 +1,13 @@
1
1
  import { Agent } from "undici";
2
- import { RetryOptions, LogLevel, RequestMetrics } from "../../Types";
3
2
  import { InterceptorManager } from "./InterceptorManager";
4
- /**
5
- * @class RequestExecutor
6
- * @en The core engine responsible for low-level HTTP execution, retries, and redirect logic.
7
- * @ru Основной движок, отвечающий за низкоуровневое выполнение HTTP-запросов, повторы и логику редиректов.
8
- */
3
+ import { RetryOptions } from "../../Types/options";
4
+ import { LogLevel } from "../../Types/http";
5
+ import { RequestMetrics } from "../../Types/metrics";
9
6
  export declare class RequestExecutor {
10
7
  private agent;
11
8
  private interceptors;
12
9
  private options;
10
+ private readonly redirectStatusCodes;
13
11
  constructor(agent: Agent, interceptors: InterceptorManager, options: {
14
12
  timeout: number;
15
13
  maxRetries: number;
@@ -19,36 +17,11 @@ export declare class RequestExecutor {
19
17
  verbose?: boolean;
20
18
  logger?: (level: LogLevel, message: string, meta?: any) => void;
21
19
  });
22
- /**
23
- * @en Internal logger wrapper.
24
- * @ru Внутренняя обертка для логирования.
25
- */
26
- private log;
27
- /**
28
- * @en Calculates the delay before the next retry using Exponential Backoff and Jitter.
29
- * @ru Вычисляет задержку перед следующим повтором, используя экспоненциальный рост и Jitter (джиттер).
30
- */
31
20
  private calcDelay;
32
- /** @en Simple async sleep helper. */
33
21
  private sleep;
34
- /**
35
- * @en Parses the 'Retry-After' header (can be seconds or a Date string).
36
- * @ru Парсит заголовок 'Retry-After' (может быть в секундах или в формате даты).
37
- */
38
- private parseRetryAfterMs;
39
- /**
40
- * @en Executes an HTTP request with full retry and redirect lifecycle management.
41
- * @ru Выполняет HTTP-запрос с полным циклом управления повторами и редиректами.
42
- * @param method - HTTP method
43
- * @param url - Destination URL
44
- * @param headers - Request headers
45
- * @param body - Request payload
46
- * @param metrics - Performance metrics object to update
47
- * @param signal - External AbortSignal for user cancellation
48
- * @param redirects - Internal redirect counter
49
- * @param attempt - Internal retry attempt counter
50
- */
51
- execute(method: string, url: string, headers: Record<string, string>, body: string | Buffer | undefined, metrics?: RequestMetrics, signal?: AbortSignal, redirects?: number, attempt?: number): Promise<{
22
+ private drainBody;
23
+ private executeCore;
24
+ execute(method: string, url: string, headers: Record<string, string>, body: string | Buffer | undefined, metrics?: RequestMetrics, signal?: AbortSignal): Promise<{
52
25
  status: number;
53
26
  headers: Record<string, any>;
54
27
  body: any;
@@ -1 +1 @@
1
- {"version":3,"file":"RequestExecutor.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAGL,YAAY,EACZ,QAAQ,EACR,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;gBAFP,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KACjE;IAGH;;;OAGG;IACH,OAAO,CAAC,GAAG;IAMX;;;OAGG;IACH,OAAO,CAAC,SAAS;IAOjB,qCAAqC;IACrC,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;;;;;;;;;OAWG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,SAAS,SAAI,EACb,OAAO,SAAI,GACV,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CAsJH"}
1
+ {"version":3,"file":"RequestExecutor.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAUrD,qBAAa,eAAe;IAIxB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IALjB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;gBAGhE,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,kBAAkB,EAChC,OAAO,EAAE;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,OAAO,CAAC;QACzB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,YAAY,CAAC;QAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;KACjE;IAGH,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,KAAK;YAIC,SAAS;YAoBT,WAAW;IAsLnB,OAAO,CACX,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QACT,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CAWH"}
@@ -2,159 +2,165 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RequestExecutor = void 0;
4
4
  const undici_1 = require("undici");
5
- const Types_1 = require("../../Types");
6
- /**
7
- * @class RequestExecutor
8
- * @en The core engine responsible for low-level HTTP execution, retries, and redirect logic.
9
- * @ru Основной движок, отвечающий за низкоуровневое выполнение HTTP-запросов, повторы и логику редиректов.
10
- */
5
+ const errors_1 = require("../../Types/errors");
11
6
  class RequestExecutor {
12
7
  agent;
13
8
  interceptors;
14
9
  options;
10
+ redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
15
11
  constructor(agent, interceptors, options) {
16
12
  this.agent = agent;
17
13
  this.interceptors = interceptors;
18
14
  this.options = options;
19
15
  }
20
- /**
21
- * @en Internal logger wrapper.
22
- * @ru Внутренняя обертка для логирования.
23
- */
24
- log(level, msg, meta) {
25
- if (this.options.verbose && this.options.logger) {
26
- this.options.logger(level, msg, meta);
27
- }
28
- }
29
- /**
30
- * @en Calculates the delay before the next retry using Exponential Backoff and Jitter.
31
- * @ru Вычисляет задержку перед следующим повтором, используя экспоненциальный рост и Jitter (джиттер).
32
- */
33
16
  calcDelay(attempt) {
34
17
  const { baseDelay, maxDelay, jitter } = this.options.retryOptions;
35
18
  const base = Math.min(baseDelay * Math.pow(2, attempt), maxDelay);
36
- // Jitter помогает избежать "эффекта стада", распределяя запросы во времени
37
19
  return jitter ? base * (0.75 + Math.random() * 0.5) : base;
38
20
  }
39
- /** @en Simple async sleep helper. */
40
21
  sleep(ms) {
41
22
  return new Promise((resolve) => setTimeout(resolve, ms));
42
23
  }
43
- /**
44
- * @en Parses the 'Retry-After' header (can be seconds or a Date string).
45
- * @ru Парсит заголовок 'Retry-After' (может быть в секундах или в формате даты).
46
- */
47
- parseRetryAfterMs(header) {
48
- if (!header)
49
- return undefined;
50
- const raw = Array.isArray(header) ? header[0] : String(header);
51
- const asSeconds = Number(raw);
52
- if (Number.isFinite(asSeconds))
53
- return Math.max(0, Math.floor(asSeconds * 1000));
54
- const asDate = Date.parse(raw);
55
- if (!Number.isNaN(asDate))
56
- return Math.max(0, asDate - Date.now());
57
- return undefined;
24
+ async drainBody(body) {
25
+ if (!body)
26
+ return;
27
+ try {
28
+ if (typeof body.dump === "function") {
29
+ await body.dump();
30
+ return;
31
+ }
32
+ if (typeof body.resume === "function") {
33
+ body.resume();
34
+ return;
35
+ }
36
+ if (typeof body.destroy === "function") {
37
+ body.destroy();
38
+ }
39
+ }
40
+ catch {
41
+ /* ignore */
42
+ }
58
43
  }
59
- /**
60
- * @en Executes an HTTP request with full retry and redirect lifecycle management.
61
- * @ru Выполняет HTTP-запрос с полным циклом управления повторами и редиректами.
62
- * @param method - HTTP method
63
- * @param url - Destination URL
64
- * @param headers - Request headers
65
- * @param body - Request payload
66
- * @param metrics - Performance metrics object to update
67
- * @param signal - External AbortSignal for user cancellation
68
- * @param redirects - Internal redirect counter
69
- * @param attempt - Internal retry attempt counter
70
- */
71
- async execute(method, url, headers, body, metrics, signal, redirects = 0, attempt = 0) {
44
+ async executeCore(method, url, headers, body, metrics, signal, parser) {
45
+ let currentUrl = url;
46
+ let currentMethod = method;
47
+ let currentHeaders = headers;
48
+ let currentBody = body;
49
+ let redirects = 0;
50
+ let attempt = 0;
72
51
  const timeoutController = new AbortController();
73
52
  const timer = setTimeout(() => timeoutController.abort(), this.options.timeout);
74
53
  const abortHandler = () => timeoutController.abort();
75
54
  if (signal) {
76
55
  if (signal.aborted) {
77
56
  clearTimeout(timer);
78
- throw new Types_1.HttpClientError("Request aborted by user", "ABORTED", 0, undefined, url, method);
57
+ throw new errors_1.HttpClientError("Request aborted by user", "ABORTED", 0, undefined, url, method);
79
58
  }
80
- signal.addEventListener("abort", abortHandler);
59
+ signal.addEventListener("abort", abortHandler, { once: true });
81
60
  }
82
61
  try {
83
- const config = await this.interceptors.applyRequest({
84
- url,
85
- method,
86
- headers,
87
- body,
88
- });
89
- const res = await (0, undici_1.request)(config.url, {
90
- method: config.method,
91
- headers: config.headers,
92
- body: config.body,
93
- dispatcher: this.agent,
94
- signal: timeoutController.signal,
95
- });
96
- clearTimeout(timer);
97
- if (this.options.followRedirects &&
98
- [301, 302, 303, 307, 308].includes(res.statusCode)) {
99
- if (redirects >= this.options.maxRedirects) {
100
- throw new Types_1.HttpClientError("Too many redirects", "TOO_MANY_REDIRECTS", res.statusCode);
101
- }
102
- const location = res.headers.location;
103
- if (location) {
104
- const nextUrl = new URL(location, config.url).toString();
105
- const nextMethod = res.statusCode === 303 ? "GET" : method;
106
- const nextHeaders = { ...headers };
107
- if (nextMethod === "GET") {
108
- delete nextHeaders["content-type"];
109
- delete nextHeaders["content-length"];
62
+ while (true) {
63
+ try {
64
+ const config = await this.interceptors.applyRequest({
65
+ url: currentUrl,
66
+ method: currentMethod,
67
+ headers: currentHeaders,
68
+ body: currentBody,
69
+ });
70
+ const res = await (0, undici_1.request)(config.url, {
71
+ method: config.method,
72
+ headers: config.headers,
73
+ body: config.body,
74
+ dispatcher: this.agent,
75
+ signal: timeoutController.signal,
76
+ });
77
+ const status = res.statusCode;
78
+ const resHeaders = res.headers;
79
+ if (this.options.followRedirects &&
80
+ this.redirectStatusCodes.has(status)) {
81
+ if (redirects >= this.options.maxRedirects) {
82
+ await this.drainBody(res.body);
83
+ throw new errors_1.HttpClientError("Too many redirects", "TOO_MANY_REDIRECTS", status);
84
+ }
85
+ const location = resHeaders.location;
86
+ if (location) {
87
+ await this.drainBody(res.body);
88
+ const nextUrl = new URL(location, config.url).toString();
89
+ const nextMethod = status === 303 ? "GET" : currentMethod;
90
+ currentUrl = nextUrl;
91
+ currentMethod = nextMethod;
92
+ currentBody = nextMethod === "GET" ? undefined : currentBody;
93
+ if (nextMethod === "GET") {
94
+ if (currentHeaders["content-type"] ||
95
+ currentHeaders["Content-Type"] ||
96
+ currentHeaders["content-length"] ||
97
+ currentHeaders["Content-Length"]) {
98
+ const nextHeaders = { ...currentHeaders };
99
+ delete nextHeaders["content-type"];
100
+ delete nextHeaders["Content-Type"];
101
+ delete nextHeaders["content-length"];
102
+ delete nextHeaders["Content-Length"];
103
+ currentHeaders = nextHeaders;
104
+ }
105
+ }
106
+ redirects++;
107
+ continue;
108
+ }
110
109
  }
111
- return this.execute(nextMethod, nextUrl, nextHeaders, nextMethod === "GET" ? undefined : body, metrics, signal, redirects + 1);
110
+ if (status >= 500) {
111
+ if (attempt < this.options.maxRetries) {
112
+ if (metrics)
113
+ metrics.retries += 1;
114
+ await this.drainBody(res.body);
115
+ const delay = this.calcDelay(attempt);
116
+ if (delay > 0)
117
+ await this.sleep(delay);
118
+ attempt++;
119
+ continue;
120
+ }
121
+ throw new errors_1.HttpClientError(`HTTP ${status}`, "HTTP_ERROR", status, undefined, config.url, currentMethod);
122
+ }
123
+ const transformed = await this.interceptors.applyResponse({
124
+ status,
125
+ headers: resHeaders,
126
+ body: res.body,
127
+ url: config.url,
128
+ });
129
+ const parsed = await parser(transformed);
130
+ return {
131
+ status: transformed.status,
132
+ headers: transformed.headers,
133
+ body: parsed,
134
+ url: transformed.url,
135
+ };
112
136
  }
113
- }
114
- if (this.options.retryOptions.retryStatusCodes.includes(res.statusCode)) {
115
- if (attempt < this.options.maxRetries) {
116
- if (metrics) {
117
- metrics.retries += 1;
137
+ catch (err) {
138
+ if (err?.name === "AbortError") {
139
+ if (signal?.aborted) {
140
+ throw new errors_1.HttpClientError("Request aborted by user", "ABORTED", 0, err, url, method);
141
+ }
142
+ throw new errors_1.TimeoutError(url, this.options.timeout);
118
143
  }
119
- let delay = this.calcDelay(attempt);
120
- if (res.statusCode === 429) {
121
- const retryAfter = this.parseRetryAfterMs(res.headers["retry-after"]);
122
- if (retryAfter !== undefined)
123
- delay = retryAfter;
144
+ if (attempt < this.options.maxRetries &&
145
+ (err?.code === "ECONNREFUSED" || err?.code === "ETIMEDOUT")) {
146
+ metrics && (metrics.retries += 1);
147
+ await this.sleep(this.calcDelay(attempt));
148
+ attempt++;
149
+ continue;
124
150
  }
125
- await this.sleep(delay);
126
- return this.execute(method, url, headers, body, metrics, signal, redirects, attempt + 1);
151
+ throw err;
127
152
  }
128
153
  }
129
- return await this.interceptors.applyResponse({
130
- status: res.statusCode,
131
- headers: res.headers,
132
- body: res.body,
133
- url: config.url,
134
- });
135
- }
136
- catch (err) {
137
- clearTimeout(timer);
138
- if (err.name === "AbortError") {
139
- if (signal?.aborted)
140
- throw new Types_1.HttpClientError("Request aborted by user", "ABORTED", 0, err, url, method);
141
- throw new Types_1.TimeoutError(url, this.options.timeout);
142
- }
143
- if (attempt < this.options.maxRetries &&
144
- (err.code === "ECONNREFUSED" || err.code === "ETIMEDOUT")) {
145
- if (metrics) {
146
- metrics.retries += 1;
147
- }
148
- await this.sleep(this.calcDelay(attempt));
149
- return this.execute(method, url, headers, body, metrics, signal, redirects, attempt + 1);
150
- }
151
- throw err;
152
154
  }
153
155
  finally {
156
+ clearTimeout(timer);
154
157
  if (signal)
155
158
  signal.removeEventListener("abort", abortHandler);
156
159
  }
157
160
  }
161
+ async execute(method, url, headers, body, metrics, signal) {
162
+ return this.executeCore(method, url, headers, body, metrics, signal, async (res) => res.body);
163
+ }
158
164
  }
159
165
  exports.RequestExecutor = RequestExecutor;
160
166
  //# sourceMappingURL=RequestExecutor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequestExecutor.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestExecutor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RequestExecutor.js","sourceRoot":"","sources":["../../../src/Hyperttp/Core/RequestExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ResponseType, SourceType } from "../../Types/http";
2
+ import { ConversionMeta } from "../../Types/request";
3
+ import { ResponseConverterOptions, ParsedResponse } from "../../Types/response";
4
+ export declare class ResponseConverter {
5
+ private readonly options;
6
+ private readonly xmlParser;
7
+ private readonly xmlBuilder;
8
+ constructor(options?: ResponseConverterOptions);
9
+ readBody(body: any): Promise<Buffer>;
10
+ decodeBody(body: Buffer, encoding?: string, charset?: BufferEncoding): Promise<string>;
11
+ detectSourceType(contentType?: string, text?: string, url?: string): SourceType;
12
+ convert(body: Buffer, targetType: ResponseType, meta?: ConversionMeta): Promise<ParsedResponse>;
13
+ private toAuto;
14
+ private toJson;
15
+ private toXml;
16
+ private toHtml;
17
+ private htmlToJson;
18
+ private safeJsonParse;
19
+ private normalizeResponseShape;
20
+ private escapeXml;
21
+ toBuffer(input: any): Buffer;
22
+ }
23
+ //# sourceMappingURL=ResponseConverter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseConverter.d.ts","sourceRoot":"","sources":["../../../src/Hyperttp/Core/ResponseConverter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAWhF,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;gBAEhC,OAAO,GAAE,wBAA6B;IAgB7D,QAAQ,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAgCpC,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,cAAgD,GACxD,OAAO,CAAC,MAAM,CAAC;IAqBlB,gBAAgB,CACd,WAAW,CAAC,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,UAAU;IA6CP,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EACxB,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,cAAc,CAAC;IAgC1B,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,MAAM;IAyCd,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,MAAM;IAwBd,OAAO,CAAC,UAAU;IAkDlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,sBAAsB;IAyC9B,OAAO,CAAC,SAAS;IASjB,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;CAK7B"}