@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
@@ -61,20 +61,258 @@ export declare class Lock implements ILock {
61
61
  * @internal
62
62
  */
63
63
  constructor(settings: LockSettings);
64
+ /**
65
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
66
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
67
+ */
64
68
  addListener<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: Invokable<EventInstance<TEventClass>>): LazyPromise<void>;
69
+ /**
70
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
71
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
72
+ */
65
73
  addListenerMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: Invokable<EventInstance<Items<TEventClassArr>>>): LazyPromise<void>;
74
+ /**
75
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
76
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
77
+ */
66
78
  removeListener<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: Invokable<EventInstance<TEventClass>>): LazyPromise<void>;
79
+ /**
80
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
81
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
82
+ */
67
83
  removeListenerMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: Invokable<EventInstance<Items<TEventClassArr>>>): LazyPromise<void>;
84
+ /**
85
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
86
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
87
+ */
68
88
  listenOnce<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: Invokable<EventInstance<TEventClass>>): LazyPromise<void>;
89
+ /**
90
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
91
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
92
+ */
69
93
  asPromise<TEventClass extends EventClass<LockEvents>>(event: TEventClass): LazyPromise<EventInstance<TEventClass>>;
94
+ /**
95
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
96
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
97
+ */
70
98
  subscribe<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: Invokable<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
99
+ /**
100
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
101
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
102
+ */
71
103
  subscribeMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: Invokable<EventInstance<Items<TEventClassArr>>>): LazyPromise<Unsubscribe>;
104
+ /**
105
+ * You can pass in a sync function or async function.
106
+ * @example
107
+ * ```ts
108
+ * import { LockProvider } from "@daiso-tech/core/lock";
109
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
110
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
111
+ * import { Serde } from "@daiso-tech/core/adapter";
112
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
113
+ *
114
+ * const lockProvider = new LockProvider({
115
+ * adapter: new MemoryLockAdapter(),
116
+ * keyPrefixer: new KeyPrefixer("lock"),
117
+ * serde: new Serde(new SuperJsonSerdeAdapter())
118
+ * });
119
+ *
120
+ * const lock = lockProvider.create("a");
121
+ *
122
+ * await lock.run(async () => {
123
+ * console.log("START");
124
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
125
+ * console.log("END");
126
+ * });
127
+ * ```
128
+ *
129
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
130
+ * @example
131
+ * ```ts
132
+ * import { LockProvider } from "@daiso-tech/core/lock";
133
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
134
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
135
+ * import { Serde } from "@daiso-tech/core/adapter";
136
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
137
+ *
138
+ * const lockProvider = new LockProvider({
139
+ * adapter: new MemoryLockAdapter(),
140
+ * keyPrefixer: new KeyPrefixer("lock"),
141
+ * serde: new Serde(new SuperJsonSerdeAdapter())
142
+ * });
143
+ *
144
+ * const lock = lockProvider.create("a");
145
+ *
146
+ * await lock.run(
147
+ * new LazyPromise(async () => {
148
+ * console.log("START");
149
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
150
+ * console.log("END");
151
+ * })
152
+ * );
153
+ * ```
154
+ */
72
155
  run<TValue = void>(asyncFn: LazyPromiseable<TValue>): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
