@emmvish/stable-request 2.1.6 → 2.2.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 (45) hide show
  1. package/README.md +113 -5
  2. package/dist/constants/index.d.ts +9 -0
  3. package/dist/constants/index.d.ts.map +1 -1
  4. package/dist/constants/index.js +72 -0
  5. package/dist/constants/index.js.map +1 -1
  6. package/dist/core/stable-api-gateway.d.ts.map +1 -1
  7. package/dist/core/stable-api-gateway.js +24 -2
  8. package/dist/core/stable-api-gateway.js.map +1 -1
  9. package/dist/core/stable-function.d.ts.map +1 -1
  10. package/dist/core/stable-function.js +8 -3
  11. package/dist/core/stable-function.js.map +1 -1
  12. package/dist/core/stable-request.d.ts.map +1 -1
  13. package/dist/core/stable-request.js +8 -3
  14. package/dist/core/stable-request.js.map +1 -1
  15. package/dist/core/stable-workflow.d.ts.map +1 -1
  16. package/dist/core/stable-workflow.js +13 -1
  17. package/dist/core/stable-workflow.js.map +1 -1
  18. package/dist/enums/index.d.ts +10 -0
  19. package/dist/enums/index.d.ts.map +1 -1
  20. package/dist/enums/index.js +12 -0
  21. package/dist/enums/index.js.map +1 -1
  22. package/dist/index.d.ts +3 -3
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/types/index.d.ts +119 -1
  27. package/dist/types/index.d.ts.map +1 -1
  28. package/dist/utilities/execute-branch-workflow.d.ts.map +1 -1
  29. package/dist/utilities/execute-branch-workflow.js +13 -0
  30. package/dist/utilities/execute-branch-workflow.js.map +1 -1
  31. package/dist/utilities/execute-phase.d.ts.map +1 -1
  32. package/dist/utilities/execute-phase.js +4 -0
  33. package/dist/utilities/execute-phase.js.map +1 -1
  34. package/dist/utilities/execute-workflow-graph.d.ts.map +1 -1
  35. package/dist/utilities/execute-workflow-graph.js +4 -0
  36. package/dist/utilities/execute-workflow-graph.js.map +1 -1
  37. package/dist/utilities/index.d.ts +1 -0
  38. package/dist/utilities/index.d.ts.map +1 -1
  39. package/dist/utilities/index.js +1 -0
  40. package/dist/utilities/index.js.map +1 -1
  41. package/dist/utilities/metrics-validator.d.ts +80 -0
  42. package/dist/utilities/metrics-validator.d.ts.map +1 -0
  43. package/dist/utilities/metrics-validator.js +274 -0
  44. package/dist/utilities/metrics-validator.js.map +1 -0
  45. package/package.json +1 -1
