@daiso-tech/core 0.32.0 → 0.33.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 (126) hide show
  1. package/dist/async/async.errors.d.ts +14 -0
  2. package/dist/async/async.errors.js +14 -0
  3. package/dist/async/async.errors.js.map +1 -1
  4. package/dist/async/async.events.d.ts +23 -0
  5. package/dist/async/async.events.js +23 -0
  6. package/dist/async/async.events.js.map +1 -1
  7. package/dist/async/backof-policies/_shared.d.ts +1 -1
  8. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +2 -2
  9. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +1 -1
  10. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
  11. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +1 -1
  12. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +2 -2
  13. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +1 -1
  14. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
  15. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +1 -1
  16. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +7 -41
  17. package/dist/async/utilities/lazy-promise/lazy-promise.js +7 -8
  18. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  19. package/dist/cache/contracts/cache-factory.contract.d.ts +3 -3
  20. package/dist/cache/contracts/cache.contract.d.ts +0 -22
  21. package/dist/cache/contracts/cache.errors.d.ts +14 -1
  22. package/dist/cache/contracts/cache.errors.js +14 -1
  23. package/dist/cache/contracts/cache.errors.js.map +1 -1
  24. package/dist/cache/contracts/cache.events.d.ts +28 -14
  25. package/dist/cache/contracts/cache.events.js +28 -3
  26. package/dist/cache/contracts/cache.events.js.map +1 -1
  27. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js +3 -3
  28. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js.map +1 -1
  29. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -1
  30. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  31. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js +3 -3
  32. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js.map +1 -1
  33. package/dist/cache/implementations/derivables/cache/cache.d.ts +9 -139
  34. package/dist/cache/implementations/derivables/cache/cache.js +38 -229
  35. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  36. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +6 -6
  37. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  38. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +2 -2
  39. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +1 -1
  40. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -4
  41. package/dist/cache/implementations/test-utilities/cache.test-suite.js +239 -433
  42. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  43. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +2 -2
  44. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +1 -1
  45. package/dist/collection/contracts/collection.errors.d.ts +17 -0
  46. package/dist/collection/contracts/collection.errors.js +17 -0
  47. package/dist/collection/contracts/collection.errors.js.map +1 -1
  48. package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +3 -3
  49. package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -44
  50. package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
  51. package/dist/event-bus/contracts/event-bus.errors.d.ts +16 -1
  52. package/dist/event-bus/contracts/event-bus.errors.js +16 -1
  53. package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
  54. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +6 -77
  55. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +11 -131
  56. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  57. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +4 -4
  58. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  59. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +2 -2
  60. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +1 -1
  61. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +4 -4
  62. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +691 -1432
  63. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  64. package/dist/lock/contracts/lock-provider-factory.contract.d.ts +3 -3
  65. package/dist/lock/contracts/lock-provider.contract.d.ts +10 -20
  66. package/dist/lock/contracts/lock.contract.d.ts +1 -10
  67. package/dist/lock/contracts/lock.errors.d.ts +18 -0
  68. package/dist/lock/contracts/lock.errors.js +18 -0
  69. package/dist/lock/contracts/lock.errors.js.map +1 -1
  70. package/dist/lock/contracts/lock.events.d.ts +22 -0
  71. package/dist/lock/contracts/lock.events.js +22 -0
  72. package/dist/lock/contracts/lock.events.js.map +1 -1
  73. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +12 -155
  74. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +31 -228
  75. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  76. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +5 -5
  77. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +7 -30
  78. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  79. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +8 -58
  80. package/dist/lock/implementations/derivables/lock-provider/lock.js +33 -105
  81. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  82. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +9 -8
  83. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  84. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +2 -2
  85. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +178 -659
  86. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  87. package/dist/serde/contracts/deserializer.contract.d.ts +1 -1
  88. package/dist/serde/contracts/deserializer.contract.js +1 -1
  89. package/dist/serde/contracts/deserializer.contract.js.map +1 -1
  90. package/dist/serde/contracts/serde.errors.d.ts +14 -2
  91. package/dist/serde/contracts/serde.errors.js +16 -4
  92. package/dist/serde/contracts/serde.errors.js.map +1 -1
  93. package/dist/serde/contracts/serializer.contract.d.ts +1 -1
  94. package/dist/serde/contracts/serializer.contract.js +1 -1
  95. package/dist/serde/contracts/serializer.contract.js.map +1 -1
  96. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js +3 -3
  97. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js.map +1 -1
  98. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js +3 -3
  99. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js.map +1 -1
  100. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js +3 -3
  101. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js.map +1 -1
  102. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +3 -3
  103. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
  104. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +2 -2
  105. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +1 -1
  106. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +2 -2
  107. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +1 -1
  108. package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
  109. package/dist/utilities/classes/key-prefixer/_module.js +0 -1
  110. package/dist/utilities/classes/key-prefixer/_module.js.map +1 -1
  111. package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +2 -11
  112. package/dist/utilities/classes/key-prefixer/key-prefixer.js +4 -46
  113. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
  114. package/dist/utilities/errors.d.ts +2 -0
  115. package/dist/utilities/errors.js +2 -0
  116. package/dist/utilities/errors.js.map +1 -1
  117. package/package.json +3 -4
  118. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.d.ts +0 -15
  119. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js +0 -50
  120. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js.map +0 -1
  121. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.d.ts +0 -23
  122. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js +0 -44
  123. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js.map +0 -1
  124. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.d.ts +0 -28
  125. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js +0 -5
  126. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js.map +0 -1
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { TimeSpan, type AsyncFactoryable, type IKeyPrefixer, type Items, type Factory, type AsyncLazy } from "../../../../utilities/_module-exports.js";
5
- import { type OneOrMore } from "../../../../utilities/_module-exports.js";
4
+ import { TimeSpan, type Factory, type AsyncLazy } from "../../../../utilities/_module-exports.js";
5
+ import { KeyPrefixer, type OneOrMore } from "../../../../utilities/_module-exports.js";
6
6
  import type { IDatabaseLockAdapter, LockEvents } from "../../../../lock/contracts/_module-exports.js";