156
+ /**
157
+ * You can pass in a sync function or async function.
158
+ * @example
159
+ * ```ts
160
+ * import { LockProvider } from "@daiso-tech/core/lock";
161
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
162
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
163
+ * import { Serde } from "@daiso-tech/core/adapter";
164
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
165
+ *
166
+ * const lockProvider = new LockProvider({
167
+ * adapter: new MemoryLockAdapter(),
168
+ * keyPrefixer: new KeyPrefixer("lock"),
169
+ * serde: new Serde(new SuperJsonSerdeAdapter())
170
+ * });
171
+ *
172
+ * const lock = lockProvider.create("a");
173
+ *
174
+ * await lock.runOrFail(async () => {
175
+ * console.log("START");
176
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
177
+ * console.log("END");
178
+ * });
179
+ * ```
180
+ *
181
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
182
+ * @example
183
+ * ```ts
184
+ * import { LockProvider } from "@daiso-tech/core/lock";
185
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
186
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
187
+ * import { Serde } from "@daiso-tech/core/adapter";
188
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
189
+ *
190
+ * const lockProvider = new LockProvider({
191
+ * adapter: new MemoryLockAdapter(),
192
+ * keyPrefixer: new KeyPrefixer("lock"),
193
+ * serde: new Serde(new SuperJsonSerdeAdapter())
194
+ * });
195
+ *
196
+ * const lock = lockProvider.create("a");
197
+ *
198
+ * await lock.runOrFail(
199
+ * new LazyPromise(async () => {
200
+ * console.log("START");
201
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
202
+ * console.log("END");
203
+ * })
204
+ * );
205
+ * ```
206
+ */
73
207
  runOrFail<TValue = void>(asyncFn: LazyPromiseable<TValue>): LazyPromise<TValue>;
208
+ /**
209
+ * You can pass in a sync function or async function.
210
+ * @example
211
+ * ```ts
212
+ * import { LockProvider } from "@daiso-tech/core/lock";
213
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
214
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
215
+ * import { Serde } from "@daiso-tech/core/adapter";
216
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
217
+ *
218
+ * const lockProvider = new LockProvider({
219
+ * adapter: new MemoryLockAdapter(),
220
+ * keyPrefixer: new KeyPrefixer("lock"),
221
+ * serde: new Serde(new SuperJsonSerdeAdapter())
222
+ * });
223
+ *
224
+ * const lock = lockProvider.create("a");
225
+ *
226
+ * await lock.runBlocking(async () => {
227
+ * console.log("START");
228
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
229
+ * console.log("END");
230
+ * });
231
+ * ```
232
+ *
233
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
234
+ * @example
235
+ * ```ts
236
+ * import { LockProvider } from "@daiso-tech/core/lock";
237
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
238
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
239
+ * import { Serde } from "@daiso-tech/core/adapter";
240
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
241
+ *
242
+ * const lockProvider = new LockProvider({
243
+ * adapter: new MemoryLockAdapter(),
244
+ * keyPrefixer: new KeyPrefixer("lock"),
245
+ * serde: new Serde(new SuperJsonSerdeAdapter())
246
+ * });
247
+ *
248
+ * const lock = lockProvider.create("a");
249
+ *
250
+ * await lock.runBlocking(
251
+ * new LazyPromise(async () => {
252
+ * console.log("START");
253
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
254
+ * console.log("END");
255
+ * })
256
+ * );
257
+ * ```
258
+ */
74
259
  runBlocking<TValue = void>(asyncFn: LazyPromiseable<TValue>, settings?: AquireBlockingSettings): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
260
+ /**
261
+ * You can pass in a sync function or async function.
262
+ * @example
263
+ * ```ts
264
+ * import { LockProvider } from "@daiso-tech/core/lock";
265
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
266
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
267
+ * import { Serde } from "@daiso-tech/core/adapter";
268
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
269
+ *
270
+ * const lockProvider = new LockProvider({
271
+ * adapter: new MemoryLockAdapter(),
272
+ * keyPrefixer: new KeyPrefixer("lock"),
273
+ * serde: new Serde(new SuperJsonSerdeAdapter())
274
+ * });
275
+ *
276
+ * const lock = lockProvider.create("a");
277
+ *
278
+ * await lock.runBlockingOrFail(async () => {
279
+ * console.log("START");
280
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
281
+ * console.log("END");
282
+ * });
283
+ * ```
284
+ *
285
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
286
+ * @example
287
+ * ```ts
288
+ * import { LockProvider } from "@daiso-tech/core/lock";
289
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
290
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
291
+ * import { Serde } from "@daiso-tech/core/adapter";
292
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
293
+ *
294
+ * const lockProvider = new LockProvider({
295
+ * adapter: new MemoryLockAdapter(),
296
+ * keyPrefixer: new KeyPrefixer("lock"),
297
+ * serde: new Serde(new SuperJsonSerdeAdapter())
298
+ * });
299
+ *
300
+ * const lock = lockProvider.create("a");
301
+ *
302
+ * await lock.runBlockingOrFail(
303
+ * new LazyPromise(async () => {
304
+ * console.log("START");
305
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
306
+ * console.log("END");
307
+ * })
308
+ * );
309
+ * ```
310
+ */
311
+ runBlockingOrFail<TValue = void>(asyncFn: LazyPromiseable<TValue>, settings?: AquireBlockingSettings): LazyPromise<TValue>;
75
312
  acquire(): LazyPromise<boolean>;
