@daiso-tech/core 0.47.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cache/contracts/cache.contract.d.ts +3 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +3 -32
- package/dist/cache/implementations/derivables/cache/cache.js +2 -41
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/cache/implementations/test-utilities/cache.test-suite.js +38 -38
- package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +1 -1
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js.map +1 -1
- package/dist/circuit-breaker/contracts/circuit-breaker-provider.contract.d.ts +3 -1
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.d.ts +3 -9
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.js +2 -18
- package/dist/circuit-breaker/implementations/derivables/circuit-breaker-provider/circuit-breaker-provider.js.map +1 -1
- package/dist/lock/contracts/lock-provider.contract.d.ts +3 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +3 -33
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +2 -42
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +58 -58
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/rate-limiter/contracts/rate-limiter-provider.contract.d.ts +3 -1
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.d.ts +3 -9
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.js +2 -18
- package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.js.map +1 -1
- package/dist/semaphore/contracts/semaphore-provider.contract.d.ts +3 -1
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.d.ts +3 -33
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.js +2 -42
- package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.js.map +1 -1
- package/dist/semaphore/implementations/test-utilities/semaphore-provider.test-suite.js +57 -57
- package/dist/semaphore/implementations/test-utilities/semaphore-provider.test-suite.js.map +1 -1
- package/dist/shared-lock/contracts/shared-lock-provider.contract.d.ts +3 -1
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.d.ts +3 -33
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.js +2 -42
- package/dist/shared-lock/implementations/derivables/shared-lock-provider/shared-lock-provider.js.map +1 -1
- package/dist/shared-lock/implementations/test-utilities/shared-lock-provider.test-suite.js +117 -117
- package/dist/shared-lock/implementations/test-utilities/shared-lock-provider.test-suite.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter-provider.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"rate-limiter-provider.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,4 +43,6 @@ export type ISemaphoreProviderBase = {
|
|
|
43
43
|
* IMPORT_PATH: `"@daiso-tech/core/semaphore/contracts"`
|
|
44
44
|
* @group Contracts
|
|
45
45
|
*/
|
|
46
|
-
export type ISemaphoreProvider =
|
|
46
|
+
export type ISemaphoreProvider = ISemaphoreProviderBase & {
|
|
47
|
+
readonly events: ISemaphoreListenable;
|
|
48
|
+
};
|
package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module Semaphore
|
|
3
3
|
*/
|
|
4
|
-
import { type
|
|
4
|
+
import { type IEventBus } from "../../../../event-bus/contracts/_module.js";
|
|
5
5
|
import { type INamespace } from "../../../../namespace/contracts/_module.js";
|
|
6
|
-
import { type ISemaphore, type SemaphoreAdapterVariants, type
|
|
6
|
+
import { type ISemaphore, type SemaphoreAdapterVariants, type SemaphoreProviderCreateSettings, type ISemaphoreProvider, type ISemaphoreListenable } from "../../../../semaphore/contracts/_module.js";
|
|
7
7
|
import { type ISerderRegister } from "../../../../serde/contracts/_module.js";
|
|
8
|
-
import { type ITask } from "../../../../task/contracts/_module.js";
|
|
9
8
|
import { type ITimeSpan } from "../../../../time-span/contracts/_module.js";
|
|
10
9
|
import { type Invokable, type OneOrMore } from "../../../../utilities/_module.js";
|
|
11
10
|
/**
|
|
@@ -157,35 +156,6 @@ export declare class SemaphoreProvider implements ISemaphoreProvider {
|
|
|
157
156
|
*/
|
|
158
157
|
constructor(settings: SemaphoreProviderSettings);
|
|
159
158
|
private registerToSerde;
|
|
160
|
-
|
|
161
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
162
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
163
|
-
*/
|
|
164
|
-
addListener<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName, listener: EventListener<SemaphoreEventMap[TEventName]>): ITask<void>;
|
|
165
|
-
/**
|
|
166
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
167
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
168
|
-
*/
|
|
169
|
-
removeListener<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName, listener: EventListener<SemaphoreEventMap[TEventName]>): ITask<void>;
|
|
170
|
-
/**
|
|
171
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
172
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
173
|
-
*/
|
|
174
|
-
listenOnce<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName, listener: EventListener<SemaphoreEventMap[TEventName]>): ITask<void>;
|
|
175
|
-
/**
|
|
176
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
177
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
178
|
-
*/
|
|
179
|
-
asTask<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName): ITask<SemaphoreEventMap[TEventName]>;
|
|
180
|
-
/**
|
|
181
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
182
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
183
|
-
*/
|
|
184
|
-
subscribeOnce<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName, listener: EventListener<SemaphoreEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
185
|
-
/**
|
|
186
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
187
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
188
|
-
*/
|
|
189
|
-
subscribe<TEventName extends keyof SemaphoreEventMap>(eventName: TEventName, listener: EventListener<SemaphoreEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
159
|
+
get events(): ISemaphoreListenable;
|
|
190
160
|
create(key: string, settings: SemaphoreProviderCreateSettings): ISemaphore;
|
|
191
161
|
}
|
|
@@ -14,7 +14,6 @@ import { Semaphore } from "../../../../semaphore/implementations/derivables/sema
|
|
|
14
14
|
import {} from "../../../../serde/contracts/_module.js";
|
|
15
15
|
import { NoOpSerdeAdapter } from "../../../../serde/implementations/adapters/_module.js";
|
|
16
16
|
import { Serde } from "../../../../serde/implementations/derivables/_module.js";
|
|
17
|
-
import {} from "../../../../task/contracts/_module.js";
|
|
18
17
|
import {} from "../../../../time-span/contracts/_module.js";
|
|
19
18
|
import { TimeSpan } from "../../../../time-span/implementations/_module.js";
|
|
20
19
|
import { callInvokable, CORE, isPositiveNbr, resolveOneOrMore, } from "../../../../utilities/_module.js";
|
|
@@ -100,47 +99,8 @@ export class SemaphoreProvider {
|
|
|
100
99
|
serde.registerCustom(transformer, CORE);
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
106
|
-
*/
|
|
107
|
-
addListener(eventName, listener) {
|
|
108
|
-
return this.eventBus.addListener(eventName, listener);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
112
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
113
|
-
*/
|
|
114
|
-
removeListener(eventName, listener) {
|
|
115
|
-
return this.eventBus.removeListener(eventName, listener);
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
119
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
120
|
-
*/
|
|
121
|
-
listenOnce(eventName, listener) {
|
|
122
|
-
return this.eventBus.listenOnce(eventName, listener);
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
126
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
127
|
-
*/
|
|
128
|
-
asTask(eventName) {
|
|
129
|
-
return this.eventBus.asTask(eventName);
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
133
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
134
|
-
*/
|
|
135
|
-
subscribeOnce(eventName, listener) {
|
|
136
|
-
return this.eventBus.subscribeOnce(eventName, listener);
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* You can listen to the following {@link SemaphoreEventMap | `SemaphoreEventMap`} of all {@link ISemaphore | `ISemaphore`} instances created by the {@link ISemaphoreProvider | `ISemaphoreProvider`}.
|
|
140
|
-
* To understand how this method works, refer to {@link IEventListenable | `IEventListenable `}.
|
|
141
|
-
*/
|
|
142
|
-
subscribe(eventName, listener) {
|
|
143
|
-
return this.eventBus.subscribe(eventName, listener);
|
|
102
|
+
get events() {
|
|
103
|
+
return this.eventBus;
|
|
144
104
|
}
|
|
145
105
|
create(key, settings) {
|
|
146
106
|
const { ttl = this.defaultTtl, limit, slotId = callInvokable(this.createSlotId), } = settings;
|
package/dist/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semaphore-provider.js","sourceRoot":"","sources":["../../../../../src/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAE1B,OAAO,
|
|
1
|
+
{"version":3,"file":"semaphore-provider.js","sourceRoot":"","sources":["../../../../../src/semaphore/implementations/derivables/semaphore-provider/semaphore-provider.ts"],"names":[],"mappings":"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"}
|