@@ -0,0 +1,274 @@
1
+ import { AnomalySeverity as AnomalySeverityEnum, ViolationType as ViolationTypeEnum } from '../enums/index.js';
2
+ import { REQUEST_METRICS_TO_VALIDATE_KEYS, API_GATEWAY_METRICS_TO_VALIDATE_KEYS, WORKFLOW_METRICS_TO_VALIDATE_KEYS, CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS, CACHE_METRICS_TO_VALIDATE_KEYS, RATE_LIMITER_METRICS_TO_VALIDATE_KEYS, CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS, PHASE_METRICS_TO_VALIDATE_KEYS, BRANCH_METRICS_TO_VALIDATE_KEYS } from '../constants/index.js';
3
+ export class MetricsValidator {
4
+ static validateMetric(metricName, metricValue, guardrail) {
5
+ if (guardrail.min !== undefined && metricValue < guardrail.min) {
6
+ return {
7
+ metricName,
8
+ metricValue,
9
+ guardrail,
10
+ severity: this.determineSeverity(metricValue, guardrail, ViolationTypeEnum.BELOW_MIN),
11
+ reason: `${metricName} (${metricValue.toFixed(2)}) is below minimum threshold (${guardrail.min})`,
12
+ violationType: ViolationTypeEnum.BELOW_MIN
13
+ };
14
+ }
15
+ if (guardrail.max !== undefined && metricValue > guardrail.max) {
16
+ return {
17
+ metricName,
18
+ metricValue,
19
+ guardrail,
20
+ severity: this.determineSeverity(metricValue, guardrail, ViolationTypeEnum.ABOVE_MAX),
21
+ reason: `${metricName} (${metricValue.toFixed(2)}) exceeds maximum threshold (${guardrail.max})`,
22
+ violationType: ViolationTypeEnum.ABOVE_MAX
23
+ };
24
+ }
25
+ if (guardrail.expected !== undefined && guardrail.tolerance !== undefined) {
26
+ const lowerBound = guardrail.expected * (1 - guardrail.tolerance / 100);
27
+ const upperBound = guardrail.expected * (1 + guardrail.tolerance / 100);
28
+ if (metricValue < lowerBound || metricValue > upperBound) {
29
+ return {
30
+ metricName,
31
+ metricValue,
32
+ guardrail,
33
+ severity: this.determineSeverity(metricValue, guardrail, ViolationTypeEnum.OUTSIDE_TOLERANCE),
34
+ reason: `${metricName} (${metricValue.toFixed(2)}) is outside expected range (${lowerBound.toFixed(2)} - ${upperBound.toFixed(2)}, expected: ${guardrail.expected} ±${guardrail.tolerance}%)`,
35
+ violationType: ViolationTypeEnum.OUTSIDE_TOLERANCE
36
+ };
37
+ }
38
+ }
39
+ return null;
40
+ }
41
+ static determineSeverity(value, guardrail, violationType) {
42
+ if (violationType === ViolationTypeEnum.BELOW_MIN && guardrail.min !== undefined) {
43
+ const deviation = ((guardrail.min - value) / guardrail.min) * 100;
44
+ if (deviation > 50)
45
+ return AnomalySeverityEnum.CRITICAL;
46
+ if (deviation > 20)
47
+ return AnomalySeverityEnum.WARNING;
48
+ return AnomalySeverityEnum.INFO;
49
+ }
50
+ if (violationType === ViolationTypeEnum.ABOVE_MAX && guardrail.max !== undefined) {
51
+ const deviation = ((value - guardrail.max) / guardrail.max) * 100;
52
+ if (deviation > 50)
53
+ return AnomalySeverityEnum.CRITICAL;
54
+ if (deviation > 20)
55
+ return AnomalySeverityEnum.WARNING;
56
+ return AnomalySeverityEnum.INFO;
57
+ }
58
+ if (violationType === ViolationTypeEnum.OUTSIDE_TOLERANCE && guardrail.expected !== undefined && guardrail.tolerance !== undefined) {
59
+ const deviation = Math.abs((value - guardrail.expected) / guardrail.expected) * 100;
60
+ if (deviation > guardrail.tolerance * 2)
61
+ return AnomalySeverityEnum.CRITICAL;
62
+ if (deviation > guardrail.tolerance * 1.5)
63
+ return AnomalySeverityEnum.WARNING;
64
+ return AnomalySeverityEnum.INFO;
65
+ }
66
+ return AnomalySeverityEnum.WARNING;
67
+ }
68
+ static validateRequestMetrics(metrics, guardrails) {
69
+ const anomalies = [];
70
+ const requestGuardrails = guardrails.request || {};
71
+ const metricsToValidate = [
72
+ { name: REQUEST_METRICS_TO_VALIDATE_KEYS[0], value: metrics.totalAttempts, guardrail: requestGuardrails.totalAttempts },
73
+ { name: REQUEST_METRICS_TO_VALIDATE_KEYS[1], value: metrics.successfulAttempts, guardrail: requestGuardrails.successfulAttempts },
74
+ { name: REQUEST_METRICS_TO_VALIDATE_KEYS[2], value: metrics.failedAttempts, guardrail: requestGuardrails.failedAttempts },
75
+ { name: REQUEST_METRICS_TO_VALIDATE_KEYS[3], value: metrics.totalExecutionTime, guardrail: requestGuardrails.totalExecutionTime || guardrails.common?.executionTime },
76
+ { name: REQUEST_METRICS_TO_VALIDATE_KEYS[4], value: metrics.averageAttemptTime, guardrail: requestGuardrails.averageAttemptTime }
77
+ ];
78
+ for (const { name, value, guardrail } of metricsToValidate) {
79
+ if (value !== undefined && guardrail) {
80
+ const anomaly = this.validateMetric(name, value, guardrail);
81
+ if (anomaly)
82
+ anomalies.push(anomaly);
83
+ }
84
+ }
85
+ return {
86
+ isValid: anomalies.length === 0,
87
+ anomalies,
88
+ validatedAt: new Date().toISOString()
89
+ };
90
+ }
91
+ static validateApiGatewayMetrics(metrics, guardrails) {
92
+ const anomalies = [];
93
+ const gatewayGuardrails = guardrails.apiGateway || {};
94
+ const metricsToValidate = [
95
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[0], value: metrics.totalRequests, guardrail: gatewayGuardrails.totalRequests },
96
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[1], value: metrics.successfulRequests, guardrail: gatewayGuardrails.successfulRequests },
97
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[2], value: metrics.failedRequests, guardrail: gatewayGuardrails.failedRequests },
98
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[3], value: metrics.successRate, guardrail: gatewayGuardrails.successRate || guardrails.common?.successRate },
99
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[4], value: metrics.failureRate, guardrail: gatewayGuardrails.failureRate || guardrails.common?.failureRate },
100
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[5], value: metrics.executionTime, guardrail: gatewayGuardrails.executionTime || guardrails.common?.executionTime },
101
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[6], value: metrics.throughput, guardrail: gatewayGuardrails.throughput || guardrails.common?.throughput },
102
+ { name: API_GATEWAY_METRICS_TO_VALIDATE_KEYS[7], value: metrics.averageRequestDuration, guardrail: gatewayGuardrails.averageRequestDuration }
103
+ ];
104
+ for (const { name, value, guardrail } of metricsToValidate) {
105
+ if (value !== undefined && guardrail) {
106
+ const anomaly = this.validateMetric(name, value, guardrail);
107
+ if (anomaly)
108
+ anomalies.push(anomaly);
109
+ }
110
+ }
111
+ return {
112
+ isValid: anomalies.length === 0,
113
+ anomalies,
114
+ validatedAt: new Date().toISOString()
115
+ };
116
+ }
117
+ static validateWorkflowMetrics(metrics, guardrails) {
118
+ const anomalies = [];
119
+ const workflowGuardrails = guardrails.workflow || {};
120
+ const metricsToValidate = [
121
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[0], value: metrics.totalPhases, guardrail: workflowGuardrails.totalPhases },
122
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[1], value: metrics.completedPhases, guardrail: workflowGuardrails.completedPhases },
123
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[2], value: metrics.failedPhases, guardrail: workflowGuardrails.failedPhases },
124
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[3], value: metrics.totalRequests, guardrail: workflowGuardrails.totalRequests },
125
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[4], value: metrics.successfulRequests, guardrail: workflowGuardrails.successfulRequests },
126
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[5], value: metrics.failedRequests, guardrail: workflowGuardrails.failedRequests },
127
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[6], value: metrics.requestSuccessRate, guardrail: workflowGuardrails.requestSuccessRate || guardrails.common?.successRate },
128
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[7], value: metrics.requestFailureRate, guardrail: workflowGuardrails.requestFailureRate || guardrails.common?.failureRate },
129
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[8], value: metrics.executionTime, guardrail: workflowGuardrails.executionTime || guardrails.common?.executionTime },
130
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[9], value: metrics.averagePhaseExecutionTime, guardrail: workflowGuardrails.averagePhaseExecutionTime },
131
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[10], value: metrics.throughput, guardrail: workflowGuardrails.throughput || guardrails.common?.throughput },
132
+ { name: WORKFLOW_METRICS_TO_VALIDATE_KEYS[11], value: metrics.phaseCompletionRate, guardrail: workflowGuardrails.phaseCompletionRate }
133
+ ];
134
+ for (const { name, value, guardrail } of metricsToValidate) {
135
+ if (value !== undefined && guardrail) {
136
+ const anomaly = this.validateMetric(name, value, guardrail);
137
+ if (anomaly)
138
+ anomalies.push(anomaly);
139
+ }
140
+ }
141
+ return {
142
+ isValid: anomalies.length === 0,
143
+ anomalies,
144
+ validatedAt: new Date().toISOString()
145
+ };
146
+ }
147
+ static validatePhaseMetrics(metrics, guardrails) {
148
+ const anomalies = [];
149
+ const phaseGuardrails = guardrails.phase || {};
150
+ const metricsToValidate = [
151
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[0], value: metrics.totalRequests, guardrail: phaseGuardrails.totalRequests },
152
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[1], value: metrics.successfulRequests, guardrail: phaseGuardrails.successfulRequests },
153
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[2], value: metrics.failedRequests, guardrail: phaseGuardrails.failedRequests },
154
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[3], value: metrics.requestSuccessRate, guardrail: phaseGuardrails.requestSuccessRate || guardrails.common?.successRate },
155
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[4], value: metrics.requestFailureRate, guardrail: phaseGuardrails.requestFailureRate || guardrails.common?.failureRate },
156
+ { name: PHASE_METRICS_TO_VALIDATE_KEYS[5], value: metrics.executionTime, guardrail: phaseGuardrails.executionTime || guardrails.common?.executionTime }
157
+ ];
158
+ for (const { name, value, guardrail } of metricsToValidate) {
159
+ if (value !== undefined && guardrail) {
160
+ const anomaly = this.validateMetric(name, value, guardrail);
161
+ if (anomaly)
162
+ anomalies.push(anomaly);
163
+ }
164
+ }
165
+ return {
166
+ isValid: anomalies.length === 0,
167
+ anomalies,
168
+ validatedAt: new Date().toISOString()
169
+ };
170
+ }
171
+ static validateBranchMetrics(metrics, guardrails) {
172
+ const anomalies = [];
173
+ const branchGuardrails = guardrails.branch || {};
174
+ const metricsToValidate = [
175
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[0], value: metrics.totalPhases, guardrail: branchGuardrails.totalPhases },
176
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[1], value: metrics.completedPhases, guardrail: branchGuardrails.completedPhases },
177
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[2], value: metrics.failedPhases, guardrail: branchGuardrails.failedPhases },
178
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[3], value: metrics.phaseCompletionRate, guardrail: branchGuardrails.phaseCompletionRate },
179
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[4], value: metrics.totalRequests, guardrail: branchGuardrails.totalRequests },
180
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[5], value: metrics.successfulRequests, guardrail: branchGuardrails.successfulRequests },
181
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[6], value: metrics.failedRequests, guardrail: branchGuardrails.failedRequests },
182
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[7], value: metrics.requestSuccessRate, guardrail: branchGuardrails.requestSuccessRate || guardrails.common?.successRate },
183
+ { name: BRANCH_METRICS_TO_VALIDATE_KEYS[8], value: metrics.executionTime, guardrail: branchGuardrails.executionTime || guardrails.common?.executionTime }
184
+ ];
185
+ for (const { name, value, guardrail } of metricsToValidate) {
186
+ if (value !== undefined && guardrail) {
187
+ const anomaly = this.validateMetric(name, value, guardrail);
188
+ if (anomaly)
189
+ anomalies.push(anomaly);
190
+ }
191
+ }
192
+ return {
193
+ isValid: anomalies.length === 0,
194
+ anomalies,
195
+ validatedAt: new Date().toISOString()
196
+ };
197
+ }
198
+ static validateInfrastructureMetrics(infrastructureMetrics, guardrails) {
199
+ const anomalies = [];
200
+ const infraGuardrails = guardrails.infrastructure || {};
201
+ if (infrastructureMetrics.circuitBreaker && infraGuardrails.circuitBreaker) {
202
+ const cb = infrastructureMetrics.circuitBreaker;
203
+ const cbGuardrails = infraGuardrails.circuitBreaker;
204
+ const cbMetrics = [
205
+ { name: `circuitBreaker.${CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS[0]}`, value: cb.failureRate, guardrail: cbGuardrails.failureRate },
206
+ { name: `circuitBreaker.${CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS[1]}`, value: cb.totalRequests, guardrail: cbGuardrails.totalRequests },
207
+ { name: `circuitBreaker.${CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS[2]}`, value: cb.failedRequests, guardrail: cbGuardrails.failedRequests }
208
+ ];
209
+ for (const { name, value, guardrail } of cbMetrics) {
210
+ if (value !== undefined && guardrail) {
211
+ const anomaly = this.validateMetric(name, value, guardrail);
212
+ if (anomaly)
213
+ anomalies.push(anomaly);
214
+ }
215
+ }
216
+ }
217
+ if (infrastructureMetrics.cache && infraGuardrails.cache) {
218
+ const cache = infrastructureMetrics.cache;
219
+ const cacheGuardrails = infraGuardrails.cache;
220
+ const cacheMetrics = [
221
+ { name: `cache.${CACHE_METRICS_TO_VALIDATE_KEYS[0]}`, value: cache.hitRate, guardrail: cacheGuardrails.hitRate },
222
+ { name: `cache.${CACHE_METRICS_TO_VALIDATE_KEYS[1]}`, value: cache.missRate, guardrail: cacheGuardrails.missRate },
223
+ { name: `cache.${CACHE_METRICS_TO_VALIDATE_KEYS[2]}`, value: cache.utilizationPercentage, guardrail: cacheGuardrails.utilizationPercentage },
224
+ { name: `cache.${CACHE_METRICS_TO_VALIDATE_KEYS[3]}`, value: cache.evictionRate, guardrail: cacheGuardrails.evictionRate }
225
+ ];
226
+ for (const { name, value, guardrail } of cacheMetrics) {
227
+ if (value !== undefined && guardrail) {
228
+ const anomaly = this.validateMetric(name, value, guardrail);
229
+ if (anomaly)
230
+ anomalies.push(anomaly);
231
+ }
232
+ }
233
+ }
234
+ if (infrastructureMetrics.rateLimiter && infraGuardrails.rateLimiter) {
235
+ const rl = infrastructureMetrics.rateLimiter;
236
+ const rlGuardrails = infraGuardrails.rateLimiter;
237
+ const rlMetrics = [
238
+ { name: `rateLimiter.${RATE_LIMITER_METRICS_TO_VALIDATE_KEYS[0]}`, value: rl.throttleRate, guardrail: rlGuardrails.throttleRate },
239
+ { name: `rateLimiter.${RATE_LIMITER_METRICS_TO_VALIDATE_KEYS[1]}`, value: rl.queueLength, guardrail: rlGuardrails.queueLength },
240
+ { name: `rateLimiter.${RATE_LIMITER_METRICS_TO_VALIDATE_KEYS[2]}`, value: rl.utilizationPercentage, guardrail: rlGuardrails.utilizationPercentage },
241
+ { name: `rateLimiter.${RATE_LIMITER_METRICS_TO_VALIDATE_KEYS[3]}`, value: rl.averageQueueWaitTime, guardrail: rlGuardrails.averageQueueWaitTime }
242
+ ];
243
+ for (const { name, value, guardrail } of rlMetrics) {
244
+ if (value !== undefined && guardrail) {
245
+ const anomaly = this.validateMetric(name, value, guardrail);
246
+ if (anomaly)
247
+ anomalies.push(anomaly);
248
+ }
249
+ }
250
+ }
251
+ if (infrastructureMetrics.concurrencyLimiter && infraGuardrails.concurrencyLimiter) {
252
+ const cl = infrastructureMetrics.concurrencyLimiter;
253
+ const clGuardrails = infraGuardrails.concurrencyLimiter;
254
+ const clMetrics = [
255
+ { name: `concurrencyLimiter.${CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS[0]}`, value: cl.utilizationPercentage, guardrail: clGuardrails.utilizationPercentage },
256
+ { name: `concurrencyLimiter.${CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS[1]}`, value: cl.queueLength, guardrail: clGuardrails.queueLength },
257
+ { name: `concurrencyLimiter.${CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS[2]}`, value: cl.averageQueueWaitTime, guardrail: clGuardrails.averageQueueWaitTime }
258
+ ];
259
+ for (const { name, value, guardrail } of clMetrics) {
260
+ if (value !== undefined && guardrail) {
261
+ const anomaly = this.validateMetric(name, value, guardrail);
262
+ if (anomaly)
263
+ anomalies.push(anomaly);
264
+ }
265
+ }
266
+ }
267
+ return {
268
+ isValid: anomalies.length === 0,
269
+ anomalies,
270
+ validatedAt: new Date().toISOString()
271
+ };
272
+ }
273
+ }
274
+ //# sourceMappingURL=metrics-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics-validator.js","sourceRoot":"","sources":["../../src/utilities/metrics-validator.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.1.6",
3
+ "version": "2.2.0",
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",