@emmvish/stable-request 2.7.3 → 2.8.1

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 (37) hide show
  1. package/dist/core/stable-buffer.d.ts.map +1 -1
  2. package/dist/core/stable-buffer.js.map +1 -1
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/types/index.d.ts +95 -2
  8. package/dist/types/index.d.ts.map +1 -1
  9. package/dist/utilities/cache-manager.d.ts +7 -0
  10. package/dist/utilities/cache-manager.d.ts.map +1 -1
  11. package/dist/utilities/cache-manager.js +71 -1
  12. package/dist/utilities/cache-manager.js.map +1 -1
  13. package/dist/utilities/circuit-breaker.d.ts +8 -1
  14. package/dist/utilities/circuit-breaker.d.ts.map +1 -1
  15. package/dist/utilities/circuit-breaker.js +88 -0
  16. package/dist/utilities/circuit-breaker.js.map +1 -1
  17. package/dist/utilities/concurrency-limiter.d.ts +10 -1
  18. package/dist/utilities/concurrency-limiter.d.ts.map +1 -1
  19. package/dist/utilities/concurrency-limiter.js +66 -2
  20. package/dist/utilities/concurrency-limiter.js.map +1 -1
  21. package/dist/utilities/function-cache-manager.d.ts +7 -0
  22. package/dist/utilities/function-cache-manager.d.ts.map +1 -1
  23. package/dist/utilities/function-cache-manager.js +65 -3
  24. package/dist/utilities/function-cache-manager.js.map +1 -1
  25. package/dist/utilities/index.d.ts +1 -0
  26. package/dist/utilities/index.d.ts.map +1 -1
  27. package/dist/utilities/index.js +1 -0
  28. package/dist/utilities/index.js.map +1 -1
  29. package/dist/utilities/infrastructure-persistence.d.ts +14 -0
  30. package/dist/utilities/infrastructure-persistence.d.ts.map +1 -0
  31. package/dist/utilities/infrastructure-persistence.js +87 -0
  32. package/dist/utilities/infrastructure-persistence.js.map +1 -0
  33. package/dist/utilities/rate-limiter.d.ts +10 -1
  34. package/dist/utilities/rate-limiter.d.ts.map +1 -1
  35. package/dist/utilities/rate-limiter.js +75 -3
  36. package/dist/utilities/rate-limiter.js.map +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ import type { InfrastructurePersistence } from '../types/index.js';
