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