@daiso-tech/core 0.35.4 → 0.37.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.
Files changed (194) hide show
  1. package/README.md +22 -54
  2. package/dist/async/backof-policies/_shared.d.ts +8 -2
  3. package/dist/async/backof-policies/_shared.js +0 -1
  4. package/dist/async/backof-policies/_shared.js.map +1 -1
  5. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +3 -3
  6. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +10 -4
  7. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js.map +1 -1
  8. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +3 -3
  9. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +10 -4
  10. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js.map +1 -1
  11. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +3 -3
  12. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +10 -4
  13. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js.map +1 -1
  14. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +3 -3
  15. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +10 -4
  16. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js.map +1 -1
  17. package/dist/async/middlewares/_shared.d.ts +6 -1
  18. package/dist/async/middlewares/_shared.js +11 -1
  19. package/dist/async/middlewares/_shared.js.map +1 -1
  20. package/dist/async/middlewares/fallback/fallback.middleware.d.ts +3 -3
  21. package/dist/async/middlewares/fallback/fallback.middleware.js +3 -2
  22. package/dist/async/middlewares/fallback/fallback.middleware.js.map +1 -1
  23. package/dist/async/middlewares/hedging/_shared.d.ts +7 -7
  24. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js +7 -7
  25. package/dist/async/middlewares/hedging/concurrent-hedging/concurrent-hedging.middleware.js.map +1 -1
  26. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js +6 -6
  27. package/dist/async/middlewares/hedging/sequential-hedging/sequential-hedging.middleware.js.map +1 -1
  28. package/dist/async/middlewares/observe/observe.middleware.d.ts +4 -4
  29. package/dist/async/middlewares/retry/retry.middleware.d.ts +5 -4
  30. package/dist/async/middlewares/retry/retry.middleware.js +10 -10
  31. package/dist/async/middlewares/retry/retry.middleware.js.map +1 -1
  32. package/dist/async/middlewares/timeout/timeout.middleware.d.ts +4 -2
  33. package/dist/async/middlewares/timeout/timeout.middleware.js +3 -1
  34. package/dist/async/middlewares/timeout/timeout.middleware.js.map +1 -1
  35. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +1 -1
  36. package/dist/async/utilities/lazy-promise/lazy-promise.js +1 -1
  37. package/dist/async/utilities/promise-queue/promise-queue.js.map +1 -1
  38. package/dist/cache/contracts/cache-factory.contract.d.ts +2 -2
  39. package/dist/cache/contracts/cache.errors.d.ts +3 -3
  40. package/dist/cache/contracts/cache.errors.js +1 -1
  41. package/dist/cache/contracts/cache.errors.js.map +1 -1
  42. package/dist/cache/implementations/adapters/_module-exports.d.ts +1 -2
  43. package/dist/cache/implementations/adapters/_module-exports.js +1 -2
  44. package/dist/cache/implementations/adapters/_module-exports.js.map +1 -1
  45. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +41 -16
  46. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +102 -57
  47. package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
  48. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +1 -1
  49. package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
  50. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +4 -1
  51. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  52. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
  53. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +1 -1
  54. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -1
  55. package/dist/cache/implementations/derivables/cache/cache.d.ts +27 -11
  56. package/dist/cache/implementations/derivables/cache/cache.js +38 -34
  57. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  58. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +15 -47
  59. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js +19 -45
  60. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  61. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -5
  62. package/dist/cache/implementations/test-utilities/cache.test-suite.js +4 -5
  63. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  64. package/dist/collection/contracts/async-collection.contract.d.ts +127 -121
  65. package/dist/collection/contracts/collection.contract.d.ts +126 -120
  66. package/dist/collection/contracts/collection.errors.d.ts +3 -3
  67. package/dist/collection/contracts/collection.errors.js +1 -1
  68. package/dist/collection/contracts/collection.errors.js.map +1 -1
  69. package/dist/collection/implementations/_shared.d.ts +4 -4
  70. package/dist/collection/implementations/_shared.js +2 -2
  71. package/dist/collection/implementations/_shared.js.map +1 -1
  72. package/dist/collection/implementations/async-iterable-collection/_shared/_module.d.ts +1 -0
  73. package/dist/collection/implementations/async-iterable-collection/_shared/_module.js +1 -0
  74. package/dist/collection/implementations/async-iterable-collection/_shared/_module.js.map +1 -1
  75. package/dist/collection/implementations/async-iterable-collection/_shared/async-validate-iterable.d.ts +7 -0
  76. package/dist/collection/implementations/async-iterable-collection/_shared/async-validate-iterable.js +17 -0
  77. package/dist/collection/implementations/async-iterable-collection/_shared/async-validate-iterable.js.map +1 -0
  78. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +15 -13
  79. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +19 -16
  80. package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
  81. package/dist/collection/implementations/iterable-collection/_shared/_module.d.ts +1 -0
  82. package/dist/collection/implementations/iterable-collection/_shared/_module.js +1 -0
  83. package/dist/collection/implementations/iterable-collection/_shared/_module.js.map +1 -1
  84. package/dist/collection/implementations/iterable-collection/_shared/validate-iterable.d.ts +7 -0
  85. package/dist/collection/implementations/iterable-collection/_shared/validate-iterable.js +21 -0
  86. package/dist/collection/implementations/iterable-collection/_shared/validate-iterable.js.map +1 -0
  87. package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +14 -12
  88. package/dist/collection/implementations/iterable-collection/iterable-collection.js +16 -13
  89. package/dist/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
  90. package/dist/collection/implementations/list-collection/list-collection.d.ts +14 -12
  91. package/dist/collection/implementations/list-collection/list-collection.js +26 -13
  92. package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
  93. package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +2 -2
  94. package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -2
  95. package/dist/event-bus/contracts/event-bus.errors.d.ts +3 -3
  96. package/dist/event-bus/contracts/event-bus.errors.js +1 -1
  97. package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
  98. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.d.ts +1 -1
  99. package/dist/event-bus/implementations/adapters/memory-event-bus-adapter/memory-event-bus-adapter.js +1 -1
  100. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +46 -9
  101. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +64 -22
  102. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  103. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +12 -41
  104. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js +15 -35
  105. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  106. package/dist/lock/contracts/lock.errors.d.ts +2 -2
  107. package/dist/lock/contracts/lock.errors.js.map +1 -1
  108. package/dist/lock/implementations/adapters/_module-exports.d.ts +1 -2
  109. package/dist/lock/implementations/adapters/_module-exports.js +1 -2
  110. package/dist/lock/implementations/adapters/_module-exports.js.map +1 -1
  111. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +40 -15
  112. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +75 -34
  113. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  114. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +6 -3
  115. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +1 -1
  116. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
  117. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +22 -18
  118. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +20 -22
  119. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  120. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +3 -3
  121. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +12 -6
  122. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  123. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +4 -2
  124. package/dist/lock/implementations/derivables/lock-provider/lock.js +16 -18
  125. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  126. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +6 -50
  127. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js +10 -54
  128. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  129. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +1 -9
  130. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +1 -9
  131. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  132. package/dist/serde/contracts/flexible-serde.contract.d.ts +9 -2
  133. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +1 -1
  134. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
  135. package/dist/utilities/classes/_module.d.ts +1 -1
  136. package/dist/utilities/classes/_module.js +1 -1
  137. package/dist/utilities/classes/_module.js.map +1 -1
  138. package/dist/utilities/classes/hooks/hooks.d.ts +2 -2
  139. package/dist/utilities/classes/hooks/hooks.js +2 -2
  140. package/dist/utilities/classes/namespace/_module.d.ts +1 -0
  141. package/dist/utilities/classes/namespace/_module.js +2 -0
  142. package/dist/utilities/classes/namespace/_module.js.map +1 -0
  143. package/dist/utilities/classes/{key-prefixer/key-prefixer.d.ts → namespace/namespace.d.ts} +38 -17
  144. package/dist/utilities/classes/{key-prefixer/key-prefixer.js → namespace/namespace.js} +51 -19
  145. package/dist/utilities/classes/namespace/namespace.js.map +1 -0
  146. package/dist/utilities/classes/time-span/time-span.d.ts +1 -2
  147. package/dist/utilities/classes/time-span/time-span.js +1 -4
  148. package/dist/utilities/classes/time-span/time-span.js.map +1 -1
  149. package/dist/utilities/functions/_module-exports.d.ts +2 -1
  150. package/dist/utilities/functions/_module-exports.js +2 -1
  151. package/dist/utilities/functions/_module-exports.js.map +1 -1
  152. package/dist/utilities/functions/lazy.d.ts +4 -0
  153. package/dist/utilities/functions/lazy.js +9 -3
  154. package/dist/utilities/functions/lazy.js.map +1 -1
  155. package/dist/utilities/functions/result.d.ts +11 -0
  156. package/dist/utilities/functions/result.js +15 -0
  157. package/dist/utilities/functions/result.js.map +1 -0
  158. package/dist/utilities/functions/validate.d.ts +8 -0
  159. package/dist/utilities/functions/validate.js +17 -0
  160. package/dist/utilities/functions/validate.js.map +1 -0
  161. package/dist/utilities/types/factory.type.d.ts +13 -18
  162. package/dist/utilities/types/result.type.d.ts +11 -1
  163. package/package.json +15 -11
  164. package/dist/cache/implementations/adapters/libsql-cache-adapter/_module.d.ts +0 -1
  165. package/dist/cache/implementations/adapters/libsql-cache-adapter/_module.js +0 -2
  166. package/dist/cache/implementations/adapters/libsql-cache-adapter/_module.js.map +0 -1
  167. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.d.ts +0 -61
  168. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js +0 -95
  169. package/dist/cache/implementations/adapters/libsql-cache-adapter/libsql-cache-adapter.js.map +0 -1
  170. package/dist/cache/implementations/adapters/sqlite-cache-adapter/_module.d.ts +0 -1
  171. package/dist/cache/implementations/adapters/sqlite-cache-adapter/_module.js +0 -2
  172. package/dist/cache/implementations/adapters/sqlite-cache-adapter/_module.js.map +0 -1
  173. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.d.ts +0 -59
  174. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js +0 -94
  175. package/dist/cache/implementations/adapters/sqlite-cache-adapter/sqlite-cache-adapter.js.map +0 -1
  176. package/dist/lock/implementations/adapters/libsql-lock-adapter/_module.d.ts +0 -1
  177. package/dist/lock/implementations/adapters/libsql-lock-adapter/_module.js +0 -2
  178. package/dist/lock/implementations/adapters/libsql-lock-adapter/_module.js.map +0 -1
  179. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.d.ts +0 -60
  180. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js +0 -84
  181. package/dist/lock/implementations/adapters/libsql-lock-adapter/libsql-lock-adapter.js.map +0 -1
  182. package/dist/lock/implementations/adapters/sqlite-lock-adapter/_module.d.ts +0 -1
  183. package/dist/lock/implementations/adapters/sqlite-lock-adapter/_module.js +0 -2
  184. package/dist/lock/implementations/adapters/sqlite-lock-adapter/_module.js.map +0 -1
  185. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.d.ts +0 -59
  186. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js +0 -83
  187. package/dist/lock/implementations/adapters/sqlite-lock-adapter/sqlite-lock-adapter.js.map +0 -1
  188. package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
  189. package/dist/utilities/classes/key-prefixer/_module.js +0 -2
  190. package/dist/utilities/classes/key-prefixer/_module.js.map +0 -1
  191. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +0 -1
  192. package/dist/utilities/functions/factory.d.ts +0 -44
  193. package/dist/utilities/functions/factory.js +0 -80
  194. package/dist/utilities/functions/factory.js.map +0 -1