2
+ export declare class InfrastructurePersistenceCoordinator<TState> {
3
+ private readonly persistence?;
4
+ private readonly label;
5
+ private readonly buffer;
6
+ private operationCounter;
7
+ constructor(persistence?: InfrastructurePersistence<TState> | undefined, label?: string);
8
+ load(): Promise<TState | null | undefined>;
9
+ store(state: TState): Promise<void>;
10
+ private nextOperationId;
11
+ private runTransaction;
12
+ private executeOperation;
13
+ }
14
+ //# sourceMappingURL=infrastructure-persistence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infrastructure-persistence.d.ts","sourceRoot":"","sources":["../../src/utilities/infrastructure-persistence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,yBAAyB,EAK1B,MAAM,mBAAmB,CAAC;AAqC3B,qBAAa,oCAAoC,CAAC,MAAM;IAKpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IALxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,gBAAgB,CAAK;gBAGV,WAAW,CAAC,EAAE,yBAAyB,CAAC,MAAM,CAAC,YAAA,EAC/C,KAAK,GAAE,MAAgB;IAKpC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAe1C,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczC,OAAO,CAAC,eAAe;YAKT,cAAc;YAed,gBAAgB;CAiB/B"}
@@ -0,0 +1,87 @@
1
+ import { StableBuffer } from '../core/stable-buffer.js';
2
+ import { isStableBuffer } from './buffer-utils.js';
3
+ const PERSISTENCE_META_KEY = '__infra_persistence__';
4
+ const ensureStableBuffer = (buffer) => {
5
+ if (isStableBuffer(buffer)) {
6
+ return buffer;
7
+ }
8
+ if (buffer) {
9
+ return new StableBuffer({ initialState: buffer });
10
+ }
11
+ return new StableBuffer();
12
+ };
13
+ const getPersistenceMeta = (state) => {
14
+ if (!state[PERSISTENCE_META_KEY]) {
15
+ state[PERSISTENCE_META_KEY] = { processedOperations: {} };
16
+ }
17
+ return state[PERSISTENCE_META_KEY];
18
+ };
19
+ const normalizeLoadResult = (result) => {
20
+ if (result && typeof result === 'object' && 'skipped' in result) {
21
+ return result.state ?? null;
22
+ }
23
+ return result;
24
+ };
25
+ export class InfrastructurePersistenceCoordinator {
26
+ persistence;
27
+ label;
28
+ buffer;
29
+ operationCounter = 0;
30
+ constructor(persistence, label = 'infra') {
31
+ this.persistence = persistence;
32
+ this.label = label;
33
+ this.buffer = ensureStableBuffer(persistence?.buffer);
34
+ }
35
+ async load() {
36
+ if (!this.persistence) {
37
+ return undefined;
38
+ }
39
+ const operationId = this.nextOperationId('load');
40
+ const result = await this.runTransaction({
41
+ operationId,
42
+ type: 'load',
43
+ timestamp: Date.now()
44
+ });
45
+ return normalizeLoadResult(result);
46
+ }
47
+ async store(state) {
48
+ if (!this.persistence) {
49
+ return;
50
+ }
51
+ const operationId = this.nextOperationId('store');
52
+ await this.runTransaction({
53
+ operationId,
54
+ type: 'store',
55
+ timestamp: Date.now(),
56
+ state
57
+ });
58
+ }
59
+ nextOperationId(type) {
60
+ this.operationCounter += 1;
61
+ return `${this.label}-${type}-${Date.now()}-${this.operationCounter}`;
62
+ }
63
+ async runTransaction(operation) {
64
+ return this.buffer.run(async (state) => {
65
+ const meta = getPersistenceMeta(state);
66
+ if (meta.processedOperations[operation.operationId]) {
67
+ return { skipped: true };
68
+ }
69
+ const result = await this.executeOperation(operation);
70
+ meta.processedOperations[operation.operationId] = Date.now();
71
+ return result;
72
+ });
73
+ }
74
+ async executeOperation(operation) {
75
+ if (this.persistence?.transaction) {
76
+ return this.persistence.transaction(operation);
77
+ }
78
+ if (operation.type === 'load') {
79
+ return this.persistence?.load?.();
80
+ }
81
+ if (operation.type === 'store' && this.persistence?.store) {
82
+ return this.persistence.store(operation.state);
83
+ }
84
+ return undefined;
85
+ }
86
+ }
87
+ //# sourceMappingURL=infrastructure-persistence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infrastructure-persistence.js","sourceRoot":"","sources":["../../src/utilities/infrastructure-persistence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAcnD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD,MAAM,kBAAkB,GAAG,CAAC,MAAmB,EAAwB,EAAE;IACvE,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,IAAI,YAAY,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAyB,EAAE;IAC/E,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,oBAAoB,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE,EAA2B,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC,oBAAoB,CAA0B,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,MAA0D,EAC/B,EAAE;IAC7B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;QAChE,OAAQ,MAAoC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC7D,CAAC;IAED,OAAO,MAAmC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,OAAO,oCAAoC;IAK5B;IACA;IALF,MAAM,CAAuB;IACtC,gBAAgB,GAAG,CAAC,CAAC;IAE7B,YACmB,WAA+C,EAC/C,QAAgB,OAAO;QADvB,gBAAW,GAAX,WAAW,CAAoC;QAC/C,UAAK,GAAL,KAAK,CAAkB;QAExC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC;YACvC,WAAW;YACX,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QAEH,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,CAAC,cAAc,CAAC;YACxB,WAAW;YACX,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,IAA4C;QAClE,IAAI,CAAC,gBAAgB,IAAI,CAAC,CAAC;QAC3B,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,cAAc,CAC1B,SAAqD;QAErD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAwD,CAAC;YACjF,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACtD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7D,OAAO,MAA4D,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,SAAqD;QAErD,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;YAC1D,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,KAAe,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -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,15 @@ export declare class RateLimiter {
12
13
  private peakRequestRate;
13
14
  private requestsInCurrentWindow;
14
15
  private windowStartTime;
15
- constructor(maxRequests: number, windowMs: number);
16
+ private readonly persistence?;
17
+ private readonly persistenceCoordinator?;
18
+ private initialized;
19
+ constructor(maxRequests: number, windowMs: number, persistence?: InfrastructurePersistence<RateLimiterPersistedState>);
20
+ constructor(config: RateLimitConfig);
21
+ initialize(): Promise<void>;
22
+ private restoreState;
23
+ private getPersistedState;
24
+ private persistState;
16
25
  private refillTokens;
17
26
  private acquire;
