@freshguard/freshguard-core 0.13.2 → 0.15.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.
Files changed (196) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +74 -1
  3. package/SKILL.md +229 -0
  4. package/dist/cli/index.d.ts +13 -0
  5. package/dist/cli/index.d.ts.map +1 -1
  6. package/dist/cli/index.js +74 -1
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/connectors/azure-sql.d.ts +121 -0
  9. package/dist/connectors/azure-sql.d.ts.map +1 -0
  10. package/dist/connectors/azure-sql.js +489 -0
  11. package/dist/connectors/azure-sql.js.map +1 -0
  12. package/dist/connectors/base-connector.d.ts +139 -0
  13. package/dist/connectors/base-connector.d.ts.map +1 -1
  14. package/dist/connectors/base-connector.js +160 -3
  15. package/dist/connectors/base-connector.js.map +1 -1
  16. package/dist/connectors/bigquery.d.ts +100 -0
  17. package/dist/connectors/bigquery.d.ts.map +1 -1
  18. package/dist/connectors/bigquery.js +143 -2
  19. package/dist/connectors/bigquery.js.map +1 -1
  20. package/dist/connectors/duckdb.d.ts +96 -0
  21. package/dist/connectors/duckdb.d.ts.map +1 -1
  22. package/dist/connectors/duckdb.js +144 -7
  23. package/dist/connectors/duckdb.js.map +1 -1
  24. package/dist/connectors/index.d.ts +28 -0
  25. package/dist/connectors/index.d.ts.map +1 -1
  26. package/dist/connectors/index.js +28 -0
  27. package/dist/connectors/index.js.map +1 -1
  28. package/dist/connectors/mssql.d.ts +119 -0
  29. package/dist/connectors/mssql.d.ts.map +1 -0
  30. package/dist/connectors/mssql.js +483 -0
  31. package/dist/connectors/mssql.js.map +1 -0
  32. package/dist/connectors/mysql.d.ts +85 -0
  33. package/dist/connectors/mysql.d.ts.map +1 -1
  34. package/dist/connectors/mysql.js +118 -3
  35. package/dist/connectors/mysql.js.map +1 -1
  36. package/dist/connectors/postgres.d.ts +85 -0
  37. package/dist/connectors/postgres.d.ts.map +1 -1
  38. package/dist/connectors/postgres.js +113 -6
  39. package/dist/connectors/postgres.js.map +1 -1
  40. package/dist/connectors/redshift.d.ts +90 -0
  41. package/dist/connectors/redshift.d.ts.map +1 -1
  42. package/dist/connectors/redshift.js +131 -7
  43. package/dist/connectors/redshift.js.map +1 -1
  44. package/dist/connectors/snowflake.d.ts +108 -0
  45. package/dist/connectors/snowflake.d.ts.map +1 -1
  46. package/dist/connectors/snowflake.js +137 -3
  47. package/dist/connectors/snowflake.js.map +1 -1
  48. package/dist/connectors/synapse.d.ts +123 -0
  49. package/dist/connectors/synapse.d.ts.map +1 -0
  50. package/dist/connectors/synapse.js +495 -0
  51. package/dist/connectors/synapse.js.map +1 -0
  52. package/dist/db/index.d.ts +25 -0
  53. package/dist/db/index.d.ts.map +1 -1
  54. package/dist/db/index.js +23 -0
  55. package/dist/db/index.js.map +1 -1
  56. package/dist/db/migrate.d.ts +23 -0
  57. package/dist/db/migrate.d.ts.map +1 -1
  58. package/dist/db/migrate.js +38 -0
  59. package/dist/db/migrate.js.map +1 -1
  60. package/dist/db/schema.d.ts +11 -0
  61. package/dist/db/schema.d.ts.map +1 -1
  62. package/dist/db/schema.js +70 -0
  63. package/dist/db/schema.js.map +1 -1
  64. package/dist/errors/debug-factory.d.ts +38 -0
  65. package/dist/errors/debug-factory.d.ts.map +1 -1
  66. package/dist/errors/debug-factory.js +40 -0
  67. package/dist/errors/debug-factory.js.map +1 -1
  68. package/dist/errors/index.d.ts +59 -0
  69. package/dist/errors/index.d.ts.map +1 -1
  70. package/dist/errors/index.js +110 -7
  71. package/dist/errors/index.js.map +1 -1
  72. package/dist/index.d.ts +32 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +37 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/metadata/duckdb-storage.d.ts +3 -0
  77. package/dist/metadata/duckdb-storage.d.ts.map +1 -1
  78. package/dist/metadata/duckdb-storage.js +6 -0
  79. package/dist/metadata/duckdb-storage.js.map +1 -1
  80. package/dist/metadata/factory.d.ts +30 -0
  81. package/dist/metadata/factory.d.ts.map +1 -1
  82. package/dist/metadata/factory.js +31 -0
  83. package/dist/metadata/factory.js.map +1 -1
  84. package/dist/metadata/index.d.ts +26 -0
  85. package/dist/metadata/index.d.ts.map +1 -1
  86. package/dist/metadata/index.js +26 -0
  87. package/dist/metadata/index.js.map +1 -1
  88. package/dist/metadata/interface.d.ts +33 -0
  89. package/dist/metadata/interface.d.ts.map +1 -1
  90. package/dist/metadata/interface.js +3 -0
  91. package/dist/metadata/interface.js.map +1 -1
  92. package/dist/metadata/postgresql-storage.d.ts +3 -0
  93. package/dist/metadata/postgresql-storage.d.ts.map +1 -1
  94. package/dist/metadata/postgresql-storage.js +12 -2
  95. package/dist/metadata/postgresql-storage.js.map +1 -1
  96. package/dist/metadata/schema-config.d.ts +53 -0
  97. package/dist/metadata/schema-config.d.ts.map +1 -1
  98. package/dist/metadata/schema-config.js +64 -0
  99. package/dist/metadata/schema-config.js.map +1 -1
  100. package/dist/metadata/types.d.ts +3 -0
  101. package/dist/metadata/types.d.ts.map +1 -1
  102. package/dist/metadata/types.js +3 -0
  103. package/dist/metadata/types.js.map +1 -1
  104. package/dist/monitor/baseline-calculator.d.ts +56 -0
  105. package/dist/monitor/baseline-calculator.d.ts.map +1 -1
  106. package/dist/monitor/baseline-calculator.js +72 -0
  107. package/dist/monitor/baseline-calculator.js.map +1 -1
  108. package/dist/monitor/baseline-config.d.ts +77 -0
  109. package/dist/monitor/baseline-config.d.ts.map +1 -1
  110. package/dist/monitor/baseline-config.js +79 -1
  111. package/dist/monitor/baseline-config.js.map +1 -1
  112. package/dist/monitor/freshness.d.ts +40 -0
  113. package/dist/monitor/freshness.d.ts.map +1 -1
  114. package/dist/monitor/freshness.js +82 -3
  115. package/dist/monitor/freshness.js.map +1 -1
  116. package/dist/monitor/index.d.ts +29 -0
  117. package/dist/monitor/index.d.ts.map +1 -1
  118. package/dist/monitor/index.js +29 -0
  119. package/dist/monitor/index.js.map +1 -1
  120. package/dist/monitor/schema-baseline.d.ts +45 -0
  121. package/dist/monitor/schema-baseline.d.ts.map +1 -1
  122. package/dist/monitor/schema-baseline.js +63 -5
  123. package/dist/monitor/schema-baseline.js.map +1 -1
  124. package/dist/monitor/schema-changes.d.ts +45 -0
  125. package/dist/monitor/schema-changes.d.ts.map +1 -1
  126. package/dist/monitor/schema-changes.js +85 -0
  127. package/dist/monitor/schema-changes.js.map +1 -1
  128. package/dist/monitor/volume.d.ts +43 -0
  129. package/dist/monitor/volume.d.ts.map +1 -1
  130. package/dist/monitor/volume.js +89 -0
  131. package/dist/monitor/volume.js.map +1 -1
  132. package/dist/observability/logger.d.ts +91 -0
  133. package/dist/observability/logger.d.ts.map +1 -1
  134. package/dist/observability/logger.js +108 -0
  135. package/dist/observability/logger.js.map +1 -1
  136. package/dist/observability/metrics.d.ts +140 -0
  137. package/dist/observability/metrics.d.ts.map +1 -1
  138. package/dist/observability/metrics.js +184 -7
  139. package/dist/observability/metrics.js.map +1 -1
  140. package/dist/resilience/circuit-breaker.d.ts +112 -2
  141. package/dist/resilience/circuit-breaker.d.ts.map +1 -1
  142. package/dist/resilience/circuit-breaker.js +140 -6
  143. package/dist/resilience/circuit-breaker.js.map +1 -1
  144. package/dist/resilience/index.d.ts +9 -0
  145. package/dist/resilience/index.d.ts.map +1 -1
  146. package/dist/resilience/index.js +13 -0
  147. package/dist/resilience/index.js.map +1 -1
  148. package/dist/resilience/retry-policy.d.ts +105 -0
  149. package/dist/resilience/retry-policy.d.ts.map +1 -1
  150. package/dist/resilience/retry-policy.js +158 -7
  151. package/dist/resilience/retry-policy.js.map +1 -1
  152. package/dist/resilience/timeout-manager.d.ts +137 -0
  153. package/dist/resilience/timeout-manager.d.ts.map +1 -1
  154. package/dist/resilience/timeout-manager.js +151 -4
  155. package/dist/resilience/timeout-manager.js.map +1 -1
  156. package/dist/security/query-analyzer.d.ts +124 -0
  157. package/dist/security/query-analyzer.d.ts.map +1 -1
  158. package/dist/security/query-analyzer.js +150 -9
  159. package/dist/security/query-analyzer.js.map +1 -1
  160. package/dist/security/schema-cache.d.ts +152 -0
  161. package/dist/security/schema-cache.d.ts.map +1 -1
  162. package/dist/security/schema-cache.js +144 -12
  163. package/dist/security/schema-cache.js.map +1 -1
  164. package/dist/types/connector.d.ts +68 -1
  165. package/dist/types/connector.d.ts.map +1 -1
  166. package/dist/types/connector.js +38 -15
  167. package/dist/types/connector.js.map +1 -1
  168. package/dist/types/driver-results.d.ts +28 -0
  169. package/dist/types/driver-results.d.ts.map +1 -1
  170. package/dist/types/driver-results.js +12 -0
  171. package/dist/types/driver-results.js.map +1 -1
  172. package/dist/types.d.ts +113 -1
  173. package/dist/types.d.ts.map +1 -1
  174. package/dist/types.js +8 -0
  175. package/dist/types.js.map +1 -1
  176. package/dist/validation/index.d.ts +8 -0
  177. package/dist/validation/index.d.ts.map +1 -1
  178. package/dist/validation/index.js +12 -0
  179. package/dist/validation/index.js.map +1 -1
  180. package/dist/validation/runtime-validator.d.ts +98 -0
  181. package/dist/validation/runtime-validator.d.ts.map +1 -1
  182. package/dist/validation/runtime-validator.js +114 -1
  183. package/dist/validation/runtime-validator.js.map +1 -1
  184. package/dist/validation/sanitizers.d.ts +59 -0
  185. package/dist/validation/sanitizers.d.ts.map +1 -1
  186. package/dist/validation/sanitizers.js +104 -20
  187. package/dist/validation/sanitizers.js.map +1 -1
  188. package/dist/validation/schemas.d.ts +73 -0
  189. package/dist/validation/schemas.d.ts.map +1 -1
  190. package/dist/validation/schemas.js +132 -5
  191. package/dist/validation/schemas.js.map +1 -1
  192. package/dist/validators/index.d.ts +54 -0
  193. package/dist/validators/index.d.ts.map +1 -1
  194. package/dist/validators/index.js +93 -2
  195. package/dist/validators/index.js.map +1 -1
  196. package/package.json +6 -2