76
313
  acquireOrFail(): LazyPromise<void>;
77
314
  acquireBlocking(settings?: AquireBlockingSettings): LazyPromise<boolean>;
315
+ acquireBlockingOrFail(settings?: AquireBlockingSettings): LazyPromise<void>;
78
316
  release(): LazyPromise<boolean>;
79
317
  releaseOrFail(): LazyPromise<void>;
80
318
  forceRelease(): LazyPromise<void>;
@@ -54,30 +54,113 @@ export class Lock {
54
54
  this.defaultBlockingTime = defaultBlockingTime;
55
55
  this.defaultRefreshTime = defaultRefreshTime;
56
56
  }
57
+ /**
58
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
59
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
60
+ */
57
61
  addListener(event, listener) {
58
62
  return this.lockEventBus.addListener(event, listener);
59
63
  }
64
+ /**
65
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
66
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
67
+ */
60
68
  addListenerMany(events, listener) {
61
69
  return this.lockEventBus.addListenerMany(events, listener);
62
70
  }
71
+ /**
72
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
73
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
74
+ */
63
75
  removeListener(event, listener) {
64
76
  return this.lockEventBus.removeListener(event, listener);
65
77
  }
78
+ /**
79
+ * You can listen to the following <i>{@link LockEvents}</i> of the <i>{@link Lock}</i> instance.
80
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
81
+ */
66
82
  removeListenerMany(events, listener) {
67
83
  return this.lockEventBus.removeListenerMany(events, listener);
68
84
  }
85
+ /**
86
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
87
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
88
+ */
69
89
  listenOnce(event, listener) {
70
90
  return this.lockEventBus.listenOnce(event, listener);
71
91
  }
92
+ /**
93
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
94
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
95
+ */
72
96
  asPromise(event) {
73
97
  return this.lockEventBus.asPromise(event);
74
98
  }
99
+ /**
100
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
101
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
102
+ */
75
103
  subscribe(event, listener) {
76
104
  return this.lockEventBus.subscribe(event, listener);
77
105
  }
106
+ /**
107
+ * You can listen to the following <i>{@link LockEvents}</i> of lock instance.
108
+ * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
109
+ */
78
110
  subscribeMany(events, listener) {
79
111
  return this.lockEventBus.subscribeMany(events, listener);
80
112
  }
