@daiso-tech/core 0.35.3 → 0.36.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 (143) hide show
  1. package/README.md +22 -54
  2. package/dist/async/backof-policies/_shared.d.ts +8 -2
  3. package/dist/async/backof-policies/_shared.js +0 -1
  4. package/dist/async/backof-policies/_shared.js.map +1 -1
  5. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +3 -3
  6. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +10 -4
  7. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +1 -1
  8. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +3 -3
  9. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +10 -4
  10. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +1 -1
  11. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +3 -3
  12. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +10 -4
  13. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +1 -1
  14. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +3 -3
  15. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +10 -4
  16. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +1 -1
  17. package/dist/async/middlewares/fallback/fallback.middleware.d.ts +2 -2
  18. package/dist/async/middlewares/fallback/fallback.middleware.js +2 -2
  19. package/dist/async/middlewares/fallback/fallback.middleware.js.map +1 -1
  20. package/dist/async/middlewares/hedging/_shared.d.ts +7 -7
  21. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js +7 -7
  22. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js.map +1 -1
  23. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js +6 -6
  24. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js.map +1 -1
  25. package/dist/async/middlewares/observe/observe.middleware.d.ts +4 -4
  26. package/dist/async/middlewares/retry/retry.middleware.d.ts +5 -4
  27. package/dist/async/middlewares/retry/retry.middleware.js +9 -9
  28. package/dist/async/middlewares/retry/retry.middleware.js.map +1 -1
  29. package/dist/async/middlewares/timeout/timeout.middleware.d.ts +4 -2
  30. package/dist/async/middlewares/timeout/timeout.middleware.js +3 -1
  31. package/dist/async/middlewares/timeout/timeout.middleware.js.map +1 -1
  32. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +1 -1
  33. package/dist/async/utilities/lazy-promise/lazy-promise.js +1 -1
  34. package/dist/async/utilities/promise-queue/promise-queue.js.map +1 -1
  35. package/dist/cache/contracts/cache.errors.d.ts +3 -3
  36. package/dist/cache/contracts/cache.errors.js +1 -1
  37. package/dist/cache/contracts/cache.errors.js.map +1 -1
  38. package/dist/cache/contracts/cache.events.d.ts +2 -2
  39. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +14 -0
  40. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +1 -1
  41. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +3 -0
  42. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  43. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +11 -0
  44. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  45. package/dist/cache/implementations/derivables/cache/cache.d.ts +12 -8
  46. package/dist/cache/implementations/derivables/cache/cache.js +25 -34
  47. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  48. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +6 -41
  49. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +10 -45
  50. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  51. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -5
  52. package/dist/cache/implementations/test-utilities/cache.test-suite.js +11 -12
  53. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  54. package/dist/collection/contracts/async-collection.contract.d.ts +121 -121
  55. package/dist/collection/contracts/collection.contract.d.ts +120 -120
  56. package/dist/collection/contracts/collection.errors.d.ts +3 -3
  57. package/dist/collection/contracts/collection.errors.js +1 -1
  58. package/dist/collection/contracts/collection.errors.js.map +1 -1
  59. package/dist/collection/implementations/_shared.d.ts +4 -4
  60. package/dist/collection/implementations/_shared.js +2 -2
  61. package/dist/collection/implementations/_shared.js.map +1 -1
  62. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +13 -13
  63. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +15 -15
  64. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  65. package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +12 -12
  66. package/dist/collection/implementations/iterable-collection/iterable-collection.js +12 -12
  67. package/dist/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  68. package/dist/collection/implementations/list-collection/list-collection.d.ts +12 -12
  69. package/dist/collection/implementations/list-collection/list-collection.js +12 -12
  70. package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
  71. package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +1 -1
  72. package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -2
  73. package/dist/event-bus/contracts/event-bus.errors.d.ts +3 -3
  74. package/dist/event-bus/contracts/event-bus.errors.js +1 -1
  75. package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
  76. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +1 -1
  77. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +1 -1
  78. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +13 -6
  79. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +21 -19
  80. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  81. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +5 -36
  82. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +4 -35
  83. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  84. package/dist/lock/contracts/lock.errors.d.ts +2 -2
  85. package/dist/lock/contracts/lock.errors.js.map +1 -1
  86. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +3 -3
  87. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +2 -2
  88. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  89. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +3 -3
  90. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +2 -2
  91. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +1 -1
  92. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +6 -3
  93. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +1 -1
  94. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
  95. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +4 -4
  96. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +3 -3
  97. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -1
  98. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +22 -18
  99. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +20 -22
  100. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  101. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +3 -3
  102. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +12 -6
  103. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  104. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +4 -2
  105. package/dist/lock/implementations/derivables/lock-provider/lock.js +16 -18
  106. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  107. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +6 -50
  108. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +10 -54
  109. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  110. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +1 -9
  111. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +1 -9
  112. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  113. package/dist/serde/contracts/flexible-serde.contract.d.ts +9 -2
  114. package/dist/utilities/classes/_module.d.ts +1 -1
  115. package/dist/utilities/classes/_module.js +1 -1
  116. package/dist/utilities/classes/_module.js.map +1 -1
  117. package/dist/utilities/classes/hooks/hooks.d.ts +2 -2
  118. package/dist/utilities/classes/hooks/hooks.js +2 -2
  119. package/dist/utilities/classes/namespace/_module.d.ts +1 -0
  120. package/dist/utilities/classes/namespace/_module.js +2 -0
  121. package/dist/utilities/classes/namespace/_module.js.map +1 -0
  122. package/dist/utilities/classes/{key-prefixer/key-prefixer.d.ts → namespace/namespace.d.ts} +38 -17
  123. package/dist/utilities/classes/{key-prefixer/key-prefixer.js → namespace/namespace.js} +51 -19
  124. package/dist/utilities/classes/namespace/namespace.js.map +1 -0
  125. package/dist/utilities/classes/time-span/time-span.d.ts +1 -2
  126. package/dist/utilities/classes/time-span/time-span.js +1 -4
  127. package/dist/utilities/classes/time-span/time-span.js.map +1 -1
  128. package/dist/utilities/functions/_module-exports.d.ts +1 -1
  129. package/dist/utilities/functions/_module-exports.js +1 -1
  130. package/dist/utilities/functions/_module-exports.js.map +1 -1
  131. package/dist/utilities/functions/result.d.ts +11 -0
  132. package/dist/utilities/functions/result.js +15 -0
  133. package/dist/utilities/functions/result.js.map +1 -0
  134. package/dist/utilities/types/factory.type.d.ts +13 -18
  135. package/dist/utilities/types/result.type.d.ts +11 -1
  136. package/package.json +3 -2
  137. package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
  138. package/dist/utilities/classes/key-prefixer/_module.js +0 -2
  139. package/dist/utilities/classes/key-prefixer/_module.js.map +0 -1
  140. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +0 -1
  141. package/dist/utilities/functions/factory.d.ts +0 -44
  142. package/dist/utilities/functions/factory.js +0 -80
  143. package/dist/utilities/functions/factory.js.map +0 -1
