@hyperttp/core 1.3.3 → 1.4.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 (45) hide show
  1. package/Core/HyperCore.d.ts +142 -152
  2. package/Core/HyperCore.d.ts.map +1 -1
  3. package/Core/HyperCore.js +285 -286
  4. package/Core/HyperCore.js.map +1 -1
  5. package/package.json +14 -8
  6. package/transports/browser.d.ts +228 -0
  7. package/transports/browser.d.ts.map +1 -0
  8. package/transports/browser.js +451 -0
  9. package/transports/browser.js.map +1 -0
  10. package/transports/manager.d.ts +7 -67
  11. package/transports/manager.d.ts.map +1 -1
  12. package/transports/manager.js +138 -145
  13. package/transports/manager.js.map +1 -1
  14. package/transports/node.d.ts +0 -20
  15. package/transports/node.d.ts.map +1 -1
  16. package/transports/node.js +104 -48
  17. package/transports/node.js.map +1 -1
  18. package/utils/decompress.d.ts +16 -18
  19. package/utils/decompress.d.ts.map +1 -1
  20. package/utils/decompress.js +143 -63
  21. package/utils/decompress.js.map +1 -1
  22. package/utils/errors.d.ts +0 -10
  23. package/utils/errors.d.ts.map +1 -1
  24. package/utils/errors.js +1 -11
  25. package/utils/errors.js.map +1 -1
  26. package/utils/merge.d.ts +0 -3
  27. package/utils/merge.d.ts.map +1 -1
  28. package/utils/merge.js +0 -4
  29. package/utils/merge.js.map +1 -1
  30. package/utils/normalize.d.ts +40 -20
  31. package/utils/normalize.d.ts.map +1 -1
  32. package/utils/normalize.js +197 -63
  33. package/utils/normalize.js.map +1 -1
  34. package/utils/pipeline.d.ts +10 -30
  35. package/utils/pipeline.d.ts.map +1 -1
  36. package/utils/pipeline.js +44 -44
  37. package/utils/pipeline.js.map +1 -1
  38. package/utils/response.d.ts +95 -31
  39. package/utils/response.d.ts.map +1 -1
  40. package/utils/response.js +288 -58
  41. package/utils/response.js.map +1 -1
  42. package/utils/retryUtils.d.ts +2 -10
  43. package/utils/retryUtils.d.ts.map +1 -1
  44. package/utils/retryUtils.js +17 -21
  45. package/utils/retryUtils.js.map +1 -1
@@ -1,25 +1,24 @@
1
1
  /**
2
- * @ru Коды статуса HTTP, по которым повторные попытки выполняются по умолчанию, если не указаны явные коды в retryOptions.
3
- * @en Default HTTP status codes that trigger retries when no explicit codes are provided in retryOptions.
2
+ * @ru Коды статуса HTTP, по которым повторные попытки выполняются по умолчанию.
3
+ * @en Default HTTP status codes that trigger retries when no explicit codes are provided.
4
4
  */
5
- const DEFAULT_RETRY_STATUS_CODES = [502, 503, 504];
5
+ const DEFAULT_RETRY_STATUS_CODES = new Set([502, 503, 504]);
6
6
  /**
7
7
  * @ru Вычисляет задержку перед повторной попыткой с экспоненциальной задержкой и возможным джиттером.
8
8
  * @en Calculates the delay before a retry using exponential backoff and optional jitter.
9
- * @param attempt - Attempt number (starting from 0).
10
- * @param retryOptions - Options controlling retry behavior (baseDelay, maxDelay, jitter).
11
- * @returns Delay in milliseconds.
12
9
  */
13
10
  export function calcDelay(attempt, retryOptions) {
14
11
  const { baseDelay = 1000, maxDelay = 10000, jitter = true } = retryOptions;
15
- const base = Math.min(baseDelay * 2 ** attempt, maxDelay);
16
- return jitter ? base * (0.75 + Math.random() * 0.5) : base;
12
+ const safeAttempt = Math.min(attempt, 31);
13
+ const base = Math.min(baseDelay * Math.pow(2, safeAttempt), maxDelay);
14
+ if (!jitter)
15
+ return base;
16
+ const jittered = base * (0.75 + Math.random() * 0.5);
17
+ return Math.min(Math.max(0, jittered), maxDelay);
17
18
  }
18
19
  /**
19
20
  * @ru Пытается освободить ресурсы тела ответа, не дожидаясь полного потребления. Поддерживает методы dump, resume, destroy.
20
21
  * @en Attempts to release response body resources without fully consuming it. Supports dump, resume, destroy methods.
21
- * @param body - Response body (ReadableStream, Node.js Stream, or similar).
22
- * @returns Promise that resolves after resource disposal is complete.
23
22
  */
24
23
  export async function drainBody(body) {
25
24
  if (!body || typeof body !== "object")
@@ -30,12 +29,12 @@ export async function drainBody(body) {
30
29
  await stream.dump();
31
30
  return;
32
31
  }
33
- if (typeof stream.resume === "function") {
34
- stream.resume();
35
- return;
36
- }
37
32
  if (typeof stream.destroy === "function") {
38
33
  stream.destroy();
34
+ return;
35
+ }
36
+ if (typeof stream.resume === "function") {
37
+ stream.resume();
39
38
  }
40
39
  }
41
40
  catch {
@@ -43,17 +42,14 @@ export async function drainBody(body) {
43
42
  }
44
43
  }
45
44
  /**
46
- * @ru Определяет, следует ли выполнить повторную попытку для данного кода статуса на основе настроек. Если retryStatusCodes не указаны, используется DEFAULT_RETRY_STATUS_CODES.
47
- * @en Determines whether to retry for the given status code based on retry options. If retryStatusCodes is not provided, uses DEFAULT_RETRY_STATUS_CODES.
48
- * @param status - HTTP status code.
49
- * @param retryOptions - Options controlling retry behavior, may include retryStatusCodes.
50
- * @returns True if the request should be retried.
45
+ * @ru Определяет, следует ли выполнить повторную попытку для данного кода статуса на основе настроек.
46
+ * @en Determines whether to retry for the given status code based on retry options.
51
47
  */
52
48
  export function shouldRetry(status, retryOptions) {
53
49
  const codes = retryOptions.retryStatusCodes;
54
- if (codes && codes.length > 0) {
50
+ if (codes !== undefined && codes.length > 0) {
55
51
  return codes.includes(status);
56
52
  }
57
- return DEFAULT_RETRY_STATUS_CODES.includes(status);
53
+ return DEFAULT_RETRY_STATUS_CODES.has(status);
58
54
  }
59
55
  //# sourceMappingURL=retryUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retryUtils.js","sourceRoot":"","sources":["../../src/utils/retryUtils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,0BAA0B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,YAA0B;IACnE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;IAE3E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAA+B,CAAC;QAE/C,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACtC,MAAO,MAAM,CAAC,IAA4B,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAqB,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,CAAC,OAAsB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,EAAE;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,YAA0B;IAE1B,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC;IAE5C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,0BAA0B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"retryUtils.js","sourceRoot":"","sources":["../../src/utils/retryUtils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,YAA0B;IACnE,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;AACnD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAa;IAC3C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAA+B,CAAC;QAE/C,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACtC,MAAO,MAAM,CAAC,IAA4B,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACxC,MAAM,CAAC,OAAsB,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,CAAC,MAAqB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,EAAE;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,YAA0B;IACpE,MAAM,KAAK,GAAG,YAAY,CAAC,gBAAgB,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC"}