@daiso-tech/core 0.38.0 → 0.40.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/README.md +5 -1
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +1 -1
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +1 -1
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
- package/dist/async/middlewares/bulkhead/bulkhead.middleware.d.ts +2 -2
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js +2 -2
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js.map +1 -1
- package/dist/async/middlewares/retry/retry.middleware.js +2 -2
- package/dist/async/middlewares/retry/retry.middleware.js.map +1 -1
- package/dist/async/middlewares/retry/retry.types.d.ts +1 -1
- package/dist/cache/contracts/cache-adapter.contract.d.ts +9 -9
- package/dist/cache/contracts/cache.contract.d.ts +7 -7
- package/dist/cache/contracts/cache.errors.d.ts +3 -26
- package/dist/cache/contracts/cache.errors.js +0 -47
- package/dist/cache/contracts/cache.errors.js.map +1 -1
- package/dist/cache/contracts/database-cache-adapter.contract.d.ts +10 -10
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +6 -5
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +17 -13
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +15 -3
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +25 -9
- 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 +9 -9
- 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 +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js +2 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +2 -2
- package/dist/cache/implementations/derivables/cache/cache.js +1 -1
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/collection/contracts/async-collection.contract.d.ts +0 -1
- package/dist/collection/contracts/async-collection.contract.js +3 -1
- package/dist/collection/contracts/async-collection.contract.js.map +1 -1
- package/dist/collection/contracts/collection.contract.d.ts +0 -1
- package/dist/collection/contracts/collection.contract.js +3 -1
- package/dist/collection/contracts/collection.contract.js.map +1 -1
- package/dist/collection/contracts/collection.errors.d.ts +1 -26
- package/dist/collection/contracts/collection.errors.js +0 -55
- package/dist/collection/contracts/collection.errors.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +9 -6
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/zip-iterable.js +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/zip-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/iterable-collection.js +9 -6
- package/dist/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
- package/dist/collection/implementations/list-collection/list-collection.js +12 -9
- package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/event-bus/contracts/_module-exports.d.ts +0 -1
- package/dist/event-bus/contracts/_module-exports.js +0 -1
- package/dist/event-bus/contracts/_module-exports.js.map +1 -1
- package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +3 -3
- package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +3 -3
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +2 -2
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +3 -2
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +2 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +26 -26
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +11 -4
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +17 -12
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +17 -20
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +159 -752
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
- package/dist/lock/contracts/database-lock-adapter.contract.d.ts +56 -16
- package/dist/lock/contracts/lock-adapter.contract.d.ts +32 -9
- package/dist/lock/contracts/lock-adapter.contract.js +10 -1
- package/dist/lock/contracts/lock-adapter.contract.js.map +1 -1
- package/dist/lock/contracts/lock.contract.d.ts +30 -25
- package/dist/lock/contracts/lock.errors.d.ts +11 -28
- package/dist/lock/contracts/lock.errors.js +10 -74
- package/dist/lock/contracts/lock.errors.js.map +1 -1
- package/dist/lock/contracts/lock.events.d.ts +15 -3
- package/dist/lock/contracts/lock.events.js +2 -1
- package/dist/lock/contracts/lock.events.js.map +1 -1
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +40 -10
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +135 -37
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +20 -7
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +59 -35
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +23 -12
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +152 -87
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +5 -5
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +3 -2
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +6 -6
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +46 -24
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +4 -4
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +45 -12
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +7 -5
- package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +3 -3
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +2 -3
- 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 +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +4 -3
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-state.d.ts +8 -11
- package/dist/lock/implementations/derivables/lock-provider/lock-state.js +9 -26
- package/dist/lock/implementations/derivables/lock-provider/lock-state.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +14 -16
- package/dist/lock/implementations/derivables/lock-provider/lock.js +106 -63
- 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 +2 -2
- 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.js +184 -166
- 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.js +240 -41
- package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +2704 -1514
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/serde/implementations/derivables/serde.d.ts +22 -22
- package/dist/utilities/classes/kysely-table-name-transformer-plugin/kysely-table-name-transformer-plugin.js +2 -1
- package/dist/utilities/classes/kysely-table-name-transformer-plugin/kysely-table-name-transformer-plugin.js.map +1 -1
- package/dist/utilities/classes/namespace/namespace.d.ts +3 -3
- package/dist/utilities/classes/namespace/namespace.js +2 -2
- package/dist/utilities/classes/namespace/namespace.js.map +1 -1
- package/dist/utilities/classes/time-span/time-span.d.ts +10 -2
- package/dist/utilities/classes/time-span/time-span.js +10 -2
- package/dist/utilities/classes/time-span/time-span.js.map +1 -1
- package/dist/utilities/contracts/deinitizable.contract.d.ts +1 -1
- package/dist/utilities/contracts/initizable.contract.d.ts +1 -1
- package/dist/utilities/contracts/prunable.contract.d.ts +1 -1
- package/dist/utilities/errors.d.ts +8 -0
- package/dist/utilities/errors.js +11 -0
- package/dist/utilities/errors.js.map +1 -1
- package/dist/utilities/functions/_module.d.ts +1 -0
- package/dist/utilities/functions/_module.js +1 -0
- package/dist/utilities/functions/_module.js.map +1 -1
- package/dist/utilities/functions/is-class.d.ts +4 -0
- package/dist/utilities/functions/is-class.js +4 -0
- package/dist/utilities/functions/is-class.js.map +1 -1
- package/dist/utilities/functions/is-positive-nbr.d.ts +8 -0
- package/dist/utilities/functions/is-positive-nbr.js +19 -0
- package/dist/utilities/functions/is-positive-nbr.js.map +1 -0
- package/package.json +1 -1
- package/dist/event-bus/contracts/event-bus.errors.d.ts +0 -40
- package/dist/event-bus/contracts/event-bus.errors.js +0 -62
- package/dist/event-bus/contracts/event-bus.errors.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
5
|
-
import type
|
|
4
|
+
import { type TimeSpan } from "../../../../utilities/_module-exports.js";
|
|
5
|
+
import { type IDatabaseLockAdapter, type ILockAdapter, type LockRefreshResult } from "../../../../lock/contracts/_module-exports.js";
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
8
8
|
*/
|
|
@@ -11,6 +11,6 @@ export declare class DatabaseLockAdapter implements ILockAdapter {
|
|
|
11
11
|
constructor(adapter: IDatabaseLockAdapter);
|
|
12
12
|
acquire(key: string, owner: string, ttl: TimeSpan | null): Promise<boolean>;
|
|
13
13
|
release(key: string, owner: string): Promise<boolean>;
|
|
14
|
-
forceRelease(key: string): Promise<
|
|
15
|
-
refresh(key: string, owner: string, ttl: TimeSpan): Promise<
|
|
14
|
+
forceRelease(key: string): Promise<boolean>;
|
|
15
|
+
refresh(key: string, owner: string, ttl: TimeSpan): Promise<LockRefreshResult>;
|
|
16
16
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { UnexpectedError } from "../../../../utilities/_module-exports.js";
|
|
5
|
+
import { LOCK_REFRESH_RESULT, } from "../../../../lock/contracts/_module-exports.js";
|
|
5
6
|
/**
|
|
6
7
|
* @internal
|
|
7
8
|
*/
|
|
@@ -11,34 +12,66 @@ export class DatabaseLockAdapter {
|
|
|
11
12
|
this.adapter = adapter;
|
|
12
13
|
}
|
|
13
14
|
async acquire(key, owner, ttl) {
|
|
14
|
-
const expiration = ttl?.toEndDate() ?? null;
|
|
15
15
|
try {
|
|
16
|
+
const expiration = ttl?.toEndDate() ?? null;
|
|
17
|
+
// An error will be thrown if the lock already exists
|
|
16
18
|
await this.adapter.insert(key, owner, expiration);
|
|
17
19
|
return true;
|
|
18
20
|
}
|
|
19
21
|
catch (error) {
|
|
20
|
-
if (error instanceof
|
|
22
|
+
if (error instanceof UnexpectedError) {
|
|
21
23
|
throw error;
|
|
22
24
|
}
|
|
23
|
-
const
|
|
25
|
+
const expiration = ttl?.toEndDate() ?? null;
|
|
26
|
+
const result = await this.adapter.updateIfExpired(key, owner, expiration);
|
|
24
27
|
return result > 0;
|
|
25
28
|
}
|
|
26
29
|
}
|
|
27
30
|
async release(key, owner) {
|
|
28
|
-
const
|
|
29
|
-
if (
|
|
31
|
+
const lockData = await this.adapter.removeIfOwner(key, owner);
|
|
32
|
+
if (lockData === null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
const { expiration } = lockData;
|
|
36
|
+
const hasNoExpiration = expiration === null;
|
|
37
|
+
if (hasNoExpiration) {
|
|
30
38
|
return true;
|
|
31
39
|
}
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
40
|
+
const { owner: currentOwner } = lockData;
|
|
41
|
+
const isNotExpired = expiration > new Date();
|
|
42
|
+
const isCurrentOwner = owner === currentOwner;
|
|
43
|
+
return isNotExpired && isCurrentOwner;
|
|
35
44
|
}
|
|
36
45
|
async forceRelease(key) {
|
|
37
|
-
await this.adapter.remove(key
|
|
46
|
+
const lockData = await this.adapter.remove(key);
|
|
47
|
+
if (lockData === null) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (lockData.expiration === null) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
return lockData.expiration > new Date();
|
|
38
54
|
}
|
|
39
55
|
async refresh(key, owner, ttl) {
|
|
40
|
-
const
|
|
41
|
-
|
|
56
|
+
const lockData = await this.adapter.find(key);
|
|
57
|
+
if (lockData === null) {
|
|
58
|
+
return LOCK_REFRESH_RESULT.UNOWNED_REFRESH;
|
|
59
|
+
}
|
|
60
|
+
if (lockData.owner !== owner) {
|
|
61
|
+
return LOCK_REFRESH_RESULT.UNOWNED_REFRESH;
|
|
62
|
+
}
|
|
63
|
+
if (lockData.expiration === null) {
|
|
64
|
+
return LOCK_REFRESH_RESULT.UNEXPIRABLE_KEY;
|
|
65
|
+
}
|
|
66
|
+
if (lockData.expiration <= new Date()) {
|
|
67
|
+
return LOCK_REFRESH_RESULT.UNOWNED_REFRESH;
|
|
68
|
+
}
|
|
69
|
+
const expiration = ttl.toEndDate();
|
|
70
|
+
const result = await this.adapter.updateExpirationIfOwner(key, owner, expiration);
|
|
71
|
+
if (result > 0) {
|
|
72
|
+
return LOCK_REFRESH_RESULT.REFRESHED;
|
|
73
|
+
}
|
|
74
|
+
return LOCK_REFRESH_RESULT.UNOWNED_REFRESH;
|
|
42
75
|
}
|
|
43
76
|
}
|
|
44
77
|
//# sourceMappingURL=database-lock-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/database-lock-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"database-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/database-lock-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,12 +5,14 @@ export function isDatabaseLockAdapter(adapter) {
|
|
|
5
5
|
const adapter_ = adapter;
|
|
6
6
|
return (typeof adapter_["insert"] === "function" &&
|
|
7
7
|
adapter_["insert"].length === 3 &&
|
|
8
|
-
typeof adapter_["
|
|
9
|
-
adapter_["
|
|
8
|
+
typeof adapter_["updateIfExpired"] === "function" &&
|
|
9
|
+
adapter_["updateIfExpired"].length === 3 &&
|
|
10
10
|
typeof adapter_["remove"] === "function" &&
|
|
11
|
-
adapter_["remove"].length ===
|
|
12
|
-
typeof adapter_["
|
|
13
|
-
adapter_["
|
|
11
|
+
adapter_["remove"].length === 1 &&
|
|
12
|
+
typeof adapter_["removeIfOwner"] === "function" &&
|
|
13
|
+
adapter_["removeIfOwner"].length === 2 &&
|
|
14
|
+
typeof adapter_["updateExpirationIfOwner"] === "function" &&
|
|
15
|
+
adapter_["updateExpirationIfOwner"].length === 3 &&
|
|
14
16
|
typeof adapter_["find"] === "function" &&
|
|
15
17
|
adapter_["find"].length === 1);
|
|
16
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-database-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/is-database-lock-adapter.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACjC,OAA4C;IAE5C,MAAM,QAAQ,GAAG,OAEhB,CAAC;
|
|
1
|
+
{"version":3,"file":"is-database-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/is-database-lock-adapter.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACjC,OAA4C;IAE5C,MAAM,QAAQ,GAAG,OAEhB,CAAC;IAEF,OAAO,CACH,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,OAAO,QAAQ,CAAC,iBAAiB,CAAC,KAAK,UAAU;QACjD,QAAQ,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC;QACxC,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU;QACxC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QAC/B,OAAO,QAAQ,CAAC,eAAe,CAAC,KAAK,UAAU;QAC/C,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC;QACtC,OAAO,QAAQ,CAAC,yBAAyB,CAAC,KAAK,UAAU;QACzD,QAAQ,CAAC,yBAAyB,CAAC,CAAC,MAAM,KAAK,CAAC;QAChD,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,UAAU;QACtC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAChC,CAAC;AACN,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import { TimeSpan, type Factory, type AsyncLazy } from "../../../../utilities/_module-exports.js";
|
|
4
|
+
import { TimeSpan, type Factory, type AsyncLazy, type Invokable } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
import { Namespace, type OneOrMore } from "../../../../utilities/_module-exports.js";
|
|
6
6
|
import type { IDatabaseLockAdapter, LockEventMap } from "../../../../lock/contracts/_module-exports.js";
|
|
7
7
|
import { type ILock, type LockProviderCreateSettings, type ILockProvider, type ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
|
|
@@ -35,13 +35,13 @@ export type LockProviderSettingsBase = {
|
|
|
35
35
|
lazyPromiseFactory?: Factory<AsyncLazy<any>, LazyPromise<any>>;
|
|
36
36
|
serde: OneOrMore<ISerderRegister>;
|
|
37
37
|
/**
|
|
38
|
-
* @default
|
|
38
|
+
* @default ""
|
|
39
39
|
*/
|
|
40
40
|
serdeTransformerName?: string;
|
|
41
41
|
/**
|
|
42
42
|
* You can pass your owner id generator function.
|
|
43
43
|
*/
|
|
44
|
-
createOwnerId?:
|
|
44
|
+
createOwnerId?: Invokable<[], string>;
|
|
45
45
|
/**
|
|
46
46
|
* @default
|
|
47
47
|
* ```ts
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import { TimeSpan, CORE, resolveOneOrMore, resolveInvokable, } from "../../../../utilities/_module-exports.js";
|
|
4
|
+
import { TimeSpan, CORE, resolveOneOrMore, resolveInvokable, callInvokable, } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
import { Namespace } from "../../../../utilities/_module-exports.js";
|
|
6
6
|
import {} from "../../../../lock/contracts/_module-exports.js";
|
|
7
7
|
import { LazyPromise } from "../../../../async/_module-exports.js";
|
|
@@ -161,7 +161,7 @@ export class LockProvider {
|
|
|
161
161
|
* ```
|
|
162
162
|
*/
|
|
163
163
|
create(key, settings = {}) {
|
|
164
|
-
const { ttl = this.defaultTtl, owner = this.createOwnerId
|
|
164
|
+
const { ttl = this.defaultTtl, owner = callInvokable(this.createOwnerId), } = settings;
|
|
165
165
|
const keyObj = this.namespace._getInternal().create(key);
|
|
166
166
|
return new Lock({
|
|
167
167
|
adapter: this.adapter,
|
|
@@ -172,7 +172,6 @@ export class LockProvider {
|
|
|
172
172
|
owner,
|
|
173
173
|
ttl,
|
|
174
174
|
serdeTransformerName: this.serdeTransformerName,
|
|
175
|
-
expirationInMs: null,
|
|
176
175
|
defaultBlockingInterval: this.defaultBlockingInterval,
|
|
177
176
|
defaultBlockingTime: this.defaultBlockingTime,
|
|
178
177
|
defaultRefreshTime: this.defaultRefreshTime,
|
|
@@ -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,QAAQ,EACR,IAAI,EAIJ,gBAAgB,EAChB,gBAAgB,
|
|
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,QAAQ,EACR,IAAI,EAIJ,gBAAgB,EAChB,gBAAgB,EAEhB,aAAa,GAChB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,SAAS,EAAkB,MAAM,gCAAgC,CAAC;AAK3E,OAAO,EAKN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAUzD,OAAO,EAAE,QAAQ,EAAE,MAAM,2DAA2D,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,yDAAyD,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,yDAAyD,CAAC;AAC/E,OAAO,EACH,SAAS,GAEZ,MAAM,+DAA+D,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6EAA6E,CAAC;AACpH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0EAA0E,CAAC;AAC/G,OAAO,EAAE,oBAAoB,EAAE,MAAM,2EAA2E,CAAC;AA0GjH;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IACb,SAAS,GAAe,EAAE,CAAC;IAClB,QAAQ,CAA0B;IAClC,OAAO,CAAe;IACtB,SAAS,CAAY;IACrB,aAAa,CAAwB;IACrC,UAAU,CAAkB;IAC5B,uBAAuB,CAAW;IAClC,mBAAmB,CAAW;IAC9B,kBAAkB,CAAW;IAC7B,KAAK,CAA6B;IAClC,kBAAkB,CAGjC;IACe,oBAAoB,CAAS;IAE9C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,YAAY,QAA8B;QACtC,MAAM,EACF,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EACpC,uBAAuB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EACjD,mBAAmB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAC7C,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAC5C,aAAa,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,EAC1B,KAAK,EACL,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EACxC,OAAO,EACP,QAAQ,GAAG,IAAI,QAAQ,CAAM;YACzB,OAAO,EAAE,IAAI,qBAAqB,EAAE;SACvC,CAAC,EACF,oBAAoB,GAAG,EAAE,EACzB,kBAAkB,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,SAAS,CAAC,GACjE,GAAG,QAAQ,CAAC;QAEb,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QAEjD,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAEO,eAAe;QACnB,MAAM,WAAW,GAAG,IAAI,oBAAoB,CAAC;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC/D,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAClD,CAAC,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,WAAW,CACP,SAAqB,EACrB,QAAiD;QAEjD,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;OAGG;IACH,cAAc,CACV,SAAqB,EACrB,QAAiD;QAEjD,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,UAAU,CACN,SAAqB,EACrB,QAAiD;QAEjD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,SAAS,CACL,SAAqB;QAErB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,aAAa,CACT,SAAqB,EACrB,QAAiD;QAEjD,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,SAAS,CACL,SAAqB,EACrB,QAAiD;QAEjD,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEO,iBAAiB,CACrB,OAA8B;QAE9B,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CACF,GAAsB,EACtB,WAAuC,EAAE;QAEzC,MAAM,EACF,GAAG,GAAG,IAAI,CAAC,UAAU,EACrB,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,GAC5C,GAAG,QAAQ,CAAC;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzD,OAAO,IAAI,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,iBAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;YAC/D,SAAS,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC;YAC3D,eAAe,EAAE,IAAI,CAAC,QAAQ;YAC9B,GAAG,EAAE,MAAM;YACX,KAAK;YACL,GAAG;YACH,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC9C,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -16,7 +16,7 @@ export type LockSerdeTransformerSettings = {
|
|
|
16
16
|
adapter: ILockAdapter;
|
|
17
17
|
lockStore: ILockStore;
|
|
18
18
|
namespace: Namespace;
|
|
19
|
-
createLazyPromise: <TValue = void>(asyncFn: () =>
|
|
19
|
+
createLazyPromise: <TValue = void>(asyncFn: () => Promise<TValue>) => LazyPromise<TValue>;
|
|
20
20
|
defaultBlockingInterval: TimeSpan;
|
|
21
21
|
defaultBlockingTime: TimeSpan;
|
|
22
22
|
defaultRefreshTime: TimeSpan;
|
|
@@ -42,7 +42,8 @@ export class LockSerdeTransformer {
|
|
|
42
42
|
isApplicable(value) {
|
|
43
43
|
return (value instanceof Lock &&
|
|
44
44
|
getConstructorName(value) === Lock.name &&
|
|
45
|
-
value.
|
|
45
|
+
value._internal_getSerdeTransformerName() ===
|
|
46
|
+
this.serdeTransformerName);
|
|
46
47
|
}
|
|
47
48
|
deserialize(serializedValue) {
|
|
48
49
|
const { key, owner, ttlInMs, expirationInMs } = serializedValue;
|
|
@@ -55,7 +56,7 @@ export class LockSerdeTransformer {
|
|
|
55
56
|
key: keyObj,
|
|
56
57
|
owner,
|
|
57
58
|
serdeTransformerName: this.serdeTransformerName,
|
|
58
|
-
ttl: ttlInMs ? TimeSpan.fromMilliseconds(ttlInMs) : null,
|
|
59
|
+
ttl: ttlInMs !== null ? TimeSpan.fromMilliseconds(ttlInMs) : null,
|
|
59
60
|
expirationInMs,
|
|
60
61
|
defaultBlockingInterval: this.defaultBlockingInterval,
|
|
61
62
|
defaultBlockingTime: this.defaultBlockingTime,
|
|
@@ -63,7 +64,7 @@ export class LockSerdeTransformer {
|
|
|
63
64
|
});
|
|
64
65
|
}
|
|
65
66
|
serialize(deserializedValue) {
|
|
66
|
-
return Lock.
|
|
67
|
+
return Lock._internal_serialize(deserializedValue);
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
70
|
//# sourceMappingURL=lock-serde-transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-serde-transformer.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-serde-transformer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACH,IAAI,GAEP,MAAM,yDAAyD,CAAC;AAMjE,OAAO,EACH,SAAS,GAEZ,MAAM,+DAA+D,CAAC;AACvE,OAAO,EACH,kBAAkB,EAClB,QAAQ,GAEX,MAAM,gCAAgC,CAAC;AAqBxC;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAGZ,OAAO,CAAe;IACtB,SAAS,CAAa;IACtB,SAAS,CAAY;IACrB,iBAAiB,CAET;IACR,uBAAuB,CAAW;IAClC,mBAAmB,CAAW;IAC9B,kBAAkB,CAAW;IAC7B,QAAQ,CAA0B;IAClC,oBAAoB,CAAS;IAE9C,YAAY,QAAsC;QAC9C,MAAM,EACF,OAAO,EACP,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,GACvB,GAAG,QAAQ,CAAC;QACb,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC3C,IAAI,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;YACH,MAAM;YACN,IAAI,CAAC,oBAAoB;YACzB,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;SACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,KAAc;QACvB,OAAO,CACH,KAAK,YAAY,IAAI;YACrB,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI;YACvC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"lock-serde-transformer.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-serde-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,31 +13,28 @@ export type ILockState = {
|
|
|
13
13
|
*/
|
|
14
14
|
export type ILockStore = Partial<Record<string, ILockState>>;
|
|
15
15
|
/**
|
|
16
|
+
* Keeps track of lock states in memory
|
|
17
|
+
*
|
|
16
18
|
* @internal
|
|
17
19
|
*/
|
|
18
20
|
export declare class LockState {
|
|
19
|
-
private stateRecord;
|
|
21
|
+
private readonly stateRecord;
|
|
20
22
|
private readonly key;
|
|
21
23
|
constructor(stateRecord: ILockStore, key: string);
|
|
22
24
|
/**
|
|
23
|
-
* Return the expiration as a
|
|
25
|
+
* Return the expiration as a TimeSpan.
|
|
24
26
|
*/
|
|
25
|
-
get():
|
|
27
|
+
get(): TimeSpan | null;
|
|
26
28
|
/**
|
|
27
|
-
* Sets the expiration time.
|
|
28
|
-
* If a number is provided, it must be in milliseconds.
|
|
29
|
+
* Sets the key expiration time.
|
|
29
30
|
*/
|
|
30
|
-
set(ttl: TimeSpan |
|
|
31
|
+
set(ttl: TimeSpan | null): void;
|
|
31
32
|
/**
|
|
32
33
|
* Checks if the key is expired.
|
|
33
34
|
*/
|
|
34
35
|
isExpired(): boolean;
|
|
35
36
|
/**
|
|
36
|
-
*
|
|
37
|
-
*/
|
|
38
|
-
getRemainingTime(): TimeSpan | null;
|
|
39
|
-
/**
|
|
40
|
-
* Removes the expiration from the record.
|
|
37
|
+
* Removes the key.
|
|
41
38
|
*/
|
|
42
39
|
remove(): void;
|
|
43
40
|
}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { TimeSpan } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
/**
|
|
6
|
+
* Keeps track of lock states in memory
|
|
7
|
+
*
|
|
6
8
|
* @internal
|
|
7
9
|
*/
|
|
8
10
|
export class LockState {
|
|
@@ -13,27 +15,22 @@ export class LockState {
|
|
|
13
15
|
this.key = key;
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
|
-
* Return the expiration as a
|
|
18
|
+
* Return the expiration as a TimeSpan.
|
|
17
19
|
*/
|
|
18
20
|
get() {
|
|
19
21
|
const state = this.stateRecord[this.key];
|
|
20
22
|
if (state === undefined) {
|
|
21
23
|
return null;
|
|
22
24
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
if (state.expiration === null) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return TimeSpan.fromDateRange(new Date(), state.expiration);
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
27
|
-
* Sets the expiration time.
|
|
28
|
-
* If a number is provided, it must be in milliseconds.
|
|
31
|
+
* Sets the key expiration time.
|
|
29
32
|
*/
|
|
30
33
|
set(ttl) {
|
|
31
|
-
if (typeof ttl === "number") {
|
|
32
|
-
this.stateRecord[this.key] = {
|
|
33
|
-
expiration: new Date(ttl),
|
|
34
|
-
};
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
34
|
this.stateRecord[this.key] = {
|
|
38
35
|
expiration: ttl?.toEndDate() ?? null,
|
|
39
36
|
};
|
|
@@ -53,21 +50,7 @@ export class LockState {
|
|
|
53
50
|
return expiration.getTime() < Date.now();
|
|
54
51
|
}
|
|
55
52
|
/**
|
|
56
|
-
*
|
|
57
|
-
*/
|
|
58
|
-
getRemainingTime() {
|
|
59
|
-
const state = this.stateRecord[this.key];
|
|
60
|
-
if (state === undefined) {
|
|
61
|
-
return null;
|
|
62
|
-
}
|
|
63
|
-
const { expiration } = state;
|
|
64
|
-
if (expiration === null) {
|
|
65
|
-
return null;
|
|
66
|
-
}
|
|
67
|
-
return TimeSpan.fromDateRange(new Date(), expiration);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Removes the expiration from the record.
|
|
53
|
+
* Removes the key.
|
|
71
54
|
*/
|
|
72
55
|
remove() {
|
|
73
56
|
// eslint-disable-next-line @typescript-eslint/no-dynamic-delete
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lock-state.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAc1D
|
|
1
|
+
{"version":3,"file":"lock-state.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAc1D;;;;GAIG;AACH,MAAM,OAAO,SAAS;IAEG;IACA;IAFrB,YACqB,WAAuB,EACvB,GAAW;QADX,gBAAW,GAAX,WAAW,CAAY;QACvB,QAAG,GAAH,GAAG,CAAQ;IAC7B,CAAC;IAEJ;;OAEG;IACH,GAAG;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,GAAoB;QACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YACzB,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,IAAI;SACvC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,SAAS;QACL,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;QAC7B,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,UAAU,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,MAAM;QACF,gEAAgE;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;CACJ"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
4
|
+
import { TimeSpan } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
import { type Key, type AsyncLazy, type OneOrMore, type Result } from "../../../../utilities/_module-exports.js";
|
|
6
|
-
import { KeyAlreadyAcquiredLockError, type
|
|
6
|
+
import { KeyAlreadyAcquiredLockError, type LockAquireBlockingSettings, type LockEventMap } from "../../../../lock/contracts/_module-exports.js";
|
|
7
7
|
import { type ILock, type ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
|
|
8
8
|
import { LazyPromise } from "../../../../async/_module-exports.js";
|
|
9
9
|
import type { IEventDispatcher } from "../../../../event-bus/contracts/_module-exports.js";
|
|
@@ -12,16 +12,16 @@ import type { LockState } from "../../../../lock/implementations/derivables/lock
|
|
|
12
12
|
* @internal
|
|
13
13
|
*/
|
|
14
14
|
export type ISerializedLock = {
|
|
15
|
-
key:
|
|
15
|
+
key: string;
|
|
16
|
+
expirationInMs: number | null;
|
|
16
17
|
owner: string;
|
|
17
18
|
ttlInMs: number | null;
|
|
18
|
-
expirationInMs: number | null;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
21
|
* @internal
|
|
22
22
|
*/
|
|
23
23
|
export type LockSettings = {
|
|
24
|
-
createLazyPromise: <TValue = void>(asyncFn: () =>
|
|
24
|
+
createLazyPromise: <TValue = void>(asyncFn: () => Promise<TValue>) => LazyPromise<TValue>;
|
|
25
25
|
serdeTransformerName: string;
|
|
26
26
|
adapter: ILockAdapter;
|
|
27
27
|
lockState: LockState;
|
|
@@ -29,7 +29,7 @@ export type LockSettings = {
|
|
|
29
29
|
key: Key;
|
|
30
30
|
owner: OneOrMore<string>;
|
|
31
31
|
ttl: TimeSpan | null;
|
|
32
|
-
expirationInMs
|
|
32
|
+
expirationInMs?: number | null;
|
|
33
33
|
defaultBlockingInterval: TimeSpan;
|
|
34
34
|
defaultBlockingTime: TimeSpan;
|
|
35
35
|
defaultRefreshTime: TimeSpan;
|
|
@@ -41,7 +41,7 @@ export declare class Lock implements ILock {
|
|
|
41
41
|
/**
|
|
42
42
|
* @internal
|
|
43
43
|
*/
|
|
44
|
-
static
|
|
44
|
+
static _internal_serialize(deserializedValue: Lock): ISerializedLock;
|
|
45
45
|
private readonly createLazyPromise;
|
|
46
46
|
private readonly adapter;
|
|
47
47
|
private readonly lockState;
|
|
@@ -53,24 +53,22 @@ export declare class Lock implements ILock {
|
|
|
53
53
|
private readonly defaultBlockingTime;
|
|
54
54
|
private readonly defaultRefreshTime;
|
|
55
55
|
private readonly serdeTransformerName;
|
|
56
|
-
/**
|
|
57
|
-
* @internal
|
|
58
|
-
*/
|
|
59
56
|
constructor(settings: LockSettings);
|
|
60
|
-
|
|
57
|
+
_internal_getSerdeTransformerName(): string;
|
|
61
58
|
run<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
|
|
62
59
|
runOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<TValue>;
|
|
63
|
-
runBlocking<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?:
|
|
64
|
-
runBlockingOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?:
|
|
60
|
+
runBlocking<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?: LockAquireBlockingSettings): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
|
|
61
|
+
runBlockingOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?: LockAquireBlockingSettings): LazyPromise<TValue>;
|
|
65
62
|
acquire(): LazyPromise<boolean>;
|
|
66
63
|
acquireOrFail(): LazyPromise<void>;
|
|
67
|
-
acquireBlocking(settings?:
|
|
68
|
-
acquireBlockingOrFail(settings?:
|
|
64
|
+
acquireBlocking(settings?: LockAquireBlockingSettings): LazyPromise<boolean>;
|
|
65
|
+
acquireBlockingOrFail(settings?: LockAquireBlockingSettings): LazyPromise<void>;
|
|
69
66
|
release(): LazyPromise<boolean>;
|
|
70
67
|
releaseOrFail(): LazyPromise<void>;
|
|
71
|
-
forceRelease(): LazyPromise<
|
|
68
|
+
forceRelease(): LazyPromise<boolean>;
|
|
72
69
|
isExpired(): LazyPromise<boolean>;
|
|
73
70
|
isLocked(): LazyPromise<boolean>;
|
|
71
|
+
private _refresh;
|
|
74
72
|
refresh(ttl?: TimeSpan): LazyPromise<boolean>;
|
|
75
73
|
refreshOrFail(ttl?: TimeSpan): LazyPromise<void>;
|
|
76
74
|
getRemainingTime(): LazyPromise<TimeSpan | null>;
|