@daiso-tech/core 0.27.0 → 0.28.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 (83) hide show
  1. package/README.md +10 -10
  2. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +57 -19
  3. package/dist/async/utilities/lazy-promise/lazy-promise.js +93 -52
  4. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  5. package/dist/async/utilities/retry/retry-or-fail.d.ts +2 -0
  6. package/dist/async/utilities/retry/retry-or-fail.js.map +1 -1
  7. package/dist/cache/contracts/cache.contract.d.ts +98 -14
  8. package/dist/cache/implementations/adapters/_module-exports.d.ts +1 -0
  9. package/dist/cache/implementations/adapters/_module-exports.js +1 -0
  10. package/dist/cache/implementations/adapters/_module-exports.js.map +1 -1
  11. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.d.ts +1 -0
  12. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.js +2 -0
  13. package/dist/cache/implementations/adapters/no-op-cache-adapter/_module.js.map +1 -0
  14. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +23 -0
  15. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js +41 -0
  16. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -0
  17. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +2 -3
  18. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +1 -1
  19. package/dist/cache/implementations/derivables/cache/cache.d.ts +250 -45
  20. package/dist/cache/implementations/derivables/cache/cache.js +256 -28
  21. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  22. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +20 -17
  23. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +33 -19
  24. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  25. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +4 -20
  26. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +7 -4
  27. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  28. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +1 -1
  29. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.js +1 -1
  30. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +21 -36
  31. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +24 -17
  32. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  33. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +57 -14
  34. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +61 -13
  35. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  36. package/dist/lock/contracts/lock-provider.contract.d.ts +19 -5
  37. package/dist/lock/contracts/lock.contract.d.ts +37 -8
  38. package/dist/lock/implementations/adapters/_module-exports.d.ts +1 -0
  39. package/dist/lock/implementations/adapters/_module-exports.js +1 -0
  40. package/dist/lock/implementations/adapters/_module-exports.js.map +1 -1
  41. package/dist/lock/implementations/adapters/no-op-lock-adapter/_module.d.ts +1 -0
  42. package/dist/lock/implementations/adapters/no-op-lock-adapter/_module.js +2 -0
  43. package/dist/lock/implementations/adapters/no-op-lock-adapter/_module.js.map +1 -0
  44. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +17 -0
  45. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +24 -0
  46. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js.map +1 -0
  47. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +2 -3
  48. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +1 -1
  49. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +130 -62
  50. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +134 -44
  51. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  52. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +238 -0
  53. package/dist/lock/implementations/derivables/lock-provider/lock.js +258 -0
  54. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  55. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +75 -9
  56. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +85 -7
  57. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  58. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +162 -8
  59. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  60. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.d.ts +1 -0
  61. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.js +1 -0
  62. package/dist/serde/implementations/adapters/no-op-serde-adapter/no-op-serde-adapter.js.map +1 -1
  63. package/dist/utilities/_module-exports.d.ts +1 -1
  64. package/dist/utilities/_module-exports.js +1 -1
  65. package/dist/utilities/_module-exports.js.map +1 -1
  66. package/dist/utilities/classes/key-prefixer/key-prefixer.js +1 -1
  67. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
  68. package/dist/utilities/{_constants.d.ts → constants.d.ts} +0 -3
  69. package/dist/utilities/constants.js +5 -0
  70. package/dist/utilities/constants.js.map +1 -0
  71. package/dist/utilities/contracts/_module.d.ts +2 -1
  72. package/dist/utilities/contracts/_module.js +2 -1
  73. package/dist/utilities/contracts/_module.js.map +1 -1
  74. package/dist/utilities/contracts/sqlite-database.contract.d.ts +26 -0
  75. package/dist/utilities/contracts/sqlite-database.contract.js +5 -0
  76. package/dist/utilities/contracts/sqlite-database.contract.js.map +1 -0
  77. package/dist/utilities/functions.d.ts +4 -0
  78. package/dist/utilities/functions.js +10 -4
  79. package/dist/utilities/functions.js.map +1 -1
  80. package/dist/utilities/types.d.ts +4 -4
  81. package/package.json +1 -1
  82. package/dist/utilities/_constants.js +0 -8
  83. package/dist/utilities/_constants.js.map +0 -1
