@emmvish/stable-request 2.1.7 → 2.2.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 (59) hide show
  1. package/README.md +254 -4
  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 +73 -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 +10 -1
  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 +191 -170
  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 +117 -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 +18 -1
  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 +7 -0
  33. package/dist/utilities/execute-phase.js.map +1 -1
  34. package/dist/utilities/execute-sequentially.d.ts.map +1 -1
  35. package/dist/utilities/execute-sequentially.js +0 -1
  36. package/dist/utilities/execute-sequentially.js.map +1 -1
  37. package/dist/utilities/execute-with-timeout.d.ts +6 -0
  38. package/dist/utilities/execute-with-timeout.d.ts.map +1 -0
  39. package/dist/utilities/execute-with-timeout.js +28 -0
  40. package/dist/utilities/execute-with-timeout.js.map +1 -0
  41. package/dist/utilities/execute-workflow-graph.d.ts.map +1 -1
  42. package/dist/utilities/execute-workflow-graph.js +4 -0
  43. package/dist/utilities/execute-workflow-graph.js.map +1 -1
  44. package/dist/utilities/index.d.ts +2 -0
  45. package/dist/utilities/index.d.ts.map +1 -1
  46. package/dist/utilities/index.js +2 -0
  47. package/dist/utilities/index.js.map +1 -1
  48. package/dist/utilities/metrics-aggregator.d.ts +0 -36
  49. package/dist/utilities/metrics-aggregator.d.ts.map +1 -1
  50. package/dist/utilities/metrics-aggregator.js +1 -42
  51. package/dist/utilities/metrics-aggregator.js.map +1 -1
  52. package/dist/utilities/metrics-validator.d.ts +80 -0
  53. package/dist/utilities/metrics-validator.d.ts.map +1 -0
  54. package/dist/utilities/metrics-validator.js +274 -0
  55. package/dist/utilities/metrics-validator.js.map +1 -0
  56. package/dist/utilities/prepare-api-function-options.d.ts.map +1 -1
  57. package/dist/utilities/prepare-api-function-options.js +1 -0
  58. package/dist/utilities/prepare-api-function-options.js.map +1 -1
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -68,6 +68,7 @@ Every execution—whether a single request, a pure function, or an entire workfl
68
68
  - **Circuit breaker** to fail fast and protect downstream systems
69
69
  - **Caching** for idempotent read operations
70
70
  - **Rate & concurrency limits** to respect external constraints
71
+ - **Metrics guardrails** to validate execution against thresholds with automatic anomaly detection
71
72
 
72
73
  ### Type Safety
73
74
 
@@ -469,6 +470,196 @@ console.log(`Graph workflow success: ${result.success}`);
469
470
 
470
471
  ## Resilience Mechanisms
471
472
 
