@defai.digital/provider-domain 13.4.11 → 13.5.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,4BAA4B,IAAI,oBAAoB,EACzD,KAAK,2BAA2B,IAAI,mBAAmB,EACvD,KAAK,2BAA2B,IAAI,mBAAmB,EAKxD,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,IAAI,mBAAmB,CAAC;IAEhC,kCAAkC;IAClC,UAAU,IAAI,OAAO,CAAC;IAEtB,kCAAkC;IAClC,aAAa,IAAI,IAAI,CAAC;IAEtB,8BAA8B;IAC9B,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,kCAAkC;IAClC,SAAS,IAAI,IAAI,CAAC;IAElB,oCAAoC;IACpC,UAAU,IAAI,IAAI,CAAC;IAEnB,wBAAwB;IACxB,SAAS,IAAI,mBAAmB,EAAE,CAAC;IAEnC,gCAAgC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAExE;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACzC,cAAc,CA4JhB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;gBADlB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClC,OAAO,EAAE,MAAM;IAMjB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB;CAO5D"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAEL,KAAK,4BAA4B,IAAI,oBAAoB,EACzD,KAAK,2BAA2B,IAAI,mBAAmB,EACvD,KAAK,2BAA2B,IAAI,mBAAmB,EAKxD,MAAM,0BAA0B,CAAC;AAQlC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,QAAQ,IAAI,mBAAmB,CAAC;IAEhC,kCAAkC;IAClC,UAAU,IAAI,OAAO,CAAC;IAEtB,kCAAkC;IAClC,aAAa,IAAI,IAAI,CAAC;IAEtB,8BAA8B;IAC9B,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC,kCAAkC;IAClC,SAAS,IAAI,IAAI,CAAC;IAElB,oCAAoC;IACpC,UAAU,IAAI,IAAI,CAAC;IAEnB,wBAAwB;IACxB,SAAS,IAAI,mBAAmB,EAAE,CAAC;IAEnC,gCAAgC;IAChC,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAExE;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,GACzC,cAAc,CAyKhB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;gBADlB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClC,OAAO,EAAE,MAAM;IAMjB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB;CAO5D"}
@@ -10,6 +10,11 @@
10
10
  * - INV-CB-003: Half-open allows limited requests for recovery testing
11
11
  */
12
12
  import { createDefaultProviderCircuitBreakerConfig as createDefaultCircuitBreakerConfig, createInitialProviderCircuitBreakerState as createInitialCircuitBreakerState, ProviderCircuitBreakerErrorCodes as CircuitBreakerErrorCodes, } from '@defai.digital/contracts';
13
+ /**
14
+ * Maximum number of events to retain in memory
15
+ * INV-CB-004: Event buffer is bounded to prevent memory leaks
16
+ */
17
+ const MAX_EVENTS = 1000;
13
18
  /**
14
19
  * Creates a circuit breaker for a provider
15
20
  */