18
27
  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;gBAEjC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAOjD,OAAO,CAAC,YAAY;YAaN,OAAO;IAwBrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,YAAY;IAcd,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAY5C,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"}
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;AAG1G,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,QAAQ,CAAC,sBAAsB,CAAC,CAAkE;IAC1G,OAAO,CAAC,WAAW,CAAkB;gBAEzB,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,yBAAyB,CAAC,yBAAyB,CAAC;gBACzG,MAAM,EAAE,eAAe;IAkB7B,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"}
@@ -1,3 +1,4 @@
1
+ import { InfrastructurePersistenceCoordinator } from './infrastructure-persistence.js';
1
2
  export class RateLimiter {
2
3
  maxRequests;
3
4
  windowMs;
@@ -12,12 +13,78 @@ export class RateLimiter {
12
13
  peakRequestRate = 0;
13
14
  requestsInCurrentWindow = 0;
14
15
  windowStartTime = Date.now();
15
- constructor(maxRequests, windowMs) {
16
- this.maxRequests = Math.max(1, Math.floor(maxRequests));
17
- this.windowMs = Math.max(100, windowMs);
16
+ persistence;
17
+ persistenceCoordinator;
18
+ initialized = false;
19
+ constructor(maxRequestsOrConfig, windowMs, persistence) {
20
+ if (typeof maxRequestsOrConfig === 'object') {
21
+ this.maxRequests = Math.max(1, Math.floor(maxRequestsOrConfig.maxRequests));
22
+ this.windowMs = Math.max(100, maxRequestsOrConfig.windowMs);
23
+ this.persistence = maxRequestsOrConfig.persistence;
24
+ }
25
+ else {
26
+ this.maxRequests = Math.max(1, Math.floor(maxRequestsOrConfig));
27
+ this.windowMs = Math.max(100, windowMs);
28
+ this.persistence = persistence;
29
+ }
30
+ this.persistenceCoordinator = this.persistence
31
+ ? new InfrastructurePersistenceCoordinator(this.persistence, 'rate-limiter')
32
+ : undefined;
18
33
  this.tokens = this.maxRequests;
19
34
  this.lastRefillTime = Date.now();
20
35
  }
36
+ async initialize() {
37
+ if (this.initialized)
38
+ return;
39
+ if (this.persistenceCoordinator) {
40
+ try {
41
+ const persistedState = await this.persistenceCoordinator.load();
42
+ if (persistedState) {
43
+ this.restoreState(persistedState);
44
+ }
45
+ }
46
+ catch (error) {
47
+ console.warn('stable-request: Unable to load rate limiter state from persistence.');
48
+ }
49
+ }
50
+ this.initialized = true;
51
+ }
52
+ restoreState(persistedState) {
53
+ this.tokens = persistedState.tokens;
54
+ this.lastRefillTime = persistedState.lastRefillTime;
55
+ this.totalRequests = persistedState.totalRequests;
56
+ this.throttledRequests = persistedState.throttledRequests;
57
+ this.completedRequests = persistedState.completedRequests;
58
+ this.peakQueueLength = persistedState.peakQueueLength;
59
+ this.totalQueueWaitTime = persistedState.totalQueueWaitTime;
60
+ this.peakRequestRate = persistedState.peakRequestRate;
61
+ this.requestsInCurrentWindow = persistedState.requestsInCurrentWindow;
62
+ this.windowStartTime = persistedState.windowStartTime;
63
+ }
64
+ getPersistedState() {
65
+ return {
66
+ tokens: this.tokens,
67
+ lastRefillTime: this.lastRefillTime,
68
+ totalRequests: this.totalRequests,
69
+ throttledRequests: this.throttledRequests,
70
+ completedRequests: this.completedRequests,
71
+ peakQueueLength: this.peakQueueLength,
72
+ totalQueueWaitTime: this.totalQueueWaitTime,
73
+ peakRequestRate: this.peakRequestRate,
74
+ requestsInCurrentWindow: this.requestsInCurrentWindow,
75
+ windowStartTime: this.windowStartTime
76
+ };
77
+ }
78
+ async persistState() {
79
+ if (this.persistenceCoordinator) {
80
+ try {
81
+ await this.persistenceCoordinator.store(this.getPersistedState());
82
+ }
83
+ catch (error) {
84
+ console.warn('stable-request: Unable to store rate limiter state to persistence.');
85
+ }
86
+ }
87
+ }
21
88
  refillTokens() {
22
89
  const now = Date.now();
23
90
  const elapsed = now - this.lastRefillTime;
@@ -36,6 +103,7 @@ export class RateLimiter {
36
103
  this.tokens--;
37
104
  this.requestsInCurrentWindow++;
38
105
  this.peakRequestRate = Math.max(this.peakRequestRate, this.requestsInCurrentWindow);
106
+ this.persistState();
39
107
  return Promise.resolve();
40
108
  }
41
109
  this.throttledRequests++;
@@ -46,6 +114,7 @@ export class RateLimiter {
46
114
  resolve();
47
115
  });
48
116
  this.peakQueueLength = Math.max(this.peakQueueLength, this.queue.length);
117
+ this.persistState();
49
118
  this.scheduleRefill();
50
119
  });
51
120
  }
@@ -70,16 +139,19 @@ export class RateLimiter {
70
139
  if (this.queue.length > 0) {
71
140
  this.scheduleRefill();
72
141
  }
142
+ this.persistState();
73
143
  }
74
144
  async execute(fn) {
75
145
  await this.acquire();
76
146
  try {
77
147
  const result = await fn();
78
148
  this.completedRequests++;
149
+ this.persistState();
79
150
  return result;
80
151
  }
81
152
  catch (error) {
82
153
  this.completedRequests++;
154
+ this.persistState();
83
155
  throw error;
84
156
  }
85
157
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../src/utilities/rate-limiter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@emmvish/stable-request",
3
- "version": "2.7.3",
3
+ "version": "2.8.1",
4
4
  "description": "A production-grade Workflow Execution Engine for Node.js that transforms unreliable API calls into resilient, observable, and sophisticated multi-phase workflows with intelligent retry strategies, circuit breakers, and advanced execution patterns.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",