473
+ ### Execution Timeouts
474
+
475
+ Set maximum execution time for functions to prevent indefinite hangs. Timeouts are enforced at multiple levels with proper inheritance.
476
+
477
+ #### Function-Level Timeout
478
+
479
+ Set timeout directly on a function:
480
+
481
+ ```typescript
482
+ import { stableFunction } from '@emmvish/stable-request';
483
+
484
+ const result = await stableFunction({
485
+ fn: async () => {
486
+ // Long-running operation
487
+ await processLargeDataset();
488
+ return 'success';
489
+ },
490
+ args: [],
491
+ returnResult: true,
492
+ executionTimeout: 5000, // 5 seconds max
493
+ attempts: 3,
494
+ });
495
+
496
+ if (!result.success && result.error?.includes('timeout')) {
497
+ console.log('Function timed out');
498
+ }
499
+ ```
500
+
501
+ #### Gateway-Level Timeout
502
+
503
+ Apply timeout to all functions in a gateway:
504
+
505
+ ```typescript
506
+ import { stableApiGateway, RequestOrFunction } from '@emmvish/stable-request';
507
+
508
+ const results = await stableApiGateway(
509
+ [
510
+ {
511
+ type: RequestOrFunction.FUNCTION,
512
+ function: {
513
+ id: 'task1',
514
+ functionOptions: {
515
+ fn: async () => await task1(),
516
+ args: [],
517
+ // No timeout specified - inherits from gateway
518
+ },
519
+ },
520
+ },
521
+ {
522
+ type: RequestOrFunction.FUNCTION,
523
+ function: {
524
+ id: 'task2',
525
+ functionOptions: {
526
+ fn: async () => await task2(),
527
+ args: [],
528
+ executionTimeout: 10000, // Override gateway timeout
529
+ },
530
+ },
531
+ },
532
+ ],
533
+ {
534
+ commonExecutionTimeout: 3000, // Default 3s for all functions
535
+ }
536
+ );
537
+ ```
538
+
539
+ #### Request Group Timeout
540
+
541
+ Different timeouts for different groups:
542
+
543
+ ```typescript
544
+ const results = await stableApiGateway(
545
+ [
546
+ {
547
+ type: RequestOrFunction.FUNCTION,
548
+ function: {
549
+ id: 'critical',
550
+ groupId: 'criticalOps',
551
+ functionOptions: { fn: criticalOp, args: [] },
552
+ },
553
+ },
554
+ {
555
+ type: RequestOrFunction.FUNCTION,
556
+ function: {
557
+ id: 'background',
558
+ groupId: 'backgroundOps',
559
+ functionOptions: { fn: backgroundOp, args: [] },
560
+ },
561
+ },
562
+ ],
563
+ {
564
+ requestGroups: [
565
+ {
566
+ id: 'criticalOps',
567
+ commonConfig: {
568
+ commonExecutionTimeout: 1000, // Strict 1s timeout
569
+ },
570
+ },
571
+ {
572
+ id: 'backgroundOps',
573
+ commonConfig: {
574
+ commonExecutionTimeout: 30000, // Lenient 30s timeout
575
+ },
576
+ },
577
+ ],
578
+ }
579
+ );
580
+ ```
581
+
582
+ #### Workflow Phase Timeout
583
+
584
+ Apply timeout at phase level in workflows:
585
+
586
+ ```typescript
587
+ import { stableWorkflow } from '@emmvish/stable-request';
588
+
589
+ const result = await stableWorkflow(
590
+ [
591
+ {
592
+ id: 'initialization',
593
+ functions: [
594
+ {
595
+ id: 'init',
596
+ functionOptions: {
597
+ fn: initializeSystem,
598
+ args: [],
599
+ },
600
+ },
601
+ ],
602
+ commonConfig: {
603
+ commonExecutionTimeout: 5000, // 5s for initialization
604
+ },
605
+ },
606
+ {
607
+ id: 'processing',
608
+ functions: [
609
+ {
610
+ id: 'process',
611
+ functionOptions: {
612
+ fn: processData,
613
+ args: [],
614
+ },
615
+ },
616
+ ],
617
+ commonConfig: {
618
+ commonExecutionTimeout: 30000, // 30s for processing
619
+ },
620
+ },
621
+ ],
622
+ {
623
+ commonExecutionTimeout: 10000, // Default for phases without specific timeout
624
+ }
625
+ );
626
+ ```
627
+
628
+ #### Timeout Precedence
629
+
630
+ Timeouts follow the configuration cascade pattern:
631
+
632
+ **Function > Group > Phase/Branch > Gateway**
633
+
634
+ - Function-level `executionTimeout` always wins
635
+ - If not set, inherits from request group's `commonExecutionTimeout`
636
+ - If not set, inherits from phase/branch's `commonExecutionTimeout`
637
+ - If not set, inherits from gateway's `commonExecutionTimeout`
638
+ - If not set, no timeout is applied
639
+
640
+ #### Timeout Behavior
641
+
642
+ - Timeout applies to **entire function execution** including all retry attempts
643
+ - When timeout is exceeded, function returns failed result with timeout error
644
+ - Timeout does NOT stop execution mid-flight (no AbortController)
645
+ - Metrics are still collected even when timeout occurs
646
+ - Use with retries: timeout encompasses all attempts, not per-attempt
647
+
648
+ ```typescript
649
+ const result = await stableFunction({
650
+ fn: slowFunction,
651
+ args: [],
652
+ attempts: 5,
653
+ wait: 1000,
654
+ executionTimeout: 3000, // Total time for all 5 attempts
655
+ });
656
+
657
+ // If each attempt takes 800ms:
658
+ // - Attempt 1: 800ms
659
+ // - Attempt 2: starts at 1800ms (after 1s wait)
660
+ // - Attempt 3: would start at 3600ms → TIMEOUT at 3000ms
661
+ ```
662
+
472
663
  ### Retry Strategies
