@daiso-tech/core 0.31.0 → 0.32.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 (89) hide show
  1. package/dist/async/_module-exports.d.ts +1 -0
  2. package/dist/async/_module-exports.js +1 -0
  3. package/dist/async/_module-exports.js.map +1 -1
  4. package/dist/async/async.events.d.ts +82 -0
  5. package/dist/async/async.events.js +59 -0
  6. package/dist/async/async.events.js.map +1 -0
  7. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.d.ts +15 -0
  8. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js +50 -0
  9. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js.map +1 -0
  10. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.d.ts +23 -0
  11. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js +44 -0
  12. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js.map +1 -0
  13. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +101 -51
  14. package/dist/async/utilities/lazy-promise/lazy-promise.js +155 -96
  15. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  16. package/dist/async/utilities/retry/retry-or-fail.d.ts +1 -1
  17. package/dist/async/utilities/retry/retry-or-fail.js +1 -1
  18. package/dist/async/utilities/retry/retry-or-fail.js.map +1 -1
  19. package/dist/async/utilities/retry/retry.d.ts +1 -1
  20. package/dist/async/utilities/retry/retry.js.map +1 -1
  21. package/dist/cache/contracts/cache.contract.d.ts +2 -2
  22. package/dist/cache/implementations/derivables/cache/cache.d.ts +20 -159
  23. package/dist/cache/implementations/derivables/cache/cache.js +14 -174
  24. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  25. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +11 -32
  26. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +10 -52
  27. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  28. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +5 -5
  29. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +5 -5
  30. package/dist/collection/implementations/_shared.d.ts +2 -0
  31. package/dist/collection/implementations/_shared.js +2 -0
  32. package/dist/collection/implementations/_shared.js.map +1 -1
  33. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +5 -8
  34. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +5 -19
  35. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  36. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +5 -5
  37. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +5 -5
  38. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +18 -13
  39. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +14 -33
  40. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  41. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +9 -35
  42. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +8 -54
  43. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  44. package/dist/lock/contracts/lock.contract.d.ts +4 -4
  45. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +1 -2
  46. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +1 -2
  47. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
  48. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +47 -24
  49. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +40 -40
  50. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  51. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +0 -204
  52. package/dist/lock/implementations/derivables/lock-provider/lock.js +0 -204
  53. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  54. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +11 -37
  55. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +10 -59
  56. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  57. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.d.ts +1 -2
  58. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +1 -2
  59. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js.map +1 -1
  60. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.d.ts +0 -1
  61. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +0 -1
  62. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
  63. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +1 -1
  64. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +1 -1
  65. package/dist/serde/contracts/flexible-serde.contract.d.ts +1 -1
  66. package/dist/serde/implementations/derivables/serde.d.ts +7 -7
  67. package/dist/serde/implementations/derivables/serde.js +7 -7
  68. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +0 -1
  69. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +0 -1
  70. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js.map +1 -1
  71. package/dist/utilities/classes/_module.d.ts +1 -0
  72. package/dist/utilities/classes/_module.js +1 -0
  73. package/dist/utilities/classes/_module.js.map +1 -1
  74. package/dist/utilities/classes/sync-event-bus/_module.d.ts +1 -0
  75. package/dist/utilities/classes/sync-event-bus/_module.js +2 -0
  76. package/dist/utilities/classes/sync-event-bus/_module.js.map +1 -0
  77. package/dist/utilities/classes/sync-event-bus/sync-event-bus.d.ts +16 -0
  78. package/dist/utilities/classes/sync-event-bus/sync-event-bus.js +53 -0
  79. package/dist/utilities/classes/sync-event-bus/sync-event-bus.js.map +1 -0
  80. package/dist/utilities/contracts/_module.d.ts +1 -0
  81. package/dist/utilities/contracts/_module.js +1 -0
  82. package/dist/utilities/contracts/_module.js.map +1 -1
  83. package/dist/utilities/contracts/sync-event-bus-listenable.d.ts +13 -0
  84. package/dist/utilities/contracts/sync-event-bus-listenable.js +5 -0
  85. package/dist/utilities/contracts/sync-event-bus-listenable.js.map +1 -0
  86. package/dist/utilities/functions/invokable.d.ts +4 -0
  87. package/dist/utilities/functions/invokable.js +9 -0
  88. package/dist/utilities/functions/invokable.js.map +1 -1
  89. package/package.json +2 -2
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { TimeSpan, type AsyncFactoryable, type IKeyPrefixer, type Items } from "../../../../utilities/_module-exports.js";
4
+ import { TimeSpan, type AsyncFactoryable, type IKeyPrefixer, type Items, type Factory, type AsyncLazy } from "../../../../utilities/_module-exports.js";
5
5
  import { type OneOrMore } from "../../../../utilities/_module-exports.js";