@@ -1,21 +1,50 @@
1
+ /**
2
+ * Circuit Breaker implementation for FreshGuard Core Phase 2
3
+ *
4
+ * Implements the Circuit Breaker pattern to provide resilience against
5
+ * cascading failures and fast-fail behavior for unhealthy services.
6
+ * Includes integrated observability with structured logging and metrics.
7
+ *
8
+ * States: CLOSED → OPEN → HALF_OPEN → CLOSED/OPEN
9
+ *
10
+ * @license MIT
11
+ */
1
12
  import type { StructuredLogger } from '../observability/logger.js';
2
13
  import type { MetricsCollector } from '../observability/metrics.js';
14
+ /**
15
+ * Circuit breaker states
16
+ */
3
17
  export declare enum CircuitBreakerState {
4
- CLOSED = "CLOSED",
5
- OPEN = "OPEN",
18
+ CLOSED = "CLOSED",// Normal operation
19
+ OPEN = "OPEN",// Failing fast
6
20
  HALF_OPEN = "HALF_OPEN"
7
21
  }
22
+ /**
23
+ * Circuit breaker configuration
24
+ */
8
25
  export interface CircuitBreakerConfig {
26
+ /** Failure threshold to trip the circuit */
9
27
  failureThreshold: number;
28
+ /** Success threshold to close circuit from half-open */
10
29
  successThreshold: number;
30
+ /** Time to wait before attempting recovery (ms) */
11
31
  recoveryTimeout: number;
32
+ /** Window size for tracking failures */
12
33
  windowSize: number;
34
+ /** Custom error classifier */
13
35
  errorFilter?: (error: Error) => boolean;
36
+ /** Circuit name for logging/monitoring */
14
37
  name?: string;
38
+ /** Logger instance for observability */
15
39
  logger?: StructuredLogger;
40
+ /** Metrics collector for observability */
16
41
  metrics?: MetricsCollector;
42
+ /** Enable detailed logging */
17
43
  enableDetailedLogging?: boolean;
18
44
  }