473
664
 
474
665
  When a request or function fails and is retryable, retry with configurable backoff.
@@ -1584,6 +1775,11 @@ console.log(result.metrics); // {
1584
1775
  // cache: { /* hits, misses, size */ },
1585
1776
  // rateLimiter: { /* limit, current rate */ },
1586
1777
  // concurrencyLimiter: { /* limit, in-flight */ }
1778
+ // },
1779
+ // validation: {
1780
+ // isValid: true,
1781
+ // anomalies: [],
1782
+ // validatedAt: '2026-01-20T...'
1587
1783
  // }
1588
1784
  // }
1589
1785
  ```
@@ -1624,6 +1820,11 @@ console.log(result.metrics); // {
1624
1820
  // cache: { /* hit rate, size, utilization */ },
1625
1821
  // rateLimiter: { /* throttle rate, queue length */ },
1626
1822
  // concurrencyLimiter: { /* utilization, queue */ }
1823
+ // },
1824
+ // validation: {
1825
+ // isValid: true,
1826
+ // anomalies: [],
1827
+ // validatedAt: '2026-01-20T...'
1627
1828
  // }
1628
1829
  // }
1629
1830
  ```
@@ -1653,9 +1854,14 @@ console.log(result); // {
1653
1854
  // failedRequests: 0,
1654
1855
  // workflowExecutionTime: 1200,
1655
1856
  // phases: [
1656
- // { phaseId: 'p1', success: true, responses: [...], ... },
1657
- // { phaseId: 'p2', success: true, responses: [...], ... }
1658
- // ]
1857
+ // { phaseId: 'p1', success: true, responses: [...], validation: {...}, ... },
1858
+ // { phaseId: 'p2', success: true, responses: [...], validation: {...}, ... }
1859
+ // ],
1860
+ // validation: {
1861
+ // isValid: true,
1862
+ // anomalies: [],
1863
+ // validatedAt: '2026-01-20T...'
1864
+ // }
1659
1865
  // }
1660
1866
  ```
1661
1867
 
@@ -1990,7 +2196,51 @@ await stableApiGateway<ServiceRequest, ServiceResponse>(requests, {
1990
2196
  });
1991
2197
  ```
1992
2198
 
1993
- ### 5. Apply Rate & Concurrency Limits
2199
+ ### 6. Define Metrics Guardrails for SLA Monitoring
2200
+
2201
+ Enforce performance and reliability SLAs with automatic validation.
2202
+
2203
+ ```typescript
2204
+ import { stableWorkflow, MetricsGuardrails } from '@emmvish/stable-request';
2205
+ import type { STABLE_WORKFLOW_PHASE } from '@emmvish/stable-request';
2206
+
2207
+ interface ApiRequest {}
2208
+ interface ApiResponse { data: any; }
2209
+
2210
+ const phases: STABLE_WORKFLOW_PHASE<ApiRequest, ApiResponse>[] = [
2211
+ {
2212
+ id: 'critical-phase',
2213
+ requests: [{ id: 'req-1', requestOptions: { reqData: { path: '/critical' }, resReq: true } }],
2214
+ metricsGuardrails: {
2215
+ phase: {
2216
+ executionTime: { max: 3000 }, // SLA: <3s
2217
+ requestSuccessRate: { min: 99.5 } // SLA: 99.5% success
2218
+ }
2219
+ }
2220
+ }
2221
+ ];
2222
+
2223
+ const result = await stableWorkflow(phases, {
2224
+ workflowId: 'sla-monitored',
2225
+ metricsGuardrails: {
2226
+ workflow: {
2227
+ executionTime: { max: 10000 }, // Workflow SLA: <10s
2228
+ requestSuccessRate: { min: 99 } // Workflow SLA: 99% success
2229
+ }
2230
+ }
2231
+ });
2232
+
2233
+ // Automatic SLA violation detection
2234
+ if (result.validation && !result.validation.isValid) {
2235
+ const criticalAnomalies = result.validation.anomalies.filter(a => a.severity === 'CRITICAL');
2236
+ if (criticalAnomalies.length > 0) {
2237
+ // Trigger alerts for SLA violations
2238
+ console.error('SLA violated:', criticalAnomalies);
2239
+ }
2240
+ }
2241
+ ```
2242
+
2243
+ ### 6. Apply Rate & Concurrency Limits
1994
2244
 