@@ -18,16 +23,29 @@ export function createCircuitBreaker(providerId, config = {}) {
18
23
  let state = createInitialCircuitBreakerState();
19
24
  const events = [];
20
25
  const listeners = [];
21
- function emitEvent(type, details) {
26
+ /**
27
+ * Emit a circuit breaker event
28
+ * INV-CB-005: Events must have correct state values BEFORE being emitted to listeners
29
+ * @param previousStateOverride - Override for previousState (for state transitions)
30
+ * @param currentStateOverride - Override for currentState (for state transitions)
31
+ */
32
+ function emitEvent(type, details, previousStateOverride, currentStateOverride) {
22
33
  const event = {
23
34
  eventId: crypto.randomUUID(),
24
35
  type,
25
36
  providerId,
26
37
  timestamp: new Date().toISOString(),
27
- previousState: state.state,
28
- currentState: state.state,
38
+ // INV-CB-005: Set state values before emitting, not after
39
+ previousState: previousStateOverride ?? state.state,
40
+ currentState: currentStateOverride ?? state.state,
29
41
  details,
30
42
  };
43
+ // INV-CB-004: Evict oldest events when buffer is full to prevent memory leak
44
+ if (events.length >= MAX_EVENTS) {
45
+ // Remove oldest 10% of events to avoid frequent evictions
46
+ const evictCount = Math.max(1, Math.floor(MAX_EVENTS * 0.1));
47
+ events.splice(0, evictCount);
48
+ }
31
49
  events.push(event);
32
50
  listeners.forEach((listener) => { listener(event); });
33
51
  }
@@ -39,26 +57,23 @@ export function createCircuitBreaker(providerId, config = {}) {
39
57
  state: newState,
40
58
  lastTransitionTime: now,
41
59
  };
60
+ // INV-CB-005: Pass correct state values to emitEvent so listeners receive correct values
42
61
  if (newState === 'open') {
43
62
  state.nextAttemptTime = new Date(Date.now() + cfg.resetTimeoutMs).toISOString();
44
- emitEvent('circuit.opened', { failureCount: state.failureCount });
63
+ emitEvent('circuit.opened', { failureCount: state.failureCount }, previousState, newState);
45
64
  }
46
65
  else if (newState === 'halfOpen') {
47
66
  state.successCount = 0;
48
67
  state.nextAttemptTime = undefined;
49
- emitEvent('circuit.halfOpen');
68
+ emitEvent('circuit.halfOpen', undefined, previousState, newState);
50
69
  }
51
70
  else if (newState === 'closed') {
52
71
  state.failureCount = 0;
53
72
  state.successCount = 0;
54
73
  state.nextAttemptTime = undefined;
55
- emitEvent('circuit.closed');
56
- }
57
- const stateEvent = events[events.length - 1];
58
- if (stateEvent) {
59
- stateEvent.previousState = previousState;
60
- stateEvent.currentState = newState;
74
+ emitEvent('circuit.closed', undefined, previousState, newState);
61
75
  }
76
+ // Note: Removed post-emit mutation - state values are now set correctly before emit
62
77
  }
63
78
  function shouldAttemptReset() {
64
79
  if (state.state !== 'open' || !state.nextAttemptTime)
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../src/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,uBAAuB,IAAI,eAAe,EAC/C,KAAK,sBAAsB,IAAI,cAAc,EAC7C,KAAK,sBAAsB,IAAI,cAAc,EAM9C,MAAM,0BAA0B,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,QAAQ,IAAI,cAAc,CAAC;IAE3B,oDAAoD;IACpD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,qDAAqD;IACrD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,0CAA0C;IAC1C,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,+CAA+C;IAC/C,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,qDAAqD;IACrD,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD,wBAAwB;IACxB,SAAS,IAAI,cAAc,EAAE,CAAC;IAE9B,6BAA6B;IAC7B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAErE;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,WAAW,CAqNb;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAErB,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;aAClB,YAAY,CAAC,EAAE,MAAM;gBAFrB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrC,OAAO,CAAC,EAAE,MAAM;IAMlB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc;IAQ1E,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;CAQ1D"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,KAAK,uBAAuB,IAAI,eAAe,EAC/C,KAAK,sBAAsB,IAAI,cAAc,EAC7C,KAAK,sBAAsB,IAAI,cAAc,EAM9C,MAAM,0BAA0B,CAAC;AAQlC;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,QAAQ,IAAI,cAAc,CAAC;IAE3B,oDAAoD;IACpD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,qDAAqD;IACrD,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAErC,0CAA0C;IAC1C,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9C,+CAA+C;IAC/C,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAErC,qDAAqD;IACrD,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjD,wBAAwB;IACxB,SAAS,IAAI,cAAc,EAAE,CAAC;IAE9B,6BAA6B;IAC7B,KAAK,IAAI,IAAI,CAAC;CACf;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAErE;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,OAAO,CAAC,eAAe,CAAM,GACpC,WAAW,CAqOb;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAErB,IAAI,EAAE,MAAM;aACZ,UAAU,EAAE,MAAM;aAClB,YAAY,CAAC,EAAE,MAAM;gBAFrB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,YAAA,EACrC,OAAO,CAAC,EAAE,MAAM;IAMlB,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,cAAc;IAQ1E,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc;CAQ1D"}
@@ -10,6 +10,11 @@
10
10
  * - INV-RL-003: Strategy applied when limit reached
11
11
  */
12
12
  import { createDefaultProviderRateLimitConfig as createDefaultRateLimitConfig, createInitialProviderRateLimitState as createInitialRateLimitState, ProviderRateLimitErrorCodes as RateLimitErrorCodes, } from '@defai.digital/contracts';
13
+ /**
14
+ * Maximum number of events to retain in memory
15
+ * INV-RL-004: Event buffer is bounded to prevent memory leaks
16
+ */
17
+ const MAX_EVENTS = 1000;
13
18
  /**
14
19
  * Creates a rate limiter for a provider
15
20
  */
@@ -29,6 +34,12 @@ export function createRateLimiter(providerId, config = {}) {
29
34
  timestamp: new Date().toISOString(),
30
35
  details,
31
36
  };
37
+ // INV-RL-004: Evict oldest events when buffer is full to prevent memory leak
38
+ if (events.length >= MAX_EVENTS) {
39
+ // Remove oldest 10% of events to avoid frequent evictions
40
+ const evictCount = Math.max(1, Math.floor(MAX_EVENTS * 0.1));
41
+ events.splice(0, evictCount);
42
+ }
32
43
  events.push(event);
33
44
  listeners.forEach((listener) => { listener(event); });
34
45
  }