113
+ /**
114
+ * You can pass in a sync function or async function.
115
+ * @example
116
+ * ```ts
117
+ * import { LockProvider } from "@daiso-tech/core/lock";
118
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
119
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
120
+ * import { Serde } from "@daiso-tech/core/adapter";
121
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
122
+ *
123
+ * const lockProvider = new LockProvider({
124
+ * adapter: new MemoryLockAdapter(),
125
+ * keyPrefixer: new KeyPrefixer("lock"),
126
+ * serde: new Serde(new SuperJsonSerdeAdapter())
127
+ * });
128
+ *
129
+ * const lock = lockProvider.create("a");
130
+ *
131
+ * await lock.run(async () => {
132
+ * console.log("START");
133
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
134
+ * console.log("END");
135
+ * });
136
+ * ```
137
+ *
138
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
139
+ * @example
140
+ * ```ts
141
+ * import { LockProvider } from "@daiso-tech/core/lock";
142
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
143
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
144
+ * import { Serde } from "@daiso-tech/core/adapter";
145
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
146
+ *
147
+ * const lockProvider = new LockProvider({
148
+ * adapter: new MemoryLockAdapter(),
149
+ * keyPrefixer: new KeyPrefixer("lock"),
150
+ * serde: new Serde(new SuperJsonSerdeAdapter())
151
+ * });
152
+ *
153
+ * const lock = lockProvider.create("a");
154
+ *
155
+ * await lock.run(
156
+ * new LazyPromise(async () => {
157
+ * console.log("START");
158
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
159
+ * console.log("END");
160
+ * })
161
+ * );
162
+ * ```
163
+ */
81
164
  run(asyncFn) {
82
165
  return this.createLazyPromise(async () => {
83
166
  if (typeof asyncFn === "function") {
@@ -98,6 +181,57 @@ export class Lock {
98
181
  }
99
182
  }).setRetryPolicy((error) => error instanceof UnableToAquireLockError);
100
183
  }
184
+ /**
185
+ * You can pass in a sync function or async function.
186
+ * @example
187
+ * ```ts
188
+ * import { LockProvider } from "@daiso-tech/core/lock";
189
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
190
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
191
+ * import { Serde } from "@daiso-tech/core/adapter";
192
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
193
+ *
194
+ * const lockProvider = new LockProvider({
195
+ * adapter: new MemoryLockAdapter(),
196
+ * keyPrefixer: new KeyPrefixer("lock"),
197
+ * serde: new Serde(new SuperJsonSerdeAdapter())
198
+ * });
199
+ *
200
+ * const lock = lockProvider.create("a");
201
+ *
202
+ * await lock.runOrFail(async () => {
203
+ * console.log("START");
204
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
205
+ * console.log("END");
206
+ * });
207
+ * ```
208
+ *
209
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
210
+ * @example
211
+ * ```ts
212
+ * import { LockProvider } from "@daiso-tech/core/lock";
213
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
214
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
215
+ * import { Serde } from "@daiso-tech/core/adapter";
216
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
217
+ *
218
+ * const lockProvider = new LockProvider({
219
+ * adapter: new MemoryLockAdapter(),
220
+ * keyPrefixer: new KeyPrefixer("lock"),
221
+ * serde: new Serde(new SuperJsonSerdeAdapter())
222
+ * });
223
+ *
224
+ * const lock = lockProvider.create("a");
225
+ *
226
+ * await lock.runOrFail(
227
+ * new LazyPromise(async () => {
228
+ * console.log("START");
229
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
230
+ * console.log("END");
231
+ * })
232
+ * );
233
+ * ```
234
+ */
101
235
  runOrFail(asyncFn) {
102
236
  return this.createLazyPromise(async () => {
103
237
  try {
@@ -113,6 +247,57 @@ export class Lock {
113
247
  }).setRetryPolicy((error) => error instanceof UnableToAquireLockError ||
114
248
  error instanceof KeyAlreadyAcquiredLockError);
115
249
  }
250
+ /**
251
+ * You can pass in a sync function or async function.
252
+ * @example
253
+ * ```ts
254
+ * import { LockProvider } from "@daiso-tech/core/lock";
255
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
256
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
257
+ * import { Serde } from "@daiso-tech/core/adapter";
258
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
259
+ *
260
+ * const lockProvider = new LockProvider({
261
+ * adapter: new MemoryLockAdapter(),
262
+ * keyPrefixer: new KeyPrefixer("lock"),
263
+ * serde: new Serde(new SuperJsonSerdeAdapter())
264
+ * });
265
+ *
266
+ * const lock = lockProvider.create("a");
267
+ *
268
+ * await lock.runBlocking(async () => {
269
+ * console.log("START");
270
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
271
+ * console.log("END");
272
+ * });
273
+ * ```
274
+ *
275
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
276
+ * @example
277
+ * ```ts
278
+ * import { LockProvider } from "@daiso-tech/core/lock";
279
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
280
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
281
+ * import { Serde } from "@daiso-tech/core/adapter";
282
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
283
+ *
284
+ * const lockProvider = new LockProvider({
285
+ * adapter: new MemoryLockAdapter(),
286
+ * keyPrefixer: new KeyPrefixer("lock"),
287
+ * serde: new Serde(new SuperJsonSerdeAdapter())
288
+ * });
289
+ *
290
+ * const lock = lockProvider.create("a");
291
+ *
292
+ * await lock.runBlocking(
293
+ * new LazyPromise(async () => {
294
+ * console.log("START");
295
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
296
+ * console.log("END");
297
+ * })
298
+ * );
299
+ * ```
300
+ */
116
301
  runBlocking(asyncFn, settings) {
117
302
  return this.createLazyPromise(async () => {
118
303
  if (typeof asyncFn === "function") {
@@ -133,6 +318,71 @@ export class Lock {
133
318
  }
134
319
  }).setRetryPolicy((error) => error instanceof UnableToAquireLockError);
135
320
  }
321
+ /**
322
+ * You can pass in a sync function or async function.
323
+ * @example
324
+ * ```ts
325
+ * import { LockProvider } from "@daiso-tech/core/lock";
326
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
327
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
328
+ * import { Serde } from "@daiso-tech/core/adapter";
329
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
330
+ *
331
+ * const lockProvider = new LockProvider({
332
+ * adapter: new MemoryLockAdapter(),
333
+ * keyPrefixer: new KeyPrefixer("lock"),
334
+ * serde: new Serde(new SuperJsonSerdeAdapter())
335
+ * });
336
+ *
337
+ * const lock = lockProvider.create("a");
338
+ *
339
+ * await lock.runBlockingOrFail(async () => {
340
+ * console.log("START");
341
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
342
+ * console.log("END");
343
+ * });
344
+ * ```
345
+ *
346
+ * You can also pass in a <i>{@link LazyPromise}</i>. This is useful because all other components in this library returns <i>{@link LazyPromise}</i>.
347
+ * @example
348
+ * ```ts
349
+ * import { LockProvider } from "@daiso-tech/core/lock";
350
+ * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
351
+ * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
352
+ * import { Serde } from "@daiso-tech/core/adapter";
353
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
354
+ *
355
+ * const lockProvider = new LockProvider({
356
+ * adapter: new MemoryLockAdapter(),
357
+ * keyPrefixer: new KeyPrefixer("lock"),
358
+ * serde: new Serde(new SuperJsonSerdeAdapter())
359
+ * });
360
+ *
361
+ * const lock = lockProvider.create("a");
362
+ *
363
+ * await lock.runBlockingOrFail(
364
+ * new LazyPromise(async () => {
365
+ * console.log("START");
366
+ * await LazyPromise.delay(TimeSpan.fromSeconds(10));
367
+ * console.log("END");
368
+ * })
369
+ * );
370
+ * ```
371
+ */
372
+ runBlockingOrFail(asyncFn, settings) {
373
+ return new LazyPromise(async () => {
374
+ if (typeof asyncFn === "function") {
375
+ asyncFn = new LazyPromise(asyncFn);
376
+ }
377
+ try {
378
+ await this.acquireBlockingOrFail(settings);
379
+ return await asyncFn;
380
+ }
381
+ finally {
382
+ await this.release();
383
+ }
384
+ }).setRetryPolicy((error) => error instanceof UnableToAquireLockError);
385
+ }
136
386
  acquire() {
137
387
  return this.createLazyPromise(async () => {
138
388
  try {
@@ -194,6 +444,14 @@ export class Lock {
194
444
  return false;
195
445
  });
196
446
  }
447
+ acquireBlockingOrFail(settings) {
448
+ return new LazyPromise(async () => {
449
+ const hasAquired = await this.acquireBlocking(settings);
450
+ if (!hasAquired) {
451
+ throw new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`);
452
+ }
453
+ });
454
+ }
197
455
  release() {
198
456
  return this.createLazyPromise(async () => {
199
457
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock.ts"],"names":[],"mappings":"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"}