@daiso-tech/core 0.46.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-adapter.contract.d.ts +1 -1
- package/dist/cache/contracts/cache.contract.d.ts +3 -1
- package/dist/cache/contracts/cache.events.d.ts +1 -1
- package/dist/cache/contracts/database-cache-adapter.contract.d.ts +1 -1
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +11 -2
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +8 -8
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/memory-cache-adapter/memory-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js.map +1 -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/derivables/cache/database-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/derivables/cache/database-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/is-database-cache-adapter.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 +8 -4
- 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/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.d.ts +11 -0
- package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js +13 -3
- package/dist/circuit-breaker/implementations/adapters/kysely-circuit-breaker-storage-adapter/kysely-circuit-breaker-storage-adapter.js.map +1 -1
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.d.ts +6 -0
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js +14 -2
- package/dist/circuit-breaker/implementations/adapters/mongodb-circuit-breaker-storage-adapter/mongodb-circuit-breaker-storage-adapter.js.map +1 -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/circuit-breaker/implementations/policies/sampling-breaker/sampling-breaker.d.ts +1 -1
- package/dist/collection/contracts/async-collection.contract.d.ts +1 -1
- package/dist/collection/contracts/collection.contract.d.ts +2 -2
- package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-chunk-while-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-partion-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.d.ts +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/chunk-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/chunk-while-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/partion-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/iterable-collection.d.ts +1 -1
- package/dist/collection/implementations/list-collection/list-collection.d.ts +1 -1
- package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/hooks/async-hooks.d.ts +9 -11
- package/dist/hooks/hooks.d.ts +5 -5
- package/dist/lock/contracts/lock-provider.contract.d.ts +3 -1
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +11 -0
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +18 -14
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -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/namespace/implementations/namespace.d.ts +1 -1
- package/dist/rate-limiter/contracts/rate-limiter-provider.contract.d.ts +3 -1
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.d.ts +11 -0
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js +13 -3
- package/dist/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.js.map +1 -1
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.d.ts +6 -0
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js +14 -2
- package/dist/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.js.map +1 -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/resilience/middlewares/dynamic/dynamic.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/fallback/fallback.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/fallback/fallback.types.d.ts +4 -4
- package/dist/resilience/middlewares/observe/observe.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/observe/observe.types.d.ts +7 -7
- package/dist/resilience/middlewares/retry/retry.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/retry/retry.middleware.js.map +1 -1
- package/dist/resilience/middlewares/retry/retry.types.d.ts +6 -6
- package/dist/resilience/middlewares/timeout/timeout.middleware.d.ts +1 -1
- package/dist/resilience/middlewares/timeout/timeout.type.d.ts +4 -4
- package/dist/resilience/resilience.errors.d.ts +1 -1
- package/dist/resilience/resilience.errors.js.map +1 -1
- package/dist/semaphore/contracts/database-semaphore-adapter.contract.d.ts +2 -2
- package/dist/semaphore/contracts/semaphore-provider.contract.d.ts +3 -1
- package/dist/semaphore/contracts/semaphore-state.contract.d.ts +3 -3
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.d.ts +12 -1
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js +18 -14
- package/dist/semaphore/implementations/adapters/kysely-semaphore-adapter/kysely-semaphore-adapter.js.map +1 -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/database-semaphore-adapter.test-suite.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/serde/contracts/flexible-serde.contract.d.ts +1 -1
- package/dist/shared-lock/contracts/database-shared-lock-adapter.contract.d.ts +2 -2
- package/dist/shared-lock/contracts/shared-lock-provider.contract.d.ts +3 -1
- package/dist/shared-lock/contracts/shared-lock-state.contract.d.ts +3 -3
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.d.ts +11 -0
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js +16 -6
- package/dist/shared-lock/implementations/adapters/kysely-shared-lock-adapter/kysely-shared-lock-adapter.js.map +1 -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/database-shared-lock-adapter.test-suite.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/dist/task/implementations/task.d.ts +9 -9
- package/dist/task/implementations/task.js.map +1 -1
- package/dist/utilities/contracts/sqlite-database.contract.d.ts +1 -1
- package/dist/utilities/functions/invokable.d.ts +9 -9
- package/dist/utilities/functions/invokable.js.map +1 -1
- package/dist/utilities/functions/resolve-one-or-more.d.ts +1 -1
- package/dist/utilities/types/any-class.type.d.ts +1 -1
- package/dist/utilities/types/none-func.type.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module RateLimiter
|
|
3
3
|
*/
|
|
4
|
-
import { MysqlAdapter } from "kysely";
|
|
4
|
+
import { MysqlAdapter, Transaction } from "kysely";
|
|
5
5
|
import {} from "../../../../rate-limiter/contracts/_module.js";
|
|
6
6
|
import {} from "../../../../serde/contracts/_module.js";
|
|
7
7
|
import {} from "../../../../time-span/contracts/_module.js";
|
|
@@ -73,6 +73,7 @@ export class KyselyRateLimiterStorageAdapter {
|
|
|
73
73
|
expiredKeysRemovalInterval;
|
|
74
74
|
shouldRemoveExpiredKeys;
|
|
75
75
|
intervalId = null;
|
|
76
|
+
enableTransactions;
|
|
76
77
|
/**
|
|
77
78
|
* @example
|
|
78
79
|
* ```ts
|
|
@@ -96,11 +97,20 @@ export class KyselyRateLimiterStorageAdapter {
|
|
|
96
97
|
* ```
|
|
97
98
|
*/
|
|
98
99
|
constructor(settings) {
|
|
99
|
-
const { kysely, serde, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, } = settings;
|
|
100
|
+
const { kysely, serde, expiredKeysRemovalInterval = TimeSpan.fromMinutes(1), shouldRemoveExpiredKeys = true, enableTransactions = !(settings.kysely instanceof Transaction), } = settings;
|
|
100
101
|
this.expiredKeysRemovalInterval = TimeSpan.fromTimeSpan(expiredKeysRemovalInterval);
|
|
101
102
|
this.shouldRemoveExpiredKeys = shouldRemoveExpiredKeys;
|
|
102
103
|
this.kysely = kysely;
|
|
103
104
|
this.serde = serde;
|
|
105
|
+
this.enableTransactions = enableTransactions;
|
|
106
|
+
}
|
|
107
|
+
_transaction(trxFn) {
|
|
108
|
+
if (this.enableTransactions) {
|
|
109
|
+
return this.kysely.transaction().execute(async (trx) => {
|
|
110
|
+
return await trxFn(trx);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
return trxFn(this.kysely);
|
|
104
114
|
}
|
|
105
115
|
/**
|
|
106
116
|
* Removes all related rate limiter tables and their rows.
|
|
@@ -169,7 +179,7 @@ export class KyselyRateLimiterStorageAdapter {
|
|
|
169
179
|
.execute();
|
|
170
180
|
}
|
|
171
181
|
async transaction(fn) {
|
|
172
|
-
return await this.
|
|
182
|
+
return await this._transaction(async (trx) => {
|
|
173
183
|
return await fn(new KyselyRateLimiterStorageAdapterTransaction(trx, this.serde));
|
|
174
184
|
});
|
|
175
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kysely-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAe,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"kysely-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/kysely-rate-limiter-storage-adapter/kysely-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ export type MongodbRateLimiterStorageAdapterSettings = {
|
|
|
18
18
|
collectionName?: string;
|
|
19
19
|
collectionSettings?: CollectionOptions;
|
|
20
20
|
serde: ISerde<string>;
|
|
21
|
+
/**
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
enableTransactions?: boolean;
|
|
21
25
|
};
|
|
22
26
|
/**
|
|
23
27
|
* IMPORT_PATH: `"@daiso-tech/core/rate-limiter/mongodb-rate-limiter-storage-adapter"`
|
|
@@ -37,6 +41,7 @@ export declare class MongodbRateLimiterStorageAdapter<TType> implements IRateLim
|
|
|
37
41
|
private readonly client;
|
|
38
42
|
private readonly collection;
|
|
39
43
|
private readonly serde;
|
|
44
|
+
private readonly enableTransactions;
|
|
40
45
|
/**
|
|
41
46
|
* @example
|
|
42
47
|
* ```ts
|
|
@@ -69,6 +74,7 @@ export declare class MongodbRateLimiterStorageAdapter<TType> implements IRateLim
|
|
|
69
74
|
*/
|
|
70
75
|
init(): Promise<void>;
|
|
71
76
|
private upsert;
|
|
77
|
+
private _transaction;
|
|
72
78
|
transaction<TValue>(fn: InvokableFn<[
|
|
73
79
|
transaction: IRateLimiterStorageAdapterTransaction<TType>
|
|
74
80
|
], Promise<TValue>>): Promise<TValue>;
|
|
@@ -13,6 +13,7 @@ export class MongodbRateLimiterStorageAdapter {
|
|
|
13
13
|
client;
|
|
14
14
|
collection;
|
|
15
15
|
serde;
|
|
16
|
+
enableTransactions;
|
|
16
17
|
/**
|
|
17
18
|
* @example
|
|
18
19
|
* ```ts
|
|
@@ -34,10 +35,11 @@ export class MongodbRateLimiterStorageAdapter {
|
|
|
34
35
|
* ```
|
|
35
36
|
*/
|
|
36
37
|
constructor(settings) {
|
|
37
|
-
const { client, collectionName = "rateLimiter", collectionSettings, database, serde, } = settings;
|
|
38
|
+
const { client, collectionName = "rateLimiter", collectionSettings, database, serde, enableTransactions = true, } = settings;
|
|
38
39
|
this.client = client;
|
|
39
40
|
this.collection = database.collection(collectionName, collectionSettings);
|
|
40
41
|
this.serde = serde;
|
|
42
|
+
this.enableTransactions = enableTransactions;
|
|
41
43
|
}
|
|
42
44
|
/**
|
|
43
45
|
* Removes the collection where the rate limiter keys are stored and all it's related indexes.
|
|
@@ -97,8 +99,18 @@ export class MongodbRateLimiterStorageAdapter {
|
|
|
97
99
|
upsert: true,
|
|
98
100
|
});
|
|
99
101
|
}
|
|
102
|
+
async _transaction(trxFn) {
|
|
103
|
+
if (this.enableTransactions) {
|
|
104
|
+
return await this.client
|
|
105
|
+
.startSession()
|
|
106
|
+
.withTransaction(async () => {
|
|
107
|
+
return await trxFn();
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return trxFn();
|
|
111
|
+
}
|
|
100
112
|
async transaction(fn) {
|
|
101
|
-
return await this.
|
|
113
|
+
return await this._transaction(async () => {
|
|
102
114
|
return await fn({
|
|
103
115
|
upsert: (key, state, exiration) => this.upsert(key, state, exiration),
|
|
104
116
|
find: (key) => this.find(key),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mongodb-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAMN,MAAM,SAAS,CAAC;AAEjB,OAAO,EAIN,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAe,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAIN,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"mongodb-rate-limiter-storage-adapter.js","sourceRoot":"","sources":["../../../../../src/rate-limiter/implementations/adapters/mongodb-rate-limiter-storage-adapter/mongodb-rate-limiter-storage-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module RateLimiter
|
|
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 IRateLimiter, type IRateLimiterAdapter, type
|
|
6
|
+
import { type IRateLimiter, type IRateLimiterAdapter, type IRateLimiterListenable, type IRateLimiterProvider, type RateLimiterProviderCreateSettings } from "../../../../rate-limiter/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 ErrorPolicy, type OneOrMore } from "../../../../utilities/_module.js";
|
|
10
9
|
/**
|
|
11
10
|
*
|
|
@@ -125,11 +124,6 @@ export declare class RateLimiterProvider implements IRateLimiterProvider {
|
|
|
125
124
|
*/
|
|
126
125
|
constructor(settings: RateLimiterProviderSettings);
|
|
127
126
|
private registerToSerde;
|
|
128
|
-
|
|
129
|
-
removeListener<TEventName extends keyof RateLimiterEventMap>(eventName: TEventName, listener: EventListener<RateLimiterEventMap[TEventName]>): ITask<void>;
|
|
130
|
-
listenOnce<TEventName extends keyof RateLimiterEventMap>(eventName: TEventName, listener: EventListener<RateLimiterEventMap[TEventName]>): ITask<void>;
|
|
131
|
-
asTask<TEventName extends keyof RateLimiterEventMap>(eventName: TEventName): ITask<RateLimiterEventMap[TEventName]>;
|
|
132
|
-
subscribeOnce<TEventName extends keyof RateLimiterEventMap>(eventName: TEventName, listener: EventListener<RateLimiterEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
133
|
-
subscribe<TEventName extends keyof RateLimiterEventMap>(eventName: TEventName, listener: EventListener<RateLimiterEventMap[TEventName]>): ITask<Unsubscribe>;
|
|
127
|
+
get events(): IRateLimiterListenable;
|
|
134
128
|
create(key: string, settings: RateLimiterProviderCreateSettings): IRateLimiter;
|
|
135
129
|
}
|
package/dist/rate-limiter/implementations/derivables/rate-limiter-provider/rate-limiter-provider.js
CHANGED
|
@@ -12,7 +12,6 @@ import { RateLimiter } from "../../../../rate-limiter/implementations/derivables
|
|
|
12
12
|
import {} from "../../../../serde/contracts/_module.js";
|
|
13
13
|
import { NoOpSerdeAdapter } from "../../../../serde/implementations/adapters/_module.js";
|
|
14
14
|
import { Serde } from "../../../../serde/implementations/derivables/_module.js";
|
|
15
|
-
import {} from "../../../../task/contracts/_module.js";
|
|
16
15
|
import { CORE, resolveOneOrMore, } from "../../../../utilities/_module.js";
|
|
17
16
|
/**
|
|
18
17
|
* The `RateLimiterProvider` class can be derived from any {@link IRateLimiterAdapter | `IRateLimiterAdapter`}.
|
|
@@ -88,23 +87,8 @@ export class RateLimiterProvider {
|
|
|
88
87
|
serde.registerCustom(transformer, CORE);
|
|
89
88
|
}
|
|
90
89
|
}
|
|
91
|
-
|
|
92
|
-
return this.eventBus
|
|
93
|
-
}
|
|
94
|
-
removeListener(eventName, listener) {
|
|
95
|
-
return this.eventBus.removeListener(eventName, listener);
|
|
96
|
-
}
|
|
97
|
-
listenOnce(eventName, listener) {
|
|
98
|
-
return this.eventBus.listenOnce(eventName, listener);
|
|
99
|
-
}
|
|
100
|
-
asTask(eventName) {
|
|
101
|
-
return this.eventBus.asTask(eventName);
|
|
102
|
-
}
|
|
103
|
-
subscribeOnce(eventName, listener) {
|
|
104
|
-
return this.eventBus.subscribeOnce(eventName, listener);
|
|
105
|
-
}
|
|
106
|
-
subscribe(eventName, listener) {
|
|
107
|
-
return this.eventBus.subscribe(eventName, listener);
|
|
90
|
+
get events() {
|
|
91
|
+
return this.eventBus;
|
|
108
92
|
}
|
|
109
93
|
create(key, settings) {
|
|
110
94
|
const { errorPolicy = this.defaultErrorPolicy, onlyError = this.onlyError, limit, } = settings;
|
|
@@ -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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"}
|
|
@@ -28,7 +28,7 @@ import { type Invokable } from "../../../utilities/_module.js";
|
|
|
28
28
|
* ).invoke(1, 0);
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
export declare function dynamic<TParameters extends unknown
|
|
31
|
+
export declare function dynamic<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(dynamic: NoInfer<Invokable<[
|
|
32
32
|
arguments_: TParameters,
|
|
33
33
|
context: TContext
|
|
34
34
|
], AsyncMiddleware<TParameters, TReturn, TContext>>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
|
|
@@ -29,4 +29,4 @@ import { type FallbackSettings } from "../../../resilience/middlewares/fallback/
|
|
|
29
29
|
* console.log(await fetchData.invoke("URL_ENDPOINT"));
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
export declare function fallback<TParameters extends unknown
|
|
32
|
+
export declare function fallback<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings: NoInfer<FallbackSettings<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
|
|
@@ -8,7 +8,7 @@ import { type Invokable, type AsyncLazyable, type ErrorPolicySettings } from "..
|
|
|
8
8
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
9
9
|
* @group Middlewares
|
|
10
10
|
*/
|
|
11
|
-
export type OnFallbackData<TParameters extends unknown
|
|
11
|
+
export type OnFallbackData<TParameters extends Array<unknown> = Array<unknown>, TFallbackValue = unknown, TContext extends HookContext = HookContext> = {
|
|
12
12
|
error: unknown;
|
|
13
13
|
fallbackValue: TFallbackValue;
|
|
14
14
|
args: TParameters;
|
|
@@ -19,13 +19,13 @@ export type OnFallbackData<TParameters extends unknown[] = unknown[], TFallbackV
|
|
|
19
19
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
20
20
|
* @group Middlewares
|
|
21
21
|
*/
|
|
22
|
-
export type OnFallback<TParameters extends unknown
|
|
22
|
+
export type OnFallback<TParameters extends Array<unknown> = Array<unknown>, TFallbackValue = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnFallbackData<TParameters, TFallbackValue, TContext>]>;
|
|
23
23
|
/**
|
|
24
24
|
*
|
|
25
25
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
26
26
|
* @group Middlewares
|
|
27
27
|
*/
|
|
28
|
-
export type FallbackCallbacks<TParameters extends unknown
|
|
28
|
+
export type FallbackCallbacks<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
|
|
29
29
|
/**
|
|
30
30
|
* Callback {@link Invokable | `Invokable`} that will be called before fallback value is returned.
|
|
31
31
|
*/
|
|
@@ -36,6 +36,6 @@ export type FallbackCallbacks<TParameters extends unknown[] = unknown[], TReturn
|
|
|
36
36
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
37
37
|
* @group Middlewares
|
|
38
38
|
*/
|
|
39
|
-
export type FallbackSettings<TParameters extends unknown
|
|
39
|
+
export type FallbackSettings<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = FallbackCallbacks<TParameters, TReturn, TContext> & ErrorPolicySettings & {
|
|
40
40
|
fallbackValue: AsyncLazyable<TReturn>;
|
|
41
41
|
};
|
|
@@ -43,4 +43,4 @@ import { type ObserveCallbacks } from "../../../resilience/middlewares/observe/o
|
|
|
43
43
|
* // Will log the execution time and arguments
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
|
-
export declare function observe<TParameters extends unknown
|
|
46
|
+
export declare function observe<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings: NoInfer<ObserveCallbacks<TParameters, TReturn, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
|
|
@@ -9,7 +9,7 @@ import { type Invokable } from "../../../utilities/_module.js";
|
|
|
9
9
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
10
10
|
* @group Middlewares
|
|
11
11
|
*/
|
|
12
|
-
export type OnObserveStartData<TParameters extends unknown
|
|
12
|
+
export type OnObserveStartData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
13
13
|
args: TParameters;
|
|
14
14
|
context: TContext;
|
|
15
15
|
};
|
|
@@ -18,13 +18,13 @@ export type OnObserveStartData<TParameters extends unknown[] = unknown[], TConte
|
|
|
18
18
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
19
19
|
* @group Middlewares
|
|
20
20
|
*/
|
|
21
|
-
export type OnObserveStart<TParameters extends unknown
|
|
21
|
+
export type OnObserveStart<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveStartData<TParameters, TContext>]>;
|
|
22
22
|
/**
|
|
23
23
|
*
|
|
24
24
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
25
25
|
* @group Middlewares
|
|
26
26
|
*/
|
|
27
|
-
export type OnObserveSuccessData<TParameters extends unknown
|
|
27
|
+
export type OnObserveSuccessData<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
|
|
28
28
|
returnValue: TReturn;
|
|
29
29
|
args: TParameters;
|
|
30
30
|
context: TContext;
|
|
@@ -34,13 +34,13 @@ export type OnObserveSuccessData<TParameters extends unknown[] = unknown[], TRet
|
|
|
34
34
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
35
35
|
* @group Middlewares
|
|
36
36
|
*/
|
|
37
|
-
export type OnObserveSuccess<TParameters extends unknown
|
|
37
|
+
export type OnObserveSuccess<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveSuccessData<TParameters, TReturn, TContext>]>;
|
|
38
38
|
/**
|
|
39
39
|
*
|
|
40
40
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
41
41
|
* @group Middlewares
|
|
42
42
|
*/
|
|
43
|
-
export type OnObserveErrorData<TParameters extends unknown
|
|
43
|
+
export type OnObserveErrorData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
44
44
|
error: unknown;
|
|
45
45
|
args: TParameters;
|
|
46
46
|
context: TContext;
|
|
@@ -59,7 +59,7 @@ export type OnObserveFinallyData<TContext extends HookContext = HookContext> = {
|
|
|
59
59
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
60
60
|
* @group Middlewares
|
|
61
61
|
*/
|
|
62
|
-
export type OnObserveError<TParameters extends unknown
|
|
62
|
+
export type OnObserveError<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnObserveErrorData<TParameters, TContext>]>;
|
|
63
63
|
/**
|
|
64
64
|
*
|
|
65
65
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
@@ -71,7 +71,7 @@ export type OnObserveFinally<TContext extends HookContext = HookContext> = Invok
|
|
|
71
71
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
72
72
|
* @group Middlewares
|
|
73
73
|
*/
|
|
74
|
-
export type ObserveCallbacks<TParameters extends unknown
|
|
74
|
+
export type ObserveCallbacks<TParameters extends Array<unknown> = Array<unknown>, TReturn = unknown, TContext extends HookContext = HookContext> = {
|
|
75
75
|
/**
|
|
76
76
|
* Callback {@link Invokable | `Invokable`} that will be called when before the underlying {@link Invokable | `Invokable`} is called.
|
|
77
77
|
*/
|
|
@@ -38,4 +38,4 @@ import { type RetrySettings } from "../../../resilience/middlewares/retry/retry.
|
|
|
38
38
|
* .invoke("URL");
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
export declare function retry<TParameters extends unknown
|
|
41
|
+
export declare function retry<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings?: NoInfer<RetrySettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.middleware.js","sourceRoot":"","sources":["../../../../src/resilience/middlewares/retry/retry.middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAA4C,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAsB,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;AACzD,OAAO,EACH,aAAa,EACb,UAAU,EACV,UAAU,EACV,MAAM,EACN,eAAe,EACf,sBAAsB,EACtB,sBAAsB,GAEzB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,KAAK,CAKjB,WAA0D,EAAE;IAE5D,MAAM,EACF,WAAW,GAAG,CAAC,EACf,aAAa,GAAG,kBAAkB,EAAE,EACpC,WAAW,EACX,YAAY,GAAG,GAAG,EAAE,GAAE,CAAC,EACvB,kBAAkB,GAAG,GAAG,EAAE,GAAE,CAAC,GAChC,GAAG,QAAQ,CAAC;IACb,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC7C,IAAI,MAAM,GAAoB,UAAU,EAAE,CAAC;QAC3C,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"retry.middleware.js","sourceRoot":"","sources":["../../../../src/resilience/middlewares/retry/retry.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { type Invokable, type ErrorPolicySettings } from "../../../utilities/_mo
|
|
|
10
10
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
11
11
|
* @group Middlewares
|
|
12
12
|
*/
|
|
13
|
-
export type OnRetryAttemptData<TParameters extends unknown
|
|
13
|
+
export type OnRetryAttemptData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
14
14
|
attempt: number;
|
|
15
15
|
args: TParameters;
|
|
16
16
|
context: TContext;
|
|
@@ -20,13 +20,13 @@ export type OnRetryAttemptData<TParameters extends unknown[] = unknown[], TConte
|
|
|
20
20
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
21
21
|
* @group Middlewares
|
|
22
22
|
*/
|
|
23
|
-
export type OnExecutionAttempt<TParameters extends unknown
|
|
23
|
+
export type OnExecutionAttempt<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnRetryAttemptData<TParameters, TContext>]>;
|
|
24
24
|
/**
|
|
25
25
|
*
|
|
26
26
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
27
27
|
* @group Middlewares
|
|
28
28
|
*/
|
|
29
|
-
export type OnRetryDelayData<TParameters extends unknown
|
|
29
|
+
export type OnRetryDelayData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
30
30
|
error: unknown;
|
|
31
31
|
attempt: number;
|
|
32
32
|
waitTime: ITimeSpan;
|
|
@@ -38,13 +38,13 @@ export type OnRetryDelayData<TParameters extends unknown[] = unknown[], TContext
|
|
|
38
38
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
39
39
|
* @group Middlewares
|
|
40
40
|
*/
|
|
41
|
-
export type OnRetryDelay<TParameters extends unknown
|
|
41
|
+
export type OnRetryDelay<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnRetryDelayData<TParameters, TContext>]>;
|
|
42
42
|
/**
|
|
43
43
|
*
|
|
44
44
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
45
45
|
* @group Middlewares
|
|
46
46
|
*/
|
|
47
|
-
export type RetryCallbacks<TParameters extends unknown
|
|
47
|
+
export type RetryCallbacks<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
48
48
|
/**
|
|
49
49
|
* Callback {@link Invokable | `Invokable`} that will be called before execution attempt.
|
|
50
50
|
*/
|
|
@@ -59,7 +59,7 @@ export type RetryCallbacks<TParameters extends unknown[] = unknown[], TContext e
|
|
|
59
59
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
60
60
|
* @group Middlewares
|
|
61
61
|
*/
|
|
62
|
-
export type RetrySettings<TParameters extends unknown
|
|
62
|
+
export type RetrySettings<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = RetryCallbacks<TParameters, TContext> & ErrorPolicySettings & {
|
|
63
63
|
/**
|
|
64
64
|
* You can decide maximal times you can retry.
|
|
65
65
|
* @default 4
|
|
@@ -38,4 +38,4 @@ import { type TimeoutSettings } from "../../../resilience/middlewares/timeout/ti
|
|
|
38
38
|
* .invoke("URL");
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
|
-
export declare function timeout<TParameters extends unknown
|
|
41
|
+
export declare function timeout<TParameters extends Array<unknown>, TReturn, TContext extends HookContext>(settings?: NoInfer<TimeoutSettings<TParameters, TContext>>): AsyncMiddlewareFn<TParameters, TReturn, TContext>;
|
|
@@ -10,7 +10,7 @@ import { type Invokable } from "../../../utilities/_module.js";
|
|
|
10
10
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
11
11
|
* @group Middlewares
|
|
12
12
|
*/
|
|
13
|
-
export type OnTimeoutData<TParameters extends unknown
|
|
13
|
+
export type OnTimeoutData<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
14
14
|
waitTime: TimeSpan;
|
|
15
15
|
args: TParameters;
|
|
16
16
|
context: TContext;
|
|
@@ -20,13 +20,13 @@ export type OnTimeoutData<TParameters extends unknown[] = unknown[], TContext ex
|
|
|
20
20
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
21
21
|
* @group Middlewares
|
|
22
22
|
*/
|
|
23
|
-
export type OnTimeout<TParameters extends unknown
|
|
23
|
+
export type OnTimeout<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = Invokable<[data: OnTimeoutData<TParameters, TContext>]>;
|
|
24
24
|
/**
|
|
25
25
|
*
|
|
26
26
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
27
27
|
* @group Middlewares
|
|
28
28
|
*/
|
|
29
|
-
export type TimeoutCallbacks<TParameters extends unknown
|
|
29
|
+
export type TimeoutCallbacks<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = {
|
|
30
30
|
/**
|
|
31
31
|
* Callback {@link Invokable | `Invokable`} that will be called before the timeout occurs.
|
|
32
32
|
*/
|
|
@@ -37,7 +37,7 @@ export type TimeoutCallbacks<TParameters extends unknown[] = unknown[], TContext
|
|
|
37
37
|
* IMPORT_PATH: `"@daiso-tech/core/resilience"`
|
|
38
38
|
* @group Middlewares
|
|
39
39
|
*/
|
|
40
|
-
export type TimeoutSettings<TParameters extends unknown
|
|
40
|
+
export type TimeoutSettings<TParameters extends Array<unknown> = Array<unknown>, TContext extends HookContext = HookContext> = TimeoutCallbacks<TParameters, TContext> & {
|
|
41
41
|
/**
|
|
42
42
|
* The maximum time to wait before automatically aborting the executing function.
|
|
43
43
|
*
|
|
@@ -15,7 +15,7 @@ export declare class TimeoutResilienceError extends Error {
|
|
|
15
15
|
* @group Errors
|
|
16
16
|
*/
|
|
17
17
|
export declare class RetryResilienceError extends AggregateError {
|
|
18
|
-
constructor(errors: unknown
|
|
18
|
+
constructor(errors: Array<unknown>, message: string);
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resilience.errors.js","sourceRoot":"","sources":["../../src/resilience/resilience.errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,KAAe;QACxC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;IAC5C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACpD,YAAY,
|
|
1
|
+
{"version":3,"file":"resilience.errors.js","sourceRoot":"","sources":["../../src/resilience/resilience.errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,KAAe;QACxC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC;IAC5C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAAc;IACpD,YAAY,MAAsB,EAAE,OAAe;QAC/C,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC,IAAI,CAAC;IAC1C,CAAC;CACJ;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,sBAAsB;CACzB,CAAC;AASX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC7B,KAAc;IAEd,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
|
@@ -40,7 +40,7 @@ export type IDatabaseSemaphoreTransaction = {
|
|
|
40
40
|
* The `findSlots` returns the semaphore slot if it exists otherwise `null` is returned.
|
|
41
41
|
*
|
|
42
42
|
*/
|
|
43
|
-
findSlots(key: string): Promise<ISemaphoreSlotData
|
|
43
|
+
findSlots(key: string): Promise<Array<ISemaphoreSlotData>>;
|
|
44
44
|
/**
|
|
45
45
|
* The `upsertSemaphore` inserts a semaphore if it doesnt exist otherwise it will be updated.
|
|
46
46
|
*
|
|
@@ -80,7 +80,7 @@ export type IDatabaseSemaphoreAdapter = {
|
|
|
80
80
|
*
|
|
81
81
|
* @returns Returns the slot expiration.
|
|
82
82
|
*/
|
|
83
|
-
removeAllSlots(key: string): Promise<ISemaphoreSlotExpirationData
|
|
83
|
+
removeAllSlots(key: string): Promise<Array<ISemaphoreSlotExpirationData>>;
|
|
84
84
|
/**
|
|
85
85
|
* The `updateExpiration` updates the specified slot expiration as long as it is expireable and unexpired of the given semaphore.
|
|
86
86
|
*
|
|
@@ -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
|
+
};
|
|
@@ -37,7 +37,7 @@ export type ISemaphoreUnacquiredState = {
|
|
|
37
37
|
limit: number;
|
|
38
38
|
freeSlotsCount: number;
|
|
39
39
|
acquiredSlotsCount: number;
|
|
40
|
-
acquiredSlots: string
|
|
40
|
+
acquiredSlots: Array<string>;
|
|
41
41
|
};
|
|
42
42
|
/**
|
|
43
43
|
*
|
|
@@ -50,7 +50,7 @@ export type ISemaphoreAcquiredState = {
|
|
|
50
50
|
remainingTime: TimeSpan | null;
|
|
51
51
|
freeSlotsCount: number;
|
|
52
52
|
acquiredSlotsCount: number;
|
|
53
|
-
acquiredSlots: string
|
|
53
|
+
acquiredSlots: Array<string>;
|
|
54
54
|
};
|
|
55
55
|
/**
|
|
56
56
|
*
|
|
@@ -60,7 +60,7 @@ export type ISemaphoreAcquiredState = {
|
|
|
60
60
|
export type ISemaphoreLimitReachedState = {
|
|
61
61
|
type: (typeof SEMAPHORE_STATE)["LIMIT_REACHED"];
|
|
62
62
|
limit: number;
|
|
63
|
-
acquiredSlots: string
|
|
63
|
+
acquiredSlots: Array<string>;
|
|
64
64
|
};
|
|
65
65
|
/**
|
|
66
66
|
*
|
|
@@ -53,6 +53,15 @@ export type KyselySemaphoreAdapterSettings = {
|
|
|
53
53
|
* @default true
|
|
54
54
|
*/
|
|
55
55
|
shouldRemoveExpiredKeys?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* @default
|
|
58
|
+
* ```ts
|
|
59
|
+
* import { Transaction } from "kysely"
|
|
60
|
+
*
|
|
61
|
+
* !(settings.kysely instanceof Transaction)
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
enableTransactions?: boolean;
|
|
56
65
|
};
|
|
57
66
|
/**
|
|
58
67
|
* To utilize the `KyselySemaphoreAdapter`, you must install the [`"kysely"`](https://www.npmjs.com/package/kysely) package and configure a `Kysely` class instance.
|
|
@@ -69,6 +78,7 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
|
|
|
69
78
|
private readonly shouldRemoveExpiredKeys;
|
|
70
79
|
private intervalId;
|
|
71
80
|
private readonly isMysql;
|
|
81
|
+
private readonly enableTransactions;
|
|
72
82
|
/**
|
|
73
83
|
* @example
|
|
74
84
|
* ```ts
|
|
@@ -88,6 +98,7 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
|
|
|
88
98
|
* ```
|
|
89
99
|
*/
|
|
90
100
|
constructor(settings: KyselySemaphoreAdapterSettings);
|
|
101
|
+
private _transaction;
|
|
91
102
|
init(): Promise<void>;
|
|
92
103
|
/**
|
|
93
104
|
* Removes all related semaphore tables and their rows.
|
|
@@ -99,6 +110,6 @@ export declare class KyselySemaphoreAdapter implements IDatabaseSemaphoreAdapter
|
|
|
99
110
|
methods: IDatabaseSemaphoreTransaction
|
|
100
111
|
], Promise<TValue>>): Promise<TValue>;
|
|
101
112
|
removeSlot(key: string, slotId: string): Promise<ISemaphoreSlotExpirationData | null>;
|
|
102
|
-
removeAllSlots(key: string): Promise<ISemaphoreSlotExpirationData
|
|
113
|
+
removeAllSlots(key: string): Promise<Array<ISemaphoreSlotExpirationData>>;
|
|
103
114
|
updateExpiration(key: string, slotId: string, expiration: Date): Promise<number>;
|
|
104
115
|
}
|