@@ -84,6 +95,27 @@ export function createRateLimiter(providerId, config = {}) {
84
95
  consecutiveLimits,
85
96
  });
86
97
  }
98
+ // INV-RL-005: Local function to calculate wait time, avoiding 'this' binding issues
99
+ // This allows waitForTokens to work correctly when destructured or passed as callback
100
+ function calculateWaitTime(tokens = 1) {
101
+ refillTokens();
102
+ updateState();
103
+ // Check if blocked
104
+ if (internalState.nextAllowedTime) {
105
+ const blockWait = new Date(internalState.nextAllowedTime).getTime() - Date.now();
106
+ if (blockWait > 0)
107
+ return blockWait;
108
+ }
109
+ // Calculate time to refill needed tokens
110
+ if (internalState.requestTokens >= 1 && internalState.outputTokens >= tokens) {
111
+ return 0;
112
+ }
113
+ const requestsNeeded = Math.max(0, 1 - internalState.requestTokens);
114
+ const tokensNeeded = Math.max(0, tokens - internalState.outputTokens);
115
+ const requestRefillTime = (requestsNeeded / cfg.requestsPerMinute) * 60000;
116
+ const tokenRefillTime = (tokensNeeded / cfg.tokensPerMinute) * 60000;
117
+ return Math.max(requestRefillTime, tokenRefillTime);
118
+ }
87
119
  return {
88
120
  getState() {
89
121
  refillTokens();
@@ -127,29 +159,15 @@ export function createRateLimiter(providerId, config = {}) {
127
159
  return false;
128
160
  },
129
161
  async waitForTokens(tokens = 1) {
130
- const waitTime = this.getWaitTime(tokens);
162
+ // INV-RL-005: Use local function call instead of 'this' to avoid
163
+ // binding issues when method is destructured or passed as callback
164
+ const waitTime = calculateWaitTime(tokens);
131
165
  if (waitTime > 0) {
132
166
  await new Promise((resolve) => setTimeout(resolve, waitTime));
133
167
  }
134
168
  },
135
169
  getWaitTime(tokens = 1) {
136
- refillTokens();
137
- updateState();
138
- // Check if blocked
139
- if (internalState.nextAllowedTime) {
140
- const blockWait = new Date(internalState.nextAllowedTime).getTime() - Date.now();
141
- if (blockWait > 0)
142
- return blockWait;
143
- }
144
- // Calculate time to refill needed tokens
145
- if (internalState.requestTokens >= 1 && internalState.outputTokens >= tokens) {
146
- return 0;
147
- }
148
- const requestsNeeded = Math.max(0, 1 - internalState.requestTokens);
149
- const tokensNeeded = Math.max(0, tokens - internalState.outputTokens);
150
- const requestRefillTime = (requestsNeeded / cfg.requestsPerMinute) * 60000;
151
- const tokenRefillTime = (tokensNeeded / cfg.tokensPerMinute) * 60000;
152
- return Math.max(requestRefillTime, tokenRefillTime);
170
+ return calculateWaitTime(tokens);
153
171
  },
154
172
  recordExternalLimit(retryAfterMs) {
155
173
  const backoffTime = retryAfterMs ?? cfg.backoffBaseMs;
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defai.digital/provider-domain",
3
- "version": "13.4.11",
3
+ "version": "13.5.2",
4
4
  "type": "module",
5
5
  "description": "Provider resilience domain for AutomatosX - circuit breaker, rate limiting, health monitoring",
6
6
  "license": "BUSL-1.1",
@@ -32,7 +32,7 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@defai.digital/contracts": "13.4.11"
35
+ "@defai.digital/contracts": "13.5.2"
36
36
  },
37
37
  "scripts": {
38
38
  "build": "tsc --build",