@emmvish/stable-request 2.7.2 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/core/stable-scheduler.d.ts +11 -1
- package/dist/core/stable-scheduler.d.ts.map +1 -1
- package/dist/core/stable-scheduler.js +161 -8
- package/dist/core/stable-scheduler.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/stable-runner/index.js +24 -5
- package/dist/stable-runner/index.js.map +1 -1
- package/dist/types/index.d.ts +127 -5
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utilities/cache-manager.d.ts +6 -0
- package/dist/utilities/cache-manager.d.ts.map +1 -1
- package/dist/utilities/cache-manager.js +66 -1
- package/dist/utilities/cache-manager.js.map +1 -1
- package/dist/utilities/circuit-breaker.d.ts +7 -1
- package/dist/utilities/circuit-breaker.d.ts.map +1 -1
- package/dist/utilities/circuit-breaker.js +83 -0
- package/dist/utilities/circuit-breaker.js.map +1 -1
- package/dist/utilities/concurrency-limiter.d.ts +9 -1
- package/dist/utilities/concurrency-limiter.d.ts.map +1 -1
- package/dist/utilities/concurrency-limiter.js +61 -2
- package/dist/utilities/concurrency-limiter.js.map +1 -1
- package/dist/utilities/function-cache-manager.d.ts +6 -0
- package/dist/utilities/function-cache-manager.d.ts.map +1 -1
- package/dist/utilities/function-cache-manager.js +60 -3
- package/dist/utilities/function-cache-manager.js.map +1 -1
- package/dist/utilities/rate-limiter.d.ts +9 -1
- package/dist/utilities/rate-limiter.d.ts.map +1 -1
- package/dist/utilities/rate-limiter.js +70 -3
- package/dist/utilities/rate-limiter.js.map +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { CircuitBreakerState } from '../enums/index.js';
|
|
|
3
3
|
export declare class CircuitBreaker {
|
|
4
4
|
private state;
|
|
5
5
|
private readonly config;
|
|
6
|
+
private readonly persistence?;
|
|
6
7
|
private totalRequests;
|
|
7
8
|
private failedRequests;
|
|
8
9
|
private successfulRequests;
|
|
@@ -22,7 +23,12 @@ export declare class CircuitBreaker {
|
|
|
22
23
|
private recoveryAttempts;
|
|
23
24
|
private successfulRecoveries;
|
|
24
25
|
private failedRecoveries;
|
|
26
|
+
private initialized;
|
|
25
27
|
constructor(config: CircuitBreakerConfig);
|
|
28
|
+
initialize(): Promise<void>;
|
|
29
|
+
private restoreState;
|
|
30
|
+
private getPersistedState;
|
|
31
|
+
private persistState;
|
|
26
32
|
canExecute(): Promise<boolean>;
|
|
27
33
|
recordSuccess(): void;
|
|
28
34
|
recordFailure(): void;
|
|
@@ -47,7 +53,7 @@ export declare class CircuitBreaker {
|
|
|
47
53
|
failedAttempts: number;
|
|
48
54
|
successfulAttempts: number;
|
|
49
55
|
attemptFailurePercentage: number;
|
|
50
|
-
config: Required<CircuitBreakerConfig
|
|
56
|
+
config: Required<Omit<CircuitBreakerConfig, 'persistence'>>;
|
|
51
57
|
stateTransitions: number;
|
|
52
58
|
lastStateChangeTime: number;
|
|
53
59
|
openCount: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA2D,MAAM,mBAAmB,CAAC;AAClH,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,cAAc;IACvB,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsD;IAC7E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA0D;IAEvF,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,kBAAkB,CAAa;IAEvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,oBAAoB,CAAa;IACzC,OAAO,CAAC,gBAAgB,CAAa;IAErC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,EAAE,oBAAoB;IAYlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,iBAAiB;YAyBX,YAAY;IAUpB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAqBpC,aAAa,IAAI,IAAI;IAiBrB,aAAa,IAAI,IAAI;IAgBrB,oBAAoB,IAAI,IAAI;IAgB5B,oBAAoB,IAAI,IAAI;IAc5B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,qBAAqB;IAM7B,QAAQ,IAAI;QACR,KAAK,EAAE,mBAAmB,CAAC;QAC3B,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,wBAAwB,EAAE,MAAM,CAAC;QACjC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,aAAa,CAAC,CAAC,CAAC;QAC5D,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,gBAAgB,EAAE,MAAM,CAAC;QACzB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,gBAAgB,EAAE,MAAM,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B;IAqCD,KAAK,IAAI,IAAI;IAQP,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAkBrD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI9B;AAID,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,oBAAoB,GAAG,cAAc,CAKrF;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAKhD"}
|
|
@@ -2,6 +2,7 @@ import { CircuitBreakerState } from '../enums/index.js';
|
|
|
2
2
|
export class CircuitBreaker {
|
|
3
3
|
state = CircuitBreakerState.CLOSED;
|
|
4
4
|
config;
|
|
5
|
+
persistence;
|
|
5
6
|
totalRequests = 0;
|
|
6
7
|
failedRequests = 0;
|
|
7
8
|
successfulRequests = 0;
|
|
@@ -21,6 +22,7 @@ export class CircuitBreaker {
|
|
|
21
22
|
recoveryAttempts = 0;
|
|
22
23
|
successfulRecoveries = 0;
|
|
23
24
|
failedRecoveries = 0;
|
|
25
|
+
initialized = false;
|
|
24
26
|
constructor(config) {
|
|
25
27
|
this.config = {
|
|
26
28
|
failureThresholdPercentage: Math.max(0, Math.min(100, config.failureThresholdPercentage)),
|
|
@@ -30,6 +32,79 @@ export class CircuitBreaker {
|
|
|
30
32
|
halfOpenMaxRequests: config.halfOpenMaxRequests ?? 5,
|
|
31
33
|
trackIndividualAttempts: config.trackIndividualAttempts ?? false
|
|
32
34
|
};
|
|
35
|
+
this.persistence = config.persistence;
|
|
36
|
+
}
|
|
37
|
+
async initialize() {
|
|
38
|
+
if (this.initialized)
|
|
39
|
+
return;
|
|
40
|
+
if (this.persistence?.load) {
|
|
41
|
+
try {
|
|
42
|
+
const persistedState = await this.persistence.load();
|
|
43
|
+
if (persistedState) {
|
|
44
|
+
this.restoreState(persistedState);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.warn('stable-request: Unable to load circuit breaker state from persistence.');
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
this.initialized = true;
|
|
52
|
+
}
|
|
53
|
+
restoreState(persistedState) {
|
|
54
|
+
this.state = persistedState.state;
|
|
55
|
+
this.totalRequests = persistedState.totalRequests;
|
|
56
|
+
this.failedRequests = persistedState.failedRequests;
|
|
57
|
+
this.successfulRequests = persistedState.successfulRequests;
|
|
58
|
+
this.totalAttempts = persistedState.totalAttempts;
|
|
59
|
+
this.failedAttempts = persistedState.failedAttempts;
|
|
60
|
+
this.successfulAttempts = persistedState.successfulAttempts;
|
|
61
|
+
this.lastFailureTime = persistedState.lastFailureTime;
|
|
62
|
+
this.halfOpenRequests = persistedState.halfOpenRequests;
|
|
63
|
+
this.halfOpenSuccesses = persistedState.halfOpenSuccesses;
|
|
64
|
+
this.halfOpenFailures = persistedState.halfOpenFailures;
|
|
65
|
+
this.stateTransitions = persistedState.stateTransitions;
|
|
66
|
+
this.lastStateChangeTime = persistedState.lastStateChangeTime;
|
|
67
|
+
this.openCount = persistedState.openCount;
|
|
68
|
+
this.halfOpenCount = persistedState.halfOpenCount;
|
|
69
|
+
this.totalOpenDuration = persistedState.totalOpenDuration;
|
|
70
|
+
this.lastOpenTime = persistedState.lastOpenTime;
|
|
71
|
+
this.recoveryAttempts = persistedState.recoveryAttempts;
|
|
72
|
+
this.successfulRecoveries = persistedState.successfulRecoveries;
|
|
73
|
+
this.failedRecoveries = persistedState.failedRecoveries;
|
|
74
|
+
}
|
|
75
|
+
getPersistedState() {
|
|
76
|
+
return {
|
|
77
|
+
state: this.state,
|
|
78
|
+
totalRequests: this.totalRequests,
|
|
79
|
+
failedRequests: this.failedRequests,
|
|
80
|
+
successfulRequests: this.successfulRequests,
|
|
81
|
+
totalAttempts: this.totalAttempts,
|
|
82
|
+
failedAttempts: this.failedAttempts,
|
|
83
|
+
successfulAttempts: this.successfulAttempts,
|
|
84
|
+
lastFailureTime: this.lastFailureTime,
|
|
85
|
+
halfOpenRequests: this.halfOpenRequests,
|
|
86
|
+
halfOpenSuccesses: this.halfOpenSuccesses,
|
|
87
|
+
halfOpenFailures: this.halfOpenFailures,
|
|
88
|
+
stateTransitions: this.stateTransitions,
|
|
89
|
+
lastStateChangeTime: this.lastStateChangeTime,
|
|
90
|
+
openCount: this.openCount,
|
|
91
|
+
halfOpenCount: this.halfOpenCount,
|
|
92
|
+
totalOpenDuration: this.totalOpenDuration,
|
|
93
|
+
lastOpenTime: this.lastOpenTime,
|
|
94
|
+
recoveryAttempts: this.recoveryAttempts,
|
|
95
|
+
successfulRecoveries: this.successfulRecoveries,
|
|
96
|
+
failedRecoveries: this.failedRecoveries
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async persistState() {
|
|
100
|
+
if (this.persistence?.store) {
|
|
101
|
+
try {
|
|
102
|
+
await this.persistence.store(this.getPersistedState());
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.warn('stable-request: Unable to store circuit breaker state to persistence.');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
33
108
|
}
|
|
34
109
|
async canExecute() {
|
|
35
110
|
if (this.state === CircuitBreakerState.CLOSED) {
|
|
@@ -61,6 +136,7 @@ export class CircuitBreaker {
|
|
|
61
136
|
this.resetCounters();
|
|
62
137
|
}
|
|
63
138
|
}
|
|
139
|
+
this.persistState();
|
|
64
140
|
}
|
|
65
141
|
recordFailure() {
|
|
66
142
|
this.totalRequests++;
|
|
@@ -74,6 +150,7 @@ export class CircuitBreaker {
|
|
|
74
150
|
else if (this.state === CircuitBreakerState.CLOSED) {
|
|
75
151
|
this.checkThreshold();
|
|
76
152
|
}
|
|
153
|
+
this.persistState();
|
|
77
154
|
}
|
|
78
155
|
recordAttemptSuccess() {
|
|
79
156
|
this.totalAttempts++;
|
|
@@ -86,6 +163,7 @@ export class CircuitBreaker {
|
|
|
86
163
|
this.resetCounters();
|
|
87
164
|
}
|
|
88
165
|
}
|
|
166
|
+
this.persistState();
|
|
89
167
|
}
|
|
90
168
|
recordAttemptFailure() {
|
|
91
169
|
this.totalAttempts++;
|
|
@@ -96,6 +174,7 @@ export class CircuitBreaker {
|
|
|
96
174
|
this.checkAttemptThreshold();
|
|
97
175
|
}
|
|
98
176
|
}
|
|
177
|
+
this.persistState();
|
|
99
178
|
}
|
|
100
179
|
checkThreshold() {
|
|
101
180
|
if (this.totalRequests < this.config.minimumRequests) {
|
|
@@ -139,6 +218,7 @@ export class CircuitBreaker {
|
|
|
139
218
|
this.stateTransitions++;
|
|
140
219
|
this.resetCounters();
|
|
141
220
|
this.resetHalfOpenCounters();
|
|
221
|
+
this.persistState();
|
|
142
222
|
}
|
|
143
223
|
transitionToOpen() {
|
|
144
224
|
const now = Date.now();
|
|
@@ -151,6 +231,7 @@ export class CircuitBreaker {
|
|
|
151
231
|
this.stateTransitions++;
|
|
152
232
|
this.openCount++;
|
|
153
233
|
this.resetHalfOpenCounters();
|
|
234
|
+
this.persistState();
|
|
154
235
|
}
|
|
155
236
|
transitionToHalfOpen() {
|
|
156
237
|
const now = Date.now();
|
|
@@ -163,6 +244,7 @@ export class CircuitBreaker {
|
|
|
163
244
|
this.halfOpenCount++;
|
|
164
245
|
this.recoveryAttempts++;
|
|
165
246
|
this.resetHalfOpenCounters();
|
|
247
|
+
this.persistState();
|
|
166
248
|
}
|
|
167
249
|
shouldResetCounters() {
|
|
168
250
|
const threshold = this.config.trackIndividualAttempts
|
|
@@ -223,6 +305,7 @@ export class CircuitBreaker {
|
|
|
223
305
|
this.resetCounters();
|
|
224
306
|
this.resetHalfOpenCounters();
|
|
225
307
|
this.lastFailureTime = 0;
|
|
308
|
+
this.persistState();
|
|
226
309
|
}
|
|
227
310
|
async execute(fn) {
|
|
228
311
|
const canExecute = await this.canExecute();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/utilities/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ConcurrencyLimiterConfig, ConcurrencyLimiterPersistedState, InfrastructurePersistence } from '../types/index.js';
|
|
1
2
|
export declare class ConcurrencyLimiter {
|
|
2
3
|
private readonly limit;
|
|
3
4
|
private running;
|
|
@@ -11,7 +12,14 @@ export declare class ConcurrencyLimiter {
|
|
|
11
12
|
private totalQueueWaitTime;
|
|
12
13
|
private totalExecutionTime;
|
|
13
14
|
private queueWaitTimes;
|
|
14
|
-
|
|
15
|
+
private readonly persistence?;
|
|
16
|
+
private initialized;
|
|
17
|
+
constructor(limit: number, persistence?: InfrastructurePersistence<ConcurrencyLimiterPersistedState>);
|
|
18
|
+
constructor(config: ConcurrencyLimiterConfig);
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
private restoreState;
|
|
21
|
+
private getPersistedState;
|
|
22
|
+
private persistState;
|
|
15
23
|
private acquire;
|
|
16
24
|
private release;
|
|
17
25
|
execute<T>(fn: () => Promise<T>): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency-limiter.d.ts","sourceRoot":"","sources":["../../src/utilities/concurrency-limiter.ts"],"names":[],"mappings":"AAAA,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,cAAc,CAAgB;
|
|
1
|
+
{"version":3,"file":"concurrency-limiter.d.ts","sourceRoot":"","sources":["../../src/utilities/concurrency-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE1H,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA8D;IAC3F,OAAO,CAAC,WAAW,CAAkB;gBAEzB,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,yBAAyB,CAAC,gCAAgC,CAAC;gBACxF,MAAM,EAAE,wBAAwB;IAWtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;YAaX,YAAY;YAUZ,OAAO;IAsBrB,OAAO,CAAC,OAAO;IAUT,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuB5C,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI/D,QAAQ;;;;;;;;;;;;;;;CA8BX;AAID,wBAAgB,2BAA2B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAK9E;AAED,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD"}
|
|
@@ -11,8 +11,65 @@ export class ConcurrencyLimiter {
|
|
|
11
11
|
totalQueueWaitTime = 0;
|
|
12
12
|
totalExecutionTime = 0;
|
|
13
13
|
queueWaitTimes = [];
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
persistence;
|
|
15
|
+
initialized = false;
|
|
16
|
+
constructor(limitOrConfig, persistence) {
|
|
17
|
+
if (typeof limitOrConfig === 'object') {
|
|
18
|
+
this.limit = Math.max(1, Math.floor(limitOrConfig.limit));
|
|
19
|
+
this.persistence = limitOrConfig.persistence;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
this.limit = Math.max(1, Math.floor(limitOrConfig));
|
|
23
|
+
this.persistence = persistence;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async initialize() {
|
|
27
|
+
if (this.initialized)
|
|
28
|
+
return;
|
|
29
|
+
if (this.persistence?.load) {
|
|
30
|
+
try {
|
|
31
|
+
const persistedState = await this.persistence.load();
|
|
32
|
+
if (persistedState) {
|
|
33
|
+
this.restoreState(persistedState);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.warn('stable-request: Unable to load concurrency limiter state from persistence.');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
this.initialized = true;
|
|
41
|
+
}
|
|
42
|
+
restoreState(persistedState) {
|
|
43
|
+
this.totalRequests = persistedState.totalRequests;
|
|
44
|
+
this.completedRequests = persistedState.completedRequests;
|
|
45
|
+
this.failedRequests = persistedState.failedRequests;
|
|
46
|
+
this.queuedRequests = persistedState.queuedRequests;
|
|
47
|
+
this.peakConcurrency = persistedState.peakConcurrency;
|
|
48
|
+
this.peakQueueLength = persistedState.peakQueueLength;
|
|
49
|
+
this.totalQueueWaitTime = persistedState.totalQueueWaitTime;
|
|
50
|
+
this.totalExecutionTime = persistedState.totalExecutionTime;
|
|
51
|
+
}
|
|
52
|
+
getPersistedState() {
|
|
53
|
+
return {
|
|
54
|
+
totalRequests: this.totalRequests,
|
|
55
|
+
completedRequests: this.completedRequests,
|
|
56
|
+
failedRequests: this.failedRequests,
|
|
57
|
+
queuedRequests: this.queuedRequests,
|
|
58
|
+
peakConcurrency: this.peakConcurrency,
|
|
59
|
+
peakQueueLength: this.peakQueueLength,
|
|
60
|
+
totalQueueWaitTime: this.totalQueueWaitTime,
|
|
61
|
+
totalExecutionTime: this.totalExecutionTime
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
async persistState() {
|
|
65
|
+
if (this.persistence?.store) {
|
|
66
|
+
try {
|
|
67
|
+
await this.persistence.store(this.getPersistedState());
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.warn('stable-request: Unable to store concurrency limiter state to persistence.');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
16
73
|
}
|
|
17
74
|
async acquire() {
|
|
18
75
|
const queueStartTime = Date.now();
|
|
@@ -50,12 +107,14 @@ export class ConcurrencyLimiter {
|
|
|
50
107
|
const executionTime = Date.now() - executionStartTime;
|
|
51
108
|
this.totalExecutionTime += executionTime;
|
|
52
109
|
this.completedRequests++;
|
|
110
|
+
this.persistState();
|
|
53
111
|
return result;
|
|
54
112
|
}
|
|
55
113
|
catch (error) {
|
|
56
114
|
const executionTime = Date.now() - executionStartTime;
|
|
57
115
|
this.totalExecutionTime += executionTime;
|
|
58
116
|
this.failedRequests++;
|
|
117
|
+
this.persistState();
|
|
59
118
|
throw error;
|
|
60
119
|
}
|
|
61
120
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concurrency-limiter.js","sourceRoot":"","sources":["../../src/utilities/concurrency-limiter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"concurrency-limiter.js","sourceRoot":"","sources":["../../src/utilities/concurrency-limiter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,13 @@ export declare class FunctionCacheManager {
|
|
|
3
3
|
private cache;
|
|
4
4
|
private config;
|
|
5
5
|
private stats;
|
|
6
|
+
private readonly persistence?;
|
|
7
|
+
private initialized;
|
|
6
8
|
constructor(config: FunctionCacheConfig<any, any>);
|
|
9
|
+
initialize(): Promise<void>;
|
|
10
|
+
private restoreState;
|
|
11
|
+
private getPersistedState;
|
|
12
|
+
private persistState;
|
|
7
13
|
private generateKey;
|
|
8
14
|
get<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs): CachedFunctionResponse<TReturn> | null;
|
|
9
15
|
set<TArgs extends any[], TReturn>(fn: (...args: TArgs) => any, args: TArgs, data: TReturn): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"function-cache-manager.d.ts","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAiE,MAAM,mBAAmB,CAAC;AAK/I,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,MAAM,CAAqD;IACnE,OAAO,CAAC,KAAK,CAOX;IACF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAgE;IAC7F,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC;IAW3C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,iBAAiB;YAgBX,YAAY;IAU1B,OAAO,CAAC,WAAW;IAgBnB,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,GACV,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI;IA0BzC,GAAG,CAAC,KAAK,SAAS,GAAG,EAAE,EAAE,OAAO,EAC9B,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,GAAG,EAC3B,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,OAAO,GACZ,IAAI;IA6BP,KAAK,IAAI,IAAI;IAKb,QAAQ;;;;;;;;;;;;CAmBT;AAID,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,oBAAoB,CAK1G"}
|
|
@@ -11,13 +11,68 @@ export class FunctionCacheManager {
|
|
|
11
11
|
getTimes: [],
|
|
12
12
|
setTimes: []
|
|
13
13
|
};
|
|
14
|
+
persistence;
|
|
15
|
+
initialized = false;
|
|
14
16
|
constructor(config) {
|
|
15
17
|
this.cache = new Map();
|
|
16
18
|
this.config = {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
enabled: config.enabled,
|
|
20
|
+
ttl: config.ttl ?? 300000,
|
|
21
|
+
maxSize: config.maxSize ?? 1000,
|
|
22
|
+
keyGenerator: config.keyGenerator
|
|
20
23
|
};
|
|
24
|
+
this.persistence = config.persistence;
|
|
25
|
+
}
|
|
26
|
+
async initialize() {
|
|
27
|
+
if (this.initialized)
|
|
28
|
+
return;
|
|
29
|
+
if (this.persistence?.load) {
|
|
30
|
+
try {
|
|
31
|
+
const persistedState = await this.persistence.load();
|
|
32
|
+
if (persistedState) {
|
|
33
|
+
this.restoreState(persistedState);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.warn('stable-request: Unable to load function cache manager state from persistence.');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
this.initialized = true;
|
|
41
|
+
}
|
|
42
|
+
restoreState(persistedState) {
|
|
43
|
+
this.cache.clear();
|
|
44
|
+
for (const entry of persistedState.entries) {
|
|
45
|
+
this.cache.set(entry.key, entry.value);
|
|
46
|
+
}
|
|
47
|
+
this.stats.hits = persistedState.stats.hits;
|
|
48
|
+
this.stats.misses = persistedState.stats.misses;
|
|
49
|
+
this.stats.sets = persistedState.stats.sets;
|
|
50
|
+
this.stats.evictions = persistedState.stats.evictions;
|
|
51
|
+
}
|
|
52
|
+
getPersistedState() {
|
|
53
|
+
const entries = [];
|
|
54
|
+
for (const [key, value] of this.cache.entries()) {
|
|
55
|
+
entries.push({ key, value });
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
entries,
|
|
59
|
+
stats: {
|
|
60
|
+
hits: this.stats.hits,
|
|
61
|
+
misses: this.stats.misses,
|
|
62
|
+
sets: this.stats.sets,
|
|
63
|
+
evictions: this.stats.evictions
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async persistState() {
|
|
68
|
+
if (this.persistence?.store) {
|
|
69
|
+
try {
|
|
70
|
+
await this.persistence.store(this.getPersistedState());
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.warn('stable-request: Unable to store function cache manager state to persistence.');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
21
76
|
}
|
|
22
77
|
generateKey(fn, args) {
|
|
23
78
|
if (this.config.keyGenerator) {
|
|
@@ -72,6 +127,7 @@ export class FunctionCacheManager {
|
|
|
72
127
|
expiresAt: now + ttl
|
|
73
128
|
});
|
|
74
129
|
this.stats.sets++;
|
|
130
|
+
this.persistState();
|
|
75
131
|
}
|
|
76
132
|
finally {
|
|
77
133
|
this.stats.setTimes.push(Date.now() - startTime);
|
|
@@ -79,6 +135,7 @@ export class FunctionCacheManager {
|
|
|
79
135
|
}
|
|
80
136
|
clear() {
|
|
81
137
|
this.cache.clear();
|
|
138
|
+
this.persistState();
|
|
82
139
|
}
|
|
83
140
|
getStats() {
|
|
84
141
|
const totalRequests = this.stats.hits + this.stats.misses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-cache-manager.js","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;AAEnC,MAAM,OAAO,oBAAoB;IACvB,KAAK,CAAsC;IAC3C,MAAM,
|
|
1
|
+
{"version":3,"file":"function-cache-manager.js","sourceRoot":"","sources":["../../src/utilities/function-cache-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RateLimitConfig, RateLimiterPersistedState, InfrastructurePersistence } from '../types/index.js';
|
|
1
2
|
export declare class RateLimiter {
|
|
2
3
|
private readonly maxRequests;
|
|
3
4
|
private readonly windowMs;
|
|
@@ -12,7 +13,14 @@ export declare class RateLimiter {
|
|
|
12
13
|
private peakRequestRate;
|
|
13
14
|
private requestsInCurrentWindow;
|
|
14
15
|
private windowStartTime;
|
|
15
|
-
|
|
16
|
+
private readonly persistence?;
|
|
17
|
+
private initialized;
|
|
18
|
+
constructor(maxRequests: number, windowMs: number, persistence?: InfrastructurePersistence<RateLimiterPersistedState>);
|
|
19
|
+
constructor(config: RateLimitConfig);
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
private restoreState;
|
|
22
|
+
private getPersistedState;
|
|
23
|
+
private persistState;
|
|
16
24
|
private refillTokens;
|
|
17
25
|
private acquire;
|
|
18
26
|
private scheduleRefill;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,uBAAuB,CAAa;IAC5C,OAAO,CAAC,eAAe,CAAsB;
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE1G,qBAAa,WAAW;IACpB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,uBAAuB,CAAa;IAC5C,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAuD;IACpF,OAAO,CAAC,WAAW,CAAkB;gBAEzB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,yBAAyB,CAAC,yBAAyB,CAAC;gBACzG,MAAM,EAAE,eAAe;IAe7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBjC,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,iBAAiB;YAeX,YAAY;IAU1B,OAAO,CAAC,YAAY;YAaN,OAAO;IA0BrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAgBd,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAc5C,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAI/D,QAAQ;;;;;;;;;;;;;;;CA0BX;AAID,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAKzF;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
|