1995
2245
  Respect external quotas and capacity.
1996
2246
 
@@ -1,4 +1,13 @@
1
1
  import { API_GATEWAY_OPTIONS, ApiRequestOptionsMapping } from "../types/index.js";
2
2
  export declare const extractCommonOptionsKeys: (keyof API_GATEWAY_OPTIONS)[];
3
3
  export declare const PrepareApiRequestOptionsMapping: ApiRequestOptionsMapping[];
4
+ export declare const REQUEST_METRICS_TO_VALIDATE_KEYS: readonly ["totalAttempts", "successfulAttempts", "failedAttempts", "totalExecutionTime", "averageAttemptTime"];
5
+ export declare const API_GATEWAY_METRICS_TO_VALIDATE_KEYS: readonly ["totalRequests", "successfulRequests", "failedRequests", "successRate", "failureRate", "executionTime", "throughput", "averageRequestDuration"];
6
+ export declare const WORKFLOW_METRICS_TO_VALIDATE_KEYS: readonly ["totalPhases", "completedPhases", "failedPhases", "totalRequests", "successfulRequests", "failedRequests", "requestSuccessRate", "requestFailureRate", "executionTime", "averagePhaseExecutionTime", "throughput", "phaseCompletionRate"];
7
+ export declare const CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS: readonly ["failureRate", "totalRequests", "failedRequests"];
8
+ export declare const CACHE_METRICS_TO_VALIDATE_KEYS: readonly ["hitRate", "missRate", "utilizationPercentage", "evictionRate"];
9
+ export declare const RATE_LIMITER_METRICS_TO_VALIDATE_KEYS: readonly ["throttleRate", "queueLength", "utilizationPercentage", "averageQueueWaitTime"];
10
+ export declare const CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS: readonly ["utilizationPercentage", "queueLength", "averageQueueWaitTime"];
11
+ export declare const PHASE_METRICS_TO_VALIDATE_KEYS: readonly ["totalRequests", "successfulRequests", "failedRequests", "requestSuccessRate", "requestFailureRate", "executionTime"];
12
+ export declare const BRANCH_METRICS_TO_VALIDATE_KEYS: readonly ["totalPhases", "completedPhases", "failedPhases", "phaseCompletionRate", "totalRequests", "successfulRequests", "failedRequests", "requestSuccessRate", "executionTime"];
4
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,wBAAwB,EAAE,CAAC,MAAM,mBAAmB,CAAC,EAqBjE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,wBAAwB,EAqBrE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAElF,eAAO,MAAM,wBAAwB,EAAE,CAAC,MAAM,mBAAmB,CAAC,EAsBjE,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,wBAAwB,EAqBrE,CAAC;AAEF,eAAO,MAAM,gCAAgC,gHAMnC,CAAC;AAEX,eAAO,MAAM,oCAAoC,2JASvC,CAAC;AAEX,eAAO,MAAM,iCAAiC,qPAapC,CAAC;AAEX,eAAO,MAAM,wCAAwC,6DAI3C,CAAC;AAEX,eAAO,MAAM,8BAA8B,2EAKjC,CAAC;AAEX,eAAO,MAAM,qCAAqC,2FAKxC,CAAC;AAEX,eAAO,MAAM,4CAA4C,2EAI/C,CAAC;AAEX,eAAO,MAAM,8BAA8B,iIAOjC,CAAC;AAEX,eAAO,MAAM,+BAA+B,oLAUlC,CAAC"}
@@ -19,6 +19,7 @@ export const extractCommonOptionsKeys = [
19
19
  'commonTrialMode',
20
20
  'commonCache',
21
21
  'commonStatePersistence',
22
+ 'commonExecutionTimeout',
22
23
  ];
