@daiso-tech/core 0.46.0 → 0.48.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/cache/contracts/cache-adapter.contract.d.ts +1 -1
- package/dist/cache/contracts/cache.contract.d.ts +3 -1
- package/dist/cache/contracts/cache.events.d.ts +1 -1
- package/dist/cache/contracts/database-cache-adapter.contract.d.ts +1 -1
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +11 -2
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +8 -8
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +3 -32
- package/dist/cache/implementations/derivables/cache/cache.js +2 -41
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/database-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/derivables/cache/database-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/test-utilities/cache.test-suite.js +38 -38
- package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +8 -4
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js.map +1 -1
- package/dist/circuit-breaker/contracts/circuit-breaker-provider.contract.d.ts +3 -1
- package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.d.ts +11 -0
- package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js +13 -3
- package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js.map +1 -1
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.d.ts +6 -0
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js +14 -2
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js.map +1 -1
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.d.ts +3 -9
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.js +2 -18
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.js.map +1 -1
- package/dist/circuit-breaker/implementations/policies/sampling-breaker/sampling-breaker.d.ts +1 -1
- package/dist/collection/contracts/async-collection.contract.d.ts +1 -1
- package/dist/collection/contracts/collection.contract.d.ts +2 -2
- package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/chunk-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/chunk-while-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/partion-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +1 -1
- package/dist/collection/implementations/list-collection/list-collection.d.ts +1 -1
- package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/hooks/async-hooks.d.ts +9 -11
- package/dist/hooks/hooks.d.ts +5 -5
- package/dist/lock/contracts/lock-provider.contract.d.ts +3 -1
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +11 -0
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +18 -14
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +3 -33
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +2 -42
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +58 -58
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/namespace/implementations/namespace.d.ts +1 -1
- package/dist/rate-limiter/contracts/rate-limiter-provider.contract.d.ts +3 -1
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.d.ts +11 -0
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js +13 -3
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js.map +1 -1
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.d.ts +6 -0
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js +14 -2
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js.map +1 -1
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.d.ts +3 -9
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.js +2 -18
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.js.map +1 -1
- package/dist/resilience/middlewares/dynamic/dynamic.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/fallback/fallback.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/fallback/fallback.types.d.ts +4 -4
- package/dist/resilience/middlewares/observe/observe.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/observe/observe.types.d.ts +7 -7
- package/dist/resilience/middlewares/retry/retry.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/retry/retry.middleware.js.map +1 -1
- package/dist/resilience/middlewares/retry/retry.types.d.ts +6 -6
- package/dist/resilience/middlewares/timeout/timeout.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/timeout/timeout.type.d.ts +4 -4
- package/dist/resilience/resilience.errors.d.ts +1 -1
- package/dist/resilience/resilience.errors.js.map +1 -1
- package/dist/semaphore/contracts/database-semaphore-adapter.contract.d.ts +2 -2
- package/dist/semaphore/contracts/semaphore-provider.contract.d.ts +3 -1
- package/dist/semaphore/contracts/semaphore-state.contract.d.ts +3 -3
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.d.ts +12 -1
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js +18 -14
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js.map +1 -1
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.d.ts +3 -33
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.js +2 -42
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.js.map +1 -1
- package/dist/semaphore/implementations/test-utilities/database-semaphore-adapter.test-suite.js.map +1 -1
- package/dist/semaphore/implementations/test-utilities/semaphore-provider.test-suite.js +57 -57
- package/dist/semaphore/implementations/test-utilities/semaphore-provider.test-suite.js.map +1 -1
- package/dist/serde/contracts/flexible-serde.contract.d.ts +1 -1
- package/dist/shared-lock/contracts/database-shared-lock-adapter.contract.d.ts +2 -2
- package/dist/shared-lock/contracts/shared-lock-provider.contract.d.ts +3 -1
- package/dist/shared-lock/contracts/shared-lock-state.contract.d.ts +3 -3
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.d.ts +11 -0
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js +16 -6
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js.map +1 -1
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.d.ts +3 -33
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.js +2 -42
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.js.map +1 -1
- package/dist/shared-lock/implementations/test-utilities/database-shared-lock-adapter.test-suite.js.map +1 -1
- package/dist/shared-lock/implementations/test-utilities/shared-lock-provider.test-suite.js +117 -117
- package/dist/shared-lock/implementations/test-utilities/shared-lock-provider.test-suite.js.map +1 -1
- package/dist/task/implementations/task.d.ts +9 -9
- package/dist/task/implementations/task.js.map +1 -1
- package/dist/utilities/contracts/sqlite-database.contract.d.ts +1 -1
- package/dist/utilities/functions/invokable.d.ts +9 -9
- package/dist/utilities/functions/invokable.js.map +1 -1
- package/dist/utilities/functions/resolve-one-or-more.d.ts +1 -1
- package/dist/utilities/types/any-class.type.d.ts +1 -1
- package/dist/utilities/types/none-func.type.d.ts +1 -1
- package/package.json +1 -1
|
@@ -45,4 +45,6 @@ export type ILockProviderBase = {
|
|
|
45
45
|
* IMPORT_PATH: `"@daiso-tech/core/lock/contracts"`
|
|
46
46
|
* @group Contracts
|
|
47
47
|
*/
|
|
48
|
-
export type ILockProvider =
|
|
48
|
+
export type ILockProvider = ILockProviderBase & {
|
|
49
|
+
readonly events: ILockListenable;
|
|
50
|
+
};
|
|
@@ -43,6 +43,15 @@ export type KyselyLockAdapterSettings = {
|
|
|
43
43
|
* @default true
|
|
44
44
|
*/
|
|
45
45
|
shouldRemoveExpiredKeys?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @default
|
|
48
|
+
* ```ts
|
|
49
|
+
* import { Transaction } from "kysely"
|
|
50
|
+
*
|
|
51
|
+
* !(settings.kysely instanceof Transaction)
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
enableTransactions?: boolean;
|
|
46
55
|
};
|
|
47
56
|
/**
|
|
48
57
|
* To utilize the `KyselyLockAdapter`, you must install the [`"kysely"`](https://www.npmjs.com/package/kysely) package and configure a `Kysely` class instance.
|
|
@@ -59,6 +68,7 @@ export declare class KyselyLockAdapter implements IDatabaseLockAdapter, IDeiniti
|
|
|
59
68
|
private readonly shouldRemoveExpiredKeys;
|
|
60
69
|
private intervalId;
|
|
61
70
|
private readonly isMysql;
|
|
71
|
+
private readonly enableTransactions;
|
|
62
72
|
/**
|
|
63
73
|
* @example
|
|
64
74
|
* ```ts
|
|
@@ -78,6 +88,7 @@ export declare class KyselyLockAdapter implements IDatabaseLockAdapter, IDeiniti
|
|
|
78
88
|
* ```
|
|
79
89
|
*/
|
|
80
90
|
constructor(settings: KyselyLockAdapterSettings);
|
|
91
|
+
private _transaction;
|
|
81
92
|
/**
|
|
82
93
|
* Removes all related lock tables and their rows.
|
|
83
94
|
* Note all lock data will be removed.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import { MysqlAdapter } from "kysely";
|
|
4
|
+
import { MysqlAdapter, Transaction } from "kysely";
|
|
5
5
|
import {} from "../../../../lock/contracts/_module.js";
|
|
6
6
|
import {} from "../../../../time-span/contracts/_module.js";
|
|
7
7
|
import { TimeSpan } from "../../../../time-span/implementations/_module.js";
|
|
@@ -77,6 +77,7 @@ export class KyselyLockAdapter {
|
|
|
77
77
|
shouldRemoveExpiredKeys;
|
|
78
78
|
intervalId = null;
|
|
79
79
|
isMysql;
|
|
80
|
+
enableTransactions;
|
|
80
81
|
/**
|
|
81
82
|
* @example
|
|
82
83
|
* ```ts
|
|
@@ -96,12 +97,24 @@ export class KyselyLockAdapter {
|
|
|
96
97
|
* ```
|
|
97
98
|
*/
|
|
98
99
|
constructor(settings) {
|
|
99
|
-
const { kysely, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, } = settings;
|
|
100
|
+
const { kysely, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, enableTransactions = !(settings.kysely instanceof Transaction), } = settings;
|
|
100
101
|
this.expiredKeysRemovalInterval = TimeSpan.fromTimeSpan(expiredKeysRemovalInterval);
|
|
101
102
|
this.shouldRemoveExpiredKeys = shouldRemoveExpiredKeys;
|
|
102
103
|
this.kysely = kysely;
|
|
103
104
|
this.isMysql =
|
|
104
105
|
this.kysely.getExecutor().adapter instanceof MysqlAdapter;
|
|
106
|
+
this.enableTransactions = enableTransactions;
|
|
107
|
+
}
|
|
108
|
+
_transaction(trxFn) {
|
|
109
|
+
if (this.enableTransactions) {
|
|
110
|
+
return this.kysely
|
|
111
|
+
.transaction()
|
|
112
|
+
.setIsolationLevel("serializable")
|
|
113
|
+
.execute(async (trx) => {
|
|
114
|
+
return await trxFn(trx);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return trxFn(this.kysely);
|
|
105
118
|
}
|
|
106
119
|
/**
|
|
107
120
|
* Removes all related lock tables and their rows.
|
|
@@ -170,20 +183,14 @@ export class KyselyLockAdapter {
|
|
|
170
183
|
.execute();
|
|
171
184
|
}
|
|
172
185
|
async transaction(fn) {
|
|
173
|
-
return await this.
|
|
174
|
-
.transaction()
|
|
175
|
-
.setIsolationLevel("serializable")
|
|
176
|
-
.execute(async (trx) => {
|
|
186
|
+
return await this._transaction(async (trx) => {
|
|
177
187
|
return await fn(new DatabaseLockTransaction(trx));
|
|
178
188
|
});
|
|
179
189
|
}
|
|
180
190
|
async remove(key) {
|
|
181
191
|
let result;
|
|
182
192
|
if (this.isMysql) {
|
|
183
|
-
result = await this.
|
|
184
|
-
.transaction()
|
|
185
|
-
.setIsolationLevel("serializable")
|
|
186
|
-
.execute(async (trx) => {
|
|
193
|
+
result = await this._transaction(async (trx) => {
|
|
187
194
|
const row = await trx
|
|
188
195
|
.selectFrom("lock")
|
|
189
196
|
.where("lock.key", "=", key)
|
|
@@ -218,10 +225,7 @@ export class KyselyLockAdapter {
|
|
|
218
225
|
async removeIfOwner(key, lockId) {
|
|
219
226
|
let row;
|
|
220
227
|
if (this.isMysql) {
|
|
221
|
-
row = await this.
|
|
222
|
-
.transaction()
|
|
223
|
-
.setIsolationLevel("serializable")
|
|
224
|
-
.execute(async (trx) => {
|
|
228
|
+
row = await this._transaction(async (trx) => {
|
|
225
229
|
const row = await trx
|
|
226
230
|
.selectFrom("lock")
|
|
227
231
|
.where("lock.key", "=", key)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAe,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"kysely-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import { type
|
|
5
|
-
import { type ILock, type LockProviderCreateSettings, type ILockProvider, type LockAdapterVariants, type
|
|
4
|
+
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
|
|
5
|
+
import { type ILock, type LockProviderCreateSettings, type ILockProvider, type LockAdapterVariants, type ILockListenable } from "../../../../lock/contracts/_module.js";
|
|
6
6
|
import { type INamespace } from "../../../../namespace/contracts/_module.js";
|
|
7
7
|
import { type ISerderRegister } from "../../../../serde/contracts/_module.js";
|
|
8
|
-
import { type ITask } from "../../../../task/contracts/_module.js";
|
|
9
8
|
import { type ITimeSpan } from "../../../../time-span/contracts/_module.js";
|
|
10
9
|
import { type OneOrMore, type Invokable } from "../../../../utilities/_module.js";
|
|
11
10
|
/**
|
|
@@ -157,36 +156,7 @@ export declare class LockProvider implements ILockProvider {
|
|
|
157
156
|
*/
|
|
158
157
|
constructor(settings: LockProviderSettings);
|
|
159
158
|
private registerToSerde;
|
|
160
|
-
|
|
161
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
162
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
163
|
-
*/
|
|
164
|
-
addListener<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): ITask<void>;
|
|
165
|
-
/**
|
|
166
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
167
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
168
|
-
*/
|
|
169
|
-
removeListener<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): ITask<void>;
|
|
170
|
-
/**
|
|
171
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
172
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
173
|
-
*/
|
|
174
|
-
listenOnce<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): ITask<void>;
|
|
175
|
-
/**
|
|
176
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
177
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
178
|
-
*/
|
|
179
|
-
asTask<TEventName extends keyof LockEventMap>(eventName: TEventName): ITask<LockEventMap[TEventName]>;
|
|
180
|
-
/**
|
|
181
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
182
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
183
|
-
*/
|
|
184
|
-
subscribeOnce<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
185
|
-
/**
|
|
186
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
187
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
188
|
-
*/
|
|
189
|
-
subscribe<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
159
|
+
get events(): ILockListenable;
|
|
190
160
|
/**
|
|
191
161
|
* @example
|
|
192
162
|
* ```ts
|
|
@@ -14,7 +14,6 @@ import { NoOpNamespace } from "../../../../namespace/implementations/_module.js"
|
|
|
14
14
|
import {} from "../../../../serde/contracts/_module.js";
|
|
15
15
|
import { NoOpSerdeAdapter } from "../../../../serde/implementations/adapters/_module.js";
|
|
16
16
|
import { Serde } from "../../../../serde/implementations/derivables/_module.js";
|
|
17
|
-
import {} from "../../../../task/contracts/_module.js";
|
|
18
17
|
import {} from "../../../../time-span/contracts/_module.js";
|
|
19
18
|
import { TimeSpan } from "../../../../time-span/implementations/_module.js";
|
|
20
19
|
import { CORE, resolveOneOrMore, callInvokable, } from "../../../../utilities/_module.js";
|
|
@@ -100,47 +99,8 @@ export class LockProvider {
|
|
|
100
99
|
serde.registerCustom(transformer, CORE);
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
106
|
-
*/
|
|
107
|
-
addListener(eventName, listener) {
|
|
108
|
-
return this.eventBus.addListener(eventName, listener);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
112
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
113
|
-
*/
|
|
114
|
-
removeListener(eventName, listener) {
|
|
115
|
-
return this.eventBus.removeListener(eventName, listener);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
119
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
120
|
-
*/
|
|
121
|
-
listenOnce(eventName, listener) {
|
|
122
|
-
return this.eventBus.listenOnce(eventName, listener);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
126
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
127
|
-
*/
|
|
128
|
-
asTask(eventName) {
|
|
129
|
-
return this.eventBus.asTask(eventName);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
133
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
134
|
-
*/
|
|
135
|
-
subscribeOnce(eventName, listener) {
|
|
136
|
-
return this.eventBus.subscribeOnce(eventName, listener);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
|
|
140
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
141
|
-
*/
|
|
142
|
-
subscribe(eventName, listener) {
|
|
143
|
-
return this.eventBus.subscribe(eventName, listener);
|
|
102
|
+
get events() {
|
|
103
|
+
return this.eventBus;
|
|
144
104
|
}
|
|
145
105
|
/**
|
|
146
106
|
* @example
|
|
@@ -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,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"lock-provider.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-provider.ts"],"names":[],"mappings":"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"}
|