@@ -2,19 +2,27 @@
2
2
  * @module Lock
3
3
  */
4
4
  import { TimeSpan, type Factory, type AsyncLazy } from "../../../../utilities/_module-exports.js";
5
- import { KeyPrefixer, type OneOrMore } from "../../../../utilities/_module-exports.js";
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";
8
8
  import { LazyPromise } from "../../../../async/_module-exports.js";
9
9
  import type { EventListener, IEventBus, Unsubscribe } from "../../../../event-bus/contracts/_module-exports.js";
10
- import type { IFlexibleSerde } from "../../../../serde/contracts/_module-exports.js";
10
+ import type { ISerderRegister } from "../../../../serde/contracts/_module-exports.js";
11
11
  /**
12
12
  *
13
13
  * IMPORT_PATH: `"@daiso-tech/core/lock"`
14
14
  * @group Derivables
15
15
  */
16
16
  export type LockProviderSettingsBase = {
17
- keyPrefixer: KeyPrefixer;
17
+ /**
18
+ * @default
19
+ * ```ts
20
+ * import { Namespace } from "@daiso-tech/core/utilities";
21
+ *
22
+ * new Namespace(["@", "lock"])
23
+ * ```
24
+ */
25
+ namespace?: Namespace;
18
26
  /**
19
27
  * You can pass a {@link Factory | `Factory`} of {@link LazyPromise| `LazyPromise`} to configure default settings for all {@link LazyPromise| `LazyPromise`} instances used in the `LockProvider` class.
20
28
  * @default
@@ -25,7 +33,7 @@ export type LockProviderSettingsBase = {
25
33
  * ```
26
34
  */
27
35
  lazyPromiseFactory?: Factory<AsyncLazy<any>, LazyPromise<any>>;
28
- serde: OneOrMore<IFlexibleSerde>;
36
+ serde: OneOrMore<ISerderRegister>;
29
37
  /**
30
38
  * @default {""}
31
39
  */
@@ -39,10 +47,8 @@ export type LockProviderSettingsBase = {
39
47
  * ```ts
40
48
  * import { EventBus } from "@daiso-tech/core/event-bus";
41
49
  * import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/adapters";
42
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
43
50
  *
44
51
  * new EventBus({
45
- * keyPrefixer: new KeyPrefixer("event-bus"),
46
52
  * adapter: new MemoryEventBusAdapter()
47
53
  * })
48
54
  * ```
@@ -99,7 +105,7 @@ export type LockProviderSettings = LockProviderSettingsBase & {
99
105
  *
100
106
  * Note the {@link ILock | `ILock`} instances created by the `LockProvider` class are serializable and deserializable,
101
107
  * allowing them to be seamlessly transferred across different servers, processes, and databases.
102
- * This can be done directly using {@link IFlexibleSerde | `IFlexibleSerde`} or indirectly through components that rely on {@link IFlexibleSerde | `IFlexibleSerde`} internally.
108
+ * This can be done directly using {@link ISerderRegister | `ISerderRegister`} or indirectly through components that rely on {@link ISerderRegister | `ISerderRegister`} internally.
103
109
  *
104
110
  * IMPORT_PATH: `"@daiso-tech/core/lock"`
105
111
  * @group Derivables
@@ -108,7 +114,7 @@ export declare class LockProvider implements ILockProvider {
108
114
  private lockStore;
109
115
  private readonly eventBus;
110
116
  private readonly adapter;
111
- private readonly keyPrefixer;
117
+ private readonly namespace;
112
118
  private readonly createOwnerId;
113
119
  private readonly defaultTtl;
114
120
  private readonly defaultBlockingInterval;
@@ -122,7 +128,6 @@ export declare class LockProvider implements ILockProvider {
122
128
  * ```ts
123
129
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
124
130
  * import { LockProvider } from "@daiso-tech/core/lock";
125
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
126
131
  * import { Serde } from "@daiso-tech/core/serde";
127
132
  * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
128
133
  * import Sqlite from "better-sqlite3";
@@ -136,7 +141,6 @@ export declare class LockProvider implements ILockProvider {
136
141
  *
137
142
  * const serde = new Serde(new SuperJsonSerdeAdapter())
138
143
  * const lockProvider = new LockProvider({
139
- * keyPrefixer: new KeyPrefixer("lock"),
140
144
  * serde,
141
145
  * adapter: lockAdapter,
142
146
  * });
@@ -145,32 +149,32 @@ export declare class LockProvider implements ILockProvider {
145
149
  constructor(settings: LockProviderSettings);
146
150
  private registerToSerde;
147
151
  /**
148
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
152
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
149
153
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
150
154
  */
151
155
  addListener<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): LazyPromise<void>;
152
156
  /**
153
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
157
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
154
158
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
155
159
  */
156
160
  removeListener<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): LazyPromise<void>;
157
161
  /**
158
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
162
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
159
163
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
160
164
  */
161
165
  listenOnce<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): LazyPromise<void>;
162
166
  /**
163
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
167
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
164
168
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
165
169
  */
166
170
  asPromise<TEventName extends keyof LockEventMap>(eventName: TEventName): LazyPromise<LockEventMap[TEventName]>;
167
171
  /**
168
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
172
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
169
173
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
170
174
  */
171
175
  subscribeOnce<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): LazyPromise<Unsubscribe>;
172
176
  /**
173
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
177
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
174
178
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
175
179
  */
176
180
  subscribe<TEventName extends keyof LockEventMap>(eventName: TEventName, listener: EventListener<LockEventMap[TEventName]>): LazyPromise<Unsubscribe>;
@@ -180,13 +184,13 @@ export declare class LockProvider implements ILockProvider {
180
184
  * ```ts
181
185
  * import { LockProvider } from "@daiso-tech/core/lock";
182
186
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
183
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
187
+ * import { Namespace } from "@daiso-tech/core/utilities";
184
188
  * import { Serde } from "@daiso-tech/core/serde";
185
189
  * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
186
190
  *
187
191
  * const lockProvider = new LockProvider({
188
192
  * adapter: new MemoryLockAdapter(),
189
- * keyPrefixer: new KeyPrefixer("lock"),
193
+ * namespace: new Namespace("lock"),
190
194
  * serde: new Serde(new SuperJsonSerdeAdapter())
191
195
  * });
192
196
  *
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { TimeSpan, CORE, resolveFactory, resolveOneOrMore, } from "../../../../utilities/_module-exports.js";
5
- import { KeyPrefixer } from "../../../../utilities/_module-exports.js";
4
+ import { TimeSpan, CORE, resolveOneOrMore, resolveInvokable, } from "../../../../utilities/_module-exports.js";
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";
8
8
  import { EventBus } from "../../../../event-bus/implementations/derivables/_module-exports.js";
@@ -18,7 +18,7 @@ import { LockSerdeTransformer } from "../../../../lock/implementations/derivable
18
18
  *
19
19
  * Note the {@link ILock | `ILock`} instances created by the `LockProvider` class are serializable and deserializable,
20
20
  * allowing them to be seamlessly transferred across different servers, processes, and databases.
21
- * This can be done directly using {@link IFlexibleSerde | `IFlexibleSerde`} or indirectly through components that rely on {@link IFlexibleSerde | `IFlexibleSerde`} internally.
21
+ * This can be done directly using {@link ISerderRegister | `ISerderRegister`} or indirectly through components that rely on {@link ISerderRegister | `ISerderRegister`} internally.
22
22
  *
23
23
  * IMPORT_PATH: `"@daiso-tech/core/lock"`
24
24
  * @group Derivables
@@ -27,7 +27,7 @@ export class LockProvider {
27
27
  lockStore = {};
28
28
  eventBus;
29
29
  adapter;
30
- keyPrefixer;
30
+ namespace;
31
31
  createOwnerId;
32
32
  defaultTtl;
33
33
  defaultBlockingInterval;
@@ -41,7 +41,6 @@ export class LockProvider {
41
41
  * ```ts
42
42
  * import { SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
43
43
  * import { LockProvider } from "@daiso-tech/core/lock";
44
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
45
44
  * import { Serde } from "@daiso-tech/core/serde";
46
45
  * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
47
46
  * import Sqlite from "better-sqlite3";
@@ -55,15 +54,13 @@ export class LockProvider {
55
54
  *
56
55
  * const serde = new Serde(new SuperJsonSerdeAdapter())
57
56
  * const lockProvider = new LockProvider({
58
- * keyPrefixer: new KeyPrefixer("lock"),
59
57
  * serde,
60
58
  * adapter: lockAdapter,
61
59
  * });
62
60
  * ```
63
61
  */
64
62
  constructor(settings) {
65
- const { defaultTtl = TimeSpan.fromMinutes(5), defaultBlockingInterval = TimeSpan.fromSeconds(1), defaultBlockingTime = TimeSpan.fromMinutes(1), defaultRefreshTime = TimeSpan.fromMinutes(5), createOwnerId = () => v4(), serde, keyPrefixer, adapter, eventBus = new EventBus({
66
- keyPrefixer: new KeyPrefixer("events"),
63
+ const { defaultTtl = TimeSpan.fromMinutes(5), defaultBlockingInterval = TimeSpan.fromSeconds(1), defaultBlockingTime = TimeSpan.fromMinutes(1), defaultRefreshTime = TimeSpan.fromMinutes(5), createOwnerId = () => v4(), serde, namespace = new Namespace(["@", "lock"]), adapter, eventBus = new EventBus({
67
64
  adapter: new MemoryEventBusAdapter(),
68
65
  }), serdeTransformerName = "", lazyPromiseFactory = (invokable) => new LazyPromise(invokable), } = settings;
69
66
  this.serde = serde;
@@ -71,10 +68,10 @@ export class LockProvider {
71
68
  this.defaultBlockingTime = defaultBlockingTime;
72
69
  this.defaultRefreshTime = defaultRefreshTime;
73
70
  this.createOwnerId = createOwnerId;
74
- this.keyPrefixer = keyPrefixer;
71
+ this.namespace = namespace;
75
72
  this.defaultTtl = defaultTtl;
76
73
  this.eventBus = eventBus;
77
- this.lazyPromiseFactory = resolveFactory(lazyPromiseFactory);
74
+ this.lazyPromiseFactory = resolveInvokable(lazyPromiseFactory);
78
75
  this.serdeTransformerName = serdeTransformerName;
79
76
  if (isDatabaseLockAdapter(adapter)) {
80
77
  this.adapter = new DatabaseLockAdapter(adapter);
@@ -92,7 +89,7 @@ export class LockProvider {
92
89
  defaultBlockingTime: this.defaultBlockingTime,
93
90
  defaultRefreshTime: this.defaultRefreshTime,
94
91
  eventBus: this.eventBus,
95
- keyPrefixer: this.keyPrefixer,
92
+ namespace: this.namespace,
96
93
  lockStore: this.lockStore,
97
94
  serdeTransformerName: this.serdeTransformerName,
98
95
  });
@@ -101,62 +98,62 @@ export class LockProvider {
101
98
  }
102
99
  }
103
100
  /**
104
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
101
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
105
102
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
106
103
  */
107
104
  addListener(eventName, listener) {
108
105
  return this.eventBus.addListener(eventName, listener);
109
106
  }
110
107
  /**
111
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
108
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
112
109
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
113
110
  */
114
111
  removeListener(eventName, listener) {
115
112
  return this.eventBus.removeListener(eventName, listener);
116
113
  }
117
114
  /**
118
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
115
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
119
116
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
120
117
  */
121
118
  listenOnce(eventName, listener) {
122
119
  return this.eventBus.listenOnce(eventName, listener);
123
120
  }
124
121
  /**
125
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
122
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
126
123
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
127
124
  */
128
125
  asPromise(eventName) {
129
126
  return this.eventBus.asPromise(eventName);
130
127
  }
131
128
  /**
132
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
129
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
133
130
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
134
131
  */
135
132
  subscribeOnce(eventName, listener) {
136
133
  return this.eventBus.subscribeOnce(eventName, listener);
137
134
  }
138
135
  /**
139
- * You can listen to the following {@link LockEvents | `LockEvents`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
136
+ * You can listen to the following {@link LockEventMap | `LockEventMap`} of all {@link ILock | `ILock`} instances created by the {@link ILockProvider | `ILockProvider`}.
140
137
  * To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
141
138
  */
142
139
  subscribe(eventName, listener) {
143
140
  return this.eventBus.subscribe(eventName, listener);
144
141
  }
145
142
  createLazyPromise(asyncFn) {
146
- return new LazyPromise(asyncFn);
143
+ return this.lazyPromiseFactory(asyncFn);
147
144
  }
148
145
  /**
149
146
  * @example
150
147
  * ```ts
151
148
  * import { LockProvider } from "@daiso-tech/core/lock";
152
149
  * import { MemoryLockAdapter } from "@daiso-tech/core/lock/adapters";
153
- * import { KeyPrefixer } from "@daiso-tech/core/utilities";
150
+ * import { Namespace } from "@daiso-tech/core/utilities";
154
151
  * import { Serde } from "@daiso-tech/core/serde";
155
152
  * import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
156
153
  *
157
154
  * const lockProvider = new LockProvider({
158
155
  * adapter: new MemoryLockAdapter(),
159
- * keyPrefixer: new KeyPrefixer("lock"),
156
+ * namespace: new Namespace("lock"),
160
157
  * serde: new Serde(new SuperJsonSerdeAdapter())
161
158
  * });
162
159
  *
@@ -165,15 +162,16 @@ export class LockProvider {
165
162
  */
166
163
  create(key, settings = {}) {
167
164
  const { ttl = this.defaultTtl, owner = this.createOwnerId() } = settings;
168
- const keyObj = this.keyPrefixer.create(key);
165
+ const keyObj = this.namespace._getInternal().create(key);
169
166
  return new Lock({
170
167
  adapter: this.adapter,
171
168
  createLazyPromise: (asyncFn) => this.createLazyPromise(asyncFn),
172
- lockState: new LockState(this.lockStore, keyObj.prefixed),
169
+ lockState: new LockState(this.lockStore, keyObj.namespaced),
173
170
  eventDispatcher: this.eventBus,
174
171
  key: keyObj,
175
172
  owner,
176
173
  ttl,
174
+ serdeTransformerName: this.serdeTransformerName,
177
175
  expirationInMs: null,
178
176
  defaultBlockingInterval: this.defaultBlockingInterval,
179
177
  defaultBlockingTime: this.defaultBlockingTime,
@@ -1 +1 @@
1
- {"version":3,"file":"lock-provider.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock-provider.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock-provider.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import { Lock, type ISerializedLock } from "../../../../lock/implementations/der
6
6
  import type { OneOrMore } from "../../../../utilities/_module-exports.js";
7
7
  import type { ILockAdapter, LockEventMap } from "../../../../lock/contracts/_module-exports.js";
8
8
  import { type ILockStore } from "../../../../lock/implementations/derivables/lock-provider/lock-state.js";
9
- import { TimeSpan, type KeyPrefixer } from "../../../../utilities/_module-exports.js";
9
+ import { TimeSpan, type Namespace } from "../../../../utilities/_module-exports.js";
10
10
  import type { LazyPromise } from "../../../../async/_module-exports.js";
11
11
  import type { IEventBus } from "../../../../event-bus/contracts/_module-exports.js";
12
12
  /**
@@ -15,7 +15,7 @@ import type { IEventBus } from "../../../../event-bus/contracts/_module-exports.
15
15
  export type LockSerdeTransformerSettings = {
16
16
  adapter: ILockAdapter;
17
17
  lockStore: ILockStore;
18
- keyPrefixer: KeyPrefixer;
18
+ namespace: Namespace;
19
19
  createLazyPromise: <TValue = void>(asyncFn: () => PromiseLike<TValue>) => LazyPromise<TValue>;
20
20
  defaultBlockingInterval: TimeSpan;
21
21
  defaultBlockingTime: TimeSpan;
@@ -29,7 +29,7 @@ export type LockSerdeTransformerSettings = {
29
29
  export declare class LockSerdeTransformer implements ISerdeTransformer<Lock, ISerializedLock> {
30
30
  private readonly adapter;
31
31
  private readonly lockStore;
32
- private readonly keyPrefixer;
32
+ private readonly namespace;
33
33
  private readonly createLazyPromise;
34
34
  private readonly defaultBlockingInterval;
35
35
  private readonly defaultBlockingTime;
@@ -10,7 +10,7 @@ import { getConstructorName, TimeSpan, } from "../../../../utilities/_module-exp
10
10
  export class LockSerdeTransformer {
11
11
  adapter;
12
12
  lockStore;
13
- keyPrefixer;
13
+ namespace;
14
14
  createLazyPromise;
15
15
  defaultBlockingInterval;
16
16
  defaultBlockingTime;
@@ -18,11 +18,11 @@ export class LockSerdeTransformer {
18
18
  eventBus;
19
19
  serdeTransformerName;
20
20
  constructor(settings) {
21
- const { adapter, lockStore, keyPrefixer, createLazyPromise, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, eventBus, serdeTransformerName, } = settings;
21
+ const { adapter, lockStore, namespace, createLazyPromise, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, eventBus, serdeTransformerName, } = settings;
22
22
  this.serdeTransformerName = serdeTransformerName;
23
23
  this.adapter = adapter;
24
24
  this.lockStore = lockStore;
25
- this.keyPrefixer = keyPrefixer;
25
+ this.namespace = namespace;
26
26
  this.createLazyPromise = createLazyPromise;
27
27
  this.defaultBlockingInterval = defaultBlockingInterval;
28
28
  this.defaultBlockingTime = defaultBlockingTime;
@@ -30,6 +30,9 @@ export class LockSerdeTransformer {
30
30
  this.eventBus = eventBus;
31
31
  }
32
32
  get name() {
33
+ if (this.serdeTransformerName) {
34
+ return ["lock", getConstructorName(this.adapter)];
35
+ }
33
36
  return [
34
37
  "lock",
35
38
  this.serdeTransformerName,
@@ -37,18 +40,21 @@ export class LockSerdeTransformer {
37
40
  ];
38
41
  }
39
42
  isApplicable(value) {
40
- return value instanceof Lock && getConstructorName(value) === Lock.name;
43
+ return (value instanceof Lock &&
44
+ getConstructorName(value) === Lock.name &&
45
+ value.getSerdeTransformerName() === this.serdeTransformerName);
41
46
  }
42
47
  deserialize(serializedValue) {
43
48
  const { key, owner, ttlInMs, expirationInMs } = serializedValue;
44
- const keyObj = this.keyPrefixer.create(key);
49
+ const keyObj = this.namespace._getInternal().create(key);
45
50
  return new Lock({
46
51
  createLazyPromise: this.createLazyPromise,
47
52
  adapter: this.adapter,
48
- lockState: new LockState(this.lockStore, keyObj.prefixed),
53
+ lockState: new LockState(this.lockStore, keyObj.namespaced),
49
54
  eventDispatcher: this.eventBus,
50
55
  key: keyObj,
51
56
  owner,
57
+ serdeTransformerName: this.serdeTransformerName,
52
58
  ttl: ttlInMs ? TimeSpan.fromMilliseconds(ttlInMs) : null,
53
59
  expirationInMs,
54
60
  defaultBlockingInterval: this.defaultBlockingInterval,
@@ -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,WAAW,CAAc;IACzB,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,WAAW,EACX,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,WAAW,GAAG,WAAW,CAAC;QAC/B,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,OAAO;YACH,MAAM;YACN,IAAI,CAAC,oBAAoB;YACzB,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;SACnC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,KAAc;QACvB,OAAO,KAAK,YAAY,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC;IAC5E,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,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAE5C,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,QAAQ,CAAC;YACzD,eAAe,EAAE,IAAI,CAAC,QAAQ;YAC9B,GAAG,EAAE,MAAM;YACX,KAAK;YACL,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,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,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC;CACJ"}
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,uBAAuB,EAAE,KAAK,IAAI,CAAC,oBAAoB,CAChE,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,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI;YACxD,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,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC7C,CAAC;CACJ"}
@@ -22,6 +22,7 @@ export type ISerializedLock = {
22
22
  */
23
23
  export type LockSettings = {
24
24
  createLazyPromise: <TValue = void>(asyncFn: () => PromiseLike<TValue>) => LazyPromise<TValue>;
25
+ serdeTransformerName: string;
25
26
  adapter: ILockAdapter;
26
27
  lockState: LockState;
27
28
  eventDispatcher: IEventDispatcher<LockEventMap>;
@@ -34,8 +35,7 @@ export type LockSettings = {
34
35
  defaultRefreshTime: TimeSpan;
35
36
  };
36
37
  /**
37
- * IMPORTANT: This class is not intended to be instantiated directly, instead it should be created by the `LockProvider` class instance.
38
- * @group Derivables
38
+ * @internal
39
39
  */
40
40
  export declare class Lock implements ILock {
41
41
  /**
@@ -52,10 +52,12 @@ export declare class Lock implements ILock {
52
52
  private readonly defaultBlockingInterval;
53
53
  private readonly defaultBlockingTime;
54
54
  private readonly defaultRefreshTime;
55
+ private readonly serdeTransformerName;
55
56
  /**
56
57
  * @internal
57
58
  */
58
59
  constructor(settings: LockSettings);
60
+ getSerdeTransformerName(): string;
59
61
  run<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
60
62
  runOrFail<TValue = void>(asyncFn: AsyncLazy<TValue>): LazyPromise<TValue>;
61
63
  runBlocking<TValue = void>(asyncFn: AsyncLazy<TValue>, settings?: AquireBlockingSettings): LazyPromise<Result<TValue, KeyAlreadyAcquiredLockError>>;
@@ -1,14 +1,13 @@
1
1
  /**
2
2
  * @module Lock
3
3
  */
4
- import { resolveLazyable, } from "../../../../utilities/_module-exports.js";
4
+ import { resolveLazyable, resultSuccess, resultFailure, } from "../../../../utilities/_module-exports.js";
5
5
  import { resolveOneOrMoreStr } from "../../../../utilities/_module-exports.js";
6
6
  import { KeyAlreadyAcquiredLockError, LOCK_EVENTS, UnableToAquireLockError, UnableToReleaseLockError, UnownedRefreshLockError, UnownedReleaseLockError, } from "../../../../lock/contracts/_module-exports.js";
7
7
  import {} from "../../../../lock/contracts/_module-exports.js";
8
8
  import { LazyPromise } from "../../../../async/_module-exports.js";
9
9
  /**
10
- * IMPORTANT: This class is not intended to be instantiated directly, instead it should be created by the `LockProvider` class instance.
11
- * @group Derivables
10
+ * @internal
12
11
  */
13
12
  export class Lock {
14
13
  /**
@@ -32,11 +31,13 @@ export class Lock {
32
31
  defaultBlockingInterval;
33
32
  defaultBlockingTime;
34
33
  defaultRefreshTime;
34
+ serdeTransformerName;
35
35
  /**
36
36
  * @internal
37
37
  */
38
38
  constructor(settings) {
39
- const { createLazyPromise, adapter, lockState, eventDispatcher, key, owner, ttl, expirationInMs, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, } = settings;
39
+ const { createLazyPromise, adapter, lockState, eventDispatcher, key, owner, ttl, serdeTransformerName, expirationInMs, defaultBlockingInterval, defaultBlockingTime, defaultRefreshTime, } = settings;
40
+ this.serdeTransformerName = serdeTransformerName;
40
41
  this.createLazyPromise = createLazyPromise;
41
42
  this.adapter = adapter;
42
43
  this.lockState = lockState;
@@ -49,17 +50,17 @@ export class Lock {
49
50
  this.defaultBlockingTime = defaultBlockingTime;
50
51
  this.defaultRefreshTime = defaultRefreshTime;
51
52
  }
53
+ getSerdeTransformerName() {
54
+ return this.serdeTransformerName;
55
+ }
52
56
  run(asyncFn) {
53
57
  return this.createLazyPromise(async () => {
54
58
  try {
55
59
  const hasAquired = await this.acquire();
56
60
  if (!hasAquired) {
57
- return [
58
- null,
59
- new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`),
60
- ];
61
+ return resultFailure(new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`));
61
62
  }
62
- return [await resolveLazyable(asyncFn), null];
63
+ return resultSuccess(await resolveLazyable(asyncFn));
63
64
  }
64
65
  finally {
65
66
  await this.release();
@@ -82,12 +83,9 @@ export class Lock {
82
83
  try {
83
84
  const hasAquired = await this.acquireBlocking(settings);
84
85
  if (!hasAquired) {
85
- return [
86
- null,
87
- new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`),
88
- ];
86
+ return resultFailure(new KeyAlreadyAcquiredLockError(`Key "${this.key.resolved}" already acquired`));
89
87
  }
90
- return [await resolveLazyable(asyncFn), null];
88
+ return resultSuccess(await resolveLazyable(asyncFn));
91
89
  }
92
90
  finally {
93
91
  await this.release();
@@ -110,7 +108,7 @@ export class Lock {
110
108
  const prevState = this.lockState.get()?.getTime() ?? null;
111
109
  try {
112
110
  this.lockState.remove();
113
- const hasAquired = await this.adapter.acquire(this.key.prefixed, this.owner, this.ttl);
111
+ const hasAquired = await this.adapter.acquire(this.key.namespaced, this.owner, this.ttl);
114
112
  if (hasAquired) {
115
113
  this.lockState.set(this.ttl);
116
114
  const event = {
@@ -182,7 +180,7 @@ export class Lock {
182
180
  return this.createLazyPromise(async () => {
183
181
  const prevState = this.lockState.get()?.getTime() ?? null;
184
182
  try {
185
- const hasReleased = await this.adapter.release(this.key.prefixed, this.owner);
183
+ const hasReleased = await this.adapter.release(this.key.namespaced, this.owner);
186
184
  if (hasReleased) {
187
185
  this.lockState.remove();
188
186
  const event = {
@@ -231,7 +229,7 @@ export class Lock {
231
229
  return this.createLazyPromise(async () => {
232
230
  const prevState = this.lockState.get()?.getTime() ?? null;
233
231
  try {
234
- await this.adapter.forceRelease(this.key.prefixed);
232
+ await this.adapter.forceRelease(this.key.namespaced);
235
233
  this.lockState.remove();
236
234
  const event = {
237
235
  key: this.key.resolved,
@@ -285,7 +283,7 @@ export class Lock {
285
283
  return this.createLazyPromise(async () => {
286
284
  const prevState = this.lockState.get()?.getTime() ?? null;
287
285
  try {
288
- const hasRefreshed = await this.adapter.refresh(this.key.prefixed, this.owner, ttl);
286
+ const hasRefreshed = await this.adapter.refresh(this.key.namespaced, this.owner, ttl);
289
287
  if (hasRefreshed) {
290
288
  const event = {
291
289
  key: this.key.resolved,
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../../../../src/lock/implementations/derivables/lock-provider/lock.ts"],"names":[],"mappings":"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"}