package/README.md CHANGED
@@ -1,72 +1,40 @@
1
- # @daiso-tech/core
2
-
3
1
  [![npm version](https://img.shields.io/npm/v/@daiso-tech/core)](https://www.npmjs.com/package/@daiso-tech/core)
4
2
  ![NPM Downloads](https://img.shields.io/npm/dy/@daiso-tech/core)
5
3
  ![Static Badge](https://img.shields.io/badge/TypeScript-3178C6?logo=TypeScript&logoColor=white)
6
4
  [![ES Modules](https://img.shields.io/badge/module%20type-ESM-blue)](https://nodejs.org/api/esm.html)
7
5
  [![License](https://img.shields.io/npm/l/@daiso-tech/core)](LICENSE)
8
6
 
7
+ # @daiso-tech/core
9
8
 
10
- A modular, framework-agnostic library providing essential components for modern web applications. Stop reinventing the wheel - focus on building your application while the library handles the core functionalities.
11
-
12
- ## ✨ Features
9
+ `@daiso-tech/core` is a TypeScript-first backend library for building web apps and API servers. It includes an ecosystem of official packages designed to work seamlessly together.
13
10
 
14
- ### Current Features
11
+ [Get started now](https://daiso-core.vercel.app/docs/Installation)
15
12
 
16
- - **Immutable Collections**:
13
+ - **Type safe:**
14
+ We pay a closer look at type-safety, seamless intellisense, and support for auto imports when designing library APIs.
17
15
 
18
- - `IterableCollection` - Simplifies work with `Iterable`
19
- - `ListCollection` - Simplifies work with `Array`
20
- - `AsyncIterableCollection` - Simplifies work with `AsyncIterable`
16
+ - **ESM ready:**
17
+ @daiso-tech/core leverages modern JavaScript primitives, including ES modules
21
18
 
22
- - **Middleware System**
23
- - Agnostic middlewares applicable to any async/sync functions.
24
- - `fallback`: Automatic recovery with default values on errors
25
- - `observe`: Monitor function execution and performance
26
- - `retry`: Smart retries with multiple backoff policies:
27
- - `constantBackoffPolicy`
28
- - `exponentialBackoffPolicy`
29
- - `linearBackoffPolicy`
30
- - `polynomialBackoffPolicy`
31
- - `sequentialHedging`: Runs fallbacks sequentially if the primary function fails, ensuring graceful failure handling.
32
- - `concurrentHedging`: Executes the primary function alongside fallbacks concurrently, returning the first successful result and aborting all remaining operations.
33
- - `timeout`: Guaranteed execution time limits
34
- - **LazyPromise**:
35
- - Executes only when awaited
36
- - With middleware support
37
- - **Pluggable Components**:
38
- - `Cache` with adapter support
39
- - `Lock` with adapter support
40
- - `EventBus` with adapter support
41
- - `Serde` (serializer, deserializer) adapters
19
+ - **Easily testable:**
20
+ @daiso-tech/core includes built-in vitest helpers for custom adapters and in-memory adapters for all components, enabling testing without Docker.
42
21
 
43
- ### Planned Features
22
+ ## A growing collection of officially maintained components
44
23
 
45
- - Query bus
46
- - Command bus
47
- - Semaphore component
48
- - SharedLock (ReaderWriterLock)
49
- - RateLimiter
50
- - CircuitBreaker
51
- - MessageQueue
52
- - TaskScheduler
53
- - Notification system
54
- - Abstract file system
24
+ - **Cache:**
25
+ Speed up your applications by storing slowly changing data in a cache store.
55
26
 
56
- ## 🚀 Installation
27
+ - **EventBus:**
28
+ Easily send events accross different applications or in-memory.
57
29
 
58
- ```bash
59
- npm install @daiso-tech/core
60
- ```
30
+ - **Atomic lock:**
31
+ Synchronize the access to a shared resource to prevents several processes, or concurrent code, from executing a section of code at the same time.
61
32
 
62
- ## Inspired By
33
+ - **Serde:**
34
+ Add custom serialization and deserialization logic that seamlessly integrates with all other components.
63
35
 
64
- Built with ideas from:
36
+ - **Collection:**
37
+ Effortlessly work with Arrays, Iterables, and AsyncIterables. Filter and transform with precision.
65
38
 
66
- - [Laravel](https://laravel.com/docs/11.x/readme), PHP
67
- - [Symfony components](https://symfony.com/components), PHP
68
- - [Verrou](https://verrou.dev/docs/introduction), TypeScript
69
- - [Distributed lock](https://github.com/ZiggyCreatures/FusionCache), C#
70
- - [Bento cache](https://bentocache.dev/docs/introduction), TypeScript
71
- - [Fusion cache](https://github.com/ZiggyCreatures/FusionCache), C#
72
- - [Polly](https://www.pollydocs.org/), C#
39
+ - **Hooks:**
40
+ Extend any sync and async function with agnostic hooks.@daiso-tech/core includes predefined retry, fallback, timeout and hedging hooks to easily allow handling transient failures.
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- import type { Invokable } from "../../utilities/_module-exports.js";
4
+ import type { Invokable, TimeSpan } from "../../utilities/_module-exports.js";
5
5
  /**
6
6
  * @returns Amount milliseconds to wait
7
7
  *
@@ -11,7 +11,13 @@ import type { Invokable } from "../../utilities/_module-exports.js";
11
11
  export type BackoffPolicy = Invokable<[
12
12
  attempt: number,
13
13
  error: unknown
14
- ], number>;
14
+ ], TimeSpan>;
15
+ /**
16
+ *
17
+ * IMPORT_PATH: `"@daiso-tech/core/async"`
18
+ * @group BackoffPolicies
19
+ */
20
+ export type DynamicBackoffPolicy<TSettings> = TSettings | Invokable<[error: unknown], TSettings | undefined>;
15
21
  /**
16
22
  * @internal
17
23
  */
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- // (attempt: number, error: unknown) => number;
5
4
  /**
6
5
  * @internal
7
6
  */
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/async/backof-policies/_shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,+CAA+C;AAE/C;;GAEG;AACH,MAAM,UAAU,UAAU,CACtB,MAAc,EACd,KAAa,EACb,UAAwB;IAExB,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC;AAC/C,CAAC"}
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../../src/async/backof-policies/_shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,MAAM,UAAU,UAAU,CACtB,MAAc,EACd,KAAa,EACb,UAAwB;IAExB,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC;AAC/C,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * @module Async
3
3
  */
4
4
  import { TimeSpan } from "../../../utilities/_module-exports.js";
5
- import { type BackoffPolicy } from "../../../async/backof-policies/_shared.js";
5
+ import { type BackoffPolicy, type DynamicBackoffPolicy } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  *
8
8
  * IMPORT_PATH: `"@daiso-tech/core/async"`
@@ -18,8 +18,8 @@ export type ConstantBackoffPolicySettings = {
18
18
  */
19
19
  jitter?: number;
20
20
  /**
21
- * Used only for testing
22
21
  * @internal
22
+ * Should only be used for testing
23
23
  */
24
24
  _mathRandom?: () => number;
25
25
  };
@@ -29,4 +29,4 @@ export type ConstantBackoffPolicySettings = {
29
29
  * IMPORT_PATH: `"@daiso-tech/core/async"`
30
30
  * @group BackoffPolicies
31
31
  */
32
- export declare function constantBackoffPolicy(settings?: ConstantBackoffPolicySettings | ((error: unknown) => ConstantBackoffPolicySettings)): BackoffPolicy;
32
+ export declare function constantBackoffPolicy(settings?: DynamicBackoffPolicy<ConstantBackoffPolicySettings>): BackoffPolicy;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- import { TimeSpan } from "../../../utilities/_module-exports.js";
4
+ import { callInvokable, isInvokable, TimeSpan, } from "../../../utilities/_module-exports.js";
5
5
  import { withJitter, } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  * Constant backoff policy with jitter
@@ -11,15 +11,21 @@ import { withJitter, } from "../../../async/backof-policies/_shared.js";
11
11
  */
12
12
  export function constantBackoffPolicy(settings = {}) {
13
13
  return (_attempt, error) => {
14
- if (typeof settings === "function") {
15
- settings = settings(error);
14
+ if (isInvokable(settings)) {
15
+ const dynamicSettings = callInvokable(settings, error);
16
+ if (dynamicSettings === undefined) {
17
+ settings = {};
18
+ }
19
+ else {
20
+ settings = dynamicSettings;
21
+ }
16
22
  }
17
23
  let { delay = 1000 } = settings;
18
24
  if (delay instanceof TimeSpan) {
19
25
  delay = delay.toMilliseconds();
20
26
  }
21
27
  const { jitter = 0.5, _mathRandom = Math.random } = settings;
22
- return withJitter(jitter, delay, _mathRandom);
28
+ return TimeSpan.fromMilliseconds(withJitter(jitter, delay, _mathRandom));
23
29
  };
24
30
  }
25
31
  //# sourceMappingURL=constant-backoff-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/constant-backoff-policy/constant-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EACH,UAAU,GAEb,MAAM,oCAAoC,CAAC;AAuB5C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,WAE4D,EAAE;IAE9D,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QAChC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC7D,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"constant-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/constant-backoff-policy/constant-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,GACX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,UAAU,GAGb,MAAM,oCAAoC,CAAC;AAuB5C;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACjC,WAAgE,EAAE;IAElE,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,eAAe,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;QAChC,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC5B,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC7D,OAAO,QAAQ,CAAC,gBAAgB,CAC5B,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,CACzC,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * @module Async
3
3
  */
4
4
  import { TimeSpan } from "../../../utilities/_module-exports.js";
5
- import type { BackoffPolicy } from "../../../async/backof-policies/_shared.js";
5
+ import type { BackoffPolicy, DynamicBackoffPolicy } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  *
8
8
  * IMPORT_PATH: `"@daiso-tech/core/async"`
@@ -26,8 +26,8 @@ export type ExponentialBackoffPolicySettings = {
26
26
  */
27
27
  jitter?: number;
28
28
  /**
29
- * Used only for testing
30
29
  * @internal
30
+ * Should only be used for testing
31
31
  */
32
32
  _mathRandom?: () => number;
33
33
  };
@@ -37,4 +37,4 @@ export type ExponentialBackoffPolicySettings = {
37
37
  * IMPORT_PATH: `"@daiso-tech/core/async"`
38
38
  * @group BackoffPolicies
39
39
  */
40
- export declare function exponentialBackoffPolicy(settings?: ExponentialBackoffPolicySettings | ((error: unknown) => ExponentialBackoffPolicySettings)): BackoffPolicy;
40
+ export declare function exponentialBackoffPolicy(settings?: DynamicBackoffPolicy<ExponentialBackoffPolicySettings>): BackoffPolicy;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- import { TimeSpan } from "../../../utilities/_module-exports.js";
4
+ import { callInvokable, isInvokable, TimeSpan, } from "../../../utilities/_module-exports.js";
5
5
  import { withJitter } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  * Exponential backoff policy with jitter
@@ -11,8 +11,14 @@ import { withJitter } from "../../../async/backof-policies/_shared.js";
11
11
  */
12
12
  export function exponentialBackoffPolicy(settings = {}) {
13
13
  return (attempt, error) => {
14
- if (typeof settings === "function") {
15
- settings = settings(error);
14
+ if (isInvokable(settings)) {
15
+ const dynamicSettings = callInvokable(settings, error);
16
+ if (dynamicSettings === undefined) {
17
+ settings = {};
18
+ }
19
+ else {
20
+ settings = dynamicSettings;
21
+ }
16
22
  }
17
23
  let { maxDelay = 60_000, minDelay = 1_000 } = settings;
18
24
  if (maxDelay instanceof TimeSpan) {
@@ -23,7 +29,7 @@ export function exponentialBackoffPolicy(settings = {}) {
23
29
  }
24
30
  const { multiplier = 2, jitter = 0.5, _mathRandom = Math.random, } = settings;
25
31
  const exponential = Math.min(maxDelay, minDelay * Math.pow(multiplier, attempt));
26
- return withJitter(jitter, exponential, _mathRandom);
32
+ return TimeSpan.fromMilliseconds(withJitter(jitter, exponential, _mathRandom));
27
33
  };
28
34
  }
29
35
  //# sourceMappingURL=exponential-backoff-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exponential-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA+BhE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACpC,WAE+D,EAAE;IAEjE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACvD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EACF,UAAU,GAAG,CAAC,EACd,MAAM,GAAG,GAAG,EACZ,WAAW,GAAG,IAAI,CAAC,MAAM,GAC5B,GAAG,QAAQ,CAAC;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CACxB,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAC3C,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACxD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"exponential-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,GACX,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA+BhE;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACpC,WAAmE,EAAE;IAErE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,eAAe,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACvD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EACF,UAAU,GAAG,CAAC,EACd,MAAM,GAAG,GAAG,EACZ,WAAW,GAAG,IAAI,CAAC,MAAM,GAC5B,GAAG,QAAQ,CAAC;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CACxB,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAC3C,CAAC;QACF,OAAO,QAAQ,CAAC,gBAAgB,CAC5B,UAAU,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAC/C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * @module Async
3
3
  */
4
4
  import { TimeSpan } from "../../../utilities/_module-exports.js";
5
- import type { BackoffPolicy } from "../../../async/backof-policies/_shared.js";
5
+ import type { BackoffPolicy, DynamicBackoffPolicy } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  *
8
8
  * IMPORT_PATH: `"@daiso-tech/core/async"`
@@ -22,8 +22,8 @@ export type LinearBackoffPolicySettings = {
22
22
  */
23
23
  jitter?: number;
24
24
  /**
25
- * Used only for testing
26
25
  * @internal
26
+ * Should only be used for testing
27
27
  */
28
28
  _mathRandom?: () => number;
29
29
  };
@@ -33,4 +33,4 @@ export type LinearBackoffPolicySettings = {
33
33
  * IMPORT_PATH: `"@daiso-tech/core/async"`
34
34
  * @group BackoffPolicies
35
35
  */
36
- export declare function linearBackoffPolicy(settings?: LinearBackoffPolicySettings | ((error: unknown) => LinearBackoffPolicySettings)): BackoffPolicy;
36
+ export declare function linearBackoffPolicy(settings?: DynamicBackoffPolicy<LinearBackoffPolicySettings>): BackoffPolicy;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- import { TimeSpan } from "../../../utilities/_module-exports.js";
4
+ import { callInvokable, isInvokable, TimeSpan, } from "../../../utilities/_module-exports.js";
5
5
  import { withJitter } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  * Linear backoff policy with jitter
@@ -11,8 +11,14 @@ import { withJitter } from "../../../async/backof-policies/_shared.js";
11
11
  */
12
12
  export function linearBackoffPolicy(settings = {}) {
13
13
  return (attempt, error) => {
14
- if (typeof settings === "function") {
15
- settings = settings(error);
14
+ if (isInvokable(settings)) {
15
+ const dynamicSettings = callInvokable(settings, error);
16
+ if (dynamicSettings === undefined) {
17
+ settings = {};
18
+ }
19
+ else {
20
+ settings = dynamicSettings;
21
+ }
16
22
  }
17
23
  let { maxDelay = 6000, minDelay = 1_000 } = settings;
18
24
  if (maxDelay instanceof TimeSpan) {
@@ -23,7 +29,7 @@ export function linearBackoffPolicy(settings = {}) {
23
29
  }
24
30
  const { jitter = 0.5, _mathRandom = Math.random } = settings;
25
31
  const linear = Math.min(maxDelay, minDelay * attempt);
26
- return withJitter(jitter, linear, _mathRandom);
32
+ return TimeSpan.fromMilliseconds(withJitter(jitter, linear, _mathRandom));
27
33
  };
28
34
  }
29
35
  //# sourceMappingURL=linear-backoff-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linear-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/linear-backoff-policy/linear-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA2BhE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAC/B,WAE0D,EAAE;IAE5D,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACrD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;QACtD,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"linear-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/linear-backoff-policy/linear-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,GACX,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA2BhE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAC/B,WAA8D,EAAE;IAEhE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,eAAe,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACrD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC;QACtD,OAAO,QAAQ,CAAC,gBAAgB,CAC5B,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAC1C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * @module Async
3
3
  */
4
4
  import { TimeSpan } from "../../../utilities/_module-exports.js";
5
- import type { BackoffPolicy } from "../../../async/backof-policies/_shared.js";
5
+ import type { BackoffPolicy, DynamicBackoffPolicy } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  *
8
8
  * IMPORT_PATH: `"@daiso-tech/core/async"`
@@ -26,8 +26,8 @@ export type PolynomialBackoffPolicySettings = {
26
26
  */
27
27
  jitter?: number;
28
28
  /**
29
- * Used only for testing
30
29
  * @internal
30
+ * Should only be used for testing
31
31
  */
32
32
  _mathRandom?: () => number;
33
33
  };
@@ -37,4 +37,4 @@ export type PolynomialBackoffPolicySettings = {
37
37
  * IMPORT_PATH: `"@daiso-tech/core/async"`
38
38
  * @group BackoffPolicies
39
39
  */
40
- export declare function polynomialBackoffPolicy(settings?: PolynomialBackoffPolicySettings | ((error: unknown) => PolynomialBackoffPolicySettings)): BackoffPolicy;
40
+ export declare function polynomialBackoffPolicy(settings?: DynamicBackoffPolicy<PolynomialBackoffPolicySettings>): BackoffPolicy;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
- import { TimeSpan } from "../../../utilities/_module-exports.js";
4
+ import { callInvokable, isInvokable, TimeSpan, } from "../../../utilities/_module-exports.js";
5
5
  import { withJitter } from "../../../async/backof-policies/_shared.js";
6
6
  /**
7
7
  * Polynomial backoff policy with jitter
@@ -11,8 +11,14 @@ import { withJitter } from "../../../async/backof-policies/_shared.js";
11
11
  */
12
12
  export function polynomialBackoffPolicy(settings = {}) {
13
13
  return (attempt, error) => {
14
- if (typeof settings === "function") {
15
- settings = settings(error);
14
+ if (isInvokable(settings)) {
15
+ const dynamicSettings = callInvokable(settings, error);
16
+ if (dynamicSettings === undefined) {
17
+ settings = {};
18
+ }
19
+ else {
20
+ settings = dynamicSettings;
21
+ }
16
22
  }
17
23
  let { maxDelay = 6000, minDelay = 1_000 } = settings;
18
24
  if (maxDelay instanceof TimeSpan) {
@@ -23,7 +29,7 @@ export function polynomialBackoffPolicy(settings = {}) {
23
29
  }
24
30
  const { degree = 2, jitter = 0.5, _mathRandom = Math.random, } = settings;
25
31
  const polynomial = Math.min(maxDelay, minDelay * Math.pow(attempt, degree));
26
- return withJitter(jitter, polynomial, _mathRandom);
32
+ return TimeSpan.fromMilliseconds(withJitter(jitter, polynomial, _mathRandom));
27
33
  };
28
34
  }
29
35
  //# sourceMappingURL=polynomial-backoff-policy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"polynomial-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA+BhE;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACnC,WAE8D,EAAE;IAEhE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACrD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EACF,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,GAAG,EACZ,WAAW,GAAG,IAAI,CAAC,MAAM,GAC5B,GAAG,QAAQ,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACvB,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CACvC,CAAC;QACF,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IACvD,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"polynomial-backoff-policy.js","sourceRoot":"","sources":["../../../../src/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,GACX,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AA+BhE;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACnC,WAAkE,EAAE;IAEpE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;gBAChC,QAAQ,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACJ,QAAQ,GAAG,eAAe,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;QACrD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,IAAI,QAAQ,YAAY,QAAQ,EAAE,CAAC;YAC/B,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;QACzC,CAAC;QACD,MAAM,EACF,MAAM,GAAG,CAAC,EACV,MAAM,GAAG,GAAG,EACZ,WAAW,GAAG,IAAI,CAAC,MAAM,GAC5B,GAAG,QAAQ,CAAC;QACb,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACvB,QAAQ,EACR,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CACvC,CAAC;QACF,OAAO,QAAQ,CAAC,gBAAgB,CAC5B,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,CAC9C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -28,7 +28,7 @@ export type OnFallback<TParameters extends unknown[] = unknown[], TFallbackValue
28
28
  */
29
29
  export type FallbackCallbacks<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = {
30
30
  /**
31
- * Callback function that will be called before fallback values is returned.
31
+ * Callback {@link Invokable | `Invokable`} that will be called before fallback value is returned.
32
32
  */
33
33
  onFallback?: OnFallback<TParameters, TReturn, TContext>;
34
34
  };
@@ -47,7 +47,7 @@ export type FallbackSettings<TParameters extends unknown[] = unknown[], TReturn
47
47
  * (_error: unknown) => true
48
48
  * ```
49
49
  */
50
- fallbackPolicy?: ErrorPolicy;
50
+ errorPolicy?: ErrorPolicy;
51
51
  };
52
52
  /**
53
53
  * The `fallback` middleware adds fallback value when an error occurs.
@@ -29,13 +29,13 @@ import { callInvokable, resolveAsyncLazyable, } from "../../../utilities/_module
29
29
  * ```
30
30
  */
31
31
  export function fallback(settings) {
32
- const { fallbackValue, fallbackPolicy = () => true, onFallback = () => { }, } = settings;
32
+ const { fallbackValue, errorPolicy = () => true, onFallback = () => { }, } = settings;
33
33
  return async (args, next, { context }) => {
34
34
  try {
35
35
  return await next(...args);
36
36
  }
37
37
  catch (error) {
38
- if (callInvokable(fallbackPolicy, error)) {
38
+ if (callInvokable(errorPolicy, error)) {
39
39
  const resolvedFallbackValue = await resolveAsyncLazyable(fallbackValue);
40
40
  callInvokable(onFallback, {
41
41
  error,
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.middleware.js","sourceRoot":"","sources":["../../../../src/async/middlewares/fallback/fallback.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACH,aAAa,EACb,oBAAoB,GAGvB,MAAM,gCAAgC,CAAC;AAqExC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,QAAQ,CAKpB,QAAmE;IAEnE,MAAM,EACF,aAAa,EACb,cAAc,GAAG,GAAG,EAAE,CAAC,IAAI,EAC3B,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,GACxB,GAAG,QAAQ,CAAC;IACb,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAoB,EAAE;QACvD,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,qBAAqB,GACvB,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBAC9C,aAAa,CAAC,UAAU,EAAE;oBACtB,KAAK;oBACL,aAAa,EAAE,qBAAqB;oBACpC,IAAI;oBACJ,OAAO;iBACV,CAAC,CAAC;gBACH,OAAO,qBAAqB,CAAC;YACjC,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"fallback.middleware.js","sourceRoot":"","sources":["../../../../src/async/middlewares/fallback/fallback.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EACH,aAAa,EACb,oBAAoB,GAGvB,MAAM,gCAAgC,CAAC;AAqExC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,QAAQ,CAKpB,QAAmE;IAEnE,MAAM,EACF,aAAa,EACb,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,EACxB,UAAU,GAAG,GAAG,EAAE,GAAE,CAAC,GACxB,GAAG,QAAQ,CAAC;IACb,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAoB,EAAE;QACvD,IAAI,CAAC;YACD,OAAO,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,qBAAqB,GACvB,MAAM,oBAAoB,CAAC,aAAa,CAAC,CAAC;gBAC9C,aAAa,CAAC,UAAU,EAAE;oBACtB,KAAK;oBACL,aAAa,EAAE,qBAAqB;oBACpC,IAAI;oBACJ,OAAO;iBACV,CAAC,CAAC;gBACH,OAAO,qBAAqB,CAAC;YACjC,CAAC;YACD,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;AACN,CAAC"}
@@ -43,13 +43,13 @@ export type OnHedgeError<TParameters extends unknown[] = unknown[], TContext ext
43
43
  */
44
44
  export type HedgingCallbacks<TParameters extends unknown[] = unknown[], TContext extends HookContext = HookContext> = {
45
45
  /**
46
- * Callback function that will be called before execution attempt.
46
+ * Callback {@link Invokable | `Invokable`} that will be called before execution attempt.
47
47
  */
48
- onHedgeAttempt?: OnHedgeAttempt<TParameters, TContext>;
48
+ onHedgingAttempt?: OnHedgeAttempt<TParameters, TContext>;
49
49
  /**
50
- * Callback function that will be called when the error occurs.
50
+ * Callback {@link Invokable | `Invokable`} that will be called when the error occurs.
51
51
  */
52
- onHedgeError?: OnHedgeError<TParameters, TContext>;
52
+ onHedgingError?: OnHedgeError<TParameters, TContext>;
53
53
  };
54
54
  /**
55
55
  *
@@ -64,10 +64,10 @@ export type Fallback<TParameters extends unknown[] = unknown[], TReturn = unknow
64
64
  */
65
65
  export type NamedFallback<TParameters extends unknown[] = unknown[], TReturn = unknown> = {
66
66
  /**
67
- * You can assign a custom name to the fallback function for easier identification in logs.
67
+ * You can assign a custom name to the fallback {@link Invokable | `Invokable`} for easier identification in logs.
68
68
  */
69
69
  name: string;
70
- func: Fallback<TParameters, TReturn>;
70
+ invokable: Fallback<TParameters, TReturn>;
71
71
  };
72
72
  /**
73
73
  *
@@ -76,7 +76,7 @@ export type NamedFallback<TParameters extends unknown[] = unknown[], TReturn = u
76
76
  */
77
77
  export type HedgingSettings<TParameters extends unknown[] = unknown[], TReturn = unknown, TContext extends HookContext = HookContext> = HedgingCallbacks<TParameters, TContext> & {
78
78
  /**
79
- * The maximum time to wait before automatically aborting the executing primary function or fallback functions.
79
+ * The maximum time to wait before automatically aborting the executing primary {@link Invokable | `Invokable`} or fallback {@link Invokable | `Invokable:s`}.
80
80
  *
81
81
  * @default
82
82
  * ```ts
@@ -59,21 +59,21 @@ class ResolvedError extends Error {
59
59
  * ```
60
60
  */
61
61
  export function concurrentHedging(settings) {
62
- const { waitTime = TimeSpan.fromSeconds(2), fallbacks, onHedgeAttempt = () => { }, onHedgeError = () => { }, } = settings;
62
+ const { waitTime = TimeSpan.fromSeconds(2), fallbacks, onHedgingAttempt = () => { }, onHedgingError = () => { }, } = settings;
63
63
  const resolvedFallbacks = resolveOneOrMore(fallbacks).map((fallback, index) => {
64
64
  if (isInvokable(fallback)) {
65
65
  return {
66
66
  name: `fallback-${String(index + 1)}`,
67
- func: fallback,
67
+ invokable: fallback,
68
68
  };
69
69
  }
70
70
  return fallback;
71
71
  });
72
72
  return async (args, next, { context, abort, signal }) => {
73
- function step1({ name, func }) {
73
+ function step1({ name, invokable }) {
74
74
  return {
75
75
  name,
76
- promise: timeoutAndFail(abortAndFail((async () => callInvokable(func, ...args))(), signal), waitTime, (error) => {
76
+ promise: timeoutAndFail(abortAndFail((async () => callInvokable(invokable, ...args))(), signal), waitTime, (error) => {
77
77
  abort(error);
78
78
  }, signal),
79
79
  };
@@ -100,7 +100,7 @@ export function concurrentHedging(settings) {
100
100
  const funcs = [
101
101
  {
102
102
  name: "__initial",
103
- func: next,
103
+ invokable: next,
104
104
  },
105
105
  ...resolvedFallbacks,
106
106
  ];
@@ -108,7 +108,7 @@ export function concurrentHedging(settings) {
108
108
  const errors = [];
109
109
  const promiseResults = await Promise.all(promises);
110
110
  for (const promiseResult of promiseResults) {
111
- callInvokable(onHedgeAttempt, {
111
+ callInvokable(onHedgingAttempt, {
112
112
  args,
113
113
  context,
114
114
  name: promiseResult.name,
@@ -118,7 +118,7 @@ export function concurrentHedging(settings) {
118
118
  return promiseResult.value;
119
119
  }
120
120
  else if (!(promiseResult.error instanceof ResolvedError)) {
121
- callInvokable(onHedgeError, {
121
+ callInvokable(onHedgingError, {
122
122
  args,
123
123
  context,
124
124
  error: promiseResult.error,
@@ -1 +1 @@
1
- {"version":3,"file":"concurrent-hedging.middleware.js","sourceRoot":"","sources":["../../../../../src/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"concurrent-hedging.middleware.js","sourceRoot":"","sources":["../../../../../src/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.ts"],"names":[],"mappings":"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"}
@@ -50,12 +50,12 @@ import { timeoutAndFail } from "../../../../async/utilities/_module.js";
50
50
  * ```
51
51
  */
52
52
  export function sequentialHedging(settings) {
53
- const { waitTime = TimeSpan.fromSeconds(2), fallbacks, onHedgeAttempt = () => { }, onHedgeError = () => { }, } = settings;
53
+ const { waitTime = TimeSpan.fromSeconds(2), fallbacks, onHedgingAttempt = () => { }, onHedgingError = () => { }, } = settings;
54
54
  const resolvedFallbacks = resolveOneOrMore(fallbacks).map((fallback, index) => {
55
55
  if (isInvokable(fallback)) {
56
56
  return {
57
57
  name: `fallback-${String(index + 1)}`,
58
- func: fallback,
58
+ invokable: fallback,
59
59
  };
60
60
  }
61
61
  return fallback;
@@ -65,13 +65,13 @@ export function sequentialHedging(settings) {
65
65
  const funcs = [
66
66
  {
67
67
  name: "__initial",
68
- func: next,
68
+ invokable: next,
69
69
  },
70
70
  ...resolvedFallbacks,
71
71
  ];
72
- for (const { name, func } of funcs) {
72
+ for (const { name, invokable: func } of funcs) {
73
73
  try {
74
- callInvokable(onHedgeAttempt, {
74
+ callInvokable(onHedgingAttempt, {
75
75
  args,
76
76
  context,
77
77
  name,
@@ -84,7 +84,7 @@ export function sequentialHedging(settings) {
84
84
  if (signal.aborted) {
85
85
  break;
86
86
  }
87
- callInvokable(onHedgeError, {
87
+ callInvokable(onHedgingError, {
88
88
  args,
89
89
  context,
90
90
  error,
@@ -1 +1 @@
1
- {"version":3,"file":"sequential-hedging.middleware.js","sourceRoot":"","sources":["../../../../../src/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,QAAQ,GAGX,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,iBAAiB,CAK7B,QAAkE;IAElE,MAAM,EACF,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAClC,SAAS,EACT,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,EACzB,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,GAC1B,GAAG,QAAQ,CAAC;IAEb,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG,CAEvD,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAClB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO;gBACH,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBACrC,IAAI,EAAE,QAAQ;aACjB,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpD,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG;YACV;gBACI,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,IAAI;aACb;YACD,GAAG,iBAAiB;SACvB,CAAC;QACF,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YACjC,IAAI,CAAC;gBACD,aAAa,CAAC,cAAc,EAAE;oBAC1B,IAAI;oBACJ,OAAO;oBACP,IAAI;iBACP,CAAC,CAAC;gBACH,OAAO,MAAM,cAAc,CACvB,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAC5C,QAAQ,EACR,CAAC,KAAc,EAAE,EAAE;oBACf,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,EACD,MAAM,CACT,CAAC;YACN,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM;gBACV,CAAC;gBACD,aAAa,CAAC,YAAY,EAAE;oBACxB,IAAI;oBACJ,OAAO;oBACP,KAAK;oBACL,IAAI;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QAED,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK;aAClB,KAAK,CAAC,CAAC,CAAC;aACR,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,IAAI,iBAAiB,CACvB,wDAAwD,SAAS,EAAE,EACnE,MAAM,CACT,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"sequential-hedging.middleware.js","sourceRoot":"","sources":["../../../../../src/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,QAAQ,GAGX,MAAM,gCAAgC,CAAC;AAKxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,MAAM,UAAU,iBAAiB,CAK7B,QAAkE;IAElE,MAAM,EACF,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAClC,SAAS,EACT,gBAAgB,GAAG,GAAG,EAAE,GAAE,CAAC,EAC3B,cAAc,GAAG,GAAG,EAAE,GAAE,CAAC,GAC5B,GAAG,QAAQ,CAAC;IAEb,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,GAAG,CAEvD,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE;QAClB,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,OAAO;gBACH,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBACrC,SAAS,EAAE,QAAQ;aACtB,CAAC;QACN,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;QACpD,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG;YACV;gBACI,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,IAAI;aAClB;YACD,GAAG,iBAAiB;SACvB,CAAC;QACF,KAAK,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAC;gBACD,aAAa,CAAC,gBAAgB,EAAE;oBAC5B,IAAI;oBACJ,OAAO;oBACP,IAAI;iBACP,CAAC,CAAC;gBACH,OAAO,MAAM,cAAc,CACvB,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,EAC5C,QAAQ,EACR,CAAC,KAAc,EAAE,EAAE;oBACf,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC,EACD,MAAM,CACT,CAAC;YACN,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACtB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,MAAM;gBACV,CAAC;gBACD,aAAa,CAAC,cAAc,EAAE;oBAC1B,IAAI;oBACJ,OAAO;oBACP,KAAK;oBACL,IAAI;iBACP,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;QAED,4DAA4D;QAC5D,MAAM,SAAS,GAAG,KAAK;aAClB,KAAK,CAAC,CAAC,CAAC;aACR,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC;aAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM,IAAI,iBAAiB,CACvB,wDAAwD,SAAS,EAAE,EACnE,MAAM,CACT,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}