@sonamu-kit/tasks 0.2.0 → 0.3.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/.oxlintrc.json +3 -0
- package/AGENTS.md +21 -0
- package/dist/backend.d.ts +126 -107
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +4 -1
- package/dist/backend.js.map +1 -1
- package/dist/client.d.ts +145 -132
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +219 -213
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +15 -8
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +22 -17
- package/dist/config.js.map +1 -1
- package/dist/core/duration.d.ts +5 -4
- package/dist/core/duration.d.ts.map +1 -1
- package/dist/core/duration.js +54 -59
- package/dist/core/duration.js.map +1 -1
- package/dist/core/error.d.ts +10 -7
- package/dist/core/error.d.ts.map +1 -1
- package/dist/core/error.js +21 -21
- package/dist/core/error.js.map +1 -1
- package/dist/core/json.d.ts +8 -3
- package/dist/core/json.d.ts.map +1 -1
- package/dist/core/result.d.ts +10 -14
- package/dist/core/result.d.ts.map +1 -1
- package/dist/core/result.js +21 -16
- package/dist/core/result.js.map +1 -1
- package/dist/core/retry.d.ts +37 -31
- package/dist/core/retry.d.ts.map +1 -1
- package/dist/core/retry.js +44 -51
- package/dist/core/retry.js.map +1 -1
- package/dist/core/schema.d.ts +57 -53
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/step.d.ts +28 -78
- package/dist/core/step.d.ts.map +1 -1
- package/dist/core/step.js +53 -63
- package/dist/core/step.js.map +1 -1
- package/dist/core/workflow.d.ts +33 -61
- package/dist/core/workflow.d.ts.map +1 -1
- package/dist/core/workflow.js +31 -41
- package/dist/core/workflow.js.map +1 -1
- package/dist/database/backend.d.ts +53 -46
- package/dist/database/backend.d.ts.map +1 -1
- package/dist/database/backend.js +544 -577
- package/dist/database/backend.js.map +1 -1
- package/dist/database/base.js +48 -25
- package/dist/database/base.js.map +1 -1
- package/dist/database/migrations/20251212000000_0_init.d.ts +10 -0
- package/dist/database/migrations/20251212000000_0_init.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_0_init.js +8 -4
- package/dist/database/migrations/20251212000000_0_init.js.map +1 -1
- package/dist/database/migrations/20251212000000_1_tables.d.ts +10 -0
- package/dist/database/migrations/20251212000000_1_tables.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_1_tables.js +81 -83
- package/dist/database/migrations/20251212000000_1_tables.js.map +1 -1
- package/dist/database/migrations/20251212000000_2_fk.d.ts +10 -0
- package/dist/database/migrations/20251212000000_2_fk.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_2_fk.js +20 -43
- package/dist/database/migrations/20251212000000_2_fk.js.map +1 -1
- package/dist/database/migrations/20251212000000_3_indexes.d.ts +10 -0
- package/dist/database/migrations/20251212000000_3_indexes.d.ts.map +1 -0
- package/dist/database/migrations/20251212000000_3_indexes.js +88 -102
- package/dist/database/migrations/20251212000000_3_indexes.js.map +1 -1
- package/dist/database/pubsub.d.ts +7 -16
- package/dist/database/pubsub.d.ts.map +1 -1
- package/dist/database/pubsub.js +75 -73
- package/dist/database/pubsub.js.map +1 -1
- package/dist/execution.d.ts +20 -59
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +175 -188
- package/dist/execution.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.js +5 -5
- package/dist/internal.d.ts +12 -13
- package/dist/internal.js +4 -4
- package/dist/registry.d.ts +33 -27
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +58 -49
- package/dist/registry.js.map +1 -1
- package/dist/worker.d.ts +57 -50
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +194 -199
- package/dist/worker.js.map +1 -1
- package/dist/workflow.d.ts +26 -30
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +20 -15
- package/dist/workflow.js.map +1 -1
- package/nodemon.json +1 -1
- package/package.json +17 -19
- package/src/backend.ts +25 -9
- package/src/chaos.test.ts +3 -1
- package/src/client.test.ts +2 -0
- package/src/client.ts +30 -8
- package/src/config.test.ts +1 -0
- package/src/config.ts +3 -2
- package/src/core/duration.test.ts +2 -1
- package/src/core/duration.ts +1 -1
- package/src/core/error.test.ts +1 -0
- package/src/core/error.ts +1 -1
- package/src/core/result.test.ts +1 -0
- package/src/core/retry.test.ts +3 -2
- package/src/core/retry.ts +1 -1
- package/src/core/schema.ts +2 -2
- package/src/core/step.test.ts +2 -1
- package/src/core/step.ts +4 -3
- package/src/core/workflow.test.ts +2 -1
- package/src/core/workflow.ts +4 -3
- package/src/database/backend.test.ts +1 -0
- package/src/database/backend.testsuite.ts +44 -40
- package/src/database/backend.ts +207 -25
- package/src/database/base.test.ts +41 -0
- package/src/database/base.ts +51 -2
- package/src/database/migrations/20251212000000_0_init.ts +2 -1
- package/src/database/migrations/20251212000000_1_tables.ts +2 -1
- package/src/database/migrations/20251212000000_2_fk.ts +2 -1
- package/src/database/migrations/20251212000000_3_indexes.ts +2 -1
- package/src/database/pubsub.test.ts +6 -3
- package/src/database/pubsub.ts +55 -33
- package/src/execution.test.ts +2 -0
- package/src/execution.ts +49 -10
- package/src/internal.ts +15 -15
- package/src/practices/01-remote-workflow.ts +1 -0
- package/src/registry.test.ts +1 -0
- package/src/registry.ts +1 -1
- package/src/testing/connection.ts +3 -1
- package/src/worker.test.ts +2 -0
- package/src/worker.ts +30 -9
- package/src/workflow.test.ts +1 -0
- package/src/workflow.ts +3 -3
- package/templates/openworkflow.config.ts +2 -1
- package/tsdown.config.ts +31 -0
- package/.swcrc +0 -17
- package/dist/chaos.test.d.ts +0 -2
- package/dist/chaos.test.d.ts.map +0 -1
- package/dist/chaos.test.js +0 -92
- package/dist/chaos.test.js.map +0 -1
- package/dist/client.test.d.ts +0 -2
- package/dist/client.test.d.ts.map +0 -1
- package/dist/client.test.js +0 -340
- package/dist/client.test.js.map +0 -1
- package/dist/config.test.d.ts +0 -2
- package/dist/config.test.d.ts.map +0 -1
- package/dist/config.test.js +0 -24
- package/dist/config.test.js.map +0 -1
- package/dist/core/duration.test.d.ts +0 -2
- package/dist/core/duration.test.d.ts.map +0 -1
- package/dist/core/duration.test.js +0 -265
- package/dist/core/duration.test.js.map +0 -1
- package/dist/core/error.test.d.ts +0 -2
- package/dist/core/error.test.d.ts.map +0 -1
- package/dist/core/error.test.js +0 -63
- package/dist/core/error.test.js.map +0 -1
- package/dist/core/json.js +0 -3
- package/dist/core/json.js.map +0 -1
- package/dist/core/result.test.d.ts +0 -2
- package/dist/core/result.test.d.ts.map +0 -1
- package/dist/core/result.test.js +0 -19
- package/dist/core/result.test.js.map +0 -1
- package/dist/core/retry.test.d.ts +0 -2
- package/dist/core/retry.test.d.ts.map +0 -1
- package/dist/core/retry.test.js +0 -198
- package/dist/core/retry.test.js.map +0 -1
- package/dist/core/schema.js +0 -4
- package/dist/core/schema.js.map +0 -1
- package/dist/core/step.test.d.ts +0 -2
- package/dist/core/step.test.d.ts.map +0 -1
- package/dist/core/step.test.js +0 -356
- package/dist/core/step.test.js.map +0 -1
- package/dist/core/workflow.test.d.ts +0 -2
- package/dist/core/workflow.test.d.ts.map +0 -1
- package/dist/core/workflow.test.js +0 -172
- package/dist/core/workflow.test.js.map +0 -1
- package/dist/database/backend.test.d.ts +0 -2
- package/dist/database/backend.test.d.ts.map +0 -1
- package/dist/database/backend.test.js +0 -19
- package/dist/database/backend.test.js.map +0 -1
- package/dist/database/backend.testsuite.d.ts +0 -20
- package/dist/database/backend.testsuite.d.ts.map +0 -1
- package/dist/database/backend.testsuite.js +0 -1280
- package/dist/database/backend.testsuite.js.map +0 -1
- package/dist/database/base.d.ts +0 -12
- package/dist/database/base.d.ts.map +0 -1
- package/dist/database/pubsub.test.d.ts +0 -2
- package/dist/database/pubsub.test.d.ts.map +0 -1
- package/dist/database/pubsub.test.js +0 -86
- package/dist/database/pubsub.test.js.map +0 -1
- package/dist/execution.test.d.ts +0 -2
- package/dist/execution.test.d.ts.map +0 -1
- package/dist/execution.test.js +0 -662
- package/dist/execution.test.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal.d.ts.map +0 -1
- package/dist/internal.js.map +0 -1
- package/dist/practices/01-remote-workflow.d.ts +0 -2
- package/dist/practices/01-remote-workflow.d.ts.map +0 -1
- package/dist/practices/01-remote-workflow.js +0 -70
- package/dist/practices/01-remote-workflow.js.map +0 -1
- package/dist/registry.test.d.ts +0 -2
- package/dist/registry.test.d.ts.map +0 -1
- package/dist/registry.test.js +0 -95
- package/dist/registry.test.js.map +0 -1
- package/dist/testing/connection.d.ts +0 -7
- package/dist/testing/connection.d.ts.map +0 -1
- package/dist/testing/connection.js +0 -39
- package/dist/testing/connection.js.map +0 -1
- package/dist/worker.test.d.ts +0 -2
- package/dist/worker.test.d.ts.map +0 -1
- package/dist/worker.test.js +0 -1164
- package/dist/worker.test.js.map +0 -1
- package/dist/workflow.test.d.ts +0 -2
- package/dist/workflow.test.d.ts.map +0 -1
- package/dist/workflow.test.js +0 -73
- package/dist/workflow.test.js.map +0 -1
package/dist/core/duration.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
//#region src/core/duration.d.ts
|
|
2
2
|
type Years = "years" | "year" | "yrs" | "yr" | "y";
|
|
3
3
|
type Months = "months" | "month" | "mo";
|
|
4
4
|
type Weeks = "weeks" | "week" | "w";
|
|
@@ -9,7 +9,7 @@ type Seconds = "seconds" | "second" | "secs" | "sec" | "s";
|
|
|
9
9
|
type Milliseconds = "milliseconds" | "millisecond" | "msecs" | "msec" | "ms";
|
|
10
10
|
type Unit = Years | Months | Weeks | Days | Hours | Minutes | Seconds | Milliseconds;
|
|
11
11
|
type UnitAnyCase = Capitalize<Unit> | Uppercase<Unit> | Lowercase<Unit>;
|
|
12
|
-
|
|
12
|
+
type DurationString = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;
|
|
13
13
|
/**
|
|
14
14
|
* Parse a duration string into milliseconds. Examples:
|
|
15
15
|
* - short units: "1ms", "5s", "30m", "2h", "7d", "3w", "1y"
|
|
@@ -17,6 +17,7 @@ export type DurationString = `${number}` | `${number}${UnitAnyCase}` | `${number
|
|
|
17
17
|
* @param str - Duration string
|
|
18
18
|
* @returns Milliseconds
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
export { DurationString };
|
|
22
23
|
//# sourceMappingURL=duration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration.d.ts","
|
|
1
|
+
{"version":3,"file":"duration.d.ts","names":[],"sources":["../../src/core/duration.ts"],"sourcesContent":[],"mappings":";AAAuC,KAGlC,KAAA,GAAK,OAAA,GAAA,MAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA;AAAA,KACL,MAAA,GAAM,QAAA,GAAA,OAAA,GAAA,IAAA;AAAA,KACN,KAAA,GAAK,OAAA,GAAA,MAAA,GAAA,GAAA;AAAA,KACL,IAAA,GAAI,MAAA,GAAA,KAAA,GAAA,GAAA;AAAA,KACJ,KAAA,GAAK,OAAA,GAAA,MAAA,GAAA,KAAA,GAAA,IAAA,GAAA,GAAA;AAAA,KACL,OAAA,GAAO,SAAA,GAAA,QAAA,GAAA,MAAA,GAAA,KAAA,GAAA,GAAA;AAAA,KACP,OAAA,GAAO,SAAA,GAAA,QAAA,GAAA,MAAA,GAAA,KAAA,GAAA,GAAA;AAAA,KACP,YAAA,GAAY,cAAA,GAAA,aAAA,GAAA,OAAA,GAAA,MAAA,GAAA,IAAA;AAAA,KACZ,IAAA,GAAO,KAAH,GAAW,MAAX,GAAoB,KAApB,GAA4B,IAA5B,GAAmC,KAAnC,GAA2C,OAA3C,GAAqD,OAArD,GAA+D,YAA/D;KACJ,WAAA,GAAc,UADV,CACqB,IADrB,CAAA,GAC6B,SAD7B,CACuC,IADvC,CAAA,GAC+C,SAD/C,CACyD,IADzD,CAAA;AAAG,KAEA,cAAA,GAFA,GAAA,MAAA,EAAA,GAAA,GAAA,MAAA,GAE2C,WAF3C,EAAA,GAAA,GAAA,MAAA,IAEwE,WAFxE,EAAA"}
|
package/dist/core/duration.js
CHANGED
|
@@ -1,64 +1,59 @@
|
|
|
1
1
|
import { err, ok } from "./result.js";
|
|
2
|
+
|
|
3
|
+
//#region src/core/duration.ts
|
|
2
4
|
/**
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
yr: 31_557_600_000,
|
|
54
|
-
yrs: 31_557_600_000,
|
|
55
|
-
y: 31_557_600_000
|
|
56
|
-
};
|
|
57
|
-
const multiplier = multipliers[unit];
|
|
58
|
-
if (multiplier === undefined) {
|
|
59
|
-
return err(new Error(`Invalid duration format: "${str}"`));
|
|
60
|
-
}
|
|
61
|
-
return ok(numValue * multiplier);
|
|
5
|
+
* Parse a duration string into milliseconds. Examples:
|
|
6
|
+
* - short units: "1ms", "5s", "30m", "2h", "7d", "3w", "1y"
|
|
7
|
+
* - long units: "1 millisecond", "5 seconds", "30 minutes", "2 hours", "7 days", "3 weeks", "1 year"
|
|
8
|
+
* @param str - Duration string
|
|
9
|
+
* @returns Milliseconds
|
|
10
|
+
*/
|
|
11
|
+
function parseDuration(str) {
|
|
12
|
+
if (typeof str !== "string") return err(/* @__PURE__ */ new TypeError(`Invalid duration format: expected a string but received ${typeof str}`));
|
|
13
|
+
if (str.length === 0) return err(/* @__PURE__ */ new Error("Invalid duration format: \"\""));
|
|
14
|
+
const match = /^(-?\.?\d+(?:\.\d+)?)\s*([a-z]+)?$/i.exec(str);
|
|
15
|
+
if (!match?.[1]) return err(/* @__PURE__ */ new Error(`Invalid duration format: "${str}"`));
|
|
16
|
+
const numValue = Number.parseFloat(match[1]);
|
|
17
|
+
const multiplier = {
|
|
18
|
+
millisecond: 1,
|
|
19
|
+
milliseconds: 1,
|
|
20
|
+
msec: 1,
|
|
21
|
+
msecs: 1,
|
|
22
|
+
ms: 1,
|
|
23
|
+
second: 1e3,
|
|
24
|
+
seconds: 1e3,
|
|
25
|
+
sec: 1e3,
|
|
26
|
+
secs: 1e3,
|
|
27
|
+
s: 1e3,
|
|
28
|
+
minute: 60 * 1e3,
|
|
29
|
+
minutes: 60 * 1e3,
|
|
30
|
+
min: 60 * 1e3,
|
|
31
|
+
mins: 60 * 1e3,
|
|
32
|
+
m: 60 * 1e3,
|
|
33
|
+
hour: 3600 * 1e3,
|
|
34
|
+
hours: 3600 * 1e3,
|
|
35
|
+
hr: 3600 * 1e3,
|
|
36
|
+
hrs: 3600 * 1e3,
|
|
37
|
+
h: 3600 * 1e3,
|
|
38
|
+
day: 1440 * 60 * 1e3,
|
|
39
|
+
days: 1440 * 60 * 1e3,
|
|
40
|
+
d: 1440 * 60 * 1e3,
|
|
41
|
+
week: 10080 * 60 * 1e3,
|
|
42
|
+
weeks: 10080 * 60 * 1e3,
|
|
43
|
+
w: 10080 * 60 * 1e3,
|
|
44
|
+
month: 26298e5,
|
|
45
|
+
months: 26298e5,
|
|
46
|
+
mo: 26298e5,
|
|
47
|
+
year: 315576e5,
|
|
48
|
+
years: 315576e5,
|
|
49
|
+
yr: 315576e5,
|
|
50
|
+
yrs: 315576e5,
|
|
51
|
+
y: 315576e5
|
|
52
|
+
}[match[2]?.toLowerCase() ?? "ms"];
|
|
53
|
+
if (multiplier === void 0) return err(/* @__PURE__ */ new Error(`Invalid duration format: "${str}"`));
|
|
54
|
+
return ok(numValue * multiplier);
|
|
62
55
|
}
|
|
63
56
|
|
|
57
|
+
//#endregion
|
|
58
|
+
export { parseDuration };
|
|
64
59
|
//# sourceMappingURL=duration.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/duration.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"duration.js","names":[],"sources":["../../src/core/duration.ts"],"sourcesContent":["import { type Result } from \"./result\";\nimport { err, ok } from \"./result\";\n\ntype Years = \"years\" | \"year\" | \"yrs\" | \"yr\" | \"y\";\ntype Months = \"months\" | \"month\" | \"mo\";\ntype Weeks = \"weeks\" | \"week\" | \"w\";\ntype Days = \"days\" | \"day\" | \"d\";\ntype Hours = \"hours\" | \"hour\" | \"hrs\" | \"hr\" | \"h\";\ntype Minutes = \"minutes\" | \"minute\" | \"mins\" | \"min\" | \"m\";\ntype Seconds = \"seconds\" | \"second\" | \"secs\" | \"sec\" | \"s\";\ntype Milliseconds = \"milliseconds\" | \"millisecond\" | \"msecs\" | \"msec\" | \"ms\";\ntype Unit = Years | Months | Weeks | Days | Hours | Minutes | Seconds | Milliseconds;\ntype UnitAnyCase = Capitalize<Unit> | Uppercase<Unit> | Lowercase<Unit>;\nexport type DurationString = `${number}` | `${number}${UnitAnyCase}` | `${number} ${UnitAnyCase}`;\n\n/**\n * Parse a duration string into milliseconds. Examples:\n * - short units: \"1ms\", \"5s\", \"30m\", \"2h\", \"7d\", \"3w\", \"1y\"\n * - long units: \"1 millisecond\", \"5 seconds\", \"30 minutes\", \"2 hours\", \"7 days\", \"3 weeks\", \"1 year\"\n * @param str - Duration string\n * @returns Milliseconds\n */\nexport function parseDuration(str: DurationString): Result<number> {\n if (typeof str !== \"string\") {\n return err(\n new TypeError(`Invalid duration format: expected a string but received ${typeof str}`),\n );\n }\n\n if (str.length === 0) {\n return err(new Error('Invalid duration format: \"\"'));\n }\n\n const match = /^(-?\\.?\\d+(?:\\.\\d+)?)\\s*([a-z]+)?$/i.exec(str);\n\n if (!match?.[1]) {\n return err(new Error(`Invalid duration format: \"${str}\"`));\n }\n\n const numValue = Number.parseFloat(match[1]);\n const unit = match[2]?.toLowerCase() ?? \"ms\"; // default to ms if not provided\n\n const multipliers: Record<string, number> = {\n millisecond: 1,\n milliseconds: 1,\n msec: 1,\n msecs: 1,\n ms: 1,\n second: 1000,\n seconds: 1000,\n sec: 1000,\n secs: 1000,\n s: 1000,\n minute: 60 * 1000,\n minutes: 60 * 1000,\n min: 60 * 1000,\n mins: 60 * 1000,\n m: 60 * 1000,\n hour: 60 * 60 * 1000,\n hours: 60 * 60 * 1000,\n hr: 60 * 60 * 1000,\n hrs: 60 * 60 * 1000,\n h: 60 * 60 * 1000,\n day: 24 * 60 * 60 * 1000,\n days: 24 * 60 * 60 * 1000,\n d: 24 * 60 * 60 * 1000,\n week: 7 * 24 * 60 * 60 * 1000,\n weeks: 7 * 24 * 60 * 60 * 1000,\n w: 7 * 24 * 60 * 60 * 1000,\n month: 2_629_800_000,\n months: 2_629_800_000,\n mo: 2_629_800_000,\n year: 31_557_600_000,\n years: 31_557_600_000,\n yr: 31_557_600_000,\n yrs: 31_557_600_000,\n y: 31_557_600_000,\n };\n\n const multiplier = multipliers[unit];\n if (multiplier === undefined) {\n return err(new Error(`Invalid duration format: \"${str}\"`));\n }\n\n return ok(numValue * multiplier);\n}\n"],"mappings":";;;;;;;;;;AAsBA,SAAgB,cAAc,KAAqC;AACjE,KAAI,OAAO,QAAQ,SACjB,QAAO,oBACL,IAAI,UAAU,2DAA2D,OAAO,MAAM,CACvF;AAGH,KAAI,IAAI,WAAW,EACjB,QAAO,oBAAI,IAAI,MAAM,gCAA8B,CAAC;CAGtD,MAAM,QAAQ,sCAAsC,KAAK,IAAI;AAE7D,KAAI,CAAC,QAAQ,GACX,QAAO,oBAAI,IAAI,MAAM,6BAA6B,IAAI,GAAG,CAAC;CAG5D,MAAM,WAAW,OAAO,WAAW,MAAM,GAAG;CAwC5C,MAAM,aArCsC;EAC1C,aAAa;EACb,cAAc;EACd,MAAM;EACN,OAAO;EACP,IAAI;EACJ,QAAQ;EACR,SAAS;EACT,KAAK;EACL,MAAM;EACN,GAAG;EACH,QAAQ,KAAK;EACb,SAAS,KAAK;EACd,KAAK,KAAK;EACV,MAAM,KAAK;EACX,GAAG,KAAK;EACR,MAAM,OAAU;EAChB,OAAO,OAAU;EACjB,IAAI,OAAU;EACd,KAAK,OAAU;EACf,GAAG,OAAU;EACb,KAAK,OAAU,KAAK;EACpB,MAAM,OAAU,KAAK;EACrB,GAAG,OAAU,KAAK;EAClB,MAAM,QAAc,KAAK;EACzB,OAAO,QAAc,KAAK;EAC1B,GAAG,QAAc,KAAK;EACtB,OAAO;EACP,QAAQ;EACR,IAAI;EACJ,MAAM;EACN,OAAO;EACP,IAAI;EACJ,KAAK;EACL,GAAG;EACJ,CArCY,MAAM,IAAI,aAAa,IAAI;AAwCxC,KAAI,eAAe,OACjB,QAAO,oBAAI,IAAI,MAAM,6BAA6B,IAAI,GAAG,CAAC;AAG5D,QAAO,GAAG,WAAW,WAAW"}
|
package/dist/core/error.d.ts
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { JsonValue } from "./json.js";
|
|
2
|
+
|
|
3
|
+
//#region src/core/error.d.ts
|
|
4
|
+
type SerializedError = {
|
|
5
|
+
name?: string;
|
|
6
|
+
message: string;
|
|
7
|
+
stack?: string;
|
|
6
8
|
} & {
|
|
7
|
-
|
|
9
|
+
[key: string]: JsonValue;
|
|
8
10
|
};
|
|
9
11
|
/**
|
|
10
12
|
* Serialize an error to a JSON-compatible format.
|
|
11
13
|
* @param error - The error to serialize (can be Error instance or any value)
|
|
12
14
|
* @returns A JSON-serializable error object
|
|
13
15
|
*/
|
|
14
|
-
|
|
16
|
+
//#endregion
|
|
17
|
+
export { SerializedError };
|
|
15
18
|
//# sourceMappingURL=error.d.ts.map
|
package/dist/core/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","
|
|
1
|
+
{"version":3,"file":"error.d.ts","names":[],"sources":["../../src/core/error.ts"],"sourcesContent":[],"mappings":";;;KAEY,eAAA;;EAAA,OAAA,EAAA,MAAA;;;iBAKK"}
|
package/dist/core/error.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
//#region src/core/error.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return {
|
|
21
|
-
message: String(error)
|
|
22
|
-
};
|
|
3
|
+
* Serialize an error to a JSON-compatible format.
|
|
4
|
+
* @param error - The error to serialize (can be Error instance or any value)
|
|
5
|
+
* @returns A JSON-serializable error object
|
|
6
|
+
*/
|
|
7
|
+
function serializeError(error) {
|
|
8
|
+
if (error instanceof Error) {
|
|
9
|
+
const { name, message, stack } = error;
|
|
10
|
+
if (stack) return {
|
|
11
|
+
name,
|
|
12
|
+
message,
|
|
13
|
+
stack
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
name,
|
|
17
|
+
message
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return { message: String(error) };
|
|
23
21
|
}
|
|
24
22
|
|
|
23
|
+
//#endregion
|
|
24
|
+
export { serializeError };
|
|
25
25
|
//# sourceMappingURL=error.js.map
|
package/dist/core/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/error.ts"],"sourcesContent":["import type
|
|
1
|
+
{"version":3,"file":"error.js","names":[],"sources":["../../src/core/error.ts"],"sourcesContent":["import { type JsonValue } from \"./json\";\n\nexport type SerializedError = {\n name?: string;\n message: string;\n stack?: string;\n} & {\n [key: string]: JsonValue;\n};\n\n/**\n * Serialize an error to a JSON-compatible format.\n * @param error - The error to serialize (can be Error instance or any value)\n * @returns A JSON-serializable error object\n */\nexport function serializeError(error: unknown): SerializedError {\n if (error instanceof Error) {\n const { name, message, stack } = error;\n\n if (stack) {\n return { name, message, stack };\n }\n\n return { name, message };\n }\n\n return {\n message: String(error),\n };\n}\n"],"mappings":";;;;;;AAeA,SAAgB,eAAe,OAAiC;AAC9D,KAAI,iBAAiB,OAAO;EAC1B,MAAM,EAAE,MAAM,SAAS,UAAU;AAEjC,MAAI,MACF,QAAO;GAAE;GAAM;GAAS;GAAO;AAGjC,SAAO;GAAE;GAAM;GAAS;;AAG1B,QAAO,EACL,SAAS,OAAO,MAAM,EACvB"}
|
package/dist/core/json.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region src/core/json.d.ts
|
|
2
|
+
type JsonPrimitive = string | number | boolean | null;
|
|
3
|
+
type JsonValue = JsonPrimitive | JsonValue[] | {
|
|
4
|
+
[key: string]: JsonValue;
|
|
4
5
|
};
|
|
6
|
+
//# sourceMappingURL=json.d.ts.map
|
|
7
|
+
|
|
8
|
+
//#endregion
|
|
9
|
+
export { JsonValue };
|
|
5
10
|
//# sourceMappingURL=json.d.ts.map
|
package/dist/core/json.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.d.ts","
|
|
1
|
+
{"version":3,"file":"json.d.ts","names":[],"sources":["../../src/core/json.ts"],"sourcesContent":[],"mappings":";KAAY,aAAA;AAAA,KACA,SAAA,GAAY,aADC,GACe,SADf,EAAA,GAAA;EACb,CAAA,GAAA,EAAA,MAAS,CAAA,EAAkD,SAAlD;CAAA"}
|
package/dist/core/result.d.ts
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
//#region src/core/result.d.ts
|
|
2
|
+
type Result<T> = Ok<T> | Err;
|
|
3
|
+
interface Ok<T> {
|
|
4
|
+
ok: true;
|
|
5
|
+
value: T;
|
|
5
6
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
interface Err {
|
|
8
|
+
ok: false;
|
|
9
|
+
error: Error;
|
|
9
10
|
}
|
|
10
11
|
/**
|
|
11
12
|
* Create an Ok result.
|
|
12
13
|
* @param value - Result value
|
|
13
14
|
* @returns Ok result
|
|
14
15
|
*/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* Create an Err result.
|
|
18
|
-
* @param error - Result error
|
|
19
|
-
* @returns Err result
|
|
20
|
-
*/
|
|
21
|
-
export declare function err(error: Readonly<Error>): Err;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { Result };
|
|
22
18
|
//# sourceMappingURL=result.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","
|
|
1
|
+
{"version":3,"file":"result.d.ts","names":[],"sources":["../../src/core/result.ts"],"sourcesContent":[],"mappings":";KAAY,YAAY,GAAG,KAAK;AAApB,UAEK,EAFC,CAAA,CAAA,CAAA,CAAA;EAAA,EAAA,EAAA,IAAA;OAAS,EAIlB,CAJkB;;AAAK,UAOf,GAAA,CAPe;EAAG,EAAA,EAAA,KAAA;EAElB,KAAE,EAOV,KAPU;AAKnB"}
|
package/dist/core/result.js
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
|
+
//#region src/core/result.ts
|
|
1
2
|
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
* Create an Ok result.
|
|
4
|
+
* @param value - Result value
|
|
5
|
+
* @returns Ok result
|
|
6
|
+
*/
|
|
7
|
+
function ok(value) {
|
|
8
|
+
return {
|
|
9
|
+
ok: true,
|
|
10
|
+
value
|
|
11
|
+
};
|
|
10
12
|
}
|
|
11
13
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
* Create an Err result.
|
|
15
|
+
* @param error - Result error
|
|
16
|
+
* @returns Err result
|
|
17
|
+
*/
|
|
18
|
+
function err(error) {
|
|
19
|
+
return {
|
|
20
|
+
ok: false,
|
|
21
|
+
error
|
|
22
|
+
};
|
|
20
23
|
}
|
|
21
24
|
|
|
25
|
+
//#endregion
|
|
26
|
+
export { err, ok };
|
|
22
27
|
//# sourceMappingURL=result.js.map
|
package/dist/core/result.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/core/result.ts"],"sourcesContent":["export type Result<T> = Ok<T> | Err;\n\nexport interface Ok<T> {\n ok: true;\n value: T;\n}\n\nexport interface Err {\n ok: false;\n error: Error;\n}\n\n/**\n * Create an Ok result.\n * @param value - Result value\n * @returns Ok result\n */\nexport function ok<T>(value: T): Ok<T> {\n return { ok: true, value };\n}\n\n/**\n * Create an Err result.\n * @param error - Result error\n * @returns Err result\n */\nexport function err(error: Readonly<Error>): Err {\n return { ok: false, error };\n}\n"],"
|
|
1
|
+
{"version":3,"file":"result.js","names":[],"sources":["../../src/core/result.ts"],"sourcesContent":["export type Result<T> = Ok<T> | Err;\n\nexport interface Ok<T> {\n ok: true;\n value: T;\n}\n\nexport interface Err {\n ok: false;\n error: Error;\n}\n\n/**\n * Create an Ok result.\n * @param value - Result value\n * @returns Ok result\n */\nexport function ok<T>(value: T): Ok<T> {\n return { ok: true, value };\n}\n\n/**\n * Create an Err result.\n * @param error - Result error\n * @returns Err result\n */\nexport function err(error: Readonly<Error>): Err {\n return { ok: false, error };\n}\n"],"mappings":";;;;;;AAiBA,SAAgB,GAAM,OAAiB;AACrC,QAAO;EAAE,IAAI;EAAM;EAAO;;;;;;;AAQ5B,SAAgB,IAAI,OAA6B;AAC/C,QAAO;EAAE,IAAI;EAAO;EAAO"}
|
package/dist/core/retry.d.ts
CHANGED
|
@@ -1,37 +1,43 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { SerializedError } from "./error.js";
|
|
2
|
+
|
|
3
|
+
//#region src/core/retry.d.ts
|
|
4
|
+
interface RetryDecision {
|
|
5
|
+
shouldRetry: boolean;
|
|
6
|
+
delayMs: number;
|
|
5
7
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
type RetryDecisionFn = (error: SerializedError, attempt: number) => RetryDecision;
|
|
9
|
+
interface StaticRetryPolicy {
|
|
10
|
+
maxAttempts?: number;
|
|
11
|
+
initialIntervalMs?: number;
|
|
12
|
+
backoffCoefficient?: number;
|
|
13
|
+
maximumIntervalMs?: number;
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
interface DynamicRetryPolicy {
|
|
16
|
+
maxAttempts?: number;
|
|
17
|
+
shouldRetry: RetryDecisionFn;
|
|
16
18
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
type RetryPolicy = StaticRetryPolicy | DynamicRetryPolicy;
|
|
20
|
+
interface SerializableRetryPolicy extends StaticRetryPolicy {
|
|
21
|
+
hasDynamicPolicy?: boolean;
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
type MergedStaticRetryPolicy = Required<StaticRetryPolicy>;
|
|
24
|
+
interface MergedDynamicRetryPolicy {
|
|
25
|
+
maxAttempts: number;
|
|
26
|
+
shouldRetry: RetryDecisionFn;
|
|
25
27
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
type MergedRetryPolicy = MergedStaticRetryPolicy | MergedDynamicRetryPolicy;
|
|
29
|
+
declare const DEFAULT_RETRY_POLICY: Required<StaticRetryPolicy>;
|
|
30
|
+
declare function isDynamicRetryPolicy(policy: RetryPolicy): policy is DynamicRetryPolicy;
|
|
31
|
+
declare function isStaticRetryPolicy(policy: RetryPolicy): policy is StaticRetryPolicy;
|
|
32
|
+
declare function calculateRetryDelayMs(attemptNumber: number): number;
|
|
33
|
+
declare function shouldRetry(retryPolicy: StaticRetryPolicy, attemptNumber: number): boolean;
|
|
34
|
+
declare function shouldRetryByPolicy(policy: StaticRetryPolicy, attemptNumber: number): boolean;
|
|
35
|
+
declare function mergeRetryPolicy(policy: StaticRetryPolicy | undefined): MergedStaticRetryPolicy;
|
|
36
|
+
declare function mergeRetryPolicy(policy: DynamicRetryPolicy): MergedDynamicRetryPolicy;
|
|
37
|
+
declare function mergeRetryPolicy(policy?: RetryPolicy): MergedRetryPolicy;
|
|
38
|
+
declare function serializeRetryPolicy(policy?: RetryPolicy): SerializableRetryPolicy;
|
|
39
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
export { DEFAULT_RETRY_POLICY, DynamicRetryPolicy, MergedDynamicRetryPolicy, MergedRetryPolicy, MergedStaticRetryPolicy, RetryDecision, RetryDecisionFn, RetryPolicy, SerializableRetryPolicy, StaticRetryPolicy, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy };
|
|
37
43
|
//# sourceMappingURL=retry.d.ts.map
|
package/dist/core/retry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","
|
|
1
|
+
{"version":3,"file":"retry.d.ts","names":[],"sources":["../../src/core/retry.ts"],"sourcesContent":[],"mappings":";;;UAEiB,aAAA;;EAAA,OAAA,EAAA,MAAA;AAKjB;AAA2B,KAAf,eAAA,GAAe,CAAA,KAAA,EAAW,eAAX,EAAA,OAAA,EAAA,MAAA,EAAA,GAAgD,aAAhD;AAAW,UAErB,iBAAA,CAFqB;aAAqC,CAAA,EAAA,MAAA;EAAa,iBAAA,CAAA,EAAA,MAAA;EAEvE,kBAAA,CAAA,EAAiB,MAAA;EAOjB,iBAAA,CAAA,EAAA,MAAkB;AAKnC;AAAuB,UALN,kBAAA,CAKM;aAAG,CAAA,EAAA,MAAA;aAAoB,EAH/B,eAG+B;;AAE7B,KAFL,WAAA,GAAc,iBAEuB,GAFH,kBAEoB;AAItD,UAJK,uBAAA,SAAgC,iBAId,CAAA;EAAA,gBAAA,CAAA,EAAA,OAAA;;AAAG,KAA1B,uBAAA,GAA0B,QAAA,CAAS,iBAAT,CAAA;AAAQ,UAE7B,wBAAA,CAF6B;EAE7B,WAAA,EAAA,MAAA;EAKL,WAAA,EAHG,eAGc;;AAAG,KAApB,iBAAA,GAAoB,uBAAA,GAA0B,wBAA1B;AAA0B,cAE7C,oBAF6C,EAEvB,QAFuB,CAEd,iBAFc,CAAA;AAAwB,iBASlE,oBAAA,CATkE,MAAA,EASrC,WATqC,CAAA,EAAA,MAAA,IASb,kBATa;AAErE,iBAWG,mBAAA,CANf,MAAA,EAM2C,WAN3C,CAAA,EAAA,MAAA,IAMmE,iBANnE;AAAA,iBAUe,qBAAA,CAVf,aAAA,EAAA,MAAA,CAAA,EAAA,MAAA;AAL2C,iBAqB5B,WAAA,CArB4B,WAAA,EAqBH,iBArBG,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAAT,iBA0BnB,mBAAA,CA1BmB,MAAA,EA0BS,iBA1BT,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA;AAAQ,iBA+B3B,gBAAA,CA/B2B,MAAA,EA+BF,iBA/BE,GAAA,SAAA,CAAA,EA+B8B,uBA/B9B;AAO3B,iBAyBA,gBAAA,CAzBoB,MAAA,EAyBK,kBAzBL,CAAA,EAyB0B,wBAzB1B;AAAA,iBA0BpB,gBAAA,CA1BoB,MAAA,CAAA,EA0BM,WA1BN,CAAA,EA0BoB,iBA1BpB;AAAS,iBA0C7B,oBAAA,CA1C6B,MAAA,CAAA,EA0CC,WA1CD,CAAA,EA0Ce,uBA1Cf"}
|
package/dist/core/retry.js
CHANGED
|
@@ -1,61 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
//#region src/core/retry.ts
|
|
2
|
+
const DEFAULT_RETRY_POLICY = {
|
|
3
|
+
maxAttempts: 5,
|
|
4
|
+
initialIntervalMs: 1e3,
|
|
5
|
+
backoffCoefficient: 2,
|
|
6
|
+
maximumIntervalMs: 6e4
|
|
6
7
|
};
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
function isDynamicRetryPolicy(policy) {
|
|
9
|
+
return "shouldRetry" in policy && typeof policy.shouldRetry === "function";
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
function isStaticRetryPolicy(policy) {
|
|
12
|
+
return !isDynamicRetryPolicy(policy);
|
|
12
13
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
function calculateRetryDelayMs(attemptNumber) {
|
|
15
|
+
const { initialIntervalMs, backoffCoefficient, maximumIntervalMs } = DEFAULT_RETRY_POLICY;
|
|
16
|
+
const backoffMs = initialIntervalMs * backoffCoefficient ** (attemptNumber - 1);
|
|
17
|
+
return Math.min(backoffMs, maximumIntervalMs);
|
|
17
18
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return attemptNumber < maxAttempts;
|
|
19
|
+
function shouldRetry(retryPolicy, attemptNumber) {
|
|
20
|
+
return attemptNumber < (retryPolicy.maxAttempts ?? DEFAULT_RETRY_POLICY.maxAttempts);
|
|
21
21
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return attemptNumber < maxAttempts;
|
|
22
|
+
function shouldRetryByPolicy(policy, attemptNumber) {
|
|
23
|
+
return attemptNumber < (policy.maxAttempts ?? DEFAULT_RETRY_POLICY.maxAttempts);
|
|
25
24
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
maximumIntervalMs: policy?.maximumIntervalMs ?? DEFAULT_RETRY_POLICY.maximumIntervalMs
|
|
38
|
-
};
|
|
25
|
+
function mergeRetryPolicy(policy) {
|
|
26
|
+
if (policy && isDynamicRetryPolicy(policy)) return {
|
|
27
|
+
maxAttempts: policy.maxAttempts ?? DEFAULT_RETRY_POLICY.maxAttempts,
|
|
28
|
+
shouldRetry: policy.shouldRetry
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
maxAttempts: policy?.maxAttempts ?? DEFAULT_RETRY_POLICY.maxAttempts,
|
|
32
|
+
initialIntervalMs: policy?.initialIntervalMs ?? DEFAULT_RETRY_POLICY.initialIntervalMs,
|
|
33
|
+
backoffCoefficient: policy?.backoffCoefficient ?? DEFAULT_RETRY_POLICY.backoffCoefficient,
|
|
34
|
+
maximumIntervalMs: policy?.maximumIntervalMs ?? DEFAULT_RETRY_POLICY.maximumIntervalMs
|
|
35
|
+
};
|
|
39
36
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
maxAttempts: policy.maxAttempts,
|
|
54
|
-
initialIntervalMs: policy.initialIntervalMs,
|
|
55
|
-
backoffCoefficient: policy.backoffCoefficient,
|
|
56
|
-
maximumIntervalMs: policy.maximumIntervalMs,
|
|
57
|
-
hasDynamicPolicy: false
|
|
58
|
-
};
|
|
37
|
+
function serializeRetryPolicy(policy) {
|
|
38
|
+
if (!policy) return { hasDynamicPolicy: false };
|
|
39
|
+
if (isDynamicRetryPolicy(policy)) return {
|
|
40
|
+
maxAttempts: policy.maxAttempts,
|
|
41
|
+
hasDynamicPolicy: true
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
maxAttempts: policy.maxAttempts,
|
|
45
|
+
initialIntervalMs: policy.initialIntervalMs,
|
|
46
|
+
backoffCoefficient: policy.backoffCoefficient,
|
|
47
|
+
maximumIntervalMs: policy.maximumIntervalMs,
|
|
48
|
+
hasDynamicPolicy: false
|
|
49
|
+
};
|
|
59
50
|
}
|
|
60
51
|
|
|
52
|
+
//#endregion
|
|
53
|
+
export { DEFAULT_RETRY_POLICY, calculateRetryDelayMs, isDynamicRetryPolicy, isStaticRetryPolicy, mergeRetryPolicy, serializeRetryPolicy, shouldRetry, shouldRetryByPolicy };
|
|
61
54
|
//# sourceMappingURL=retry.js.map
|