6
6
  import type { IDatabaseLockAdapter, LockEvents } from "../../../../lock/contracts/_module-exports.js";
7
7
  import { type ILock, type IGroupableLockProvider, type LockProviderCreateSettings, type ILockProvider, type ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
8
- import { LazyPromise, type LazyPromiseSettingsBase } from "../../../../async/_module-exports.js";
8
+ import { LazyPromise } from "../../../../async/_module-exports.js";
9
9
  import type { EventClass, EventInstance, EventListener, IGroupableEventBus, Unsubscribe } from "../../../../event-bus/contracts/_module-exports.js";
10
10
  import type { IFlexibleSerde } from "../../../../serde/contracts/_module-exports.js";
11
11
  /**
@@ -13,8 +13,18 @@ import type { IFlexibleSerde } from "../../../../serde/contracts/_module-exports
13
13
  * IMPORT_PATH: ```"@daiso-tech/core/lock"```
14
14
  * @group Derivables
15
15
  */
16
- export type LockProviderSettingsBase = LazyPromiseSettingsBase & {
16
+ export type LockProviderSettingsBase = {
17
17
  keyPrefixer: IKeyPrefixer;
18
+ /**
19
+ * You can pass a <i>{@link Factory}</i> of <i>{@link LazyPromise}</i> to configure default settings for all <i>{@link LazyPromise}</i> instances used in the <i>LockProvider</i> class.
20
+ * @default
21
+ * ```ts
22
+ * import { LazyPromise } from "@daiso-tech/core/async";
23
+ *
24
+ * (invokable) => new LazyPromise(invokable)
25
+ * ```
26
+ */
27
+ lazyPromiseFactory?: Factory<AsyncLazy<any>, LazyPromise<any>>;
18
28
  serde: OneOrMore<IFlexibleSerde>;
19
29
  /**
20
30
  * @default {""}
@@ -102,11 +112,6 @@ export declare class LockProvider implements IGroupableLockProvider {
102
112
  private readonly eventBus;
103
113
  private readonly adapterFactoryable;
104
114
  private readonly adapterPromise;
105
- private readonly retryAttempts;
106
- private readonly backoffPolicy;
107
- private readonly retryPolicy;
108
- private readonly retryTimeout;
109
- private readonly totalTimeout;
110
115
  private readonly keyPrefixer;
111
116
  private readonly createOwnerId;
112
117
  private readonly defaultTtl;
@@ -114,12 +119,16 @@ export declare class LockProvider implements IGroupableLockProvider {
114
119
  private readonly defaultBlockingTime;
115
120
  private readonly defaultRefreshTime;
116
121
  private readonly serde;
122
+ private readonly lazyPromiseFactory;
117
123
  /**
118
124
  * @example
119
125
  * ```ts
120
126
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
121
127
  * import { LockProvider } from "@daiso-tech/core/lock";
122
128
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
129
+ * import { Serde } from "@daiso-tech/core/serde";
130
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
131
+ * import Sqlite from "better-sqlite3";
123
132
  *
124
133
  * const database = new Sqlite("local.db");
125
134
  * const lockAdapter = new SqliteLockAdapter({
@@ -128,8 +137,10 @@ export declare class LockProvider implements IGroupableLockProvider {
128
137
  * // You need initialize the adapter once before using it.
129
138
  * await lockAdapter.init();
130
139
  *
140
+ * const serde = new Serde(new SuperJsonSerdeAdapter())
131
141
  * const lockProvider = new LockProvider({
132
142
  * keyPrefixer: new KeyPrefixer("lock"),
143
+ * serde,
133
144
  * adapter: lockAdapter,
134
145
  * });
135
146
  * ```
@@ -138,11 +149,14 @@ export declare class LockProvider implements IGroupableLockProvider {
138
149
  * @example
139
150
  * ```ts
140
151
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
141
- * import type { ILockAdapter } from "@daiso-tech/core/lock/contracts";
152
+ * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
142
153
  * import { LockProvider } from "@daiso-tech/core/lock";
143
- * import { KeyPrefixer, type ISqliteDatabase, type FactoryFn } from "@daiso-tech/core/utilities";
154
+ * import { KeyPrefixer, type ISqliteDatabase, type AsyncFactoryFn } from "@daiso-tech/core/utilities";
155
+ * import { Serde } from "@daiso-tech/core/serde";
156
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
157
+ * import Sqlite from "better-sqlite3";
144
158
  *
145
- * async function lockAdapterFactory(database: ISqliteDatabase): FactoryFn<string, ILockAdapter> {
159
+ * function lockAdapterFactory(database: ISqliteDatabase): AsyncFactoryFn<string, IDatabaseLockAdapter> {
146
160
  * return async (prefix) => {
147
161
  * const lockAdapter = new SqliteLockAdapter({
148
162
  * database,
@@ -155,8 +169,10 @@ export declare class LockProvider implements IGroupableLockProvider {
155
169
  * }
156
170
  *
157
171
  * const database = new Sqlite("local.db");
172
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
158
173
  * const lockProvider = new LockProvider({
159
174
  * keyPrefixer: new KeyPrefixer("lock"),
175
+ * serde,
160
176
  * adapter: lockAdapterFactory(database),
161
177
  * });
162
178
  * ```
@@ -165,14 +181,17 @@ export declare class LockProvider implements IGroupableLockProvider {
165
181
  * @example
166
182
  * ```ts
167
183
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
168
- * import type { ILockAdapter } from "@daiso-tech/core/lock/contracts";
184
+ * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
169
185
  * import { LockProvider } from "@daiso-tech/core/lock";
170
- * import { KeyPrefixer, type ISqliteDatabase, type IFactoryObject, type Promiseable } from "@daiso-tech/core/utilities";
186
+ * import { KeyPrefixer, type ISqliteDatabase, type IAsyncFactoryObject, type Promisable } from "@daiso-tech/core/utilities";
187
+ * import { Serde } from "@daiso-tech/core/serde";
188
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
189
+ * import Sqlite from "better-sqlite3";
171
190
  *
172
- * class LockAdapterFactory implements IFactoryObject<string, ILockAdapter> {
191
+ * class LockAdapterFactory implements IAsyncFactoryObject<string, IDatabaseLockAdapter> {
173
192
  * constructor(private readonly database: ISqliteDatabase) {}
174
193
  *
175
- * async use(prefix: string): Promiseable<ILockAdapter> {
194
+ * async use(prefix: string): Promise<IDatabaseLockAdapter> {
176
195
  * const lockAdapter = new SqliteLockAdapter({
177
196
  * database,
178
197
  * tableName: `lock_${prefix}`,
@@ -184,8 +203,10 @@ export declare class LockProvider implements IGroupableLockProvider {
184
203
  * }
185
204
  *
186
205
  * const database = new Sqlite("local.db");
206
+ * const serde = new Serde(new SuperJsonSerdeAdapter())
187
207
  * const lockProvider = new LockProvider({
188
208
  * keyPrefixer: new KeyPrefixer("lock"),
209
+ * serde,
189
210
  * adapter: new LockAdapterFactory(database),
190
211
  * });
191
212
  * ```
@@ -242,9 +263,9 @@ export declare class LockProvider implements IGroupableLockProvider {
242
263
  * ```ts
243
264
  * import { LockProvider } from "@daiso-tech/core/lock";
244
265
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
245
- * import { KeyPrefixer, TimeSpan } from "@daiso-tech/core/utilities";
246
- * import { Serde } from "@daiso-tech/core/adapter";
247
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
266
+ * import { KeyPrefixer } from "@daiso-tech/core/utilities";
267
+ * import { Serde } from "@daiso-tech/core/serde";
268
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
248
269
  *
249
270
  * const lockProvider = new LockProvider({
250
271
  * adapter: new MemoryLockAdapter(),
@@ -262,13 +283,14 @@ export declare class LockProvider implements IGroupableLockProvider {
262
283
  * import { LockProvider } from "@daiso-tech/core/lock";
263
284
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
264
285
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
265
- * import { Serde } from "@daiso-tech/core/adapter";
266
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
286
+ * import { Serde } from "@daiso-tech/core/serde";
287
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
267
288
  *
289
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
268
290
  * const lockProvider = new LockProvider({
269
291
  * adapter: new MemoryLockAdapter(),
270
292
  * keyPrefixer: new KeyPrefixer("lock"),
271
- * serde: new Serde(new SuperJsonSerdeAdapter())
293
+ * serde,
272
294
  * });
273
295
  *
274
296
  * // Will log null because the lockProvider is not in a group
@@ -287,13 +309,14 @@ export declare class LockProvider implements IGroupableLockProvider {
287
309
  * import { LockProvider } from "@daiso-tech/core/lock";
288
310
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
289
311
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
290
- * import { Serde } from "@daiso-tech/core/adapter";
291
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
312
+ * import { Serde } from "@daiso-tech/core/serde";
313
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
292
314
  *
315
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
293
316
  * const lockProvider = new LockProvider({
294
317
  * adapter: new MemoryLockAdapter(),
295
318
  * keyPrefixer: new KeyPrefixer("lock"),
296
- * serde: new Serde(new SuperJsonSerdeAdapter())
319
+ * serde,
297
320
  * });
298
321
  *
299
322
  * const groupedLockProvider = lockProvider.withGroup("group-a");
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { resolveOneOrMore, TimeSpan, CORE, resolveAsyncFactoryable, } from "../../../../utilities/_module-exports.js";
4
+ import { resolveOneOrMore, TimeSpan, CORE, resolveAsyncFactoryable, resolveFactory, } from "../../../../utilities/_module-exports.js";
5
5
  import { KeyPrefixer } from "../../../../utilities/_module-exports.js";
6
6
  import {} from "../../../../lock/contracts/_module-exports.js";
7
- import { LazyPromise, } from "../../../../async/_module-exports.js";
7
+ import { LazyPromise } from "../../../../async/_module-exports.js";
8
8
  import { isDatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/is-database-lock-adapter.js";
9
9
  import { DatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/database-lock-adapter.js";
10
10
  import { EventBus } from "../../../../event-bus/implementations/derivables/_module-exports.js";
@@ -55,11 +55,6 @@ export class LockProvider {
55
55
  eventBus;
56
56
  adapterFactoryable;
57
57
  adapterPromise;
58
- retryAttempts;
59
- backoffPolicy;
60
- retryPolicy;
61
- retryTimeout;
62
- totalTimeout;
63
58
  keyPrefixer;
64
59
  createOwnerId;
65
60
  defaultTtl;
@@ -67,12 +62,16 @@ export class LockProvider {
67
62
  defaultBlockingTime;
68
63
  defaultRefreshTime;
69
64
  serde;
65
+ lazyPromiseFactory;
70
66
  /**
71
67
  * @example
72
68
  * ```ts
73
69
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
74
70
  * import { LockProvider } from "@daiso-tech/core/lock";
75
71
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
72
+ * import { Serde } from "@daiso-tech/core/serde";
73
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
74
+ * import Sqlite from "better-sqlite3";
76
75
  *
77
76
  * const database = new Sqlite("local.db");
78
77
  * const lockAdapter = new SqliteLockAdapter({
@@ -81,8 +80,10 @@ export class LockProvider {
81
80
  * // You need initialize the adapter once before using it.
82
81
  * await lockAdapter.init();
83
82
  *
83
+ * const serde = new Serde(new SuperJsonSerdeAdapter())
84
84
  * const lockProvider = new LockProvider({
85
85
  * keyPrefixer: new KeyPrefixer("lock"),
86
+ * serde,
86
87
  * adapter: lockAdapter,
87
88
  * });
88
89
  * ```
@@ -91,11 +92,14 @@ export class LockProvider {
91
92
  * @example
92
93
  * ```ts
93
94
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
94
- * import type { ILockAdapter } from "@daiso-tech/core/lock/contracts";
95
+ * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
95
96
  * import { LockProvider } from "@daiso-tech/core/lock";
96
- * import { KeyPrefixer, type ISqliteDatabase, type FactoryFn } from "@daiso-tech/core/utilities";
97
+ * import { KeyPrefixer, type ISqliteDatabase, type AsyncFactoryFn } from "@daiso-tech/core/utilities";
98
+ * import { Serde } from "@daiso-tech/core/serde";
99
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
100
+ * import Sqlite from "better-sqlite3";
97
101
  *
98
- * async function lockAdapterFactory(database: ISqliteDatabase): FactoryFn<string, ILockAdapter> {
102
+ * function lockAdapterFactory(database: ISqliteDatabase): AsyncFactoryFn<string, IDatabaseLockAdapter> {
99
103
  * return async (prefix) => {
100
104
  * const lockAdapter = new SqliteLockAdapter({
101
105
  * database,
@@ -108,8 +112,10 @@ export class LockProvider {
108
112
  * }
109
113
  *
110
114
  * const database = new Sqlite("local.db");
115
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
111
116
  * const lockProvider = new LockProvider({
112
117
  * keyPrefixer: new KeyPrefixer("lock"),
118
+ * serde,
113
119
  * adapter: lockAdapterFactory(database),
114
120
  * });
115
121
  * ```
@@ -118,14 +124,17 @@ export class LockProvider {
118
124
  * @example
119
125
  * ```ts
120
126
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
121
- * import type { ILockAdapter } from "@daiso-tech/core/lock/contracts";
127
+ * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
122
128
  * import { LockProvider } from "@daiso-tech/core/lock";
123
- * import { KeyPrefixer, type ISqliteDatabase, type IFactoryObject, type Promiseable } from "@daiso-tech/core/utilities";
129
+ * import { KeyPrefixer, type ISqliteDatabase, type IAsyncFactoryObject, type Promisable } from "@daiso-tech/core/utilities";
130
+ * import { Serde } from "@daiso-tech/core/serde";
131
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
132
+ * import Sqlite from "better-sqlite3";
124
133
  *
125
- * class LockAdapterFactory implements IFactoryObject<string, ILockAdapter> {
134
+ * class LockAdapterFactory implements IAsyncFactoryObject<string, IDatabaseLockAdapter> {
126
135
  * constructor(private readonly database: ISqliteDatabase) {}
127
136
  *
128
- * async use(prefix: string): Promiseable<ILockAdapter> {
137
+ * async use(prefix: string): Promise<IDatabaseLockAdapter> {
129
138
  * const lockAdapter = new SqliteLockAdapter({
130
139
  * database,
131
140
  * tableName: `lock_${prefix}`,
@@ -137,8 +146,10 @@ export class LockProvider {
137
146
  * }
138
147
  *
139
148
  * const database = new Sqlite("local.db");
149
+ * const serde = new Serde(new SuperJsonSerdeAdapter())
140
150
  * const lockProvider = new LockProvider({
141
151
  * keyPrefixer: new KeyPrefixer("lock"),
152
+ * serde,
142
153
  * adapter: new LockAdapterFactory(database),
143
154
  * });
144
155
  * ```
@@ -147,7 +158,7 @@ export class LockProvider {
147
158
  const { defaultTtl = TimeSpan.fromMinutes(5), defaultBlockingInterval = TimeSpan.fromSeconds(1), defaultBlockingTime = TimeSpan.fromMinutes(1), defaultRefreshTime = TimeSpan.fromMinutes(5), createOwnerId = () => v4(), serde, keyPrefixer, adapter, eventBus: groupableEventBus = new EventBus({
148
159
  keyPrefixer: new KeyPrefixer("events"),
149
160
  adapter: new MemoryEventBusAdapter(),
150
- }), retryAttempts = null, backoffPolicy = null, retryPolicy = null, retryTimeout = null, totalTimeout = null, serdeTransformerName = "", } = settings;
161
+ }), serdeTransformerName = "", lazyPromiseFactory = (invokable) => new LazyPromise(invokable), } = settings;
151
162
  this.serde = serde;
152
163
  this.defaultBlockingInterval = defaultBlockingInterval;
153
164
  this.defaultBlockingTime = defaultBlockingTime;
@@ -157,12 +168,8 @@ export class LockProvider {
157
168
  this.groupableEventBus = groupableEventBus;
158
169
  this.adapterFactoryable = adapter;
159
170
  this.defaultTtl = defaultTtl;
160
- this.retryAttempts = retryAttempts;
161
- this.backoffPolicy = backoffPolicy;
162
- this.retryPolicy = retryPolicy;
163
- this.retryTimeout = retryTimeout;
164
- this.totalTimeout = totalTimeout;
165
171
  this.eventBus = this.eventBus = this.groupableEventBus.withGroup(this.keyPrefixer.resolvedRootPrefix);
172
+ this.lazyPromiseFactory = resolveFactory(lazyPromiseFactory);
166
173
  if (this.keyPrefixer.resolvedGroup) {
167
174
  this.eventBus = this.groupableEventBus.withGroup([
168
175
  this.keyPrefixer.resolvedRootPrefix,
@@ -245,22 +252,16 @@ export class LockProvider {
245
252
  return this.eventBus.subscribeMany(events, listener);
246
253
  }
247
254
  createLazyPromise(asyncFn) {
248
- return new LazyPromise(asyncFn, {
249
- retryAttempts: this.retryAttempts,
250
- backoffPolicy: this.backoffPolicy,
251
- retryPolicy: this.retryPolicy,
252
- retryTimeout: this.retryTimeout,
253
- totalTimeout: this.totalTimeout,
254
- });
255
+ return new LazyPromise(asyncFn);
255
256
  }
256
257
  /**
257
258
  * @example
258
259
  * ```ts
259
260
  * import { LockProvider } from "@daiso-tech/core/lock";
260
261
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
261
- * import { KeyPrefixer, TimeSpan } from "@daiso-tech/core/utilities";
262
- * import { Serde } from "@daiso-tech/core/adapter";
263
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
262
+ * import { KeyPrefixer } from "@daiso-tech/core/utilities";
263
+ * import { Serde } from "@daiso-tech/core/serde";
264
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
264
265
  *
265
266
  * const lockProvider = new LockProvider({
266
267
  * adapter: new MemoryLockAdapter(),
@@ -307,13 +308,14 @@ export class LockProvider {
307
308
  * import { LockProvider } from "@daiso-tech/core/lock";
308
309
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
309
310
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
310
- * import { Serde } from "@daiso-tech/core/adapter";
311
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
311
+ * import { Serde } from "@daiso-tech/core/serde";
312
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
312
313
  *
314
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
313
315
  * const lockProvider = new LockProvider({
314
316
  * adapter: new MemoryLockAdapter(),
315
317
  * keyPrefixer: new KeyPrefixer("lock"),
316
- * serde: new Serde(new SuperJsonSerdeAdapter())
318
+ * serde,
317
319
  * });
318
320
  *
319
321
  * // Will log null because the lockProvider is not in a group
@@ -334,13 +336,14 @@ export class LockProvider {
334
336
  * import { LockProvider } from "@daiso-tech/core/lock";
335
337
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
336
338
  * import { KeyPrefixer } from "@daiso-tech/core/utilities";
337
- * import { Serde } from "@daiso-tech/core/adapter";
338
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
339
+ * import { Serde } from "@daiso-tech/core/serde";
340
+ * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
339
341
  *
342
+ * const serde = new Serde(new SuperJsonSerdeAdapter());
340
343
  * const lockProvider = new LockProvider({
341
344
  * adapter: new MemoryLockAdapter(),
342
345
  * keyPrefixer: new KeyPrefixer("lock"),
343
- * serde: new Serde(new SuperJsonSerdeAdapter())
346
+ * serde,
344
347
  * });
345
348
  *
346
349
  * const groupedLockProvider = lockProvider.withGroup("group-a");
@@ -371,10 +374,7 @@ export class LockProvider {
371
374
  defaultBlockingInterval: this.defaultBlockingInterval,
372
375
  defaultBlockingTime: this.defaultBlockingTime,
373
376
  defaultRefreshTime: this.defaultRefreshTime,
374
- retryAttempts: this.retryAttempts,
375
- backoffPolicy: this.backoffPolicy,
376
- retryPolicy: this.retryPolicy,
377
- retryTimeout: this.retryTimeout,
377
+ lazyPromiseFactory: this.lazyPromiseFactory,
378
378
  });
379
379
  }
380
380
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lock-provider.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock-provider.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-provider.ts"],"names":[],"mappings":"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"}
@@ -106,213 +106,9 @@ export declare class Lock implements ILock {
106
106
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
107
107
  */
108
108
  subscribeMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: EventListener<EventInstance<Items<TEventClassArr>>>): LazyPromise<Unsubscribe>;
109
- /**
110
- * You can pass in a sync function or async function.
111
- * @example
112
- * ```ts
113
- * import { LockProvider } from "@daiso-tech/core/lock";
114
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
115
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
116
- * import { Serde } from "@daiso-tech/core/adapter";
117
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
118
- *
119
- * const lockProvider = new LockProvider({
120
- * adapter: new MemoryLockAdapter(),
121
- * keyPrefixer: new KeyPrefixer("lock"),
122
- * serde: new Serde(new SuperJsonSerdeAdapter())
123
- * });
124
- *
125
- * const lock = lockProvider.create("a");
126
- *
127
- * await lock.run(async () => {
128
- * console.log("START");
129
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
130
- * console.log("END");
131
- * });
132
- * ```
133
- *
134
- * 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>.
135
- * @example
136
- * ```ts
137
- * import { LockProvider } from "@daiso-tech/core/lock";
138
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
139
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
140
- * import { Serde } from "@daiso-tech/core/adapter";
141
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
142
- *
143
- * const lockProvider = new LockProvider({
144
- * adapter: new MemoryLockAdapter(),
145
- * keyPrefixer: new KeyPrefixer("lock"),
146
- * serde: new Serde(new SuperJsonSerdeAdapter())
147
- * });
148
- *
149
- * const lock = lockProvider.create("a");
150
- *
151
- * await lock.run(
152
- * new LazyPromise(async () => {
153
- * console.log("START");
154
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
155
- * console.log("END");
156
- * })
157
- * );
158
- * ```
159
- */
160
109
  run<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
161
- /**
162
- * You can pass in a sync function or async function.
163
- * @example
164
- * ```ts
165
- * import { LockProvider } from "@daiso-tech/core/lock";
166
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
167
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
168
- * import { Serde } from "@daiso-tech/core/adapter";
169
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
170
- *
171
- * const lockProvider = new LockProvider({
172
- * adapter: new MemoryLockAdapter(),
173
- * keyPrefixer: new KeyPrefixer("lock"),
174
- * serde: new Serde(new SuperJsonSerdeAdapter())
175
- * });
176
- *
177
- * const lock = lockProvider.create("a");
178
- *
179
- * await lock.runOrFail(async () => {
180
- * console.log("START");
181
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
182
- * console.log("END");
183
- * });
184
- * ```
185
- *
186
- * 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>.
187
- * @example
188
- * ```ts
189
- * import { LockProvider } from "@daiso-tech/core/lock";
190
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
191
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
192
- * import { Serde } from "@daiso-tech/core/adapter";
193
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
194
- *
195
- * const lockProvider = new LockProvider({
196
- * adapter: new MemoryLockAdapter(),
197
- * keyPrefixer: new KeyPrefixer("lock"),
198
- * serde: new Serde(new SuperJsonSerdeAdapter())
199
- * });
200
- *
201
- * const lock = lockProvider.create("a");
202
- *
203
- * await lock.runOrFail(
204
- * new LazyPromise(async () => {
205
- * console.log("START");
206
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
207
- * console.log("END");
208
- * })
209
- * );
210
- * ```
211
- */
212
110
  runOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<TValue>;
213
- /**
214
- * You can pass in a sync function or async function.
215
- * @example
216
- * ```ts
217
- * import { LockProvider } from "@daiso-tech/core/lock";
218
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
219
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
220
- * import { Serde } from "@daiso-tech/core/adapter";
221
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
222
- *
223
- * const lockProvider = new LockProvider({
224
- * adapter: new MemoryLockAdapter(),
225
- * keyPrefixer: new KeyPrefixer("lock"),
226
- * serde: new Serde(new SuperJsonSerdeAdapter())
227
- * });
228
- *
229
- * const lock = lockProvider.create("a");
230
- *
231
- * await lock.runBlocking(async () => {
232
- * console.log("START");
233
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
234
- * console.log("END");
235
- * });
236
- * ```
237
- *
238
- * 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>.
239
- * @example
240
- * ```ts
241
- * import { LockProvider } from "@daiso-tech/core/lock";
242
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
243
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
244
- * import { Serde } from "@daiso-tech/core/adapter";
245
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
246
- *
247
- * const lockProvider = new LockProvider({
248
- * adapter: new MemoryLockAdapter(),
249
- * keyPrefixer: new KeyPrefixer("lock"),
250
- * serde: new Serde(new SuperJsonSerdeAdapter())
251
- * });
252
- *
253
- * const lock = lockProvider.create("a");
254
- *
255
- * await lock.runBlocking(
256
- * new LazyPromise(async () => {
257
- * console.log("START");
258
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
259
- * console.log("END");
260
- * })
261
- * );
262
- * ```
263
- */
264
111
  runBlocking<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?: AquireBlockingSettings): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
265
- /**
266
- * You can pass in a sync function or async function.
267
- * @example
268
- * ```ts
269
- * import { LockProvider } from "@daiso-tech/core/lock";
270
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
271
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
272
- * import { Serde } from "@daiso-tech/core/adapter";
273
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
274
- *
275
- * const lockProvider = new LockProvider({
276
- * adapter: new MemoryLockAdapter(),
277
- * keyPrefixer: new KeyPrefixer("lock"),
278
- * serde: new Serde(new SuperJsonSerdeAdapter())
279
- * });
280
- *
281
- * const lock = lockProvider.create("a");
282
- *
283
- * await lock.runBlockingOrFail(async () => {
284
- * console.log("START");
285
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
286
- * console.log("END");
287
- * });
288
- * ```
289
- *
290
- * 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>.
291
- * @example
292
- * ```ts
293
- * import { LockProvider } from "@daiso-tech/core/lock";
294
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
295
- * import { KeyPrefixer, TimeSpan, LazyPromise } from "@daiso-tech/core/utilities";
296
- * import { Serde } from "@daiso-tech/core/adapter";
297
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/adapter/adapters";
298
- *
299
- * const lockProvider = new LockProvider({
300
- * adapter: new MemoryLockAdapter(),
301
- * keyPrefixer: new KeyPrefixer("lock"),
302
- * serde: new Serde(new SuperJsonSerdeAdapter())
303
- * });
304
- *
305
- * const lock = lockProvider.create("a");
306
- *
307
- * await lock.runBlockingOrFail(
308
- * new LazyPromise(async () => {
309
- * console.log("START");
310
- * await LazyPromise.delay(TimeSpan.fromSeconds(10));
311
- * console.log("END");
312
- * })
313
- * );
314
- * ```
315
- */
316
112
  runBlockingOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?: AquireBlockingSettings): LazyPromise<TValue>;
317
113
  acquire(): LazyPromise<boolean>;
318
114
  acquireOrFail(): LazyPromise<void>;