@daiso-tech/core 0.38.0 → 0.39.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.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/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/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/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 +1 -1
- package/dist/lock/contracts/database-lock-adapter.contract.d.ts +7 -5
- package/dist/lock/contracts/lock-adapter.contract.d.ts +5 -3
- package/dist/lock/contracts/lock.contract.d.ts +23 -23
- package/dist/lock/contracts/lock.errors.d.ts +5 -32
- package/dist/lock/contracts/lock.errors.js +1 -77
- package/dist/lock/contracts/lock.errors.js.map +1 -1
- package/dist/lock/contracts/lock.events.d.ts +3 -3
- package/dist/lock/contracts/lock.events.js +1 -1
- package/dist/lock/contracts/lock.events.js.map +1 -1
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +16 -4
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +11 -8
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +17 -6
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +9 -16
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +1 -1
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +3 -3
- 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 +1 -1
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +3 -2
- package/dist/lock/implementations/derivables/lock-provider/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.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 +11 -14
- package/dist/lock/implementations/derivables/lock-provider/lock.js +46 -22
- 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/lock-provider.test-suite.js +28 -28
- 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/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,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import {} from "../../../../utilities/_module-exports.js";
|
|
5
|
-
import { UnexpectedLockError } from "../../../../lock/contracts/_module-exports.js";
|
|
4
|
+
import { UnexpectedError, } from "../../../../utilities/_module-exports.js";
|
|
6
5
|
import { ObjectId } from "mongodb";
|
|
7
6
|
/**
|
|
8
|
-
* To utilize the `MongodbLockAdapter`, you must install the `"mongodb"` package.
|
|
7
|
+
* To utilize the `MongodbLockAdapter`, you must install the [`"mongodb"`](https://www.npmjs.com/package/mongodb) package.
|
|
9
8
|
*
|
|
10
9
|
* Note in order to use `MongodbLockAdapter` correctly, ensure you use a single, consistent database across all server instances.
|
|
11
10
|
*
|
|
@@ -31,18 +30,12 @@ export class MongodbLockAdapter {
|
|
|
31
30
|
* await lockAdapter.init()
|
|
32
31
|
* ```
|
|
33
32
|
*/
|
|
34
|
-
constructor(
|
|
33
|
+
constructor(settings) {
|
|
34
|
+
const { collectionName = "lock", collectionSettings, database, } = settings;
|
|
35
35
|
this.collectionName = collectionName;
|
|
36
36
|
this.database = database;
|
|
37
37
|
this.collection = database.collection(collectionName, collectionSettings);
|
|
38
38
|
}
|
|
39
|
-
async removeAllExpired() {
|
|
40
|
-
await this.collection.deleteMany({
|
|
41
|
-
expiresAt: {
|
|
42
|
-
$lte: new Date(),
|
|
43
|
-
},
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
39
|
/**
|
|
47
40
|
* Creates all related indexes.
|
|
48
41
|
* Note the `init` method needs to be called before using the adapter.
|
|
@@ -73,7 +66,7 @@ export class MongodbLockAdapter {
|
|
|
73
66
|
expiresAt: expiration,
|
|
74
67
|
});
|
|
75
68
|
if (!insertResult.acknowledged) {
|
|
76
|
-
throw new
|
|
69
|
+
throw new UnexpectedError("Mongodb insertion was not acknowledged");
|
|
77
70
|
}
|
|
78
71
|
}
|
|
79
72
|
async update(key, owner, expiration) {
|
|
@@ -98,7 +91,7 @@ export class MongodbLockAdapter {
|
|
|
98
91
|
},
|
|
99
92
|
});
|
|
100
93
|
if (!updateResult.acknowledged) {
|
|
101
|
-
throw new
|
|
94
|
+
throw new UnexpectedError("Mongodb update was not acknowledged");
|
|
102
95
|
}
|
|
103
96
|
return updateResult.modifiedCount; // > 0;
|
|
104
97
|
}
|
|
@@ -108,7 +101,7 @@ export class MongodbLockAdapter {
|
|
|
108
101
|
key,
|
|
109
102
|
});
|
|
110
103
|
if (!deleteResult.acknowledged) {
|
|
111
|
-
throw new
|
|
104
|
+
throw new UnexpectedError("Mongodb deletion was not acknowledged");
|
|
112
105
|
}
|
|
113
106
|
return;
|
|
114
107
|
}
|
|
@@ -117,7 +110,7 @@ export class MongodbLockAdapter {
|
|
|
117
110
|
owner,
|
|
118
111
|
});
|
|
119
112
|
if (!deleteResult.acknowledged) {
|
|
120
|
-
throw new
|
|
113
|
+
throw new UnexpectedError("Mongodb deletion was not acknowledged");
|
|
121
114
|
}
|
|
122
115
|
}
|
|
123
116
|
async refresh(key, owner, expiration) {
|
|
@@ -130,7 +123,7 @@ export class MongodbLockAdapter {
|
|
|
130
123
|
},
|
|
131
124
|
});
|
|
132
125
|
if (!updateResult.acknowledged) {
|
|
133
|
-
throw new
|
|
126
|
+
throw new UnexpectedError("Mongodb update was not acknowledged");
|
|
134
127
|
}
|
|
135
128
|
return updateResult.modifiedCount; // > 0;
|
|
136
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"mongodb-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ declare module "ioredis" {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
* To utilize the `RedisLockAdapter`, you must install the `"ioredis"` package.
|
|
16
|
+
* To utilize the `RedisLockAdapter`, you must install the [`"ioredis"`](https://www.npmjs.com/package/ioredis) package.
|
|
17
17
|
*
|
|
18
18
|
* Note in order to use `RedisLockAdapter` correctly, ensure you use a single, consistent database across all server instances.
|
|
19
19
|
*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
4
|
/**
|
|
5
|
-
* To utilize the `RedisLockAdapter`, you must install the `"ioredis"` package.
|
|
5
|
+
* To utilize the `RedisLockAdapter`, you must install the [`"ioredis"`](https://www.npmjs.com/package/ioredis) package.
|
|
6
6
|
*
|
|
7
7
|
* Note in order to use `RedisLockAdapter` correctly, ensure you use a single, consistent database across all server instances.
|
|
8
8
|
*
|
|
@@ -95,7 +95,7 @@ export class RedisLockAdapter {
|
|
|
95
95
|
}
|
|
96
96
|
async acquire(key, owner, ttl) {
|
|
97
97
|
const result = await this.database.daiso_lock_acquire(key, owner, String(ttl?.toMilliseconds() ?? null));
|
|
98
|
-
return result
|
|
98
|
+
return result === 1;
|
|
99
99
|
}
|
|
100
100
|
async release(key, owner) {
|
|
101
101
|
const result = await this.database.daiso_lock_release(key, owner);
|
|
@@ -106,7 +106,7 @@ export class RedisLockAdapter {
|
|
|
106
106
|
}
|
|
107
107
|
async refresh(key, owner, ttl) {
|
|
108
108
|
const result = await this.database.daiso_lock_refresh(key, owner, ttl.toMilliseconds().toString());
|
|
109
|
-
return
|
|
109
|
+
return result === 1;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
112
|
//# sourceMappingURL=redis-lock-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAgB;IAWI;IAV7B;;;;;;;;;OASG;IACH,YAA6B,QAAe;QAAf,aAAQ,GAAR,QAAQ,CAAO;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB;QACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;;;;;;;iBAiBA;SACR,CAAC,CAAC;IACP,CAAC;IAEO,kBAAkB;QACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;iBAWA;SACR,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB;QACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;aAWJ;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CACT,GAAW,EACX,KAAa,EACb,GAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CACjD,GAAG,EACH,KAAK,EACL,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,CACxC,CAAC;QACF,OAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"redis-lock-adapter.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAgB;IAWI;IAV7B;;;;;;;;;OASG;IACH,YAA6B,QAAe;QAAf,aAAQ,GAAR,QAAQ,CAAO;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7B,CAAC;IAEO,iBAAiB;QACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;;;;;;;iBAiBA;SACR,CAAC,CAAC;IACP,CAAC;IAEO,kBAAkB;QACtB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;iBAWA;SACR,CAAC,CAAC;IACP,CAAC;IAEO,iBAAiB;QACrB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC9C,YAAY,EAAE,CAAC;YACf,GAAG,EAAE;;;;;;;;;;;aAWJ;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAO,CACT,GAAW,EACX,KAAa,EACb,GAAoB;QAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CACjD,GAAG,EACH,KAAK,EACL,MAAM,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,IAAI,CAAC,CACxC,CAAC;QACF,OAAO,MAAM,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,MAAM,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC1B,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,GAAa;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CACjD,GAAG,EACH,KAAK,EACL,GAAG,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAClC,CAAC;QACF,OAAO,MAAM,KAAK,CAAC,CAAC;IACxB,CAAC;CACJ"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
4
|
+
import { type TimeSpan } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
import type { IDatabaseLockAdapter, ILockAdapter } from "../../../../lock/contracts/_module-exports.js";
|
|
6
6
|
/**
|
|
7
7
|
* @internal
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
-
import {
|
|
4
|
+
import { UnexpectedError } from "../../../../utilities/_module-exports.js";
|
|
5
5
|
/**
|
|
6
6
|
* @internal
|
|
7
7
|
*/
|
|
@@ -13,11 +13,12 @@ export class DatabaseLockAdapter {
|
|
|
13
13
|
async acquire(key, owner, ttl) {
|
|
14
14
|
const expiration = ttl?.toEndDate() ?? null;
|
|
15
15
|
try {
|
|
16
|
+
// An error will be thrown if the lock already exists
|
|
16
17
|
await this.adapter.insert(key, owner, expiration);
|
|
17
18
|
return true;
|
|
18
19
|
}
|
|
19
20
|
catch (error) {
|
|
20
|
-
if (error instanceof
|
|
21
|
+
if (error instanceof UnexpectedError) {
|
|
21
22
|
throw error;
|
|
22
23
|
}
|
|
23
24
|
const result = await this.adapter.update(key, owner, expiration);
|
|
@@ -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":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAiB,MAAM,gCAAgC,CAAC;AAMhF;;GAEG;AACH,MAAM,OAAO,mBAAmB;IACC;IAA7B,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAG,CAAC;IAE9D,KAAK,CAAC,OAAO,CACT,GAAW,EACX,KAAa,EACb,GAAoB;QAEpB,MAAM,UAAU,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,IAAI,CAAC;QAE5C,IAAI,CAAC;YACD,qDAAqD;YACrD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;gBACnC,MAAM,KAAK,CAAC;YAChB,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YACjE,OAAO,MAAM,GAAG,CAAC,CAAC;QACtB,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC;QACrC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC1B,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,GAAa;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACvE,OAAO,MAAM,GAAG,CAAC,CAAC;IACtB,CAAC;CACJ"}
|
|
@@ -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":"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"}
|
|
@@ -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,10 +12,10 @@ 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
|
|
@@ -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,19 +53,16 @@ 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
68
|
forceRelease(): LazyPromise<void>;
|