23
24
  export const PrepareApiRequestOptionsMapping = [
24
25
  { localKey: 'preExecution', commonKey: 'commonPreExecution', groupCommonKey: 'commonPreExecution', targetKey: 'preExecution' },
@@ -42,4 +43,76 @@ export const PrepareApiRequestOptionsMapping = [
42
43
  { localKey: 'commonBuffer', commonKey: 'sharedBuffer', groupCommonKey: 'sharedBuffer', targetKey: 'commonBuffer' },
43
44
  { localKey: 'statePersistence', commonKey: 'commonStatePersistence', groupCommonKey: 'commonStatePersistence', targetKey: 'statePersistence' },
44
45
  ];
46
+ export const REQUEST_METRICS_TO_VALIDATE_KEYS = [
47
+ 'totalAttempts',
48
+ 'successfulAttempts',
49
+ 'failedAttempts',
50
+ 'totalExecutionTime',
51
+ 'averageAttemptTime'
52
+ ];
53
+ export const API_GATEWAY_METRICS_TO_VALIDATE_KEYS = [
54
+ 'totalRequests',
55
+ 'successfulRequests',
56
+ 'failedRequests',
57
+ 'successRate',
58
+ 'failureRate',
59
+ 'executionTime',
60
+ 'throughput',
61
+ 'averageRequestDuration'
62
+ ];
63
+ export const WORKFLOW_METRICS_TO_VALIDATE_KEYS = [
64
+ 'totalPhases',
65
+ 'completedPhases',
66
+ 'failedPhases',
67
+ 'totalRequests',
68
+ 'successfulRequests',
69
+ 'failedRequests',
70
+ 'requestSuccessRate',
71
+ 'requestFailureRate',
72
+ 'executionTime',
73
+ 'averagePhaseExecutionTime',
74
+ 'throughput',
75
+ 'phaseCompletionRate'
76
+ ];
77
+ export const CIRCUIT_BREAKER_METRICS_TO_VALIDATE_KEYS = [
78
+ 'failureRate',
79
+ 'totalRequests',
80
+ 'failedRequests'
81
+ ];
82
+ export const CACHE_METRICS_TO_VALIDATE_KEYS = [
83
+ 'hitRate',
84
+ 'missRate',
85
+ 'utilizationPercentage',
86
+ 'evictionRate'
87
+ ];
88
+ export const RATE_LIMITER_METRICS_TO_VALIDATE_KEYS = [
89
+ 'throttleRate',
90
+ 'queueLength',
91
+ 'utilizationPercentage',
92
+ 'averageQueueWaitTime'
93
+ ];
94
+ export const CONCURRENCY_LIMITER_METRICS_TO_VALIDATE_KEYS = [
95
+ 'utilizationPercentage',
96
+ 'queueLength',
97
+ 'averageQueueWaitTime'
98
+ ];
99
+ export const PHASE_METRICS_TO_VALIDATE_KEYS = [
100
+ 'totalRequests',
101
+ 'successfulRequests',
102
+ 'failedRequests',
103
+ 'requestSuccessRate',
104
+ 'requestFailureRate',
105
+ 'executionTime'
106
+ ];
107
+ export const BRANCH_METRICS_TO_VALIDATE_KEYS = [
108
+ 'totalPhases',
109
+ 'completedPhases',
110
+ 'failedPhases',
111
+ 'phaseCompletionRate',
112
+ 'totalRequests',
113
+ 'successfulRequests',
114
+ 'failedRequests',
115
+ 'requestSuccessRate',
116
+ 'executionTime'
117
+ ];
45
118
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stable-api-gateway.d.ts","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAEhB,kBAAkB,EAOrB,MAAM,mBAAmB,CAAC;AAc3B,wBAAsB,gBAAgB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAChF,QAAQ,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EACtI,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAChE,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEjD,wBAAsB,gBAAgB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAAE,gBAAgB,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,kBAAkB,GAAG,GAAG,EAClJ,QAAQ,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,EAChK,SAAS,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,EACvE,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,GACtG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"stable-api-gateway.d.ts","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAEhB,kBAAkB,EAOrB,MAAM,mBAAmB,CAAC;AAe3B,wBAAsB,gBAAgB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAChF,QAAQ,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EACtI,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAChE,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAEjD,wBAAsB,gBAAgB,CAAC,eAAe,GAAG,GAAG,EAAE,gBAAgB,GAAG,GAAG,EAAE,gBAAgB,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,kBAAkB,GAAG,GAAG,EAClJ,QAAQ,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,GAAG,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,EAChK,SAAS,EAAE,oBAAoB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAE,EACvE,OAAO,EAAE,mBAAmB,CAAC,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,GACtG,OAAO,CAAC,kBAAkB,CAAC,gBAAgB,GAAG,kBAAkB,CAAC,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { executeConcurrently, executeSequentially, extractCommonRequestConfigOptions as extractCommonOptions, MetricsAggregator, CircuitBreaker, getGlobalCircuitBreaker, getGlobalCacheManager, getGlobalRateLimiter, getGlobalConcurrencyLimiter } from '../utilities/index.js';
1
+ import { executeConcurrently, executeSequentially, extractCommonRequestConfigOptions as extractCommonOptions, MetricsAggregator, MetricsValidator, CircuitBreaker, getGlobalCircuitBreaker, getGlobalCacheManager, getGlobalRateLimiter, getGlobalConcurrencyLimiter } from '../utilities/index.js';
2
2
  import { RequestOrFunction } from '../enums/index.js';
3
3
  export async function stableApiGateway(requests = [], functionsOrOptions, options) {
4
4
  const startTime = Date.now();
@@ -106,6 +106,15 @@ export async function stableApiGateway(requests = [], functionsOrOptions, option
106
106
  if (Object.keys(infrastructureMetrics).length > 0) {
107
107
  result.metrics.infrastructureMetrics = infrastructureMetrics;
108
108
  }
109
+ if (finalOptions.metricsGuardrails) {
110
+ const validation = MetricsValidator.validateApiGatewayMetrics(result.metrics, finalOptions.metricsGuardrails);
111
+ if (result.metrics.infrastructureMetrics) {
112
+ const infraValidation = MetricsValidator.validateInfrastructureMetrics(result.metrics.infrastructureMetrics, finalOptions.metricsGuardrails);
113
+ validation.anomalies.push(...infraValidation.anomalies);
114
+ validation.isValid = validation.isValid && infraValidation.isValid;
115
+ }
116
+ result.metrics.validation = validation;
117
+ }
109
118
  return result;
110
119
  }
111
120
  //# sourceMappingURL=stable-api-gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stable-api-gateway.js","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stable-api-gateway.js","sourceRoot":"","sources":["../../src/core/stable-api-gateway.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stable-function.d.ts","sourceRoot":"","sources":["../../src/core/stable-function.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,eAAe,EACf,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAkB3B,wBAAsB,cAAc,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EAC7E,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAoa1C"}
1
+ {"version":3,"file":"stable-function.d.ts","sourceRoot":"","sources":["../../src/core/stable-function.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,eAAe,EACf,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAqB3B,wBAAsB,cAAc,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,EAC7E,OAAO,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GACvC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAkc1C"}