package/README.md CHANGED
@@ -28,18 +28,18 @@ The library provides modular solutions for the essential features needed in mode
28
28
  - Notification component
29
29
  - Abstract file system component
30
30
 
31
- This library is heavily inspired laravel but built in modular way where you can choose which part to use.
32
-
33
31
  #### NOTE: This library only supports ESM (ecmascript) module.
34
32
 
35
- ### Visit the [docs](https://yousif-khalil-abdulkarim.github.io/daiso-core/) for more information!
36
-
37
- @daiso-tech/core/cache/implementations/adapters
38
- @daiso-tech/core/cache/adapters
33
+ ### Inspiration
34
+ This library is inspired by [Laravel](https://laravel.com/docs/11.x/readme) and built with a modular design, so you can use only the parts you need.
39
35
 
36
+ It also integrates ideas from other libraries:
37
+ - [Symfony components](https://symfony.com/components), PHP
38
+ - [Verrou](https://verrou.dev/docs/introduction), TypeScript
39
+ - [Distributed lock](https://github.com/ZiggyCreatures/FusionCache), C#
40
+ - [Bento cache](https://bentocache.dev/docs/introduction), TypeScript
41
+ - [Fusion cache](https://github.com/ZiggyCreatures/FusionCache), C#
42
+ - [Polly](https://www.pollydocs.org/), C#
40
43
 
41
- @daiso-tech/core/cache/implementations/test-utilities
42
- @daiso-tech/core/cache/test-utilities
43
44
 
44
- @daiso-tech/core/cache/implementations/derivables
45
- @daiso-tech/core/cache
45
+ ### Visit the [docs](https://yousif-khalil-abdulkarim.github.io/daiso-core/) for more information!
@@ -6,34 +6,53 @@ import type { LazyPromiseable, Promisable, TimeSpan } from "../../../utilities/_
6
6
  import type { RetryPolicy } from "../../../async/utilities/retry/_module.js";
7
7
  import { type Func } from "../../../utilities/_module-exports.js";
8
8
  /**
9
+ *
9
10
  * IMPORT_PATH: ```"@daiso-tech/core/async"```
10
11
  * @group Utilities
11
12
  */
12
13
  export type LazyPromiseOnFinally = () => Promisable<void>;
13
14
  /**
15
+ *
14
16
  * IMPORT_PATH: ```"@daiso-tech/core/async"```
15
17
  * @group Utilities
16
18
  */
17
19
  export type LazyPromiseOnSuccess<TValue> = (value: TValue) => Promisable<void>;
18
20
  /**
21
+ *
19
22
  * IMPORT_PATH: ```"@daiso-tech/core/async"```
20
23
  * @group Utilities
21
24
  */
22
25
  export type LazyPromiseOnError = (error: unknown) => Promisable<void>;
23
26
  /**
27
+ *
24
28
  * IMPORT_PATH: ```"@daiso-tech/core/async"```
25
29
  * @group Utilities
26
30
  */
27
- export type LazyPromiseSettings<TValue = unknown> = {
28
- retryAttempts?: number | null;
29
- backoffPolicy?: BackoffPolicy | null;
30
- retryPolicy?: RetryPolicy | null;
31
- abortSignal?: AbortSignal | null;
32
- timeout?: TimeSpan | null;
31
+ export type LazyPromiseCallbacks<TValue = unknown> = {
33
32
  onFinally?: LazyPromiseOnFinally;
34
33
  onSuccess?: LazyPromiseOnSuccess<TValue>;
35
34
  onError?: LazyPromiseOnError;
36
35
  };
36
+ /**
37
+ *
38
+ * IMPORT_PATH: ```"@daiso-tech/core/async"```
39
+ * @group Utilities
40
+ */
41
+ export type LazyPromiseSettingsBase = {
42
+ backoffPolicy?: BackoffPolicy | null;
43
+ retryAttempts?: number | null;
44
+ retryPolicy?: RetryPolicy | null;
45
+ retryTimeout?: TimeSpan | null;
46
+ totalTimeout?: TimeSpan | null;
47
+ };
48
+ /**
49
+ *
50
+ * IMPORT_PATH: ```"@daiso-tech/core/async"```
51
+ * @group Utilities
52
+ */
53
+ export type LazyPromiseSettings<TValue = unknown> = LazyPromiseCallbacks<TValue> & LazyPromiseSettingsBase & {
54
+ abortSignal?: AbortSignal | null;
55
+ };
37
56
  /**
38
57
  * The <i>LazyPromise</i> class is used for creating lazy <i>{@link PromiseLike}<i> object that will only execute when awaited or when then method is called.
39
58
  * The class includes helpful methods
@@ -119,8 +138,9 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
119
138
  * await promise;
120
139
  */
121
140
  constructor(asyncFn: LazyPromiseable<TValue>, settings?: LazyPromiseSettings<TValue>);
122
- private applyTimeout;
141
+ private applyRetryTimeout;
123
142
  private applyRetry;
143
+ private applyTotalTimeout;
124
144
  private applyAbort;
125
145
  private applySettings;
126
146
  /**
@@ -130,10 +150,10 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
130
150
  */
131
151
  then<TResult1 = TValue, TResult2 = never>(onfulfilled?: ((value: TValue) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): PromiseLike<TResult1 | TResult2>;
132
152
  /**
133
- * The <i>setRetryAttempts</i> method is used for setting max retry attempts.
134
- * @example
153
+ * The <i>setBackoffPolicy</i> method is used for setting a custom <i>{@link BackoffPolicy}</i>.
135
154
  * ```ts
136
- * import { LazyPromise } from "@daiso-tech/core/async";
155
+ * import { LazyPromise, linearBackoffPolicy } from "@daiso-tech/core/async";
156
+ * import { TimeSpan } from "@daiso-tech/core/utilities";
137
157
  *
138
158
  * const promise =
139
159
  * new LazyPromise(async () => {
@@ -141,17 +161,18 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
141
161
  * throw new Error("Error occured!");
142
162
  * })
143
163
  * .setRetryAttempts(3)
164
+ * .setBackoffPolicy(linearBackoffPolicy())
144
165
  *
145
166
  * // Will log "A" 3 times and then retry error will be thrown.
146
167
  * await promise;
147
168
  * ```
148
169
  */
149
- setRetryAttempts(attempts: number | null): LazyPromise<TValue>;
170
+ setBackoffPolicy(policy: BackoffPolicy | null): LazyPromise<TValue>;
150
171
  /**
151
- * The <i>setBackoffPolicy</i> method is used for setting a custom <i>{@link BackoffPolicy}</i>.
172
+ * The <i>setRetryAttempts</i> method is used for setting max retry attempts.
173
+ * @example
152
174
  * ```ts
153
- * import { LazyPromise, linearBackoffPolicy } from "@daiso-tech/core/async";
154
- * import { TimeSpan } from "@daiso-tech/core/utilities";
175
+ * import { LazyPromise } from "@daiso-tech/core/async";
155
176
  *
156
177
  * const promise =
157
178
  * new LazyPromise(async () => {
@@ -159,13 +180,12 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
159
180
  * throw new Error("Error occured!");
160
181
  * })
161
182
  * .setRetryAttempts(3)
162
- * .setBackoffPolicy(linearBackoffPolicy())
163
183
  *
164
184
  * // Will log "A" 3 times and then retry error will be thrown.
165
185
  * await promise;
166
186
  * ```
167
187
  */
168
- setBackoffPolicy(policy: BackoffPolicy | null): LazyPromise<TValue>;
188
+ setRetryAttempts(attempts: number | null): LazyPromise<TValue>;
169
189
  /**
170
190
  * The <i>setRetryPolicy</i> method is used for setting a custom <i>{@link BackoffPolicy}</i>.
171
191
  * @example
@@ -189,7 +209,25 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
189
209
  */
190
210
  setRetryPolicy(policy: RetryPolicy | null): LazyPromise<TValue>;
191
211
  /**
192
- * The <i>setTimeout</i> method aborts the <i>LazyPromise</i> if it exceeds the given <i>time</i> by throwning an error.
212
+ * The <i>setRetryTimeout</i> method aborts the each retry if it exceeds the given <i>time</i>.
213
+ * @example
214
+ * ```ts
215
+ * import { LazyPromise } from "@daiso-tech/core/async";
216
+ * import { TimeSpan } from "@daiso-tech/core/utilities";
217
+ *
218
+ * const promise =
219
+ * new LazyPromise(async () => {
220
+ * await LazyPromise.delay(TimeSpan.fromMinutes(1));
221
+ * })
222
+ * .setRetryTimeout(TimeSpan.fromSeconds(1));
223
+ *
224
+ * // An timeout error will be thrown.
225
+ * await promise;
226
+ * ```
227
+ */
228
+ setRetryTimeout(time: TimeSpan | null): LazyPromise<TValue>;
229
+ /**
230
+ * The <i>setTotalTimeout</i> method aborts the <i>LazyPromise</i> if it exceeds the given <i>time</i> by throwning an error.
193
231
  * @example
194
232
  * ```ts
195
233
  * import { LazyPromise } from "@daiso-tech/core/async";
@@ -199,13 +237,13 @@ export declare class LazyPromise<TValue> implements PromiseLike<TValue> {
199
237
  * new LazyPromise(async () => {
200
238
  * await LazyPromise.delay(TimeSpan.fromMinutes(1));
201
239
  * })
202
- * .setTimeout(TimeSpan.fromSeconds(1));
240
+ * .setRetryTimeout(TimeSpan.fromSeconds(1));
203
241
  *
204
242
  * // An timeout error will be thrown.
205
243
  * await promise;
206
244
  * ```
207
245
  */
208
- setTimeout(time: TimeSpan | null): LazyPromise<TValue>;
246
+ setTotalTimeout(time: TimeSpan | null): LazyPromise<TValue>;
209
247
  /**
210
248
  * The <i>setAbortSignal</i> method aborts the <i>LazyPromise</i> by the passed in <i>abortSignal</i>.
211
249
  * @example
@@ -11,7 +11,7 @@ AbortAsyncError,
11
11
  TimeoutAsyncError,
12
12
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
13
  RetryAsyncError, } from "../../../async/async.errors.js";
14
- import { resolveAsyncLazyable, } from "../../../utilities/_module-exports.js";
14
+ import { removeUndefinedProperties, resolveAsyncLazyable, } from "../../../utilities/_module-exports.js";
15
15
  import { delay } from "../../../async/utilities/_module.js";
16
16
  /**
17
17
  * The <i>LazyPromise</i> class is used for creating lazy <i>{@link PromiseLike}<i> object that will only execute when awaited or when then method is called.
@@ -113,61 +113,79 @@ export class LazyPromise {
113
113
  */
114
114
  constructor(asyncFn, settings = {}) {
115
115
  this.asyncFn = () => resolveAsyncLazyable(asyncFn);
116
- this.settings = {
116
+ this.settings = removeUndefinedProperties({
117
117
  retryAttempts: null,
118
118
  backoffPolicy: null,
119
119
  retryPolicy: null,
120
+ retryTimeout: null,
121
+ totalTimeout: null,
120
122
  abortSignal: null,
121
- timeout: null,
122
123
  onFinally: () => { },
123
124
  onSuccess: (_value) => { },
124
125
  onError: () => { },
125
126
  ...settings,
126
- };
127
+ });
127
128
  }
128
- applyTimeout() {
129
- if (this.settings.timeout !== null) {
130
- const oldAsyncFn = this.asyncFn;
131
- const newAsyncFn = () => {
132
- if (this.settings.timeout === null) {
133
- throw new Error(`LazyPromise["time"] field is null`);
134
- }
135
- return timeoutAndFail(oldAsyncFn, this.settings.timeout);
136
- };
137
- this.asyncFn = newAsyncFn;
129
+ applyRetryTimeout() {
130
+ if (this.settings.retryTimeout === null) {
131
+ return;
138
132
  }
133
+ const oldAsyncFn = this.asyncFn;
134
+ const newAsyncFn = () => {
135
+ if (this.settings.retryTimeout === null) {
136
+ throw new Error(`LazyPromise["time"] field is null`);
137
+ }
138
+ return timeoutAndFail(oldAsyncFn, this.settings.retryTimeout);
139
+ };
140
+ this.asyncFn = newAsyncFn;
139
141
  }
140
142
  applyRetry() {
141
- if (this.settings.retryAttempts !== null) {
142
- const oldAsyncFn = this.asyncFn;
143
- const newAsyncFn = () => {
144
- if (this.settings.retryAttempts === null) {
145
- throw new Error(`LazyPromise["attempts"] field is null`);
146
- }
147
- return retryOrFail(oldAsyncFn, {
148
- backoffPolicy: this.settings.backoffPolicy ?? undefined,
149
- retryPolicy: this.settings.retryPolicy ?? undefined,
150
- maxAttempts: this.settings.retryAttempts,
151
- });
152
- };
153
- this.asyncFn = newAsyncFn;
143
+ if (this.settings.retryAttempts === null) {
144
+ return;
145
+ }
146
+ this.applyRetryTimeout();
147
+ const oldAsyncFn = this.asyncFn;
148
+ const newAsyncFn = () => {
149
+ if (this.settings.retryAttempts === null) {
150
+ throw new Error(`LazyPromise["attempts"] field is null`);
151
+ }
152
+ return retryOrFail(oldAsyncFn, {
153
+ backoffPolicy: this.settings.backoffPolicy ?? undefined,
154
+ retryPolicy: this.settings.retryPolicy ?? undefined,
155
+ maxAttempts: this.settings.retryAttempts,
156
+ });
157
+ };
158
+ this.asyncFn = newAsyncFn;
159
+ }
160
+ applyTotalTimeout() {
161
+ if (this.settings.totalTimeout === null) {
162
+ return;
154
163
  }
164
+ const oldAsyncFn = this.asyncFn;
165
+ const newAsyncFn = () => {
166
+ if (this.settings.totalTimeout === null) {
167
+ throw new Error(`LazyPromise["time"] field is null`);
168
+ }
169
+ return timeoutAndFail(oldAsyncFn, this.settings.totalTimeout);
170
+ };
171
+ this.asyncFn = newAsyncFn;
155
172
  }
156
173
  applyAbort() {
157
- if (this.settings.abortSignal !== null) {
158
- const oldAsyncFn = this.asyncFn;
159
- const newAsyncFn = () => {
160
- if (this.settings.abortSignal === null) {
161
- throw new Error(`LazyPromise["abortSignal"] field is null`);
162
- }
163
- return abortAndFail(oldAsyncFn, this.settings.abortSignal);
164
- };
165
- this.asyncFn = newAsyncFn;
174
+ if (this.settings.abortSignal === null) {
175
+ return;
166
176
  }
177
+ const oldAsyncFn = this.asyncFn;
178
+ const newAsyncFn = () => {
179
+ if (this.settings.abortSignal === null) {
180
+ throw new Error(`LazyPromise["abortSignal"] field is null`);
181
+ }
182
+ return abortAndFail(oldAsyncFn, this.settings.abortSignal);
183
+ };
184
+ this.asyncFn = newAsyncFn;
167
185
  }
168
186
  applySettings() {
169
- this.applyTimeout();
170
187
  this.applyRetry();
188
+ this.applyTotalTimeout();
171
189
  this.applyAbort();
172
190
  }
173
191
  /**
@@ -186,10 +204,10 @@ export class LazyPromise {
186
204
  return this.promise.then(onfulfilled, onrejected);
187
205
  }
188
206
  /**
189
- * The <i>setRetryAttempts</i> method is used for setting max retry attempts.
190
- * @example
207
+ * The <i>setBackoffPolicy</i> method is used for setting a custom <i>{@link BackoffPolicy}</i>.
191
208
  * ```ts
192
- * import { LazyPromise } from "@daiso-tech/core/async";
209
+ * import { LazyPromise, linearBackoffPolicy } from "@daiso-tech/core/async";
210
+ * import { TimeSpan } from "@daiso-tech/core/utilities";
193
211
  *
194
212
  * const promise =
195
213
  * new LazyPromise(async () => {
@@ -197,22 +215,23 @@ export class LazyPromise {
197
215
  * throw new Error("Error occured!");
198
216
  * })
199
217
  * .setRetryAttempts(3)
218
+ * .setBackoffPolicy(linearBackoffPolicy())
200
219
  *
201
220
  * // Will log "A" 3 times and then retry error will be thrown.
202
221
  * await promise;
203
222
  * ```
204
223
  */
205
- setRetryAttempts(attempts) {
224
+ setBackoffPolicy(policy) {
206
225
  return new LazyPromise(this.asyncFn, {
207
226
  ...this.settings,
208
- retryAttempts: attempts,
227
+ backoffPolicy: policy,
209
228
  });
210
229
  }
211
230
  /**
212
- * The <i>setBackoffPolicy</i> method is used for setting a custom <i>{@link BackoffPolicy}</i>.
231
+ * The <i>setRetryAttempts</i> method is used for setting max retry attempts.
232
+ * @example
213
233
  * ```ts
214
- * import { LazyPromise, linearBackoffPolicy } from "@daiso-tech/core/async";
215
- * import { TimeSpan } from "@daiso-tech/core/utilities";
234
+ * import { LazyPromise } from "@daiso-tech/core/async";
216
235
  *
217
236
  * const promise =
218
237
  * new LazyPromise(async () => {
@@ -220,16 +239,15 @@ export class LazyPromise {
220
239
  * throw new Error("Error occured!");
221
240
  * })
222
241
  * .setRetryAttempts(3)
223
- * .setBackoffPolicy(linearBackoffPolicy())
224
242
  *
225
243
  * // Will log "A" 3 times and then retry error will be thrown.
226
244
  * await promise;
227
245
  * ```
228
246
  */
229
- setBackoffPolicy(policy) {
247
+ setRetryAttempts(attempts) {
230
248
  return new LazyPromise(this.asyncFn, {
231
249
  ...this.settings,
232
- backoffPolicy: policy,
250
+ retryAttempts: attempts,
233
251
  });
234
252
  }
235
253
  /**
@@ -260,7 +278,30 @@ export class LazyPromise {
260
278
  });
261
279
  }
262
280
  /**
263
- * The <i>setTimeout</i> method aborts the <i>LazyPromise</i> if it exceeds the given <i>time</i> by throwning an error.
281
+ * The <i>setRetryTimeout</i> method aborts the each retry if it exceeds the given <i>time</i>.
282
+ * @example
283
+ * ```ts
284
+ * import { LazyPromise } from "@daiso-tech/core/async";
285
+ * import { TimeSpan } from "@daiso-tech/core/utilities";
286
+ *
287
+ * const promise =
288
+ * new LazyPromise(async () => {
289
+ * await LazyPromise.delay(TimeSpan.fromMinutes(1));
290
+ * })
291
+ * .setRetryTimeout(TimeSpan.fromSeconds(1));
292
+ *
293
+ * // An timeout error will be thrown.
294
+ * await promise;
295
+ * ```
296
+ */
297
+ setRetryTimeout(time) {
298
+ return new LazyPromise(this.asyncFn, {
299
+ ...this.settings,
300
+ retryTimeout: time,
301
+ });
302
+ }
303
+ /**
304
+ * The <i>setTotalTimeout</i> method aborts the <i>LazyPromise</i> if it exceeds the given <i>time</i> by throwning an error.
264
305
  * @example
265
306
  * ```ts
266
307
  * import { LazyPromise } from "@daiso-tech/core/async";
@@ -270,16 +311,16 @@ export class LazyPromise {
270
311
  * new LazyPromise(async () => {
271
312
  * await LazyPromise.delay(TimeSpan.fromMinutes(1));
272
313
  * })
273
- * .setTimeout(TimeSpan.fromSeconds(1));
314
+ * .setRetryTimeout(TimeSpan.fromSeconds(1));
274
315
  *
275
316
  * // An timeout error will be thrown.
276
317
  * await promise;
277
318
  * ```
278
319
  */
279
- setTimeout(time) {
320
+ setTotalTimeout(time) {
280
321
  return new LazyPromise(this.asyncFn, {
281
322
  ...this.settings,
282
- timeout: time,
323
+ totalTimeout: time,
283
324
  });
284
325
  }
285
326
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"lazy-promise.js","sourceRoot":"","sources":["../../../../src/async/utilities/lazy-promise/lazy-promise.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy-promise.js","sourceRoot":"","sources":["../../../../src/async/utilities/lazy-promise/lazy-promise.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * @module Async
3
3
  */
4
+ import { TimeSpan } from "../../../utilities/_module-exports.js";
4
5
  import type { BackoffPolicy } from "../../../async/backof-policies/_module.js";
5
6
  /**
6
7
  *
@@ -20,6 +21,7 @@ export type RetrySettings = {
20
21
  maxAttempts?: number;
21
22
  backoffPolicy?: BackoffPolicy;
22
23
  retryPolicy?: RetryPolicy;
24
+ timeout?: TimeSpan | null;
23
25
  };
24
26
  /**
25
27
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"retry-or-fail.js","sourceRoot":"","sources":["../../../../src/async/utilities/retry/retry-or-fail.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAwB1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,OAAkC,EAClC,WAA0B,EAAE;IAE5B,MAAM,EACF,WAAW,GAAG,CAAC,EACf,aAAa,GAAG,wBAAwB,EAAE,EAC1C,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,GAC3B,GAAG,QAAQ,CAAC;IACb,IAAI,MAAe,CAAC;IACpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACnC,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,IAAI,YAAY,GAAG,oCAAoC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnF,IAAI,MAAM,EAAE,CAAC;QACT,YAAY,GAAG,GAAG,YAAY,+BAA+B,MAAM,CAAC,MAAiB,CAAC,GAAG,CAAC;IAC9F,CAAC;IACD,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE;QACpC,KAAK,EAAE,MAAM;QACb,WAAW;KACd,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"retry-or-fail.js","sourceRoot":"","sources":["../../../../src/async/utilities/retry/retry-or-fail.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAyB1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,OAAkC,EAClC,WAA0B,EAAE;IAE5B,MAAM,EACF,WAAW,GAAG,CAAC,EACf,aAAa,GAAG,wBAAwB,EAAE,EAC1C,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,GAC3B,GAAG,QAAQ,CAAC;IACb,IAAI,MAAe,CAAC;IACpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM,GAAG,KAAK,CAAC;YACf,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACnC,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,CAAC;IACL,CAAC;IAED,IAAI,YAAY,GAAG,oCAAoC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACnF,IAAI,MAAM,EAAE,CAAC;QACT,YAAY,GAAG,GAAG,YAAY,+BAA+B,MAAM,CAAC,MAAiB,CAAC,GAAG,CAAC;IAC9F,CAAC;IACD,MAAM,IAAI,eAAe,CAAC,YAAY,EAAE;QACpC,KAAK,EAAE,MAAM;QACb,WAAW;KACd,CAAC,CAAC;AACP,CAAC"}