7
- import { type ILock, type IGroupableLockProvider, type LockProviderCreateSettings, type ILockProvider, type ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
7
+ import { type ILock, type LockProviderCreateSettings, type ILockProvider, type ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
8
8
  import { LazyPromise } from "../../../../async/_module-exports.js";
9
- import type { EventClass, EventInstance, EventListener, IGroupableEventBus, Unsubscribe } from "../../../../event-bus/contracts/_module-exports.js";
9
+ import type { EventClass, EventInstance, EventListener, IEventBus, Unsubscribe } from "../../../../event-bus/contracts/_module-exports.js";
10
10
  import type { IFlexibleSerde } from "../../../../serde/contracts/_module-exports.js";
11
11
  /**
12
12
  *
@@ -14,7 +14,7 @@ import type { IFlexibleSerde } from "../../../../serde/contracts/_module-exports
14
14
  * @group Derivables
15
15
  */
16
16
  export type LockProviderSettingsBase = {
17
- keyPrefixer: IKeyPrefixer;
17
+ keyPrefixer: KeyPrefixer;
18
18
  /**
19
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
20
  * @default
@@ -47,7 +47,7 @@ export type LockProviderSettingsBase = {
47
47
  * })
48
48
  * ```
49
49
  */
50
- eventBus?: IGroupableEventBus<any>;
50
+ eventBus?: IEventBus<any>;
51
51
  /**
52
52
  * You can decide the default ttl value for <i>{@link ILock}</i> expiration. If null is passed then no ttl will be used by default.
53
53
  * @default
@@ -85,14 +85,14 @@ export type LockProviderSettingsBase = {
85
85
  * IMPORT_PATH: ```"@daiso-tech/core/lock"```
86
86
  * @group Derivables
87
87
  */
88
- export type LockAdapterFactoryable = AsyncFactoryable<string, ILockAdapter | IDatabaseLockAdapter>;
88
+ export type LockAdapter = ILockAdapter | IDatabaseLockAdapter;
89
89
  /**
90
90
  *
91
91
  * IMPORT_PATH: ```"@daiso-tech/core/lock"```
92
92
  * @group Derivables
93
93
  */
94
94
  export type LockProviderSettings = LockProviderSettingsBase & {
95
- adapter: LockAdapterFactoryable;
95
+ adapter: LockAdapter;
96
96
  };
97
97
  /**
98
98
  * <i>LockProvider</i> class can be derived from any <i>{@link ILockAdapter}</i> or <i>{@link IDatabaseLockAdapter}</i>.
@@ -104,14 +104,10 @@ export type LockProviderSettings = LockProviderSettingsBase & {
104
104
  * IMPORT_PATH: ```"@daiso-tech/core/lock"```
105
105
  * @group Derivables
106
106
  */
107
- export declare class LockProvider implements IGroupableLockProvider {
108
- private static resolveLockAdapter;
109
- private static resolveLockAdapterFactoryable;
107
+ export declare class LockProvider implements ILockProvider {
110
108
  private lockStore;
111
- private readonly groupableEventBus;
112
109
  private readonly eventBus;
113
- private readonly adapterFactoryable;
114
- private readonly adapterPromise;
110
+ private readonly adapter;
115
111
  private readonly keyPrefixer;
116
112
  private readonly createOwnerId;
117
113
  private readonly defaultTtl;
@@ -120,6 +116,7 @@ export declare class LockProvider implements IGroupableLockProvider {
120
116
  private readonly defaultRefreshTime;
121
117
  private readonly serde;
122
118
  private readonly lazyPromiseFactory;
119
+ private readonly serdeTransformerName;
123
120
  /**
124
121
  * @example
125
122
  * ```ts
@@ -144,94 +141,19 @@ export declare class LockProvider implements IGroupableLockProvider {
144
141
  * adapter: lockAdapter,
145
142
  * });
146
143
  * ```
147
- *
148
- * You can pass factory function that will create an adapter for every group.
149
- * @example
150
- * ```ts
151
- * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
152
- * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
153
- * import { LockProvider } from "@daiso-tech/core/lock";
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";
158
- *
159
- * function lockAdapterFactory(database: ISqliteDatabase): AsyncFactoryFn<string, IDatabaseLockAdapter> {
160
- * return async (prefix) => {
161
- * const lockAdapter = new SqliteLockAdapter({
162
- * database,
163
- * tableName: `lock_${prefix}`,
164
- * });
165
- * // You need initialize the adapter once before using it.
166
- * await lockAdapter.init();
167
- * return lockAdapter;
168
- * }
169
- * }
170
- *
171
- * const database = new Sqlite("local.db");
172
- * const serde = new Serde(new SuperJsonSerdeAdapter());
173
- * const lockProvider = new LockProvider({
174
- * keyPrefixer: new KeyPrefixer("lock"),
175
- * serde,
176
- * adapter: lockAdapterFactory(database),
177
- * });
178
- * ```
179
- *
180
- * You can also pass factory object that implements <i>{@link IFactoryObject}</i> contract. This useful for depedency injection libraries.
181
- * @example
182
- * ```ts
183
- * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
184
- * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
185
- * import { LockProvider } from "@daiso-tech/core/lock";
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";
190
- *
191
- * class LockAdapterFactory implements IAsyncFactoryObject<string, IDatabaseLockAdapter> {
192
- * constructor(private readonly database: ISqliteDatabase) {}
193
- *
194
- * async use(prefix: string): Promise<IDatabaseLockAdapter> {
195
- * const lockAdapter = new SqliteLockAdapter({
196
- * database,
197
- * tableName: `lock_${prefix}`,
198
- * });
199
- * // You need initialize the adapter once before using it.
200
- * await lockAdapter.init();
201
- * return lockAdapter;
202
- * }
203
- * }
204
- *
205
- * const database = new Sqlite("local.db");
206
- * const serde = new Serde(new SuperJsonSerdeAdapter())
207
- * const lockProvider = new LockProvider({
208
- * keyPrefixer: new KeyPrefixer("lock"),
209
- * serde,
210
- * adapter: new LockAdapterFactory(database),
211
- * });
212
- * ```
213
144
  */
214
145
  constructor(settings: LockProviderSettings);
146
+ private registerToSerde;
215
147
  /**
216
148
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
217
149
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
218
150
  */
219
151
  addListener<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: EventListener<EventInstance<TEventClass>>): LazyPromise<void>;
220
- /**
221
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
222
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
223
- */
224
- addListenerMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: EventListener<EventInstance<Items<TEventClassArr>>>): LazyPromise<void>;
225
152
  /**
226
153
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
227
154
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
228
155
  */
229
156
  removeListener<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: EventListener<EventInstance<TEventClass>>): LazyPromise<void>;
230
- /**
231
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
232
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
233
- */
234
- removeListenerMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: EventListener<EventInstance<Items<TEventClassArr>>>): LazyPromise<void>;
235
157
  /**
236
158
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
237
159
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
@@ -252,11 +174,6 @@ export declare class LockProvider implements IGroupableLockProvider {
252
174
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
253
175
  */
254
176
  subscribe<TEventClass extends EventClass<LockEvents>>(event: TEventClass, listener: EventListener<EventInstance<TEventClass>>): LazyPromise<Unsubscribe>;
255
- /**
256
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
257
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
258
- */
259
- subscribeMany<TEventClassArr extends EventClass<LockEvents>[]>(events: [...TEventClassArr], listener: EventListener<EventInstance<Items<TEventClassArr>>>): LazyPromise<Unsubscribe>;
260
177
  private createLazyPromise;
261
178
  /**
262
179
  * @example
@@ -277,64 +194,4 @@ export declare class LockProvider implements IGroupableLockProvider {
277
194
  * ```
278
195
  */
279
196
  create(key: OneOrMore<string>, settings?: LockProviderCreateSettings): ILock;
280
- /**
281
- * @example
282
- * ```ts
283
- * import { LockProvider } from "@daiso-tech/core/lock";
284
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
285
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
286
- * import { Serde } from "@daiso-tech/core/serde";
287
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
288
- *
289
- * const serde = new Serde(new SuperJsonSerdeAdapter());
290
- * const lockProvider = new LockProvider({
291
- * adapter: new MemoryLockAdapter(),
292
- * keyPrefixer: new KeyPrefixer("lock"),
293
- * serde,
294
- * });
295
- *
296
- * // Will log null because the lockProvider is not in a group
297
- * console.log(lockProvider.getGroup());
298
- *
299
- * const groupedLockProvider = lockProvider.withGroup("group-a");
300
- *
301
- * // Will log "group-a" because the groupedLockProvider is in a group
302
- * console.log(groupedLockProvider.getGroup());
303
- * ```
304
- */
305
- getGroup(): string | null;
306
- /**
307
- * @example
308
- * ```ts
309
- * import { LockProvider } from "@daiso-tech/core/lock";
310
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
311
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
312
- * import { Serde } from "@daiso-tech/core/serde";
313
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
314
- *
315
- * const serde = new Serde(new SuperJsonSerdeAdapter());
316
- * const lockProvider = new LockProvider({
317
- * adapter: new MemoryLockAdapter(),
318
- * keyPrefixer: new KeyPrefixer("lock"),
319
- * serde,
320
- * });
321
- *
322
- * const groupedLockProvider = lockProvider.withGroup("group-a");
323
- *
324
- * // Will log true because they are in different groups.
325
- * console.log(
326
- * await lockProvider
327
- * .create("a")
328
- * .acquire()
329
- * );
330
- *
331
- * // Will log true because the lockProviders are in different groups.
332
- * console.log(
333
- * await groupedLockProvider
334
- * .create("a")
335
- * .acquire()
336
- * );
337
- * ```
338
- */
339
- withGroup(group: OneOrMore<string>): ILockProvider;
340
197
  }
@@ -1,17 +1,17 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { resolveOneOrMore, TimeSpan, CORE, resolveAsyncFactoryable, resolveFactory, } from "../../../../utilities/_module-exports.js";
4
+ import { TimeSpan, CORE, resolveFactory, resolveOneOrMore, } from "../../../../utilities/_module-exports.js";
5
5
  import { KeyPrefixer } from "../../../../utilities/_module-exports.js";
6
6
  import {} from "../../../../lock/contracts/_module-exports.js";
7
7
  import { LazyPromise } from "../../../../async/_module-exports.js";
8
- import { isDatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/is-database-lock-adapter.js";
9
- import { DatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/database-lock-adapter.js";
10
8
  import { EventBus } from "../../../../event-bus/implementations/derivables/_module-exports.js";
11
9
  import { MemoryEventBusAdapter } from "../../../../event-bus/implementations/adapters/_module-exports.js";
12
10
  import { v4 } from "uuid";
13
11
  import { Lock } from "../../../../lock/implementations/derivables/lock-provider/lock.js";
14
12
  import { LockState, } from "../../../../lock/implementations/derivables/lock-provider/lock-state.js";
13
+ import { isDatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/is-database-lock-adapter.js";
14
+ import { DatabaseLockAdapter } from "../../../../lock/implementations/derivables/lock-provider/database-lock-adapter.js";
15
15
  import { LockSerdeTransformer } from "../../../../lock/implementations/derivables/lock-provider/lock-serde-transformer.js";
16
16
  /**
17
17
  * <i>LockProvider</i> class can be derived from any <i>{@link ILockAdapter}</i> or <i>{@link IDatabaseLockAdapter}</i>.
@@ -24,37 +24,9 @@ import { LockSerdeTransformer } from "../../../../lock/implementations/derivable
24
24
  * @group Derivables
25
25
  */
26
26
  export class LockProvider {
27
- static resolveLockAdapter(adapter) {
28
- if (isDatabaseLockAdapter(adapter)) {
29
- return new DatabaseLockAdapter(adapter);
30
- }
31
- return adapter;
32
- }
33
- static async resolveLockAdapterFactoryable(factoryable, settings) {
34
- const { serdeTransformerName, serde, lockStore, keyPrefixer, createLazyPromise, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, groupableEventBus, } = settings;
35
- const adapter = await resolveAsyncFactoryable(factoryable, keyPrefixer.keyPrefix);
36
- const resolvedAdapter = LockProvider.resolveLockAdapter(adapter);
37
- const transformer = new LockSerdeTransformer({
38
- keyPrefixer,
39
- adapter: resolvedAdapter,
40
- createLazyPromise,
41
- lockStore,
42
- defaultBlockingInterval,
43
- defaultBlockingTime,
44
- defaultRefreshTime,
45
- groupableEventBus,
46
- serdeTransformerName,
47
- });
48
- for (const serde_ of resolveOneOrMore(serde)) {
49
- serde_.registerCustom(transformer, CORE);
50
- }
51
- return resolvedAdapter;
52
- }
53
27
  lockStore = {};
54
- groupableEventBus;
55
28
  eventBus;
56
- adapterFactoryable;
57
- adapterPromise;
29
+ adapter;
58
30
  keyPrefixer;
59
31
  createOwnerId;
60
32
  defaultTtl;
@@ -63,6 +35,7 @@ export class LockProvider {
63
35
  defaultRefreshTime;
64
36
  serde;
65
37
  lazyPromiseFactory;
38
+ serdeTransformerName;
66
39
  /**
67
40
  * @example
68
41
  * ```ts
@@ -87,75 +60,9 @@ export class LockProvider {
87
60
  * adapter: lockAdapter,
88
61
  * });
89
62
  * ```
90
- *
91
- * You can pass factory function that will create an adapter for every group.
92
- * @example
93
- * ```ts
94
- * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
95
- * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
96
- * import { LockProvider } from "@daiso-tech/core/lock";
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";
101
- *
102
- * function lockAdapterFactory(database: ISqliteDatabase): AsyncFactoryFn<string, IDatabaseLockAdapter> {
103
- * return async (prefix) => {
104
- * const lockAdapter = new SqliteLockAdapter({
105
- * database,
106
- * tableName: `lock_${prefix}`,
107
- * });
108
- * // You need initialize the adapter once before using it.
109
- * await lockAdapter.init();
110
- * return lockAdapter;
111
- * }
112
- * }
113
- *
114
- * const database = new Sqlite("local.db");
115
- * const serde = new Serde(new SuperJsonSerdeAdapter());
116
- * const lockProvider = new LockProvider({
117
- * keyPrefixer: new KeyPrefixer("lock"),
118
- * serde,
119
- * adapter: lockAdapterFactory(database),
120
- * });
121
- * ```
122
- *
123
- * You can also pass factory object that implements <i>{@link IFactoryObject}</i> contract. This useful for depedency injection libraries.
124
- * @example
125
- * ```ts
126
- * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
127
- * import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
128
- * import { LockProvider } from "@daiso-tech/core/lock";
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";
133
- *
134
- * class LockAdapterFactory implements IAsyncFactoryObject<string, IDatabaseLockAdapter> {
135
- * constructor(private readonly database: ISqliteDatabase) {}
136
- *
137
- * async use(prefix: string): Promise<IDatabaseLockAdapter> {
138
- * const lockAdapter = new SqliteLockAdapter({
139
- * database,
140
- * tableName: `lock_${prefix}`,
141
- * });
142
- * // You need initialize the adapter once before using it.
143
- * await lockAdapter.init();
144
- * return lockAdapter;
145
- * }
146
- * }
147
- *
148
- * const database = new Sqlite("local.db");
149
- * const serde = new Serde(new SuperJsonSerdeAdapter())
150
- * const lockProvider = new LockProvider({
151
- * keyPrefixer: new KeyPrefixer("lock"),
152
- * serde,
153
- * adapter: new LockAdapterFactory(database),
154
- * });
155
- * ```
156
63
  */
157
64
  constructor(settings) {
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({
65
+ const { defaultTtl = TimeSpan.fromMinutes(5), defaultBlockingInterval = TimeSpan.fromSeconds(1), defaultBlockingTime = TimeSpan.fromMinutes(1), defaultRefreshTime = TimeSpan.fromMinutes(5), createOwnerId = () => v4(), serde, keyPrefixer, adapter, eventBus = new EventBus({
159
66
  keyPrefixer: new KeyPrefixer("events"),
160
67
  adapter: new MemoryEventBusAdapter(),
161
68
  }), serdeTransformerName = "", lazyPromiseFactory = (invokable) => new LazyPromise(invokable), } = settings;
@@ -165,28 +72,33 @@ export class LockProvider {
165
72
  this.defaultRefreshTime = defaultRefreshTime;
166
73
  this.createOwnerId = createOwnerId;
167
74
  this.keyPrefixer = keyPrefixer;
168
- this.groupableEventBus = groupableEventBus;
169
- this.adapterFactoryable = adapter;
170
75
  this.defaultTtl = defaultTtl;
171
- this.eventBus = this.eventBus = this.groupableEventBus.withGroup(this.keyPrefixer.resolvedRootPrefix);
76
+ this.eventBus = eventBus;
172
77
  this.lazyPromiseFactory = resolveFactory(lazyPromiseFactory);
173
- if (this.keyPrefixer.resolvedGroup) {
174
- this.eventBus = this.groupableEventBus.withGroup([
175
- this.keyPrefixer.resolvedRootPrefix,
176
- this.keyPrefixer.resolvedGroup,
177
- ]);
78
+ this.serdeTransformerName = serdeTransformerName;
79
+ if (isDatabaseLockAdapter(adapter)) {
80
+ this.adapter = new DatabaseLockAdapter(adapter);
178
81
  }
179
- this.adapterPromise = new LazyPromise(async () => LockProvider.resolveLockAdapterFactoryable(this.adapterFactoryable, {
180
- serde,
181
- lockStore: this.lockStore,
182
- keyPrefixer,
82
+ else {
83
+ this.adapter = adapter;
84
+ }
85
+ this.registerToSerde();
86
+ }
87
+ registerToSerde() {
88
+ const transformer = new LockSerdeTransformer({
89
+ adapter: this.adapter,
183
90
  createLazyPromise: this.createLazyPromise.bind(this),
184
- defaultBlockingInterval,
185
- defaultBlockingTime,
186
- defaultRefreshTime,
187
- groupableEventBus,
188
- serdeTransformerName,
189
- }));
91
+ defaultBlockingInterval: this.defaultBlockingInterval,
92
+ defaultBlockingTime: this.defaultBlockingTime,
93
+ defaultRefreshTime: this.defaultRefreshTime,
94
+ eventBus: this.eventBus,
95
+ keyPrefixer: this.keyPrefixer,
96
+ lockStore: this.lockStore,
97
+ serdeTransformerName: this.serdeTransformerName,
98
+ });
99
+ for (const serde of resolveOneOrMore(this.serde)) {
100
+ serde.registerCustom(transformer, CORE);
101
+ }
190
102
  }
191
103
  /**
192
104
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
@@ -195,13 +107,6 @@ export class LockProvider {
195
107
  addListener(event, listener) {
196
108
  return this.eventBus.addListener(event, listener);
197
109
  }
198
- /**
199
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
200
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
201
- */
202
- addListenerMany(events, listener) {
203
- return this.eventBus.addListenerMany(events, listener);
204
- }
205
110
  /**
206
111
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
207
112
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
@@ -209,13 +114,6 @@ export class LockProvider {
209
114
  removeListener(event, listener) {
210
115
  return this.eventBus.removeListener(event, listener);
211
116
  }
212
- /**
213
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
214
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
215
- */
216
- removeListenerMany(events, listener) {
217
- return this.eventBus.removeListenerMany(events, listener);
218
- }
219
117
  /**
220
118
  * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
221
119
  * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
@@ -244,13 +142,6 @@ export class LockProvider {
244
142
  subscribe(event, listener) {
245
143
  return this.eventBus.subscribe(event, listener);
246
144
  }
247
- /**
248
- * You can listen to the following <i>{@link LockEvents}</i> of all <i>{@link ILock}</i> instances created by the <i>{@link ILockProvider}</i>.
249
- * To understand how this method works, refer to <i>{@link IEventListenable}</i>.
250
- */
251
- subscribeMany(events, listener) {
252
- return this.eventBus.subscribeMany(events, listener);
253
- }
254
145
  createLazyPromise(asyncFn) {
255
146
  return new LazyPromise(asyncFn);
256
147
  }
@@ -275,24 +166,11 @@ export class LockProvider {
275
166
  create(key, settings = {}) {
276
167
  const { ttl = this.defaultTtl, owner = this.createOwnerId() } = settings;
277
168
  const keyObj = this.keyPrefixer.create(key);
278
- let lockEventBus = this.groupableEventBus.withGroup([
279
- this.keyPrefixer.resolvedRootPrefix,
280
- keyObj.resolved,
281
- ]);
282
- if (this.keyPrefixer.resolvedGroup) {
283
- lockEventBus = this.groupableEventBus.withGroup([
284
- this.keyPrefixer.resolvedRootPrefix,
285
- this.keyPrefixer.resolvedGroup,
286
- keyObj.resolved,
287
- ]);
288
- }
289
169
  return new Lock({
290
- adapterPromise: this.adapterPromise,
291
- group: this.keyPrefixer.resolvedGroup,
170
+ adapter: this.adapter,
292
171
  createLazyPromise: this.createLazyPromise.bind(this),
293
172
  lockState: new LockState(this.lockStore, keyObj.prefixed),
294
- lockEventBus: lockEventBus,
295
- lockProviderEventDispatcher: this.eventBus,
173
+ eventDispatcher: this.eventBus,
296
174
  key: keyObj,
297
175
  owner,
298
176
  ttl,
@@ -302,80 +180,5 @@ export class LockProvider {
302
180
  defaultRefreshTime: this.defaultRefreshTime,
303
181
  });
304
182
  }
305
- /**
306
- * @example
307
- * ```ts
308
- * import { LockProvider } from "@daiso-tech/core/lock";
309
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
310
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
311
- * import { Serde } from "@daiso-tech/core/serde";
312
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
313
- *
314
- * const serde = new Serde(new SuperJsonSerdeAdapter());
315
- * const lockProvider = new LockProvider({
316
- * adapter: new MemoryLockAdapter(),
317
- * keyPrefixer: new KeyPrefixer("lock"),
318
- * serde,
319
- * });
320
- *
321
- * // Will log null because the lockProvider is not in a group
322
- * console.log(lockProvider.getGroup());
323
- *
324
- * const groupedLockProvider = lockProvider.withGroup("group-a");
325
- *
326
- * // Will log "group-a" because the groupedLockProvider is in a group
327
- * console.log(groupedLockProvider.getGroup());
328
- * ```
329
- */
330
- getGroup() {
331
- return this.keyPrefixer.resolvedGroup;
332
- }
333
- /**
334
- * @example
335
- * ```ts
336
- * import { LockProvider } from "@daiso-tech/core/lock";
337
- * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
338
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
339
- * import { Serde } from "@daiso-tech/core/serde";
340
- * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
341
- *
342
- * const serde = new Serde(new SuperJsonSerdeAdapter());
343
- * const lockProvider = new LockProvider({
344
- * adapter: new MemoryLockAdapter(),
345
- * keyPrefixer: new KeyPrefixer("lock"),
346
- * serde,
347
- * });
348
- *
349
- * const groupedLockProvider = lockProvider.withGroup("group-a");
350
- *
351
- * // Will log true because they are in different groups.
352
- * console.log(
353
- * await lockProvider
354
- * .create("a")
355
- * .acquire()
356
- * );
357
- *
358
- * // Will log true because the lockProviders are in different groups.
359
- * console.log(
360
- * await groupedLockProvider
361
- * .create("a")
362
- * .acquire()
363
- * );
364
- * ```
365
- */
366
- withGroup(group) {
367
- return new LockProvider({
368
- adapter: this.adapterFactoryable,
369
- keyPrefixer: this.keyPrefixer.withGroup(group),
370
- serde: this.serde,
371
- createOwnerId: this.createOwnerId,
372
- eventBus: this.groupableEventBus,
373
- defaultTtl: this.defaultTtl,
374
- defaultBlockingInterval: this.defaultBlockingInterval,
375
- defaultBlockingTime: this.defaultBlockingTime,
376
- defaultRefreshTime: this.defaultRefreshTime,
377
- lazyPromiseFactory: this.lazyPromiseFactory,
378
- });
379
- }
380
183
  }
381
184
  //# sourceMappingURL=lock-provider.js.map
@@ -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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"}
@@ -6,21 +6,21 @@ import { Lock, type ISerializedLock } from "../../../../lock/implementations/der
6
6
  import type { OneOrMore } from "../../../../utilities/_module-exports.js";
7
7
  import type { ILockAdapter, LockEvents } from "../../../../lock/contracts/_module-exports.js";
8
8
  import { type ILockStore } from "../../../../lock/implementations/derivables/lock-provider/lock-state.js";
9
- import { TimeSpan, type IKeyPrefixer } from "../../../../utilities/_module-exports.js";
9
+ import { TimeSpan, type KeyPrefixer } from "../../../../utilities/_module-exports.js";
10
10
  import type { LazyPromise } from "../../../../async/_module-exports.js";
11
- import type { IGroupableEventBus } from "../../../../event-bus/contracts/_module-exports.js";
11
+ import type { IEventBus } from "../../../../event-bus/contracts/_module-exports.js";
12
12
  /**
13
13
  * @internal
14
14
  */
15
15
  export type LockSerdeTransformerSettings = {
16
16
  adapter: ILockAdapter;
17
17
  lockStore: ILockStore;
18
- keyPrefixer: IKeyPrefixer;
18
+ keyPrefixer: KeyPrefixer;
19
19
  createLazyPromise: <TValue = void>(asyncFn: () => PromiseLike<TValue>) => LazyPromise<TValue>;
20
20
  defaultBlockingInterval: TimeSpan;
21
21
  defaultBlockingTime: TimeSpan;
22
22
  defaultRefreshTime: TimeSpan;
23
- groupableEventBus: IGroupableEventBus<LockEvents>;
23
+ eventBus: IEventBus<LockEvents>;
24
24
  serdeTransformerName: string;
25
25
  };
26
26
  /**
@@ -34,7 +34,7 @@ export declare class LockSerdeTransformer implements ISerdeTransformer<Lock, ISe
34
34
  private readonly defaultBlockingInterval;
35
35
  private readonly defaultBlockingTime;
36
36
  private readonly defaultRefreshTime;
37
- private readonly groupableEventBus;
37
+ private readonly eventBus;
38
38
  private readonly serdeTransformerName;
39
39
  constructor(settings: LockSerdeTransformerSettings);
40
40
  get name(): OneOrMore<string>;