@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.
- package/Core/HyperCore.d.ts +142 -152
- package/Core/HyperCore.d.ts.map +1 -1
- package/Core/HyperCore.js +285 -286
- package/Core/HyperCore.js.map +1 -1
- package/package.json +14 -8
- package/transports/browser.d.ts +228 -0
- package/transports/browser.d.ts.map +1 -0
- package/transports/browser.js +451 -0
- package/transports/browser.js.map +1 -0
- package/transports/manager.d.ts +7 -67
- package/transports/manager.d.ts.map +1 -1
- package/transports/manager.js +138 -145
- package/transports/manager.js.map +1 -1
- package/transports/node.d.ts +0 -20
- package/transports/node.d.ts.map +1 -1
- package/transports/node.js +104 -48
- package/transports/node.js.map +1 -1
- package/utils/decompress.d.ts +16 -18
- package/utils/decompress.d.ts.map +1 -1
- package/utils/decompress.js +143 -63
- package/utils/decompress.js.map +1 -1
- package/utils/errors.d.ts +0 -10
- package/utils/errors.d.ts.map +1 -1
- package/utils/errors.js +1 -11
- package/utils/errors.js.map +1 -1
- package/utils/merge.d.ts +0 -3
- package/utils/merge.d.ts.map +1 -1
- package/utils/merge.js +0 -4
- package/utils/merge.js.map +1 -1
- package/utils/normalize.d.ts +40 -20
- package/utils/normalize.d.ts.map +1 -1
- package/utils/normalize.js +197 -63
- package/utils/normalize.js.map +1 -1
- package/utils/pipeline.d.ts +10 -30
- package/utils/pipeline.d.ts.map +1 -1
- package/utils/pipeline.js +44 -44
- package/utils/pipeline.js.map +1 -1
- package/utils/response.d.ts +95 -31
- package/utils/response.d.ts.map +1 -1
- package/utils/response.js +288 -58
- package/utils/response.js.map +1 -1
- package/utils/retryUtils.d.ts +2 -10
- package/utils/retryUtils.d.ts.map +1 -1
- package/utils/retryUtils.js +17 -21
- package/utils/retryUtils.js.map +1 -1
package/utils/retryUtils.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @ru Коды статуса HTTP, по которым повторные попытки выполняются по
|
|
3
|
-
* @en Default HTTP status codes that trigger retries when no explicit codes are provided
|
|
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
|
|
16
|
-
|
|
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 Определяет, следует ли выполнить повторную попытку для данного кода статуса на основе настроек.
|
|
47
|
-
* @en Determines whether to retry for the given status code based on retry options.
|
|
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.
|
|
53
|
+
return DEFAULT_RETRY_STATUS_CODES.has(status);
|
|
58
54
|
}
|
|
59
55
|
//# sourceMappingURL=retryUtils.js.map
|
package/utils/retryUtils.js.map
CHANGED
|
@@ -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;
|
|
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"}
|