45
+ /**
46
+ * Circuit breaker statistics
47
+ */
19
48
  export interface CircuitBreakerStats {
20
49
  state: CircuitBreakerState;
21
50
  totalCalls: number;
@@ -28,6 +57,9 @@ export interface CircuitBreakerStats {
28
57
  failureRate: number;
29
58
  uptime: number;
30
59
  }
60
+ /**
61
+ * Circuit breaker execution result
62
+ */
31
63
  export type CircuitBreakerResult<T> = {
32
64
  success: true;
33
65
  data: T;
@@ -37,16 +69,25 @@ export type CircuitBreakerResult<T> = {
37
69
  error: CircuitBreakerError;
38
70
  executionTime: number;
39
71
  };
72
+ /**
73
+ * Base circuit breaker error
74
+ */
40
75
  export declare class CircuitBreakerError extends Error {
41
76
  readonly circuitName: string;
42
77
  readonly state: CircuitBreakerState;
43
78
  readonly timestamp: Date;
44
79
  constructor(message: string, circuitName: string, state: CircuitBreakerState);
45
80
  }
81
+ /**
82
+ * Circuit open error (fast-fail)
83
+ */
46
84
  export declare class CircuitOpenError extends CircuitBreakerError {
47
85
  readonly nextAttemptTime: Date;
48
86
  constructor(circuitName: string, nextAttemptTime: Date);
49
87
  }
88
+ /**
89
+ * Circuit Breaker with sliding window failure tracking and integrated observability
90
+ */
50
91
  export declare class CircuitBreaker {
51
92
  private state;
52
93
  private failureWindow;
@@ -64,30 +105,99 @@ export declare class CircuitBreaker {
64
105
  private readonly enableDetailedLogging;
65
106
  private lastStateChangeTime;
66
107
  constructor(config: CircuitBreakerConfig);
108
+ /**
109
+ * Execute a function with circuit breaker protection
110
+ */
67
111
  execute<T>(fn: () => Promise<T>): Promise<T>;
112
+ /**
113
+ * Execute with result wrapper (no throwing)
114
+ */
68
115
  executeWithResult<T>(fn: () => Promise<T>): Promise<CircuitBreakerResult<T>>;
116
+ /**
117
+ * Handle successful execution
118
+ */
69
119
  private onSuccess;
120
+ /**
121
+ * Handle failed execution
122
+ */
70
123
  private onFailure;
124
+ /**
125
+ * Trip the circuit to OPEN state
126
+ */
71
127
  private tripCircuit;
128
+ /**
129
+ * Change circuit state with logging and metrics
130
+ */
72
131
  private changeState;
132
+ /**
133
+ * Record current metrics
134
+ */
73
135
  private recordMetrics;
136
+ /**
137
+ * Reset failure count (when circuit is healthy)
138
+ */
74
139
  private resetFailureCount;
140
+ /**
141
+ * Get current circuit breaker statistics
142
+ */
75
143
  getStats(): CircuitBreakerStats;
144
+ /**
145
+ * Check if circuit is available for calls
146
+ */
76
147
  isCallable(): boolean;
148
+ /**
149
+ * Force circuit to CLOSED state (for testing/admin)
150
+ */
77
151
  reset(): void;
152
+ /**
153
+ * Force circuit to OPEN state (for testing/admin)
154
+ */
78
155
  trip(): void;
156
+ /**
157
+ * Get circuit name
158
+ */
79
159
  getName(): string;
160
+ /**
161
+ * Get current state
162
+ */
80
163
  getState(): CircuitBreakerState;
81
164
  }
165
+ /**
166
+ * Create a circuit breaker with default configuration for database operations
167
+ */
82
168
  export declare function createDatabaseCircuitBreaker(name: string): CircuitBreaker;
169
+ /**
170
+ * Create a circuit breaker with default configuration for external API calls
171
+ */
83
172
  export declare function createApiCircuitBreaker(name: string): CircuitBreaker;
173
+ /**
174
+ * Create a circuit breaker registry for managing multiple circuits
175
+ */
84
176
  export declare class CircuitBreakerRegistry {
85
177
  private readonly circuits;
178
+ /**
179
+ * Get or create a circuit breaker
180
+ */
86
181
  getOrCreate(name: string, config?: CircuitBreakerConfig): CircuitBreaker;
182
+ /**
183
+ * Get all circuit breakers
184
+ */
87
185
  getAllCircuits(): Map<string, CircuitBreaker>;
186
+ /**
187
+ * Get statistics for all circuits
188
+ */
88
189
  getAllStats(): Record<string, CircuitBreakerStats>;
190
+ /**
191
+ * Reset all circuits
192
+ */
89
193
  resetAll(): void;
194
+ /**
195
+ * Remove a circuit breaker
196
+ */
90
197
  remove(name: string): boolean;
198
+ /**
199
+ * Clear all circuit breakers
200
+ */
91
201
  clear(): void;
92
202
  }
93
203
  export declare const defaultCircuitBreakerRegistry: CircuitBreakerRegistry;
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,34 @@
1
+ /**
2
+ * Circuit Breaker implementation for FreshGuard Core Phase 2
3
+ *
4
+ * Implements the Circuit Breaker pattern to provide resilience against
5
+ * cascading failures and fast-fail behavior for unhealthy services.
6
+ * Includes integrated observability with structured logging and metrics.
7
+ *
8
+ * States: CLOSED → OPEN → HALF_OPEN → CLOSED/OPEN
9
+ *
10
+ * @license MIT
11
+ */
1
12
  import { createComponentLogger } from '../observability/logger.js';
2
13
  import { createComponentMetrics } from '../observability/metrics.js';
14
+ // ==============================================
15
+ // Types and Interfaces
16
+ // ==============================================
17
+ /**
18
+ * Circuit breaker states
19
+ */
3
20
  export var CircuitBreakerState;
4
21
  (function (CircuitBreakerState) {
5
22
  CircuitBreakerState["CLOSED"] = "CLOSED";
6
23
  CircuitBreakerState["OPEN"] = "OPEN";
7
- CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
24
+ CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN"; // Testing if service recovered
8
25
  })(CircuitBreakerState || (CircuitBreakerState = {}));
26
+ // ==============================================
27
+ // Error Classes
28
+ // ==============================================
29
+ /**
30
+ * Base circuit breaker error
31
+ */
9
32
  export class CircuitBreakerError extends Error {
10
33
  circuitName;
11
34
  state;
@@ -18,6 +41,9 @@ export class CircuitBreakerError extends Error {
18
41
  this.timestamp = new Date();
19
42
  }
20
43
  }
44
+ /**
45
+ * Circuit open error (fast-fail)
46
+ */
21
47
  export class CircuitOpenError extends CircuitBreakerError {
22
48
  nextAttemptTime;
23
49
  constructor(circuitName, nextAttemptTime) {
@@ -26,6 +52,12 @@ export class CircuitOpenError extends CircuitBreakerError {
26
52
  this.nextAttemptTime = nextAttemptTime;
27
53
  }
28
54
  }
55
+ // ==============================================
56
+ // Circuit Breaker Implementation
57
+ // ==============================================
58
+ /**
59
+ * Circuit Breaker with sliding window failure tracking and integrated observability
60
+ */
29
61
  export class CircuitBreaker {
30
62
  state = CircuitBreakerState.CLOSED;
31
63
  failureWindow = [];
@@ -46,16 +78,18 @@ export class CircuitBreaker {
46
78
  this.config = {
47
79
  failureThreshold: config.failureThreshold ?? 5,
48
80
  successThreshold: config.successThreshold ?? 3,
49
- recoveryTimeout: config.recoveryTimeout ?? 60000,
81
+ recoveryTimeout: config.recoveryTimeout ?? 60000, // 1 minute
50
82
  windowSize: config.windowSize ?? 100,
51
- errorFilter: config.errorFilter ?? (() => true),
83
+ errorFilter: config.errorFilter ?? (() => true), // Count all errors by default
52
84
  name: config.name ?? 'Circuit',
53
85
  enableDetailedLogging: config.enableDetailedLogging ?? false
54
86
  };
55
87
  this.lastStateChangeTime = new Date();
88
+ // Initialize observability
56
89
  this.logger = config.logger ?? createComponentLogger('circuit-breaker');
57
90
  this.metrics = config.metrics ?? createComponentMetrics('circuit_breaker');
58
91
  this.enableDetailedLogging = config.enableDetailedLogging !== false;
92
+ // Validate configuration
59
93
  if (this.config.failureThreshold <= 0) {
60
94
  throw new Error('Failure threshold must be positive');
61
95
  }
@@ -65,6 +99,7 @@ export class CircuitBreaker {
65
99
  if (this.config.recoveryTimeout < 0) {
66
100
  throw new Error('Recovery timeout cannot be negative');
67
101
  }
102
+ // Log circuit breaker initialization
68
103
  this.logger.info('Circuit breaker initialized', {
69
104
  circuitName: this.config.name,
70
105
  failureThreshold: this.config.failureThreshold,
@@ -72,14 +107,20 @@ export class CircuitBreaker {
72
107
  recoveryTimeout: this.config.recoveryTimeout,
73
108
  windowSize: this.config.windowSize
74
109
  });
110
+ // Initialize metrics
75
111
  this.recordMetrics();
76
112
  }
113
+ /**
114
+ * Execute a function with circuit breaker protection
115
+ */
77
116
  async execute(fn) {
78
117
  const startTime = Date.now();
79
118
  try {
119
+ // Check if circuit is open
80
120
  if (this.state === CircuitBreakerState.OPEN) {
81
121
  if (Date.now() < (this.nextAttemptTime?.getTime() ?? 0)) {
82
122
  this.rejectedCalls++;
123
+ // Log rejected call
83
124
  if (this.enableDetailedLogging) {
84
125
  this.logger.debug('Circuit breaker rejected call', {
85
126
  circuitName: this.config.name,
@@ -91,10 +132,12 @@ export class CircuitBreaker {
91
132
  throw new CircuitOpenError(this.config.name, attemptTime);
92
133
  }
93
134
  else {
135
+ // Time to attempt recovery
94
136
  this.changeState(CircuitBreakerState.HALF_OPEN);
95
137
  this.successCount = 0;
96
138
  }
97
139
  }
140
+ // Execute the function
98
141
  const result = await fn();
99
142
  const executionTime = Date.now() - startTime;
100
143
  this.onSuccess(executionTime);
@@ -106,6 +149,9 @@ export class CircuitBreaker {
106
149
  throw error;
107
150
  }
108
151
  }
152
+ /**
153
+ * Execute with result wrapper (no throwing)
154
+ */
109
155
  async executeWithResult(fn) {
110
156
  const startTime = Date.now();
111
157
  try {
@@ -128,12 +174,16 @@ export class CircuitBreaker {
128
174
  };
129
175
  }
130
176
  }
177
+ /**
178
+ * Handle successful execution
179
+ */
131
180
  onSuccess(executionTime) {
132
181
  this.totalCalls++;
133
182
  this.successfulCalls++;
134
183
  this.lastSuccessTime = new Date();
135
184
  switch (this.state) {
136
185
  case CircuitBreakerState.CLOSED:
186
+ // Already closed, nothing to do
137
187
  this.resetFailureCount();
138
188
  break;
139
189
  case CircuitBreakerState.HALF_OPEN:
@@ -146,10 +196,12 @@ export class CircuitBreaker {
146
196
  }
147
197
  break;
148
198
  case CircuitBreakerState.OPEN:
199
+ // This shouldn't happen, but handle gracefully
149
200
  this.changeState(CircuitBreakerState.HALF_OPEN);
150
201
  this.successCount = 1;
151
202
  break;
152
203
  }
204
+ // Log successful execution
153
205
  if (this.enableDetailedLogging) {
154
206
  this.logger.debug('Circuit breaker execution succeeded', {
155
207
  circuitName: this.config.name,
@@ -159,13 +211,19 @@ export class CircuitBreaker {
159
211
  totalCalls: this.totalCalls
160
212
  });
161
213
  }
214
+ // Record metrics
162
215
  this.recordMetrics();
163
216
  }
217
+ /**
218
+ * Handle failed execution
219
+ */
164
220
  onFailure(error, executionTime) {
165
221
  this.totalCalls++;
166
222
  this.failedCalls++;
167
223
  this.lastFailureTime = new Date();
224
+ // Check if this error should be counted
168
225
  if (!this.config.errorFilter(error)) {
226
+ // Log filtered error
169
227
  if (this.enableDetailedLogging) {
170
228
  this.logger.debug('Circuit breaker execution failed (filtered)', {
171
229
  circuitName: this.config.name,
@@ -177,9 +235,11 @@ export class CircuitBreaker {
177
235
  }
178
236
  return;
179
237
  }
238
+ // Add failure to sliding window
180
239
  const now = new Date();
181
240
  this.failureWindow.push(now);
182
- const cutoff = new Date(now.getTime() - (5 * 60 * 1000));
241
+ // Clean old failures outside window
242
+ const cutoff = new Date(now.getTime() - (5 * 60 * 1000)); // 5 minute window
183
243
  this.failureWindow = this.failureWindow.filter(time => time > cutoff);
184
244
  const previousState = this.state;
185
245
  switch (this.state) {
@@ -189,12 +249,15 @@ export class CircuitBreaker {
189
249
  }
190
250
  break;
191
251
  case CircuitBreakerState.HALF_OPEN:
252
+ // Any failure in half-open state trips the circuit
192
253
  this.tripCircuit();
193
254
  break;
194
255
  case CircuitBreakerState.OPEN:
256
+ // Already open, extend the timeout
195
257
  this.nextAttemptTime = new Date(Date.now() + this.config.recoveryTimeout);
196
258
  break;
197
259
  }
260
+ // Log failed execution
198
261
  if (this.enableDetailedLogging) {
199
262
  this.logger.warn('Circuit breaker execution failed', {
200
263
  circuitName: this.config.name,
@@ -208,6 +271,7 @@ export class CircuitBreaker {
208
271
  });
209
272
  }
210
273
  else {
274
+ // Always log state changes, even with minimal logging
211
275
  if (previousState !== this.state) {
212
276
  this.logger.warn('Circuit breaker state changed due to failure', {
213
277
  circuitName: this.config.name,
@@ -217,12 +281,17 @@ export class CircuitBreaker {
217
281
  });
218
282
  }
219
283
  }
284
+ // Record metrics
220
285
  this.recordMetrics();
221
286
  }
287
+ /**
288
+ * Trip the circuit to OPEN state
289
+ */
222
290
  tripCircuit() {
223
291
  this.changeState(CircuitBreakerState.OPEN);
224
292
  this.successCount = 0;
225
293
  this.nextAttemptTime = new Date(Date.now() + this.config.recoveryTimeout);
294
+ // Log circuit tripping (always log this important event)
226
295
  this.logger.error('Circuit breaker tripped to OPEN state', {
227
296
  circuitName: this.config.name,
228
297
  failureCount: this.failureWindow.length,
@@ -230,6 +299,9 @@ export class CircuitBreaker {
230
299
  nextAttemptTime: this.nextAttemptTime.toISOString()
231
300
  });
232
301
  }
302
+ /**
303
+ * Change circuit state with logging and metrics
304
+ */
233
305
  changeState(newState) {
234
306
  const previousState = this.state;
235
307
  if (previousState === newState) {
@@ -237,21 +309,32 @@ export class CircuitBreaker {
237
309
  }
238
310
  this.state = newState;
239
311
  this.lastStateChangeTime = new Date();
312
+ // Log state change (always log state changes)
240
313
  this.logger.info('Circuit breaker state changed', {
241
314
  circuitName: this.config.name,
242
315
  previousState,
243
316
  newState,
244
317
  timeInPreviousState: Date.now() - this.lastStateChangeTime.getTime()
245
318
  });
319
+ // Record metrics
246
320
  this.recordMetrics();
247
321
  }
322
+ /**
323
+ * Record current metrics
324
+ */
248
325
  recordMetrics() {
249
326
  this.metrics.recordCircuitBreakerState(this.config.name, this.state, this.failedCalls, this.successfulCalls);
250
327
  }
328
+ /**
329
+ * Reset failure count (when circuit is healthy)
330
+ */
251
331
  resetFailureCount() {
252
332
  this.failureWindow = [];
253
333
  this.successCount = 0;
254
334
  }
335
+ /**
336
+ * Get current circuit breaker statistics
337
+ */
255
338
  getStats() {
256
339
  const failureRate = this.totalCalls > 0
257
340
  ? (this.failedCalls / this.totalCalls) * 100
@@ -272,6 +355,9 @@ export class CircuitBreaker {
272
355
  uptime: Math.round(uptime * 100) / 100
273
356
  };
274
357
  }
358
+ /**
359
+ * Check if circuit is available for calls
360
+ */
275
361
  isCallable() {
276
362
  switch (this.state) {
277
363
  case CircuitBreakerState.CLOSED:
@@ -282,6 +368,9 @@ export class CircuitBreaker {
282
368
  return Date.now() >= (this.nextAttemptTime?.getTime() ?? 0);
283
369
  }
284
370
  }
371
+ /**
372
+ * Force circuit to CLOSED state (for testing/admin)
373
+ */
285
374
  reset() {
286
375
  this.state = CircuitBreakerState.CLOSED;
287
376
  this.resetFailureCount();
@@ -293,24 +382,40 @@ export class CircuitBreaker {
293
382
  this.lastFailureTime = null;
294
383
  this.lastSuccessTime = null;
295
384
  }
385
+ /**
386
+ * Force circuit to OPEN state (for testing/admin)
387
+ */
296
388
  trip() {
297
389
  this.tripCircuit();
298
390
  }
391
+ /**
392
+ * Get circuit name
393
+ */
299
394
  getName() {
300
395
  return this.config.name;
301
396
  }
397
+ /**
398
+ * Get current state
399
+ */
302
400
  getState() {
303
401
  return this.state;
304
402
  }
305
403
  }
404
+ // ==============================================
405
+ // Factory Functions
406
+ // ==============================================
407
+ /**
408
+ * Create a circuit breaker with default configuration for database operations
409
+ */
306
410
  export function createDatabaseCircuitBreaker(name) {
307
411
  return new CircuitBreaker({
308
412
  name: `db-${name}`,
309
413
  failureThreshold: 5,
310
414
  successThreshold: 3,
311
- recoveryTimeout: 60000,
415
+ recoveryTimeout: 60000, // 1 minute
312
416
  windowSize: 100,
313
417
  errorFilter: (error) => {
418
+ // Don't count validation errors or authentication errors
314
419
  return !(error.name === 'ValidationError' ||
315
420
  error.name === 'AuthenticationError' ||
316
421
  error.message.includes('authentication') ||
@@ -318,14 +423,18 @@ export function createDatabaseCircuitBreaker(name) {
318
423
  }
319
424
  });
320
425
  }
426
+ /**
427
+ * Create a circuit breaker with default configuration for external API calls
428
+ */
321
429
  export function createApiCircuitBreaker(name) {
322
430
  return new CircuitBreaker({
323
431
  name: `api-${name}`,
324
432
  failureThreshold: 3,
325
433
  successThreshold: 2,
326
- recoveryTimeout: 30000,
434
+ recoveryTimeout: 30000, // 30 seconds
327
435
  windowSize: 50,
328
436
  errorFilter: (error) => {
437
+ // Count 5xx errors but not 4xx client errors
329
438
  if (error.message.includes('status')) {
330
439
  const statusMatch = /status\s+(\d+)/i.exec(error.message);
331
440
  if (statusMatch?.[1]) {
@@ -337,8 +446,14 @@ export function createApiCircuitBreaker(name) {
337
446
  }
338
447
  });
339
448
  }
449
+ /**
450
+ * Create a circuit breaker registry for managing multiple circuits
451
+ */
340
452
  export class CircuitBreakerRegistry {
341
453
  circuits = new Map();
454
+ /**
455
+ * Get or create a circuit breaker
456
+ */
342
457
  getOrCreate(name, config) {
343
458
  let circuit = this.circuits.get(name);
344
459
  if (!circuit) {
@@ -354,9 +469,15 @@ export class CircuitBreakerRegistry {
354
469
  }
355
470
  return circuit;
356
471
  }
472
+ /**
473
+ * Get all circuit breakers
474
+ */
357
475
  getAllCircuits() {
358
476
  return new Map(this.circuits);
359
477
  }
478
+ /**
479
+ * Get statistics for all circuits
480
+ */
360
481
  getAllStats() {
361
482
  const stats = {};
362
483
  for (const [name, circuit] of this.circuits) {
@@ -364,17 +485,30 @@ export class CircuitBreakerRegistry {
364
485
  }
365
486
  return stats;
366
487
  }
488
+ /**
489
+ * Reset all circuits
490
+ */
367
491
  resetAll() {
368
492
  for (const circuit of this.circuits.values()) {
369
493
  circuit.reset();
370
494
  }
371
495
  }
496
+ /**
497
+ * Remove a circuit breaker
498
+ */
372
499
  remove(name) {
373
500
  return this.circuits.delete(name);
374
501
  }
502
+ /**
503
+ * Clear all circuit breakers
504
+ */
375
505
  clear() {
376
506
  this.circuits.clear();
377
507
  }
378
508
  }
509
+ // ==============================================
510
+ // Default Registry
511
+ // ==============================================
512
+ // Global circuit breaker registry (can be replaced with DI in production)
379
513
  export const defaultCircuitBreakerRegistry = new CircuitBreakerRegistry();
380
514
  //# sourceMappingURL=circuit-breaker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../src/resilience/circuit-breaker.ts"],"names":[],"mappings":"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"}