@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.
- package/dist/async/async.errors.d.ts +14 -0
- package/dist/async/async.errors.js +14 -0
- package/dist/async/async.errors.js.map +1 -1
- package/dist/async/async.events.d.ts +23 -0
- package/dist/async/async.events.js +23 -0
- package/dist/async/async.events.js.map +1 -1
- package/dist/async/backof-policies/_shared.d.ts +1 -1
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +1 -1
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +1 -1
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +1 -1
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +1 -1
- package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +7 -41
- package/dist/async/utilities/lazy-promise/lazy-promise.js +7 -8
- package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/cache/contracts/cache-factory.contract.d.ts +3 -3
- package/dist/cache/contracts/cache.contract.d.ts +0 -22
- package/dist/cache/contracts/cache.errors.d.ts +14 -1
- package/dist/cache/contracts/cache.errors.js +14 -1
- package/dist/cache/contracts/cache.errors.js.map +1 -1
- package/dist/cache/contracts/cache.events.d.ts +28 -14
- package/dist/cache/contracts/cache.events.js +28 -3
- package/dist/cache/contracts/cache.events.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js +3 -3
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js +3 -3
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +9 -139
- package/dist/cache/implementations/derivables/cache/cache.js +38 -229
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +6 -6
- package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
- package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +2 -2
- package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +1 -1
- package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -4
- package/dist/cache/implementations/test-utilities/cache.test-suite.js +239 -433
- package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +2 -2
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +1 -1
- package/dist/collection/contracts/collection.errors.d.ts +17 -0
- package/dist/collection/contracts/collection.errors.js +17 -0
- package/dist/collection/contracts/collection.errors.js.map +1 -1
- package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +3 -3
- package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -44
- package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
- package/dist/event-bus/contracts/event-bus.errors.d.ts +16 -1
- package/dist/event-bus/contracts/event-bus.errors.js +16 -1
- package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +6 -77
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +11 -131
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +4 -4
- package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +2 -2
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +4 -4
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +691 -1432
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
- package/dist/lock/contracts/lock-provider-factory.contract.d.ts +3 -3
- package/dist/lock/contracts/lock-provider.contract.d.ts +10 -20
- package/dist/lock/contracts/lock.contract.d.ts +1 -10
- package/dist/lock/contracts/lock.errors.d.ts +18 -0
- package/dist/lock/contracts/lock.errors.js +18 -0
- package/dist/lock/contracts/lock.errors.js.map +1 -1
- package/dist/lock/contracts/lock.events.d.ts +22 -0
- package/dist/lock/contracts/lock.events.js +22 -0
- package/dist/lock/contracts/lock.events.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +12 -155
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +31 -228
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +5 -5
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +7 -30
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +8 -58
- package/dist/lock/implementations/derivables/lock-provider/lock.js +33 -105
- package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +9 -8
- package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +2 -2
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +178 -659
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/serde/contracts/deserializer.contract.d.ts +1 -1
- package/dist/serde/contracts/deserializer.contract.js +1 -1
- package/dist/serde/contracts/deserializer.contract.js.map +1 -1
- package/dist/serde/contracts/serde.errors.d.ts +14 -2
- package/dist/serde/contracts/serde.errors.js +16 -4
- package/dist/serde/contracts/serde.errors.js.map +1 -1
- package/dist/serde/contracts/serializer.contract.d.ts +1 -1
- package/dist/serde/contracts/serializer.contract.js +1 -1
- package/dist/serde/contracts/serializer.contract.js.map +1 -1
- package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js +3 -3
- package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/redis-serde/redis-serde.js +3 -3
- package/dist/serde/implementations/adapters/redis-serde/redis-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/sql-serde/sql-serde.js +3 -3
- package/dist/serde/implementations/adapters/sql-serde/sql-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +3 -3
- package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
- package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +2 -2
- package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +1 -1
- package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +2 -2
- package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +1 -1
- package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
- package/dist/utilities/classes/key-prefixer/_module.js +0 -1
- package/dist/utilities/classes/key-prefixer/_module.js.map +1 -1
- package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +2 -11
- package/dist/utilities/classes/key-prefixer/key-prefixer.js +4 -46
- package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
- package/dist/utilities/errors.d.ts +2 -0
- package/dist/utilities/errors.js +2 -0
- package/dist/utilities/errors.js.map +1 -1
- package/package.json +3 -4
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.d.ts +0 -15
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js +0 -50
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js.map +0 -1
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.d.ts +0 -23
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js +0 -44
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js.map +0 -1
- package/dist/utilities/classes/key-prefixer/key-prefixer.contract.d.ts +0 -28
- package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js +0 -5
- 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
|
|
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
|
|
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,
|
|
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:
|
|
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?:
|
|
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
|
|
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:
|
|
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
|
|
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
|
|
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 {
|
|
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
|
-
|
|
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
|
|
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 =
|
|
76
|
+
this.eventBus = eventBus;
|
|
172
77
|
this.lazyPromiseFactory = resolveFactory(lazyPromiseFactory);
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
this.keyPrefixer.resolvedGroup,
|
|
177
|
-
]);
|
|
78
|
+
this.serdeTransformerName = serdeTransformerName;
|
|
79
|
+
if (isDatabaseLockAdapter(adapter)) {
|
|
80
|
+
this.adapter = new DatabaseLockAdapter(adapter);
|
|
178
81
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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
|
-
|
|
188
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EACH,
|
|
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
|
|
9
|
+
import { TimeSpan, type KeyPrefixer } from "../../../../utilities/_module-exports.js";
|
|
10
10
|
import type { LazyPromise } from "../../../../async/_module-exports.js";
|
|
11
|
-
import type {
|
|
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:
|
|
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
|
-
|
|
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
|
|
37
|
+
private readonly eventBus;
|
|
38
38
|
private readonly serdeTransformerName;
|
|
39
39
|
constructor(settings: LockSerdeTransformerSettings);
|
|
40
40
|
get name(): OneOrMore<string>;
|