@daiso-tech/core 0.37.3 → 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/_module-exports.d.ts +1 -1
- package/dist/async/_module-exports.js +1 -1
- package/dist/async/_module-exports.js.map +1 -1
- package/dist/async/async.errors.d.ts +0 -20
- package/dist/async/async.errors.js +0 -16
- package/dist/async/async.errors.js.map +1 -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/_module.d.ts +0 -1
- package/dist/async/middlewares/_module.js +0 -1
- package/dist/async/middlewares/_module.js.map +1 -1
- package/dist/async/middlewares/bulkhead/bulkhead.middleware.d.ts +2 -2
- package/dist/async/middlewares/bulkhead/bulkhead.middleware.js +1 -1
- package/dist/async/middlewares/bulkhead/bulkhead.middleware.js.map +1 -1
- package/dist/async/middlewares/fallback/_module.d.ts +1 -0
- package/dist/async/middlewares/fallback/_module.js +1 -0
- package/dist/async/middlewares/fallback/_module.js.map +1 -1
- package/dist/async/middlewares/fallback/fallback.middleware.d.ts +25 -49
- package/dist/async/middlewares/fallback/fallback.middleware.js +52 -14
- package/dist/async/middlewares/fallback/fallback.middleware.js.map +1 -1
- package/dist/async/middlewares/fallback/fallback.types.d.ts +42 -0
- package/dist/async/middlewares/fallback/fallback.types.js +6 -0
- package/dist/async/middlewares/fallback/fallback.types.js.map +1 -0
- package/dist/async/middlewares/hedging/_module.d.ts +2 -2
- package/dist/async/middlewares/hedging/_module.js +2 -2
- package/dist/async/middlewares/hedging/_module.js.map +1 -1
- package/dist/async/middlewares/hedging/{_shared.d.ts → hedging.types.d.ts} +37 -9
- package/dist/async/middlewares/hedging/hedging.types.js +6 -0
- package/dist/async/middlewares/hedging/hedging.types.js.map +1 -0
- package/dist/async/middlewares/hedging/{sequential-hedging/sequential-hedging.middleware.d.ts → sequential-hedging.middleware.d.ts} +3 -3
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js +133 -0
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js.map +1 -0
- package/dist/async/middlewares/observe/_module.d.ts +1 -0
- package/dist/async/middlewares/observe/_module.js +1 -0
- package/dist/async/middlewares/observe/_module.js.map +1 -1
- package/dist/async/middlewares/observe/observe.middleware.d.ts +37 -87
- package/dist/async/middlewares/observe/observe.middleware.js +53 -2
- package/dist/async/middlewares/observe/observe.middleware.js.map +1 -1
- package/dist/async/middlewares/observe/observe.types.d.ts +91 -0
- package/dist/async/middlewares/observe/observe.types.js +6 -0
- package/dist/async/middlewares/observe/observe.types.js.map +1 -0
- package/dist/async/middlewares/retry/_module.d.ts +1 -0
- package/dist/async/middlewares/retry/_module.js +1 -0
- package/dist/async/middlewares/retry/_module.js.map +1 -1
- package/dist/async/middlewares/retry/retry.middleware.d.ts +36 -86
- package/dist/async/middlewares/retry/retry.middleware.js +70 -22
- package/dist/async/middlewares/retry/retry.middleware.js.map +1 -1
- package/dist/async/middlewares/retry/retry.types.d.ts +77 -0
- package/dist/async/middlewares/retry/retry.types.js +7 -0
- package/dist/async/middlewares/retry/retry.types.js.map +1 -0
- package/dist/async/middlewares/timeout/_module.d.ts +1 -0
- package/dist/async/middlewares/timeout/_module.js +1 -0
- package/dist/async/middlewares/timeout/_module.js.map +1 -1
- package/dist/async/middlewares/timeout/timeout.middleware.d.ts +1 -47
- package/dist/async/middlewares/timeout/timeout.middleware.js +1 -1
- package/dist/async/middlewares/timeout/timeout.middleware.js.map +1 -1
- package/dist/async/middlewares/timeout/timeout.type.d.ts +51 -0
- package/dist/async/middlewares/timeout/timeout.type.js +6 -0
- package/dist/async/middlewares/timeout/timeout.type.js.map +1 -0
- package/dist/async/utilities/promise-queue/promise-queue.js +19 -8
- package/dist/async/utilities/promise-queue/promise-queue.js.map +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/contracts/event-bus.contract.d.ts +0 -6
- package/dist/event-bus/contracts/event-bus.contract.js +1 -7
- package/dist/event-bus/contracts/event-bus.contract.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/event-bus/implementations/derivables/event-bus/event-bus.js +6 -11
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +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 +25 -41
- package/dist/lock/contracts/lock.errors.d.ts +5 -56
- package/dist/lock/contracts/lock.errors.js +1 -123
- 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 +50 -26
- 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 +43 -47
- 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/_module-exports.d.ts +1 -1
- package/dist/utilities/_module-exports.js +1 -1
- package/dist/utilities/_module-exports.js.map +1 -1
- package/dist/utilities/classes/hooks/async-hooks.d.ts +6 -4
- package/dist/utilities/classes/hooks/async-hooks.js +3 -1
- package/dist/utilities/classes/hooks/async-hooks.js.map +1 -1
- package/dist/utilities/classes/hooks/hooks.d.ts +1 -1
- package/dist/utilities/classes/hooks/hooks.js +1 -1
- package/dist/utilities/classes/hooks/hooks.js.map +1 -1
- 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 +5 -5
- 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-exports.d.ts → _module.d.ts} +6 -1
- package/dist/utilities/functions/{_module-exports.js → _module.js} +7 -2
- package/dist/utilities/functions/_module.js.map +1 -0
- package/dist/utilities/functions/error-policy.d.ts +54 -0
- package/dist/utilities/functions/error-policy.js +63 -0
- package/dist/utilities/functions/error-policy.js.map +1 -0
- package/dist/utilities/functions/invokable.d.ts +57 -1
- package/dist/utilities/functions/invokable.js +3 -1
- package/dist/utilities/functions/invokable.js.map +1 -1
- package/dist/utilities/functions/is-class.d.ts +9 -0
- package/dist/utilities/functions/is-class.js +15 -0
- package/dist/utilities/functions/is-class.js.map +1 -0
- 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/dist/utilities/functions/is-standard-schema.d.ts +2 -0
- package/dist/utilities/functions/is-standard-schema.js +5 -0
- package/dist/utilities/functions/is-standard-schema.js.map +1 -0
- package/dist/utilities/functions/lazy.d.ts +27 -1
- package/dist/utilities/functions/lazy.js.map +1 -1
- package/dist/utilities/functions/option.d.ts +32 -0
- package/dist/utilities/functions/option.js +25 -0
- package/dist/utilities/functions/option.js.map +1 -0
- package/dist/utilities/functions/resolve-one-or-more.d.ts +5 -1
- package/dist/utilities/functions/resolve-one-or-more.js.map +1 -1
- package/dist/utilities/functions/result.d.ts +81 -1
- package/dist/utilities/functions/result.js +46 -2
- package/dist/utilities/functions/result.js.map +1 -1
- package/dist/utilities/types/_module.d.ts +1 -7
- package/dist/utilities/types/_module.js +1 -7
- package/dist/utilities/types/_module.js.map +1 -1
- package/dist/utilities/types/any-class.type.d.ts +3 -0
- package/dist/utilities/types/any-class.type.js +2 -0
- package/dist/utilities/types/any-class.type.js.map +1 -0
- package/package.json +1 -1
- package/dist/async/middlewares/_shared.d.ts +0 -15
- package/dist/async/middlewares/_shared.js +0 -15
- package/dist/async/middlewares/_shared.js.map +0 -1
- package/dist/async/middlewares/hedging/_shared.js +0 -5
- package/dist/async/middlewares/hedging/_shared.js.map +0 -1
- package/dist/async/middlewares/hedging/concurrent-hedging/_module.d.ts +0 -1
- package/dist/async/middlewares/hedging/concurrent-hedging/_module.js +0 -2
- package/dist/async/middlewares/hedging/concurrent-hedging/_module.js.map +0 -1
- package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.d.ts +0 -51
- package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js +0 -138
- package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js.map +0 -1
- package/dist/async/middlewares/hedging/sequential-hedging/_module.d.ts +0 -1
- package/dist/async/middlewares/hedging/sequential-hedging/_module.js +0 -2
- package/dist/async/middlewares/hedging/sequential-hedging/_module.js.map +0 -1
- package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js +0 -104
- package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js.map +0 -1
- package/dist/event-bus/contracts/event-bus.errors.d.ts +0 -72
- package/dist/event-bus/contracts/event-bus.errors.js +0 -110
- package/dist/event-bus/contracts/event-bus.errors.js.map +0 -1
- package/dist/utilities/functions/_module-exports.js.map +0 -1
- package/dist/utilities/types/at-least-one.type.d.ts +0 -8
- package/dist/utilities/types/at-least-one.type.js +0 -5
- package/dist/utilities/types/at-least-one.type.js.map +0 -1
- package/dist/utilities/types/factory.type.d.ts +0 -44
- package/dist/utilities/types/factory.type.js +0 -5
- package/dist/utilities/types/factory.type.js.map +0 -1
- package/dist/utilities/types/invokable.type.d.ts +0 -20
- package/dist/utilities/types/invokable.type.js +0 -5
- package/dist/utilities/types/invokable.type.js.map +0 -1
- package/dist/utilities/types/items.type.d.ts +0 -8
- package/dist/utilities/types/items.type.js +0 -5
- package/dist/utilities/types/items.type.js.map +0 -1
- package/dist/utilities/types/lazy.type.d.ts +0 -31
- package/dist/utilities/types/lazy.type.js +0 -5
- package/dist/utilities/types/lazy.type.js.map +0 -1
- package/dist/utilities/types/one-or-more.type.d.ts +0 -8
- package/dist/utilities/types/one-or-more.type.js +0 -5
- package/dist/utilities/types/one-or-more.type.js.map +0 -1
- package/dist/utilities/types/result.type.d.ts +0 -18
- package/dist/utilities/types/result.type.js +0 -5
- package/dist/utilities/types/result.type.js.map +0 -1
|
@@ -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":"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,iCAAiC,EAAE;gBACrC,IAAI,CAAC,oBAAoB,CAChC,CAAC;IACN,CAAC;IAED,WAAW,CAAC,eAAgC;QACxC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzD,OAAO,IAAI,IAAI,CAAC;YACZ,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,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,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;YAC/C,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACjE,cAAc;YACd,uBAAuB,EAAE,IAAI,CAAC,uBAAuB;YACrD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;SAC9C,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,iBAAuB;QAC7B,OAAO,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC;CACJ"}
|
|
@@ -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>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Lock
|
|
3
3
|
*/
|
|
4
|
+
import { TimeSpan } from "../../../../utilities/_module-exports.js";
|
|
4
5
|
import { resolveLazyable, resultSuccess, resultFailure, } from "../../../../utilities/_module-exports.js";
|
|
5
6
|
import { resolveOneOrMoreStr } from "../../../../utilities/_module-exports.js";
|
|
6
|
-
import { KeyAlreadyAcquiredLockError, LOCK_EVENTS,
|
|
7
|
+
import { KeyAlreadyAcquiredLockError, LOCK_EVENTS, UnownedRefreshLockError, UnownedReleaseLockError, } from "../../../../lock/contracts/_module-exports.js";
|
|
7
8
|
import {} from "../../../../lock/contracts/_module-exports.js";
|
|
8
9
|
import { LazyPromise } from "../../../../async/_module-exports.js";
|
|
9
10
|
/**
|
|
@@ -13,12 +14,13 @@ export class Lock {
|
|
|
13
14
|
/**
|
|
14
15
|
* @internal
|
|
15
16
|
*/
|
|
16
|
-
static
|
|
17
|
+
static _internal_serialize(deserializedValue) {
|
|
17
18
|
return {
|
|
18
19
|
key: deserializedValue.key.resolved,
|
|
20
|
+
expirationInMs: deserializedValue.lockState.get()?.toEndDate().getTime() ??
|
|
21
|
+
null,
|
|
19
22
|
owner: deserializedValue.owner,
|
|
20
23
|
ttlInMs: deserializedValue.ttl?.toMilliseconds() ?? null,
|
|
21
|
-
expirationInMs: deserializedValue.lockState.get()?.getTime() ?? null,
|
|
22
24
|
};
|
|
23
25
|
}
|
|
24
26
|
createLazyPromise;
|
|
@@ -32,16 +34,18 @@ export class Lock {
|
|
|
32
34
|
defaultBlockingTime;
|
|
33
35
|
defaultRefreshTime;
|
|
34
36
|
serdeTransformerName;
|
|
35
|
-
/**
|
|
36
|
-
* @internal
|
|
37
|
-
*/
|
|
38
37
|
constructor(settings) {
|
|
39
38
|
const { createLazyPromise, adapter, lockState, eventDispatcher, key, owner, ttl, serdeTransformerName, expirationInMs, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, } = settings;
|
|
40
39
|
this.serdeTransformerName = serdeTransformerName;
|
|
41
40
|
this.createLazyPromise = createLazyPromise;
|
|
42
41
|
this.adapter = adapter;
|
|
43
42
|
this.lockState = lockState;
|
|
44
|
-
|
|
43
|
+
if (expirationInMs !== undefined && expirationInMs === null) {
|
|
44
|
+
this.lockState.set(null);
|
|
45
|
+
}
|
|
46
|
+
if (expirationInMs !== undefined && expirationInMs !== null) {
|
|
47
|
+
this.lockState.set(TimeSpan.fromDateRange(new Date(), new Date(expirationInMs)));
|
|
48
|
+
}
|
|
45
49
|
this.eventDispatcher = eventDispatcher;
|
|
46
50
|
this.key = key;
|
|
47
51
|
this.owner = resolveOneOrMoreStr(owner);
|
|
@@ -50,7 +54,7 @@ export class Lock {
|
|
|
50
54
|
this.defaultBlockingTime = defaultBlockingTime;
|
|
51
55
|
this.defaultRefreshTime = defaultRefreshTime;
|
|
52
56
|
}
|
|
53
|
-
|
|
57
|
+
_internal_getSerdeTransformerName() {
|
|
54
58
|
return this.serdeTransformerName;
|
|
55
59
|
}
|
|
56
60
|
run(asyncFn) {
|
|
@@ -93,7 +97,7 @@ export class Lock {
|
|
|
93
97
|
});
|
|
94
98
|
}
|
|
95
99
|
runBlockingOrFail(asyncFn, settings) {
|
|
96
|
-
return
|
|
100
|
+
return this.createLazyPromise(async () => {
|
|
97
101
|
try {
|
|
98
102
|
await this.acquireBlockingOrFail(settings);
|
|
99
103
|
return await resolveLazyable(asyncFn);
|
|
@@ -105,10 +109,9 @@ export class Lock {
|
|
|
105
109
|
}
|
|
106
110
|
acquire() {
|
|
107
111
|
return this.createLazyPromise(async () => {
|
|
108
|
-
const prevState = this.lockState.get()?.getTime() ?? null;
|
|
109
112
|
try {
|
|
110
|
-
this.lockState.remove();
|
|
111
113
|
const hasAquired = await this.adapter.acquire(this.key.namespaced, this.owner, this.ttl);
|
|
114
|
+
this.lockState.remove();
|
|
112
115
|
if (hasAquired) {
|
|
113
116
|
this.lockState.set(this.ttl);
|
|
114
117
|
const event = {
|
|
@@ -126,13 +129,12 @@ export class Lock {
|
|
|
126
129
|
owner: this.owner,
|
|
127
130
|
};
|
|
128
131
|
this.eventDispatcher
|
|
129
|
-
.dispatch(LOCK_EVENTS.
|
|
132
|
+
.dispatch(LOCK_EVENTS.UNAVAILABLE, event)
|
|
130
133
|
.defer();
|
|
131
134
|
}
|
|
132
135
|
return hasAquired;
|
|
133
136
|
}
|
|
134
137
|
catch (error) {
|
|
135
|
-
this.lockState.set(prevState);
|
|
136
138
|
const event = {
|
|
137
139
|
key: this.key.resolved,
|
|
138
140
|
owner: this.owner,
|
|
@@ -142,7 +144,7 @@ export class Lock {
|
|
|
142
144
|
this.eventDispatcher
|
|
143
145
|
.dispatch(LOCK_EVENTS.UNEXPECTED_ERROR, event)
|
|
144
146
|
.defer();
|
|
145
|
-
throw
|
|
147
|
+
throw error;
|
|
146
148
|
}
|
|
147
149
|
});
|
|
148
150
|
}
|
|
@@ -155,7 +157,7 @@ export class Lock {
|
|
|
155
157
|
});
|
|
156
158
|
}
|
|
157
159
|
acquireBlocking(settings = {}) {
|
|
158
|
-
return
|
|
160
|
+
return this.createLazyPromise(async () => {
|
|
159
161
|
const { time = this.defaultBlockingTime, interval = this.defaultBlockingInterval, } = settings;
|
|
160
162
|
const endDate = time.toEndDate();
|
|
161
163
|
while (endDate.getTime() > new Date().getTime()) {
|
|
@@ -169,7 +171,7 @@ export class Lock {
|
|
|
169
171
|
});
|
|
170
172
|
}
|
|
171
173
|
acquireBlockingOrFail(settings) {
|
|
172
|
-
return
|
|
174
|
+
return this.createLazyPromise(async () => {
|
|
173
175
|
const hasAquired = await this.acquireBlocking(settings);
|
|
174
176
|
if (!hasAquired) {
|
|
175
177
|
throw new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`);
|
|
@@ -178,7 +180,6 @@ export class Lock {
|
|
|
178
180
|
}
|
|
179
181
|
release() {
|
|
180
182
|
return this.createLazyPromise(async () => {
|
|
181
|
-
const prevState = this.lockState.get()?.getTime() ?? null;
|
|
182
183
|
try {
|
|
183
184
|
const hasReleased = await this.adapter.release(this.key.namespaced, this.owner);
|
|
184
185
|
if (hasReleased) {
|
|
@@ -203,7 +204,6 @@ export class Lock {
|
|
|
203
204
|
return hasReleased;
|
|
204
205
|
}
|
|
205
206
|
catch (error) {
|
|
206
|
-
this.lockState.set(prevState);
|
|
207
207
|
const event = {
|
|
208
208
|
key: this.key.resolved,
|
|
209
209
|
owner: this.owner,
|
|
@@ -213,7 +213,7 @@ export class Lock {
|
|
|
213
213
|
this.eventDispatcher
|
|
214
214
|
.dispatch(LOCK_EVENTS.UNEXPECTED_ERROR, event)
|
|
215
215
|
.defer();
|
|
216
|
-
throw
|
|
216
|
+
throw error;
|
|
217
217
|
}
|
|
218
218
|
});
|
|
219
219
|
}
|
|
@@ -227,7 +227,6 @@ export class Lock {
|
|
|
227
227
|
}
|
|
228
228
|
forceRelease() {
|
|
229
229
|
return this.createLazyPromise(async () => {
|
|
230
|
-
const prevState = this.lockState.get()?.getTime() ?? null;
|
|
231
230
|
try {
|
|
232
231
|
await this.adapter.forceRelease(this.key.namespaced);
|
|
233
232
|
this.lockState.remove();
|
|
@@ -239,7 +238,6 @@ export class Lock {
|
|
|
239
238
|
.defer();
|
|
240
239
|
}
|
|
241
240
|
catch (error) {
|
|
242
|
-
this.lockState.set(prevState);
|
|
243
241
|
const event = {
|
|
244
242
|
key: this.key.resolved,
|
|
245
243
|
owner: this.owner,
|
|
@@ -249,7 +247,7 @@ export class Lock {
|
|
|
249
247
|
this.eventDispatcher
|
|
250
248
|
.dispatch(LOCK_EVENTS.UNEXPECTED_ERROR, event)
|
|
251
249
|
.defer();
|
|
252
|
-
throw
|
|
250
|
+
throw error;
|
|
253
251
|
}
|
|
254
252
|
});
|
|
255
253
|
}
|
|
@@ -281,7 +279,6 @@ export class Lock {
|
|
|
281
279
|
}
|
|
282
280
|
refresh(ttl = this.defaultRefreshTime) {
|
|
283
281
|
return this.createLazyPromise(async () => {
|
|
284
|
-
const prevState = this.lockState.get()?.getTime() ?? null;
|
|
285
282
|
try {
|
|
286
283
|
const hasRefreshed = await this.adapter.refresh(this.key.namespaced, this.owner, ttl);
|
|
287
284
|
if (hasRefreshed) {
|
|
@@ -307,7 +304,6 @@ export class Lock {
|
|
|
307
304
|
return hasRefreshed;
|
|
308
305
|
}
|
|
309
306
|
catch (error) {
|
|
310
|
-
this.lockState.set(prevState);
|
|
311
307
|
const event = {
|
|
312
308
|
key: this.key.resolved,
|
|
313
309
|
owner: this.owner,
|
|
@@ -332,13 +328,41 @@ export class Lock {
|
|
|
332
328
|
getRemainingTime() {
|
|
333
329
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
334
330
|
return this.createLazyPromise(async () => {
|
|
335
|
-
|
|
331
|
+
try {
|
|
332
|
+
return this.lockState.get();
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
const event = {
|
|
336
|
+
key: this.key.resolved,
|
|
337
|
+
owner: this.owner,
|
|
338
|
+
ttl: this.ttl,
|
|
339
|
+
error,
|
|
340
|
+
};
|
|
341
|
+
this.eventDispatcher
|
|
342
|
+
.dispatch(LOCK_EVENTS.UNEXPECTED_ERROR, event)
|
|
343
|
+
.defer();
|
|
344
|
+
throw error;
|
|
345
|
+
}
|
|
336
346
|
});
|
|
337
347
|
}
|
|
338
348
|
getOwner() {
|
|
339
349
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
340
350
|
return this.createLazyPromise(async () => {
|
|
341
|
-
|
|
351
|
+
try {
|
|
352
|
+
return this.owner;
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
const event = {
|
|
356
|
+
key: this.key.resolved,
|
|
357
|
+
owner: this.owner,
|
|
358
|
+
ttl: this.ttl,
|
|
359
|
+
error,
|
|
360
|
+
};
|
|
361
|
+
this.eventDispatcher
|
|
362
|
+
.dispatch(LOCK_EVENTS.UNEXPECTED_ERROR, event)
|
|
363
|
+
.defer();
|
|
364
|
+
throw error;
|
|
365
|
+
}
|
|
342
366
|
});
|
|
343
367
|
}
|
|
344
368
|
}
|