@cdklabs/multi-az-observability 0.0.1-alpha.6 → 0.0.1-alpha.60

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 (188) hide show
  1. package/.jsii +2826 -1008
  2. package/.jsii.tabl.json +1 -0
  3. package/API.md +5406 -1585
  4. package/README.md +176 -152
  5. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.d.ts +18 -14
  6. package/lib/alarmsandrules/AvailabilityAndLatencyAlarmsAndRules.js +98 -60
  7. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.d.ts +3 -3
  8. package/lib/alarmsandrules/BaseOperationRegionalAlarmsAndRules.js +2 -2
  9. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.d.ts +6 -15
  10. package/lib/alarmsandrules/BaseOperationZonalAlarmsAndRules.js +2 -10
  11. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.d.ts +11 -3
  12. package/lib/alarmsandrules/CanaryOperationZonalAlarmsAndRules.js +29 -13
  13. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.d.ts +0 -8
  14. package/lib/alarmsandrules/IBaseOperationZonalAlarmsAndRules.js +1 -1
  15. package/lib/alarmsandrules/IOperationAlarmsAndRules.d.ts +26 -23
  16. package/lib/alarmsandrules/IOperationAlarmsAndRules.js +1 -1
  17. package/lib/alarmsandrules/IServerSideOperationRegionalAlarmsAndRules.js +1 -1
  18. package/lib/alarmsandrules/IServiceAlarmsAndRules.d.ts +19 -15
  19. package/lib/alarmsandrules/IServiceAlarmsAndRules.js +1 -1
  20. package/lib/alarmsandrules/OperationAlarmsAndRules.d.ts +21 -18
  21. package/lib/alarmsandrules/OperationAlarmsAndRules.js +60 -72
  22. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.d.ts +5 -5
  23. package/lib/alarmsandrules/ServerSideOperationRegionalAlarmsAndRules.js +2 -3
  24. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.d.ts +21 -13
  25. package/lib/alarmsandrules/ServerSideOperationZonalAlarmsAndRules.js +48 -29
  26. package/lib/alarmsandrules/ServiceAlarmsAndRules.d.ts +19 -15
  27. package/lib/alarmsandrules/ServiceAlarmsAndRules.js +34 -136
  28. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.d.ts +4 -3
  29. package/lib/alarmsandrules/props/BaseOperationRegionalAlarmsAndRulesProps.js +1 -1
  30. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.d.ts +6 -44
  31. package/lib/alarmsandrules/props/BaseOperationZonalAlarmsAndRulesProps.js +1 -1
  32. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.d.ts +39 -7
  33. package/lib/alarmsandrules/props/OperationAlarmsAndRulesProps.js +1 -1
  34. package/lib/azmapper/AvailabilityZoneMapper.js +8 -9
  35. package/lib/basic_observability/BasicServiceDashboard.d.ts +0 -3
  36. package/lib/basic_observability/BasicServiceDashboard.js +24 -112
  37. package/lib/basic_observability/BasicServiceMultiAZObservability.d.ts +8 -9
  38. package/lib/basic_observability/BasicServiceMultiAZObservability.js +97 -349
  39. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.d.ts +66 -0
  40. package/lib/basic_observability/props/ApplicationLoadBalancerDetectionProps.js +3 -0
  41. package/lib/basic_observability/props/BasicServiceDashboardProps.d.ts +27 -13
  42. package/lib/basic_observability/props/BasicServiceDashboardProps.js +1 -1
  43. package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.d.ts +10 -44
  44. package/lib/basic_observability/props/BasicServiceMultiAZObservabilityProps.js +1 -1
  45. package/lib/basic_observability/props/NatGatewayDetectionProps.d.ts +31 -0
  46. package/lib/basic_observability/props/NatGatewayDetectionProps.js +3 -0
  47. package/lib/canaries/CanaryFunction.js +14 -13
  48. package/lib/canaries/CanaryTest.js +4 -4
  49. package/lib/canaries/src/canary.zip +0 -0
  50. package/lib/dashboards/ContributorInsightsWidget.d.ts +1 -1
  51. package/lib/dashboards/ContributorInsightsWidget.js +13 -17
  52. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.d.ts +2 -6
  53. package/lib/dashboards/OperationAvailabilityAndLatencyDashboard.js +436 -510
  54. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.d.ts +2 -10
  55. package/lib/dashboards/ServiceAvailabilityAndLatencyDashboard.js +420 -416
  56. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.d.ts +3 -66
  57. package/lib/dashboards/props/OperationAvailabilityAndLatencyDashboardProps.js +1 -1
  58. package/lib/dashboards/props/OperationAvailabilityWidgetProps.d.ts +7 -2
  59. package/lib/dashboards/props/OperationAvailabilityWidgetProps.js +1 -1
  60. package/lib/dashboards/props/OperationLatencyWidgetProps.d.ts +7 -2
  61. package/lib/dashboards/props/OperationLatencyWidgetProps.js +1 -1
  62. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.d.ts +8 -8
  63. package/lib/dashboards/props/ServiceAvailabilityAndLatencyDashboardProps.js +1 -1
  64. package/lib/index.d.ts +56 -25
  65. package/lib/index.js +37 -19
  66. package/lib/metrics/ApplicationLoadBalancerMetrics.d.ts +79 -2
  67. package/lib/metrics/ApplicationLoadBalancerMetrics.js +883 -26
  68. package/lib/metrics/AvailabilityAndLatencyMetrics.d.ts +23 -0
  69. package/lib/metrics/AvailabilityAndLatencyMetrics.js +125 -31
  70. package/lib/metrics/NatGatewayMetrics.d.ts +113 -0
  71. package/lib/metrics/NatGatewayMetrics.js +357 -0
  72. package/lib/metrics/RegionalAvailabilityMetrics.js +9 -10
  73. package/lib/metrics/RegionalLatencyMetrics.d.ts +1 -1
  74. package/lib/metrics/RegionalLatencyMetrics.js +27 -20
  75. package/lib/metrics/ZonalAvailabilityMetrics.d.ts +2 -8
  76. package/lib/metrics/ZonalAvailabilityMetrics.js +13 -28
  77. package/lib/metrics/ZonalLatencyMetrics.d.ts +2 -1
  78. package/lib/metrics/ZonalLatencyMetrics.js +33 -23
  79. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.d.ts +4 -0
  80. package/lib/metrics/props/AvailabilityAndLatencyMetricProps.js +1 -1
  81. package/lib/metrics/props/LatencyMetricProps.d.ts +6 -0
  82. package/lib/metrics/props/LatencyMetricProps.js +1 -1
  83. package/lib/metrics/props/ZonalAvailabilityMetricProps.d.ts +4 -0
  84. package/lib/metrics/props/ZonalAvailabilityMetricProps.js +1 -1
  85. package/lib/metrics/props/ZonalLatencyMetricProps.d.ts +4 -0
  86. package/lib/metrics/props/ZonalLatencyMetricProps.js +1 -1
  87. package/lib/monitoring/src/monitoring-layer.zip +0 -0
  88. package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.d.ts +10 -0
  89. package/lib/outlier-detection/ApplicationLoadBalancerAvailabilityOutlierAlgorithm.js +15 -0
  90. package/lib/{basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.d.ts → outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.d.ts} +1 -1
  91. package/lib/outlier-detection/ApplicationLoadBalancerLatencyOutlierAlgorithm.js +23 -0
  92. package/lib/outlier-detection/LatencyOutlierMetricAggregation.d.ts +22 -0
  93. package/lib/outlier-detection/LatencyOutlierMetricAggregation.js +27 -0
  94. package/lib/outlier-detection/OutlierDetectionFunction.js +7 -6
  95. package/lib/outlier-detection/PacketLossOutlierAlgorithm.d.ts +10 -0
  96. package/lib/outlier-detection/PacketLossOutlierAlgorithm.js +15 -0
  97. package/lib/outlier-detection/src/outlier-detection.zip +0 -0
  98. package/lib/outlier-detection/src/scipy-layer.zip +0 -0
  99. package/lib/services/CanaryMetrics.d.ts +4 -3
  100. package/lib/services/CanaryMetrics.js +3 -4
  101. package/lib/services/CanaryTestAvailabilityMetricsOverride.d.ts +21 -0
  102. package/lib/services/CanaryTestAvailabilityMetricsOverride.js +23 -0
  103. package/lib/services/CanaryTestLatencyMetricsOverride.d.ts +15 -0
  104. package/lib/services/CanaryTestLatencyMetricsOverride.js +20 -0
  105. package/lib/services/CanaryTestMetricsOverride.d.ts +1 -13
  106. package/lib/services/CanaryTestMetricsOverride.js +2 -4
  107. package/lib/services/ContributorInsightRuleDetails.js +1 -1
  108. package/lib/services/ICanaryMetrics.d.ts +4 -3
  109. package/lib/services/ICanaryMetrics.js +1 -1
  110. package/lib/services/ICanaryTestAvailabilityMetricsOverride.d.ts +23 -0
  111. package/lib/services/ICanaryTestAvailabilityMetricsOverride.js +3 -0
  112. package/lib/services/ICanaryTestLatencyMetricsOverride.d.ts +13 -0
  113. package/lib/services/ICanaryTestLatencyMetricsOverride.js +3 -0
  114. package/lib/services/ICanaryTestMetricsOverride.d.ts +0 -12
  115. package/lib/services/ICanaryTestMetricsOverride.js +1 -1
  116. package/lib/services/IInstrumentedServiceMultiAZObservability.d.ts +13 -3
  117. package/lib/services/IInstrumentedServiceMultiAZObservability.js +1 -1
  118. package/lib/services/IOperation.d.ts +8 -6
  119. package/lib/services/IOperation.js +1 -1
  120. package/lib/services/IOperationAvailabilityMetricDetails.d.ts +18 -0
  121. package/lib/services/IOperationAvailabilityMetricDetails.js +3 -0
  122. package/lib/services/IOperationLatencyMetricDetails.d.ts +12 -0
  123. package/lib/services/IOperationLatencyMetricDetails.js +3 -0
  124. package/lib/services/IOperationMetricDetails.d.ts +0 -12
  125. package/lib/services/IOperationMetricDetails.js +1 -1
  126. package/lib/services/IService.d.ts +18 -4
  127. package/lib/services/IService.js +1 -1
  128. package/lib/services/IServiceAvailabilityMetricDetails.d.ts +18 -0
  129. package/lib/services/IServiceAvailabilityMetricDetails.js +3 -0
  130. package/lib/services/IServiceLatencyMetricDetails.d.ts +12 -0
  131. package/lib/services/IServiceLatencyMetricDetails.js +3 -0
  132. package/lib/services/IServiceMetricDetails.d.ts +0 -12
  133. package/lib/services/IServiceMetricDetails.js +1 -1
  134. package/lib/services/InstrumentedServiceMultiAZObservability.d.ts +15 -3
  135. package/lib/services/InstrumentedServiceMultiAZObservability.js +252 -228
  136. package/lib/services/Operation.d.ts +8 -6
  137. package/lib/services/Operation.js +4 -3
  138. package/lib/services/OperationAvailabilityMetricDetails.d.ts +22 -0
  139. package/lib/services/OperationAvailabilityMetricDetails.js +24 -0
  140. package/lib/services/OperationLatencyMetricDetails.d.ts +16 -0
  141. package/lib/services/OperationLatencyMetricDetails.js +21 -0
  142. package/lib/services/OperationMetricDetails.d.ts +1 -13
  143. package/lib/services/OperationMetricDetails.js +2 -8
  144. package/lib/services/Service.d.ts +18 -4
  145. package/lib/services/Service.js +4 -2
  146. package/lib/services/ServiceAvailabilityMetricDetails.d.ts +21 -0
  147. package/lib/services/ServiceAvailabilityMetricDetails.js +20 -0
  148. package/lib/services/ServiceLatencyMetricDetails.d.ts +15 -0
  149. package/lib/services/ServiceLatencyMetricDetails.js +19 -0
  150. package/lib/services/ServiceMetricDetails.d.ts +1 -13
  151. package/lib/services/ServiceMetricDetails.js +2 -4
  152. package/lib/services/props/CanaryMetricProps.d.ts +4 -3
  153. package/lib/services/props/CanaryMetricProps.js +1 -1
  154. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.d.ts +22 -0
  155. package/lib/services/props/CanaryTestAvailabilityMetricsOverrideProps.js +3 -0
  156. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.d.ts +14 -0
  157. package/lib/services/props/CanaryTestLatencyMetricsOverrideProps.js +3 -0
  158. package/lib/services/props/CanaryTestMetricsOverrideProps.d.ts +0 -16
  159. package/lib/services/props/CanaryTestMetricsOverrideProps.js +1 -1
  160. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.d.ts +50 -5
  161. package/lib/services/props/InstrumentedServiceMultiAZObservabilityProps.js +1 -1
  162. package/lib/services/props/MetricDimensions.js +1 -1
  163. package/lib/services/props/OperationAvailabilityMetricDetailsProps.d.ts +22 -0
  164. package/lib/services/props/OperationAvailabilityMetricDetailsProps.js +3 -0
  165. package/lib/services/props/OperationLatencyMetricDetailsProps.d.ts +14 -0
  166. package/lib/services/props/OperationLatencyMetricDetailsProps.js +3 -0
  167. package/lib/services/props/OperationMetricDetailsProps.d.ts +0 -16
  168. package/lib/services/props/OperationMetricDetailsProps.js +1 -1
  169. package/lib/services/props/OperationProps.d.ts +4 -3
  170. package/lib/services/props/OperationProps.js +1 -1
  171. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.d.ts +18 -0
  172. package/lib/services/props/ServiceAvailabilityMetricDetailsProps.js +3 -0
  173. package/lib/services/props/ServiceLatencyMetricDetailsProps.d.ts +12 -0
  174. package/lib/services/props/ServiceLatencyMetricDetailsProps.js +3 -0
  175. package/lib/services/props/ServiceMetricDetailsProps.d.ts +0 -12
  176. package/lib/services/props/ServiceMetricDetailsProps.js +1 -1
  177. package/lib/services/props/ServiceProps.d.ts +18 -4
  178. package/lib/services/props/ServiceProps.js +1 -1
  179. package/lib/utilities/MetricsHelper.d.ts +17 -9
  180. package/lib/utilities/MetricsHelper.js +34 -10
  181. package/lib/utilities/MinimumUnhealthyTargets.d.ts +25 -0
  182. package/lib/utilities/MinimumUnhealthyTargets.js +3 -0
  183. package/package.json +14 -14
  184. package/rosetta/default.ts-fixture +72 -0
  185. package/rosetta/service.ts-fixture +144 -0
  186. package/lib/basic_observability/props/ApplicationLoadBalancerLatencyOutlierCalculation.js +0 -23
  187. package/lib/services/IBasicServiceMultiAZObservability.d.ts +0 -45
  188. package/lib/services/IBasicServiceMultiAZObservability.js +0 -3
@@ -15,57 +15,42 @@ class ZonalAvailabilityMetrics {
15
15
  * @returns The metric at index 0 is the metric math expression for the whole service. The following metrics
16
16
  * are the metrics for each operation included in the request availability metric props.
17
17
  */
18
- static createZonalServiceAvailabilityMetrics(props) {
18
+ static createZonalServiceAvailabilityMetrics(metrics, period, label) {
19
19
  let usingMetrics = {};
20
20
  let operationMetrics = [];
21
- let counter = 0;
22
- props.availabilityMetricProps.forEach((prop) => {
23
- let keyPrefix = (prop.keyPrefix === undefined || prop.keyPrefix == ''
24
- ? ''
25
- : prop.keyPrefix.toLowerCase() + '_') +
26
- prop.metricDetails.operationName.toLowerCase() +
27
- '_' +
28
- prop.metricType.toString().toLowerCase();
29
- let zonalOperationAvailabilityMetric = this.createZonalAvailabilityMetric(prop);
21
+ metrics.forEach((prop, index) => {
22
+ let zonalOperationAvailabilityMetric = AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createZonalAvailabilityMetric(prop, prop.metricDetails.metricDimensions.zonalDimensions(prop.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
30
23
  operationMetrics.push(zonalOperationAvailabilityMetric);
31
- usingMetrics[`${keyPrefix}${counter++}`] =
24
+ usingMetrics[`${prop.availabilityZone.substring(prop.availabilityZone.length - 1)}_${prop.metricDetails.operationName}_${prop.metricType.toString().toLowerCase()}_${index}`] =
32
25
  zonalOperationAvailabilityMetric;
33
26
  });
34
27
  let expression = '';
35
- switch (props.availabilityMetricProps[0].metricType) {
28
+ switch (metrics[0].metricType) {
36
29
  case AvailabilityMetricType_1.AvailabilityMetricType.SUCCESS_RATE:
37
- expression = `(${Object.keys(usingMetrics).join('+')}) / ${props.availabilityMetricProps.length}`;
30
+ expression = `(${Object.keys(usingMetrics).join('+')}) / ${metrics.length} + TIME_SERIES(0)`;
38
31
  break;
39
32
  case AvailabilityMetricType_1.AvailabilityMetricType.REQUEST_COUNT:
40
- expression = `${Object.keys(usingMetrics).join('+')}`;
33
+ expression = `${Object.keys(usingMetrics).join('+')} + TIME_SERIES(0)`;
41
34
  break;
42
35
  case AvailabilityMetricType_1.AvailabilityMetricType.FAULT_COUNT:
43
- expression = `${Object.keys(usingMetrics).join('+')}`;
36
+ expression = `${Object.keys(usingMetrics).join('+')} + TIME_SERIES(0)`;
44
37
  break;
45
38
  case AvailabilityMetricType_1.AvailabilityMetricType.FAULT_RATE:
46
- expression = `(${Object.keys(usingMetrics).join('+')}) / ${props.availabilityMetricProps.length}`;
39
+ expression = `(${Object.keys(usingMetrics).join('+')}) / ${metrics.length} + TIME_SERIES(0)`;
47
40
  break;
48
41
  case AvailabilityMetricType_1.AvailabilityMetricType.SUCCESS_COUNT:
49
- expression = `${Object.keys(usingMetrics).join('+')}`;
42
+ expression = `${Object.keys(usingMetrics).join('+')} + TIME_SERIES(0)`;
50
43
  break;
51
44
  }
52
45
  let math = new aws_cloudwatch_1.MathExpression({
53
46
  usingMetrics: usingMetrics,
54
- period: props.period,
55
- label: props.label,
47
+ period: period,
48
+ label: label,
56
49
  expression: expression,
57
50
  });
58
51
  operationMetrics.splice(0, 0, math);
59
52
  return operationMetrics;
60
53
  }
61
- /**
62
- * Creates a zonal availability metric
63
- * @param props
64
- * @returns
65
- */
66
- static createZonalAvailabilityMetric(props) {
67
- return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createAvailabilityMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
68
- }
69
54
  }
70
55
  exports.ZonalAvailabilityMetrics = ZonalAvailabilityMetrics;
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQWtDO0FBQ2xDLCtEQUFxRTtBQUNyRSxtRkFBZ0Y7QUFHaEYsZ0ZBQTZFO0FBRTdFLE1BQWEsd0JBQXdCO0lBQ25DOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDMUMsS0FBcUM7UUFFckMsSUFBSSxZQUFZLEdBQStCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLGdCQUFnQixHQUFjLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sR0FBVyxDQUFDLENBQUM7UUFFeEIsS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzdDLElBQUksU0FBUyxHQUNYLENBQUMsSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFO2dCQUNuRCxDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsR0FBRztnQkFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBRTNDLElBQUksZ0NBQWdDLEdBQ2xDLElBQUksQ0FBQyw2QkFBNkIsQ0FDaEMsSUFBb0MsQ0FDckMsQ0FBQztZQUVKLGdCQUFnQixDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQ3hELFlBQVksQ0FBQyxHQUFHLFNBQVMsR0FBRyxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUN0QyxnQ0FBZ0MsQ0FBQztRQUNyQyxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxHQUFXLEVBQUUsQ0FBQztRQUU1QixRQUFRLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwRCxLQUFLLCtDQUFzQixDQUFDLFlBQVk7Z0JBQ3RDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEcsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsYUFBYTtnQkFDdkMsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsV0FBVztnQkFDckMsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsVUFBVTtnQkFDcEMsVUFBVSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsRyxNQUFNO1lBQ1IsS0FBSywrQ0FBc0IsQ0FBQyxhQUFhO2dCQUN2QyxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUN0RCxNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksSUFBSSxHQUFZLElBQUksK0JBQWMsQ0FBQztZQUNyQyxZQUFZLEVBQUUsWUFBWTtZQUMxQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1lBQ2xCLFVBQVUsRUFBRSxVQUFVO1NBQ3ZCLENBQUMsQ0FBQztRQUVILGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBDLE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsNkJBQTZCLENBQ2xDLEtBQW1DO1FBRW5DLE9BQU8sNkRBQTZCLENBQUMsd0JBQXdCLENBQzNELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixpQkFBRyxDQUFDLE1BQU0sQ0FDWCxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFqRkQsNERBaUZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgQXdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgU2VydmljZUF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMnO1xuaW1wb3J0IHsgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB9IGZyb20gJy4vcHJvcHMvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0F2YWlsYWJpbGl0eU1ldHJpY1R5cGUnO1xuXG5leHBvcnQgY2xhc3MgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB6b25hbCBzZXJ2aWNlIGxldmVsIGF2YWlsYWJpbGl0eSBtZXRyaWNzLCBvbmUgbWV0cmljIGZvclxuICAgKiBlYWNoIG9wZXJhdGlvbiBhdCB0aGUgem9uYWwgbGV2ZWwgYW5kIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIG1ldHJpYyBhdCBpbmRleCAwIGlzIHRoZSBtZXRyaWMgbWF0aCBleHByZXNzaW9uIGZvciB0aGUgd2hvbGUgc2VydmljZS4gVGhlIGZvbGxvd2luZyBtZXRyaWNzXG4gICAqIGFyZSB0aGUgbWV0cmljcyBmb3IgZWFjaCBvcGVyYXRpb24gaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYXZhaWxhYmlsaXR5IG1ldHJpYyBwcm9wcy5cbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbFNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNzKFxuICAgIHByb3BzOiBTZXJ2aWNlQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMsXG4gICk6IElNZXRyaWNbXSB7XG4gICAgbGV0IHVzaW5nTWV0cmljczogeyBba2V5OiBzdHJpbmddOiBJTWV0cmljIH0gPSB7fTtcbiAgICBsZXQgb3BlcmF0aW9uTWV0cmljczogSU1ldHJpY1tdID0gW107XG4gICAgbGV0IGNvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgICBwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICBsZXQga2V5UHJlZml4OiBzdHJpbmcgPVxuICAgICAgICAocHJvcC5rZXlQcmVmaXggPT09IHVuZGVmaW5lZCB8fCBwcm9wLmtleVByZWZpeCA9PSAnJ1xuICAgICAgICAgID8gJydcbiAgICAgICAgICA6IHByb3Aua2V5UHJlZml4LnRvTG93ZXJDYXNlKCkgKyAnXycpICtcbiAgICAgICAgcHJvcC5tZXRyaWNEZXRhaWxzLm9wZXJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKSArXG4gICAgICAgICdfJyArXG4gICAgICAgIHByb3AubWV0cmljVHlwZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgIGxldCB6b25hbE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpYzogSU1ldHJpYyA9XG4gICAgICAgIHRoaXMuY3JlYXRlWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWMoXG4gICAgICAgICAgcHJvcCBhcyBab25hbEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLFxuICAgICAgICApO1xuXG4gICAgICBvcGVyYXRpb25NZXRyaWNzLnB1c2goem9uYWxPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWMpO1xuICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleVByZWZpeH0ke2NvdW50ZXIrK31gXSA9XG4gICAgICAgIHpvbmFsT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljO1xuICAgIH0pO1xuXG4gICAgbGV0IGV4cHJlc3Npb246IHN0cmluZyA9ICcnO1xuXG4gICAgc3dpdGNoIChwcm9wcy5hdmFpbGFiaWxpdHlNZXRyaWNQcm9wc1swXS5tZXRyaWNUeXBlKSB7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuU1VDQ0VTU19SQVRFOlxuICAgICAgICBleHByZXNzaW9uID0gYCgke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSkgLyAke3Byb3BzLmF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLmxlbmd0aH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5SRVFVRVNUX0NPVU5UOlxuICAgICAgICBleHByZXNzaW9uID0gYCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQ6XG4gICAgICAgIGV4cHJlc3Npb24gPSBgJHtPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKX1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5GQVVMVF9SQVRFOlxuICAgICAgICBleHByZXNzaW9uID0gYCgke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSkgLyAke3Byb3BzLmF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzLmxlbmd0aH1gO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5TVUNDRVNTX0NPVU5UOlxuICAgICAgICBleHByZXNzaW9uID0gYCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGxldCBtYXRoOiBJTWV0cmljID0gbmV3IE1hdGhFeHByZXNzaW9uKHtcbiAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICBsYWJlbDogcHJvcHMubGFiZWwsXG4gICAgICBleHByZXNzaW9uOiBleHByZXNzaW9uLFxuICAgIH0pO1xuXG4gICAgb3BlcmF0aW9uTWV0cmljcy5zcGxpY2UoMCwgMCwgbWF0aCk7XG5cbiAgICByZXR1cm4gb3BlcmF0aW9uTWV0cmljcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgem9uYWwgYXZhaWxhYmlsaXR5IG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyhcbiAgICBwcm9wczogWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUF2YWlsYWJpbGl0eU1ldHJpYyhcbiAgICAgIHByb3BzLFxuICAgICAgcHJvcHMubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBBd3MuUkVHSU9OXG4gICAgICApLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21ldHJpY3MvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUFxRTtBQUNyRSxzQ0FBc0M7QUFDdEMsNkNBQTRDO0FBQzVDLCtEQUFxRTtBQUNyRSxtRkFBZ0Y7QUFFaEYsZ0ZBQTZFO0FBRTdFLE1BQWEsd0JBQXdCO0lBQ25DOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxxQ0FBcUMsQ0FDMUMsT0FBdUMsRUFDdkMsTUFBZ0IsRUFDaEIsS0FBYTtRQUViLElBQUksWUFBWSxHQUErQixFQUFFLENBQUM7UUFDbEQsSUFBSSxnQkFBZ0IsR0FBYyxFQUFFLENBQUM7UUFFckMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWtDLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFFcEUsSUFBSSxnQ0FBZ0MsR0FDbEMsNkRBQTZCLENBQUMsNkJBQTZCLENBQ3pELElBQUksRUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDakQsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixpQkFBRyxDQUFDLE1BQU0sQ0FDWCxDQUNGLENBQUM7WUFFSixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztZQUN4RCxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLElBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDN0ssZ0NBQWdDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUM7UUFFNUIsUUFBUSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDOUIsS0FBSywrQ0FBc0IsQ0FBQyxZQUFZO2dCQUN0QyxVQUFVLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxPQUFPLENBQUMsTUFBTSxtQkFBbUIsQ0FBQztnQkFDN0YsTUFBTTtZQUNSLEtBQUssK0NBQXNCLENBQUMsYUFBYTtnQkFDdkMsVUFBVSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO2dCQUN2RSxNQUFNO1lBQ1IsS0FBSywrQ0FBc0IsQ0FBQyxXQUFXO2dCQUNyQyxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3ZFLE1BQU07WUFDUixLQUFLLCtDQUFzQixDQUFDLFVBQVU7Z0JBQ3BDLFVBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLG1CQUFtQixDQUFDO2dCQUM3RixNQUFNO1lBQ1IsS0FBSywrQ0FBc0IsQ0FBQyxhQUFhO2dCQUN2QyxVQUFVLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUM7Z0JBQ3ZFLE1BQU07UUFDVixDQUFDO1FBQ0QsSUFBSSxJQUFJLEdBQVksSUFBSSwrQkFBYyxDQUFDO1lBQ3JDLFlBQVksRUFBRSxZQUFZO1lBQzFCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsS0FBSyxFQUFFLEtBQUs7WUFDWixVQUFVLEVBQUUsVUFBVTtTQUN2QixDQUFDLENBQUM7UUFFSCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUVwQyxPQUFPLGdCQUFnQixDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQTlERCw0REE4REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBd3MsIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB9IGZyb20gJy4vcHJvcHMvWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlIH0gZnJvbSAnLi4vdXRpbGl0aWVzL0F2YWlsYWJpbGl0eU1ldHJpY1R5cGUnO1xuXG5leHBvcnQgY2xhc3MgWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNzIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB6b25hbCBzZXJ2aWNlIGxldmVsIGF2YWlsYWJpbGl0eSBtZXRyaWNzLCBvbmUgbWV0cmljIGZvclxuICAgKiBlYWNoIG9wZXJhdGlvbiBhdCB0aGUgem9uYWwgbGV2ZWwgYW5kIHRoZSBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnMgVGhlIG1ldHJpYyBhdCBpbmRleCAwIGlzIHRoZSBtZXRyaWMgbWF0aCBleHByZXNzaW9uIGZvciB0aGUgd2hvbGUgc2VydmljZS4gVGhlIGZvbGxvd2luZyBtZXRyaWNzXG4gICAqIGFyZSB0aGUgbWV0cmljcyBmb3IgZWFjaCBvcGVyYXRpb24gaW5jbHVkZWQgaW4gdGhlIHJlcXVlc3QgYXZhaWxhYmlsaXR5IG1ldHJpYyBwcm9wcy5cbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbFNlcnZpY2VBdmFpbGFiaWxpdHlNZXRyaWNzKFxuICAgIG1ldHJpY3M6IFpvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHNbXSxcbiAgICBwZXJpb2Q6IER1cmF0aW9uLFxuICAgIGxhYmVsOiBzdHJpbmdcbiAgKTogSU1ldHJpY1tdIHtcbiAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgIGxldCBvcGVyYXRpb25NZXRyaWNzOiBJTWV0cmljW10gPSBbXTtcblxuICAgIG1ldHJpY3MuZm9yRWFjaCgocHJvcDogWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcywgaW5kZXg6IG51bWJlcikgPT4ge1xuXG4gICAgICBsZXQgem9uYWxPcGVyYXRpb25BdmFpbGFiaWxpdHlNZXRyaWM6IElNZXRyaWMgPVxuICAgICAgICBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVab25hbEF2YWlsYWJpbGl0eU1ldHJpYyhcbiAgICAgICAgICBwcm9wLFxuICAgICAgICAgIHByb3AubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgICAgIHByb3AuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgb3BlcmF0aW9uTWV0cmljcy5wdXNoKHpvbmFsT3BlcmF0aW9uQXZhaWxhYmlsaXR5TWV0cmljKTtcbiAgICAgIHVzaW5nTWV0cmljc1tgJHtwcm9wLmF2YWlsYWJpbGl0eVpvbmUuc3Vic3RyaW5nKHByb3AuYXZhaWxhYmlsaXR5Wm9uZS5sZW5ndGggLSAxKX1fJHtwcm9wLm1ldHJpY0RldGFpbHMub3BlcmF0aW9uTmFtZX1fJHsgcHJvcC5tZXRyaWNUeXBlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSB9XyR7aW5kZXh9YF0gPVxuICAgICAgICB6b25hbE9wZXJhdGlvbkF2YWlsYWJpbGl0eU1ldHJpYztcbiAgICB9KTtcblxuICAgIGxldCBleHByZXNzaW9uOiBzdHJpbmcgPSAnJztcblxuICAgIHN3aXRjaCAobWV0cmljc1swXS5tZXRyaWNUeXBlKSB7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuU1VDQ0VTU19SQVRFOlxuICAgICAgICBleHByZXNzaW9uID0gYCgke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSkgLyAke21ldHJpY3MubGVuZ3RofSArIFRJTUVfU0VSSUVTKDApYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuUkVRVUVTVF9DT1VOVDpcbiAgICAgICAgZXhwcmVzc2lvbiA9IGAke09iamVjdC5rZXlzKHVzaW5nTWV0cmljcykuam9pbignKycpfSArIFRJTUVfU0VSSUVTKDApYDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEF2YWlsYWJpbGl0eU1ldHJpY1R5cGUuRkFVTFRfQ09VTlQ6XG4gICAgICAgIGV4cHJlc3Npb24gPSBgJHtPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKX0gKyBUSU1FX1NFUklFUygwKWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBBdmFpbGFiaWxpdHlNZXRyaWNUeXBlLkZBVUxUX1JBVEU6XG4gICAgICAgIGV4cHJlc3Npb24gPSBgKCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9KSAvICR7bWV0cmljcy5sZW5ndGh9ICsgVElNRV9TRVJJRVMoMClgO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQXZhaWxhYmlsaXR5TWV0cmljVHlwZS5TVUNDRVNTX0NPVU5UOlxuICAgICAgICBleHByZXNzaW9uID0gYCR7T2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyl9ICsgVElNRV9TRVJJRVMoMClgO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbGV0IG1hdGg6IElNZXRyaWMgPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgdXNpbmdNZXRyaWNzOiB1c2luZ01ldHJpY3MsXG4gICAgICBwZXJpb2Q6IHBlcmlvZCxcbiAgICAgIGxhYmVsOiBsYWJlbCxcbiAgICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24sXG4gICAgfSk7XG5cbiAgICBvcGVyYXRpb25NZXRyaWNzLnNwbGljZSgwLCAwLCBtYXRoKTtcblxuICAgIHJldHVybiBvcGVyYXRpb25NZXRyaWNzO1xuICB9XG59XG4iXX0=
@@ -8,6 +8,7 @@ export declare class ZonalLatencyMetrics {
8
8
  * @returns
9
9
  */
10
10
  static createZonalLatencyMetrics(props: ZonalLatencyMetricProps): IMetric[];
11
+ static createZonalLatencyMetric(props: ZonalLatencyMetricProps): IMetric;
11
12
  /**
12
13
  * Creates an average zonal latency metric
13
14
  * @param props
@@ -25,5 +26,5 @@ export declare class ZonalLatencyMetrics {
25
26
  * @param props
26
27
  * @returns
27
28
  */
28
- static createZonalServiceLatencyMetrics(props: ServiceLatencyMetricProps): IMetric[];
29
+ static createZonalServiceLatencyMetrics(props: ServiceLatencyMetricProps, includeAZCountAggregate?: boolean): IMetric[];
29
30
  }
@@ -14,7 +14,10 @@ class ZonalLatencyMetrics {
14
14
  * @returns
15
15
  */
16
16
  static createZonalLatencyMetrics(props) {
17
- return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyMetrics(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
17
+ return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyMetrics(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
18
+ }
19
+ static createZonalLatencyMetric(props) {
20
+ return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
18
21
  }
19
22
  /**
20
23
  * Creates an average zonal latency metric
@@ -22,7 +25,7 @@ class ZonalLatencyMetrics {
22
25
  * @returns
23
26
  */
24
27
  static createZonalAverageLatencyMetric(props) {
25
- return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createAverageLatencyMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
28
+ return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createAverageLatencyMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
26
29
  }
27
30
  /**
28
31
  * Creates a count of high latency metric
@@ -30,37 +33,44 @@ class ZonalLatencyMetrics {
30
33
  * @returns
31
34
  */
32
35
  static createZonalCountLatencyMetric(props) {
33
- return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyCountMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Fn.ref('AWS::Region')));
36
+ return AvailabilityAndLatencyMetrics_1.AvailabilityAndLatencyMetrics.createLatencyCountMetric(props, props.metricDetails.metricDimensions.zonalDimensions(props.availabilityZoneId, aws_cdk_lib_1.Aws.REGION));
34
37
  }
35
38
  /**
36
39
  * Creates a count of high latency responses for all critical operations
37
40
  * @param props
38
41
  * @returns
39
42
  */
40
- static createZonalServiceLatencyMetrics(props) {
41
- let usingMetrics = {};
42
- let operationMetrics = [];
43
- let keyPrefix = MetricsHelper_1.MetricsHelper.nextChar();
44
- props.latencyMetricProps.forEach((prop, index) => {
45
- let operationZonalMetric = this.createZonalCountLatencyMetric(prop);
46
- operationMetrics.push(operationZonalMetric);
47
- usingMetrics[`${keyPrefix}${index}`] = operationZonalMetric;
48
- keyPrefix = MetricsHelper_1.MetricsHelper.nextChar(keyPrefix);
49
- });
50
- if (Object.keys(usingMetrics).length == 1) {
51
- operationMetrics.push(Object.values(usingMetrics)[0]);
43
+ static createZonalServiceLatencyMetrics(props, includeAZCountAggregate) {
44
+ if (includeAZCountAggregate) {
45
+ let usingMetrics = {};
46
+ let operationMetrics = [];
47
+ let keyPrefix = MetricsHelper_1.MetricsHelper.nextChar();
48
+ props.latencyMetricProps.forEach((prop, index) => {
49
+ let operationZonalMetric = this.createZonalCountLatencyMetric(prop);
50
+ operationMetrics.push(operationZonalMetric);
51
+ usingMetrics[`${keyPrefix}${index}`] = operationZonalMetric;
52
+ keyPrefix = MetricsHelper_1.MetricsHelper.nextChar(keyPrefix);
53
+ });
54
+ if (Object.keys(usingMetrics).length == 1) {
55
+ operationMetrics.push(Object.values(usingMetrics)[0]);
56
+ }
57
+ else {
58
+ let math = new aws_cloudwatch_1.MathExpression({
59
+ usingMetrics: usingMetrics,
60
+ period: props.period,
61
+ label: props.label,
62
+ expression: Object.keys(usingMetrics).join('+'),
63
+ });
64
+ operationMetrics.splice(0, 0, math);
65
+ }
66
+ return operationMetrics;
52
67
  }
53
68
  else {
54
- let math = new aws_cloudwatch_1.MathExpression({
55
- usingMetrics: usingMetrics,
56
- period: props.period,
57
- label: props.label,
58
- expression: Object.keys(usingMetrics).join('+'),
69
+ return props.latencyMetricProps.map((prop) => {
70
+ return this.createZonalCountLatencyMetric(prop);
59
71
  });
60
- operationMetrics.splice(0, 0, math);
61
72
  }
62
- return operationMetrics;
63
73
  }
64
74
  }
65
75
  exports.ZonalLatencyMetrics = ZonalLatencyMetrics;
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRyaWNzL1pvbmFsTGF0ZW5jeU1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2Q0FBaUM7QUFDakMsK0RBQXFFO0FBQ3JFLG1GQUFnRjtBQUloRiw4REFBMkQ7QUFFM0QsTUFBYSxtQkFBbUI7SUFDOUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUE4QjtRQUM3RCxPQUFPLDZEQUE2QixDQUFDLG9CQUFvQixDQUN2RCxLQUFLLEVBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ2xELEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQ3RCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLCtCQUErQixDQUNwQyxLQUE4QjtRQUU5QixPQUFPLDZEQUE2QixDQUFDLDBCQUEwQixDQUM3RCxLQUFLLEVBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ2xELEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQ3RCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDZCQUE2QixDQUNsQyxLQUE4QjtRQUU5QixPQUFPLDZEQUE2QixDQUFDLHdCQUF3QixDQUMzRCxLQUFLLEVBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ2xELEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsZ0JBQUUsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQ3RCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGdDQUFnQyxDQUNyQyxLQUFnQztRQUVoQyxJQUFJLFlBQVksR0FBK0IsRUFBRSxDQUFDO1FBQ2xELElBQUksZ0JBQWdCLEdBQWMsRUFBRSxDQUFDO1FBQ3JDLElBQUksU0FBUyxHQUFXLDZCQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFakQsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDOUIsQ0FBQyxJQUF3QixFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQzFDLElBQUksb0JBQW9CLEdBQVksSUFBSSxDQUFDLDZCQUE2QixDQUNwRSxJQUErQixDQUNoQyxDQUFDO1lBRUYsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDNUMsWUFBWSxDQUFDLEdBQUcsU0FBUyxHQUFHLEtBQUssRUFBRSxDQUFDLEdBQUcsb0JBQW9CLENBQUM7WUFDNUQsU0FBUyxHQUFHLDZCQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMxQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLEdBQVksSUFBSSwrQkFBYyxDQUFDO2dCQUNyQyxZQUFZLEVBQUUsWUFBWTtnQkFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7Z0JBQ2xCLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDaEQsQ0FBQyxDQUFDO1lBRUgsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sZ0JBQWdCLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBekZELGtEQXlGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEZuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSU1ldHJpYywgTWF0aEV4cHJlc3Npb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyB9IGZyb20gJy4vQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MnO1xuaW1wb3J0IHsgTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9MYXRlbmN5TWV0cmljUHJvcHMnO1xuaW1wb3J0IHsgU2VydmljZUxhdGVuY3lNZXRyaWNQcm9wcyB9IGZyb20gJy4vcHJvcHMvU2VydmljZUxhdGVuY3lNZXJpY1Byb3BzJztcbmltcG9ydCB7IFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9ab25hbExhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBNZXRyaWNzSGVscGVyIH0gZnJvbSAnLi4vdXRpbGl0aWVzL01ldHJpY3NIZWxwZXInO1xuXG5leHBvcnQgY2xhc3MgWm9uYWxMYXRlbmN5TWV0cmljcyB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgem9uYWwgbGF0ZW5jeSBtZXRyaWNcbiAgICogQHBhcmFtIHByb3BzXG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBzdGF0aWMgY3JlYXRlWm9uYWxMYXRlbmN5TWV0cmljcyhwcm9wczogWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMpOiBJTWV0cmljW10ge1xuICAgIHJldHVybiBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcy5jcmVhdGVMYXRlbmN5TWV0cmljcyhcbiAgICAgIHByb3BzLFxuICAgICAgcHJvcHMubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhdmVyYWdlIHpvbmFsIGxhdGVuY3kgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsQXZlcmFnZUxhdGVuY3lNZXRyaWMoXG4gICAgcHJvcHM6IFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICApOiBJTWV0cmljIHtcbiAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlQXZlcmFnZUxhdGVuY3lNZXRyaWMoXG4gICAgICBwcm9wcyxcbiAgICAgIHByb3BzLm1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgRm4ucmVmKCdBV1M6OlJlZ2lvbicpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb3VudCBvZiBoaWdoIGxhdGVuY3kgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsQ291bnRMYXRlbmN5TWV0cmljKFxuICAgIHByb3BzOiBab25hbExhdGVuY3lNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUxhdGVuY3lDb3VudE1ldHJpYyhcbiAgICAgIHByb3BzLFxuICAgICAgcHJvcHMubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBGbi5yZWYoJ0FXUzo6UmVnaW9uJyksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvdW50IG9mIGhpZ2ggbGF0ZW5jeSByZXNwb25zZXMgZm9yIGFsbCBjcml0aWNhbCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsU2VydmljZUxhdGVuY3lNZXRyaWNzKFxuICAgIHByb3BzOiBTZXJ2aWNlTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICApOiBJTWV0cmljW10ge1xuICAgIGxldCB1c2luZ01ldHJpY3M6IHsgW2tleTogc3RyaW5nXTogSU1ldHJpYyB9ID0ge307XG4gICAgbGV0IG9wZXJhdGlvbk1ldHJpY3M6IElNZXRyaWNbXSA9IFtdO1xuICAgIGxldCBrZXlQcmVmaXg6IHN0cmluZyA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoKTtcblxuICAgIHByb3BzLmxhdGVuY3lNZXRyaWNQcm9wcy5mb3JFYWNoKFxuICAgICAgKHByb3A6IExhdGVuY3lNZXRyaWNQcm9wcywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBsZXQgb3BlcmF0aW9uWm9uYWxNZXRyaWM6IElNZXRyaWMgPSB0aGlzLmNyZWF0ZVpvbmFsQ291bnRMYXRlbmN5TWV0cmljKFxuICAgICAgICAgIHByb3AgYXMgWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMsXG4gICAgICAgICk7XG5cbiAgICAgICAgb3BlcmF0aW9uTWV0cmljcy5wdXNoKG9wZXJhdGlvblpvbmFsTWV0cmljKTtcbiAgICAgICAgdXNpbmdNZXRyaWNzW2Ake2tleVByZWZpeH0ke2luZGV4fWBdID0gb3BlcmF0aW9uWm9uYWxNZXRyaWM7XG4gICAgICAgIGtleVByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5UHJlZml4KTtcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmxlbmd0aCA9PSAxKSB7XG4gICAgICBvcGVyYXRpb25NZXRyaWNzLnB1c2goT2JqZWN0LnZhbHVlcyh1c2luZ01ldHJpY3MpWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1hdGg6IElNZXRyaWMgPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICB1c2luZ01ldHJpY3M6IHVzaW5nTWV0cmljcyxcbiAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgZXhwcmVzc2lvbjogT2JqZWN0LmtleXModXNpbmdNZXRyaWNzKS5qb2luKCcrJyksXG4gICAgICB9KTtcblxuICAgICAgb3BlcmF0aW9uTWV0cmljcy5zcGxpY2UoMCwgMCwgbWF0aCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wZXJhdGlvbk1ldHJpY3M7XG4gIH1cbn1cbiJdfQ==
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tZXRyaWNzL1pvbmFsTGF0ZW5jeU1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBQXFFO0FBQ3JFLHNDQUFzQztBQUN0Qyw2Q0FBa0M7QUFDbEMsK0RBQXFFO0FBQ3JFLG1GQUFnRjtBQUloRiw4REFBMkQ7QUFFM0QsTUFBYSxtQkFBbUI7SUFDOUI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxLQUE4QjtRQUM3RCxPQUFPLDZEQUE2QixDQUFDLG9CQUFvQixDQUN2RCxLQUFLLEVBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ2xELEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsaUJBQUcsQ0FBQyxNQUFNLENBQ1gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxLQUE4QjtRQUM1RCxPQUFPLDZEQUE2QixDQUFDLG1CQUFtQixDQUN0RCxLQUFLLEVBQ0wsS0FBSyxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ2xELEtBQUssQ0FBQyxrQkFBa0IsRUFDeEIsaUJBQUcsQ0FBQyxNQUFNLENBQ1gsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsK0JBQStCLENBQ3BDLEtBQThCO1FBRTlCLE9BQU8sNkRBQTZCLENBQUMsMEJBQTBCLENBQzdELEtBQUssRUFDTCxLQUFLLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDbEQsS0FBSyxDQUFDLGtCQUFrQixFQUN4QixpQkFBRyxDQUFDLE1BQU0sQ0FDWCxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyw2QkFBNkIsQ0FDbEMsS0FBOEI7UUFFOUIsT0FBTyw2REFBNkIsQ0FBQyx3QkFBd0IsQ0FDM0QsS0FBSyxFQUNMLEtBQUssQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUNsRCxLQUFLLENBQUMsa0JBQWtCLEVBQ3hCLGlCQUFHLENBQUMsTUFBTSxDQUNYLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGdDQUFnQyxDQUNyQyxLQUFnQyxFQUNoQyx1QkFBaUM7UUFFakMsSUFBSSx1QkFBdUIsRUFDM0IsQ0FBQztZQUNDLElBQUksWUFBWSxHQUErQixFQUFFLENBQUM7WUFDbEQsSUFBSSxnQkFBZ0IsR0FBYyxFQUFFLENBQUM7WUFDckMsSUFBSSxTQUFTLEdBQVcsNkJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUVqRCxLQUFLLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUM5QixDQUFDLElBQXdCLEVBQUUsS0FBYSxFQUFFLEVBQUU7Z0JBQzFDLElBQUksb0JBQW9CLEdBQVksSUFBSSxDQUFDLDZCQUE2QixDQUNwRSxJQUErQixDQUNoQyxDQUFDO2dCQUVGLGdCQUFnQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2dCQUM1QyxZQUFZLENBQUMsR0FBRyxTQUFTLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxvQkFBb0IsQ0FBQztnQkFDNUQsU0FBUyxHQUFHLDZCQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FDRixDQUFDO1lBRUYsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDMUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxJQUFJLEdBQVksSUFBSSwrQkFBYyxDQUFDO29CQUNyQyxZQUFZLEVBQUUsWUFBWTtvQkFDMUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7aUJBQ2hELENBQUMsQ0FBQztnQkFFSCxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN0QyxDQUFDO1lBRUQsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQXdCLEVBQUUsRUFBRTtnQkFDL0QsT0FBTyxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBK0IsQ0FBQyxDQUFDO1lBQzdFLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTVHRCxrREE0R0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBd3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBJTWV0cmljLCBNYXRoRXhwcmVzc2lvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7IEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljcyc7XG5pbXBvcnQgeyBMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL3Byb3BzL0xhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBTZXJ2aWNlTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9wcm9wcy9TZXJ2aWNlTGF0ZW5jeU1lcmljUHJvcHMnO1xuaW1wb3J0IHsgWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL3Byb3BzL1pvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5cbmV4cG9ydCBjbGFzcyBab25hbExhdGVuY3lNZXRyaWNzIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSB6b25hbCBsYXRlbmN5IG1ldHJpY1xuICAgKiBAcGFyYW0gcHJvcHNcbiAgICogQHJldHVybnNcbiAgICovXG4gIHN0YXRpYyBjcmVhdGVab25hbExhdGVuY3lNZXRyaWNzKHByb3BzOiBab25hbExhdGVuY3lNZXRyaWNQcm9wcyk6IElNZXRyaWNbXSB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUxhdGVuY3lNZXRyaWNzKFxuICAgICAgcHJvcHMsXG4gICAgICBwcm9wcy5tZXRyaWNEZXRhaWxzLm1ldHJpY0RpbWVuc2lvbnMuem9uYWxEaW1lbnNpb25zKFxuICAgICAgICBwcm9wcy5hdmFpbGFiaWxpdHlab25lSWQsXG4gICAgICAgIEF3cy5SRUdJT05cbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVab25hbExhdGVuY3lNZXRyaWMocHJvcHM6IFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUxhdGVuY3lNZXRyaWMoXG4gICAgICBwcm9wcyxcbiAgICAgIHByb3BzLm1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBhdmVyYWdlIHpvbmFsIGxhdGVuY3kgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsQXZlcmFnZUxhdGVuY3lNZXRyaWMoXG4gICAgcHJvcHM6IFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICApOiBJTWV0cmljIHtcbiAgICByZXR1cm4gQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY3MuY3JlYXRlQXZlcmFnZUxhdGVuY3lNZXRyaWMoXG4gICAgICBwcm9wcyxcbiAgICAgIHByb3BzLm1ldHJpY0RldGFpbHMubWV0cmljRGltZW5zaW9ucy56b25hbERpbWVuc2lvbnMoXG4gICAgICAgIHByb3BzLmF2YWlsYWJpbGl0eVpvbmVJZCxcbiAgICAgICAgQXdzLlJFR0lPTlxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb3VudCBvZiBoaWdoIGxhdGVuY3kgbWV0cmljXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsQ291bnRMYXRlbmN5TWV0cmljKFxuICAgIHByb3BzOiBab25hbExhdGVuY3lNZXRyaWNQcm9wcyxcbiAgKTogSU1ldHJpYyB7XG4gICAgcmV0dXJuIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNzLmNyZWF0ZUxhdGVuY3lDb3VudE1ldHJpYyhcbiAgICAgIHByb3BzLFxuICAgICAgcHJvcHMubWV0cmljRGV0YWlscy5tZXRyaWNEaW1lbnNpb25zLnpvbmFsRGltZW5zaW9ucyhcbiAgICAgICAgcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZUlkLFxuICAgICAgICBBd3MuUkVHSU9OXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvdW50IG9mIGhpZ2ggbGF0ZW5jeSByZXNwb25zZXMgZm9yIGFsbCBjcml0aWNhbCBvcGVyYXRpb25zXG4gICAqIEBwYXJhbSBwcm9wc1xuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGNyZWF0ZVpvbmFsU2VydmljZUxhdGVuY3lNZXRyaWNzKFxuICAgIHByb3BzOiBTZXJ2aWNlTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICAgIGluY2x1ZGVBWkNvdW50QWdncmVnYXRlPzogYm9vbGVhblxuICApOiBJTWV0cmljW10ge1xuICAgIGlmIChpbmNsdWRlQVpDb3VudEFnZ3JlZ2F0ZSlcbiAgICB7XG4gICAgICBsZXQgdXNpbmdNZXRyaWNzOiB7IFtrZXk6IHN0cmluZ106IElNZXRyaWMgfSA9IHt9O1xuICAgICAgbGV0IG9wZXJhdGlvbk1ldHJpY3M6IElNZXRyaWNbXSA9IFtdO1xuICAgICAgbGV0IGtleVByZWZpeDogc3RyaW5nID0gTWV0cmljc0hlbHBlci5uZXh0Q2hhcigpO1xuXG4gICAgICBwcm9wcy5sYXRlbmN5TWV0cmljUHJvcHMuZm9yRWFjaChcbiAgICAgICAgKHByb3A6IExhdGVuY3lNZXRyaWNQcm9wcywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGxldCBvcGVyYXRpb25ab25hbE1ldHJpYzogSU1ldHJpYyA9IHRoaXMuY3JlYXRlWm9uYWxDb3VudExhdGVuY3lNZXRyaWMoXG4gICAgICAgICAgICBwcm9wIGFzIFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBvcGVyYXRpb25NZXRyaWNzLnB1c2gob3BlcmF0aW9uWm9uYWxNZXRyaWMpO1xuICAgICAgICAgIHVzaW5nTWV0cmljc1tgJHtrZXlQcmVmaXh9JHtpbmRleH1gXSA9IG9wZXJhdGlvblpvbmFsTWV0cmljO1xuICAgICAgICAgIGtleVByZWZpeCA9IE1ldHJpY3NIZWxwZXIubmV4dENoYXIoa2V5UHJlZml4KTtcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmxlbmd0aCA9PSAxKSB7XG4gICAgICAgIG9wZXJhdGlvbk1ldHJpY3MucHVzaChPYmplY3QudmFsdWVzKHVzaW5nTWV0cmljcylbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IG1hdGg6IElNZXRyaWMgPSBuZXcgTWF0aEV4cHJlc3Npb24oe1xuICAgICAgICAgIHVzaW5nTWV0cmljczogdXNpbmdNZXRyaWNzLFxuICAgICAgICAgIHBlcmlvZDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgIGxhYmVsOiBwcm9wcy5sYWJlbCxcbiAgICAgICAgICBleHByZXNzaW9uOiBPYmplY3Qua2V5cyh1c2luZ01ldHJpY3MpLmpvaW4oJysnKSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgb3BlcmF0aW9uTWV0cmljcy5zcGxpY2UoMCwgMCwgbWF0aCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcGVyYXRpb25NZXRyaWNzO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHJldHVybiBwcm9wcy5sYXRlbmN5TWV0cmljUHJvcHMubWFwKChwcm9wOiBMYXRlbmN5TWV0cmljUHJvcHMpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlWm9uYWxDb3VudExhdGVuY3lNZXRyaWMocHJvcCBhcyBab25hbExhdGVuY3lNZXRyaWNQcm9wcyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -20,4 +20,8 @@ export interface AvailabilityAndLatencyMetricProps {
20
20
  * The Region for the metrics
21
21
  */
22
22
  readonly region?: string;
23
+ /**
24
+ * The color for the metric to be displayed on a graph
25
+ */
26
+ readonly color?: string;
23
27
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lPcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcblxuLyoqXG4gKiBDb21tb24gYXZhaWxhYmlsaXR5IGFuZCBsYXRlbmN5IG1ldHJpYyBwcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGRldGFpbHMgdG8gY3JlYXRlIG1ldHJpY3MgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgbGFiZWxcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEga2V5IHByZWZpeCBmb3IgdGhlIG1ldHJpYyBuYW1lIHRvIG1ha2UgaXQgdW5pcXVlXG4gICAqIGluIGFsYXJtcyBhbmQgZ3JhcGhzXG4gICAqL1xuICByZWFkb25seSBrZXlQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSZWdpb24gZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvQXZhaWxhYmlsaXR5QW5kTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBJT3BlcmF0aW9uTWV0cmljRGV0YWlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL0lPcGVyYXRpb25NZXRyaWNEZXRhaWxzJztcblxuLyoqXG4gKiBDb21tb24gYXZhaWxhYmlsaXR5IGFuZCBsYXRlbmN5IG1ldHJpYyBwcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGRldGFpbHMgdG8gY3JlYXRlIG1ldHJpY3MgZnJvbVxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljRGV0YWlsczogSU9wZXJhdGlvbk1ldHJpY0RldGFpbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgbGFiZWxcbiAgICovXG4gIHJlYWRvbmx5IGxhYmVsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAoT3B0aW9uYWwpIEEga2V5IHByZWZpeCBmb3IgdGhlIG1ldHJpYyBuYW1lIHRvIG1ha2UgaXQgdW5pcXVlXG4gICAqIGluIGFsYXJtcyBhbmQgZ3JhcGhzXG4gICAqL1xuICByZWFkb25seSBrZXlQcmVmaXg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBSZWdpb24gZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xvciBmb3IgdGhlIG1ldHJpYyB0byBiZSBkaXNwbGF5ZWQgb24gYSBncmFwaFxuICAgKi9cbiAgcmVhZG9ubHkgY29sb3I/OiBzdHJpbmc7XG59XG4iXX0=
@@ -12,4 +12,10 @@ export interface LatencyMetricProps extends AvailabilityAndLatencyMetricProps {
12
12
  * The latency statistic like p99, tm99, or TC(100:)
13
13
  */
14
14
  readonly statistic: string;
15
+ /**
16
+ * Provide this to target only a specific metric
17
+ *
18
+ * @default All metrics of the specified type will be returned
19
+ */
20
+ readonly metricName?: string;
15
21
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBMYXRlbmN5TWV0cmljVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9MYXRlbmN5TWV0cmljVHlwZSc7XG5cbi8qKlxuICogTWV0cmljIHByb3BlcnRpZXMgZm9yIGxhdGVuY3kgbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdGVuY3lNZXRyaWNQcm9wcyBleHRlbmRzIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsYXRlbmN5IG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljVHlwZTogTGF0ZW5jeU1ldHJpY1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlbmN5IHN0YXRpc3RpYyBsaWtlIHA5OSwgdG05OSwgb3IgVEMoMTAwOilcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpc3RpYzogc3RyaW5nO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZW5jeU1ldHJpY1Byb3BzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvcHJvcHMvTGF0ZW5jeU1ldHJpY1Byb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgeyBBdmFpbGFiaWxpdHlBbmRMYXRlbmN5TWV0cmljUHJvcHMgfSBmcm9tICcuL0F2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyc7XG5pbXBvcnQgeyBMYXRlbmN5TWV0cmljVHlwZSB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9MYXRlbmN5TWV0cmljVHlwZSc7XG5cbi8qKlxuICogTWV0cmljIHByb3BlcnRpZXMgZm9yIGxhdGVuY3kgbWV0cmljc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdGVuY3lNZXRyaWNQcm9wcyBleHRlbmRzIEF2YWlsYWJpbGl0eUFuZExhdGVuY3lNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBsYXRlbmN5IG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljVHlwZTogTGF0ZW5jeU1ldHJpY1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBsYXRlbmN5IHN0YXRpc3RpYyBsaWtlIHA5OSwgdG05OSwgb3IgVEMoMTAwOilcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRpc3RpYzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlIHRoaXMgdG8gdGFyZ2V0IG9ubHkgYSBzcGVjaWZpYyBtZXRyaWNcbiAgICogXG4gICAqIEBkZWZhdWx0IEFsbCBtZXRyaWNzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSB3aWxsIGJlIHJldHVybmVkXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lPzogc3RyaW5nO1xufVxuIl19
@@ -7,4 +7,8 @@ export interface ZonalAvailabilityMetricProps extends AvailabilityMetricProps {
7
7
  * The Availability Zone Id for the metrics
8
8
  */
9
9
  readonly availabilityZoneId: string;
10
+ /**
11
+ * The Availability Zone name for the metrics
12
+ */
13
+ readonly availabilityZone: string;
10
14
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRyaWNzL3Byb3BzL1pvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5cbi8qKlxuICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGF2YWlsYWJpbGl0eSBtZXRyaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMgZXh0ZW5kcyBBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgSWQgZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZztcbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tZXRyaWNzL3Byb3BzL1pvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbmltcG9ydCB7IEF2YWlsYWJpbGl0eU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9BdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyc7XG5cbi8qKlxuICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGF2YWlsYWJpbGl0eSBtZXRyaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsQXZhaWxhYmlsaXR5TWV0cmljUHJvcHMgZXh0ZW5kcyBBdmFpbGFiaWxpdHlNZXRyaWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgSWQgZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIG5hbWUgZm9yIHRoZSBtZXRyaWNzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG59XG4iXX0=
@@ -7,4 +7,8 @@ export interface ZonalLatencyMetricProps extends LatencyMetricProps {
7
7
  * The Availability Zone Id for the metrics
8
8
  */
9
9
  readonly availabilityZoneId: string;
10
+ /**
11
+ * The Availability Zone name for the metrics
12
+ */
13
+ readonly availabilityZone: string;
10
14
  }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9wcm9wcy9ab25hbExhdGVuY3lNZXRyaWNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9MYXRlbmN5TWV0cmljUHJvcHMnO1xuXG4vKipcbiAqIFRoZSBsYXRlbmN5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBBdmFpbGFiaWxpdHkgWm9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzIGV4dGVuZHMgTGF0ZW5jeU1ldHJpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBJZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nO1xufVxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm9uYWxMYXRlbmN5TWV0cmljUHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9wcm9wcy9ab25hbExhdGVuY3lNZXRyaWNQcm9wcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0IHsgTGF0ZW5jeU1ldHJpY1Byb3BzIH0gZnJvbSAnLi9MYXRlbmN5TWV0cmljUHJvcHMnO1xuXG4vKipcbiAqIFRoZSBsYXRlbmN5IG1ldHJpYyBwcm9wZXJ0aWVzIGZvciBhbiBBdmFpbGFiaWxpdHkgWm9uZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFpvbmFsTGF0ZW5jeU1ldHJpY1Byb3BzIGV4dGVuZHMgTGF0ZW5jeU1ldHJpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSBJZCBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgbmFtZSBmb3IgdGhlIG1ldHJpY3NcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The options for calculating if an ALB is an outlier for availability
3
+ */
4
+ export declare enum ApplicationLoadBalancerAvailabilityOutlierAlgorithm {
5
+ /**
6
+ * This will take the availability threshold and calculate if one AZ is responsible
7
+ * for that percentage of errors.
8
+ */
9
+ STATIC = "STATIC"
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationLoadBalancerAvailabilityOutlierAlgorithm = void 0;
4
+ /**
5
+ * The options for calculating if an ALB is an outlier for availability
6
+ */
7
+ var ApplicationLoadBalancerAvailabilityOutlierAlgorithm;
8
+ (function (ApplicationLoadBalancerAvailabilityOutlierAlgorithm) {
9
+ /**
10
+ * This will take the availability threshold and calculate if one AZ is responsible
11
+ * for that percentage of errors.
12
+ */
13
+ ApplicationLoadBalancerAvailabilityOutlierAlgorithm["STATIC"] = "STATIC";
14
+ })(ApplicationLoadBalancerAvailabilityOutlierAlgorithm || (exports.ApplicationLoadBalancerAvailabilityOutlierAlgorithm = ApplicationLoadBalancerAvailabilityOutlierAlgorithm = {}));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJBdmFpbGFiaWxpdHlPdXRsaWVyQWxnb3JpdGhtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL291dGxpZXItZGV0ZWN0aW9uL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5T3V0bGllckFsZ29yaXRobS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILElBQVksbURBTVg7QUFORCxXQUFZLG1EQUFtRDtJQUMzRDs7O09BR0c7SUFDSCx3RUFBaUIsQ0FBQTtBQUNyQixDQUFDLEVBTlcsbURBQW1ELG1FQUFuRCxtREFBbUQsUUFNOUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBvcHRpb25zIGZvciBjYWxjdWxhdGluZyBpZiBhbiBBTEIgaXMgYW4gb3V0bGllciBmb3IgYXZhaWxhYmlsaXR5XG4gKi9cbmV4cG9ydCBlbnVtIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyQXZhaWxhYmlsaXR5T3V0bGllckFsZ29yaXRobSB7XG4gICAgLyoqXG4gICAgICogVGhpcyB3aWxsIHRha2UgdGhlIGF2YWlsYWJpbGl0eSB0aHJlc2hvbGQgYW5kIGNhbGN1bGF0ZSBpZiBvbmUgQVogaXMgcmVzcG9uc2libGVcbiAgICAgKiBmb3IgdGhhdCBwZXJjZW50YWdlIG9mIGVycm9ycy5cbiAgICAgKi9cbiAgICBTVEFUSUMgPSBcIlNUQVRJQ1wiXG59Il19
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The options for calculating if an AZ is an outlier for latency for ALBs
3
3
  */
4
- export declare enum ApplicationLoadBalancerLatencyOutlierCalculation {
4
+ export declare enum ApplicationLoadBalancerLatencyOutlierAlgorithm {
5
5
  /**
6
6
  * This will take the latency threshold and count the number of requests per AZ
7
7
  * that exceed this threshold and then calculate the percentage of requests
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationLoadBalancerLatencyOutlierAlgorithm = void 0;
4
+ /**
5
+ * The options for calculating if an AZ is an outlier for latency for ALBs
6
+ */
7
+ var ApplicationLoadBalancerLatencyOutlierAlgorithm;
8
+ (function (ApplicationLoadBalancerLatencyOutlierAlgorithm) {
9
+ /**
10
+ * This will take the latency threshold and count the number of requests per AZ
11
+ * that exceed this threshold and then calculate the percentage of requests
12
+ * exceeding this threshold belong to each AZ. This provides a static comparison
13
+ * of the number of high latency requests in one AZ versus the others
14
+ */
15
+ ApplicationLoadBalancerLatencyOutlierAlgorithm["STATIC"] = "STATIC";
16
+ /**
17
+ * This calculates the z score of latency in one AZ against the other AZs. It uses
18
+ * the target response time of all requests to calculate the standard deviation and
19
+ * average for all AZs. This is the default.
20
+ */
21
+ ApplicationLoadBalancerLatencyOutlierAlgorithm["Z_SCORE"] = "Z_SCORE";
22
+ })(ApplicationLoadBalancerLatencyOutlierAlgorithm || (exports.ApplicationLoadBalancerLatencyOutlierAlgorithm = ApplicationLoadBalancerLatencyOutlierAlgorithm = {}));
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJMYXRlbmN5T3V0bGllckFsZ29yaXRobS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdXRsaWVyLWRldGVjdGlvbi9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlckxhdGVuY3lPdXRsaWVyQWxnb3JpdGhtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSw4Q0FnQlg7QUFoQkQsV0FBWSw4Q0FBOEM7SUFFdEQ7Ozs7O09BS0c7SUFDSCxtRUFBaUIsQ0FBQTtJQUVqQjs7OztPQUlHO0lBQ0gscUVBQWtCLENBQUE7QUFDdEIsQ0FBQyxFQWhCVyw4Q0FBOEMsOERBQTlDLDhDQUE4QyxRQWdCekQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoZSBvcHRpb25zIGZvciBjYWxjdWxhdGluZyBpZiBhbiBBWiBpcyBhbiBvdXRsaWVyIGZvciBsYXRlbmN5IGZvciBBTEJzXG4gKi9cbmV4cG9ydCBlbnVtIEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyTGF0ZW5jeU91dGxpZXJBbGdvcml0aG1cbntcbiAgICAvKipcbiAgICAgKiBUaGlzIHdpbGwgdGFrZSB0aGUgbGF0ZW5jeSB0aHJlc2hvbGQgYW5kIGNvdW50IHRoZSBudW1iZXIgb2YgcmVxdWVzdHMgcGVyIEFaIFxuICAgICAqIHRoYXQgZXhjZWVkIHRoaXMgdGhyZXNob2xkIGFuZCB0aGVuIGNhbGN1bGF0ZSB0aGUgcGVyY2VudGFnZSBvZiByZXF1ZXN0c1xuICAgICAqIGV4Y2VlZGluZyB0aGlzIHRocmVzaG9sZCBiZWxvbmcgdG8gZWFjaCBBWi4gVGhpcyBwcm92aWRlcyBhIHN0YXRpYyBjb21wYXJpc29uXG4gICAgICogb2YgdGhlIG51bWJlciBvZiBoaWdoIGxhdGVuY3kgcmVxdWVzdHMgaW4gb25lIEFaIHZlcnN1cyB0aGUgb3RoZXJzXG4gICAgICovXG4gICAgU1RBVElDID0gXCJTVEFUSUNcIixcblxuICAgIC8qKlxuICAgICAqIFRoaXMgY2FsY3VsYXRlcyB0aGUgeiBzY29yZSBvZiBsYXRlbmN5IGluIG9uZSBBWiBhZ2FpbnN0IHRoZSBvdGhlciBBWnMuIEl0IHVzZXNcbiAgICAgKiB0aGUgdGFyZ2V0IHJlc3BvbnNlIHRpbWUgb2YgYWxsIHJlcXVlc3RzIHRvIGNhbGN1bGF0ZSB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uIGFuZFxuICAgICAqIGF2ZXJhZ2UgZm9yIGFsbCBBWnMuIFRoaXMgaXMgdGhlIGRlZmF1bHQuXG4gICAgICovXG4gICAgWl9TQ09SRT0gXCJaX1NDT1JFXCJcbn0iXX0=
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The latency metric aggregation to use for latency outlier detection
3
+ */
4
+ export declare enum LatencyOutlierMetricAggregation {
5
+ /**
6
+ * This option will use the count of the number of requests exceeding
7
+ * a latency threshold to make an outlier comparison. This option works
8
+ * with all outlier detection algorithms
9
+ */
10
+ COUNT = "COUNT",
11
+ /**
12
+ * This option will use the value of your provided latency statistic, like
13
+ * p99, and the value of the latency in each AZ will be compared. For example,
14
+ * AZ1: p99 = 125ms
15
+ * AZ2: p99 = 130ms
16
+ * AZ3: p99 = 250ms
17
+ *
18
+ * These values will be compared using the provided outlier detection algorithm. This
19
+ * option is not compatible with the STATIC outlier detection algorithm.
20
+ */
21
+ VALUE = "VALUE"
22
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LatencyOutlierMetricAggregation = void 0;
4
+ /**
5
+ * The latency metric aggregation to use for latency outlier detection
6
+ */
7
+ var LatencyOutlierMetricAggregation;
8
+ (function (LatencyOutlierMetricAggregation) {
9
+ /**
10
+ * This option will use the count of the number of requests exceeding
11
+ * a latency threshold to make an outlier comparison. This option works
12
+ * with all outlier detection algorithms
13
+ */
14
+ LatencyOutlierMetricAggregation["COUNT"] = "COUNT";
15
+ /**
16
+ * This option will use the value of your provided latency statistic, like
17
+ * p99, and the value of the latency in each AZ will be compared. For example,
18
+ * AZ1: p99 = 125ms
19
+ * AZ2: p99 = 130ms
20
+ * AZ3: p99 = 250ms
21
+ *
22
+ * These values will be compared using the provided outlier detection algorithm. This
23
+ * option is not compatible with the STATIC outlier detection algorithm.
24
+ */
25
+ LatencyOutlierMetricAggregation["VALUE"] = "VALUE";
26
+ })(LatencyOutlierMetricAggregation || (exports.LatencyOutlierMetricAggregation = LatencyOutlierMetricAggregation = {}));
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGF0ZW5jeU91dGxpZXJNZXRyaWNBZ2dyZWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vdXRsaWVyLWRldGVjdGlvbi9MYXRlbmN5T3V0bGllck1ldHJpY0FnZ3JlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsSUFBWSwrQkFtQlg7QUFuQkQsV0FBWSwrQkFBK0I7SUFDdkM7Ozs7T0FJRztJQUNILGtEQUFlLENBQUE7SUFFZjs7Ozs7Ozs7O09BU0c7SUFDSCxrREFBZSxDQUFBO0FBQ25CLENBQUMsRUFuQlcsK0JBQStCLCtDQUEvQiwrQkFBK0IsUUFtQjFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgbGF0ZW5jeSBtZXRyaWMgYWdncmVnYXRpb24gdG8gdXNlIGZvciBsYXRlbmN5IG91dGxpZXIgZGV0ZWN0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIExhdGVuY3lPdXRsaWVyTWV0cmljQWdncmVnYXRpb24ge1xuICAgIC8qKlxuICAgICAqIFRoaXMgb3B0aW9uIHdpbGwgdXNlIHRoZSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHJlcXVlc3RzIGV4Y2VlZGluZ1xuICAgICAqIGEgbGF0ZW5jeSB0aHJlc2hvbGQgdG8gbWFrZSBhbiBvdXRsaWVyIGNvbXBhcmlzb24uIFRoaXMgb3B0aW9uIHdvcmtzXG4gICAgICogd2l0aCBhbGwgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtc1xuICAgICAqL1xuICAgIENPVU5UID0gXCJDT1VOVFwiLFxuXG4gICAgLyoqXG4gICAgICogVGhpcyBvcHRpb24gd2lsbCB1c2UgdGhlIHZhbHVlIG9mIHlvdXIgcHJvdmlkZWQgbGF0ZW5jeSBzdGF0aXN0aWMsIGxpa2VcbiAgICAgKiBwOTksIGFuZCB0aGUgdmFsdWUgb2YgdGhlIGxhdGVuY3kgaW4gZWFjaCBBWiB3aWxsIGJlIGNvbXBhcmVkLiBGb3IgZXhhbXBsZSxcbiAgICAgKiBBWjE6IHA5OSA9IDEyNW1zXG4gICAgICogQVoyOiBwOTkgPSAxMzBtc1xuICAgICAqIEFaMzogcDk5ID0gMjUwbXNcbiAgICAgKiBcbiAgICAgKiBUaGVzZSB2YWx1ZXMgd2lsbCBiZSBjb21wYXJlZCB1c2luZyB0aGUgcHJvdmlkZWQgb3V0bGllciBkZXRlY3Rpb24gYWxnb3JpdGhtLiBUaGlzXG4gICAgICogb3B0aW9uIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIFNUQVRJQyBvdXRsaWVyIGRldGVjdGlvbiBhbGdvcml0aG0uXG4gICAgICovXG4gICAgVkFMVUUgPSBcIlZBTFVFXCJcbn0iXX0=
@@ -10,6 +10,7 @@ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
10
10
  const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
11
11
  const aws_logs_1 = require("aws-cdk-lib/aws-logs");
12
12
  const constructs_1 = require("constructs");
13
+ const MetricsHelper_1 = require("../utilities/MetricsHelper");
13
14
  class OutlierDetectionFunction extends constructs_1.Construct {
14
15
  constructor(scope, id, props) {
15
16
  super(scope, id);
@@ -47,12 +48,12 @@ class OutlierDetectionFunction extends constructs_1.Construct {
47
48
  let sciPyLayer = new aws_lambda_1.LayerVersion(this, 'SciPyLayer', {
48
49
  code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/scipy-layer.zip')),
49
50
  compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
50
- compatibleRuntimes: [aws_lambda_1.Runtime.PYTHON_3_12],
51
+ compatibleRuntimes: [MetricsHelper_1.MetricsHelper.PythonRuntime],
51
52
  });
52
53
  let monitoringLayer = new aws_lambda_1.LayerVersion(this, 'MonitoringLayer', {
53
54
  code: aws_lambda_1.Code.fromAsset(path.join(__dirname, '../monitoring/src/monitoring-layer.zip')),
54
55
  compatibleArchitectures: [aws_lambda_1.Architecture.ARM_64],
55
- compatibleRuntimes: [aws_lambda_1.Runtime.PYTHON_3_12],
56
+ compatibleRuntimes: [MetricsHelper_1.MetricsHelper.PythonRuntime],
56
57
  });
57
58
  if (props.vpc !== undefined && props.vpc != null) {
58
59
  let sg = new aws_ec2_1.SecurityGroup(this, 'OutlierDetectionSecurityGroup', {
@@ -61,7 +62,7 @@ class OutlierDetectionFunction extends constructs_1.Construct {
61
62
  allowAllOutbound: true,
62
63
  });
63
64
  this.function = new aws_lambda_1.Function(this, 'OutlierDetection', {
64
- runtime: aws_lambda_1.Runtime.PYTHON_3_12,
65
+ runtime: MetricsHelper_1.MetricsHelper.PythonRuntime,
65
66
  code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/outlier-detection.zip')),
66
67
  handler: 'index.handler',
67
68
  role: executionRole,
@@ -81,7 +82,7 @@ class OutlierDetectionFunction extends constructs_1.Construct {
81
82
  }
82
83
  else {
83
84
  this.function = new aws_lambda_1.Function(this, 'OutlierDetection', {
84
- runtime: aws_lambda_1.Runtime.PYTHON_3_12,
85
+ runtime: MetricsHelper_1.MetricsHelper.PythonRuntime,
85
86
  code: aws_lambda_1.Code.fromAsset(path.join(__dirname, 'src/outlier-detection.zip')),
86
87
  handler: 'index.handler',
87
88
  role: executionRole,
@@ -102,7 +103,7 @@ class OutlierDetectionFunction extends constructs_1.Construct {
102
103
  this.function.addPermission('invokePermission', {
103
104
  action: 'lambda:InvokeFunction',
104
105
  principal: new aws_iam_1.ServicePrincipal('lambda.datasource.cloudwatch.amazonaws.com'),
105
- sourceAccount: aws_cdk_lib_1.Fn.ref('AWS::AccountId'),
106
+ sourceAccount: aws_cdk_lib_1.Aws.ACCOUNT_ID
106
107
  });
107
108
  this.logGroup = new aws_logs_1.LogGroup(this, 'logGroup', {
108
109
  logGroupName: `/aws/lambda/${this.function.functionName}`,
@@ -123,4 +124,4 @@ class OutlierDetectionFunction extends constructs_1.Construct {
123
124
  }
124
125
  }
125
126
  exports.OutlierDetectionFunction = OutlierDetectionFunction;
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL291dGxpZXItZGV0ZWN0aW9uL091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZCQUE2QjtBQUM3Qiw2Q0FBcUU7QUFDckUsaURBQW9FO0FBQ3BFLGlEQVE2QjtBQUM3Qix1REFTZ0M7QUFDaEMsbURBQTBFO0FBQzFFLDJDQUF1QztBQUl2QyxNQUFhLHdCQUNYLFNBQVEsc0JBQVM7SUFZakIsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBb0M7UUFFcEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLGlCQUFpQixHQUFtQixJQUFJLHVCQUFhLENBQ3ZELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRTt3QkFDUCx1QkFBdUI7d0JBQ3ZCLDBCQUEwQjt3QkFDMUIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLG9DQUFvQztxQkFDckM7b0JBQ0QsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0g7U0FDRixDQUNGLENBQUM7UUFDRixJQUFJLGVBQWUsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQy9ELElBQUksRUFBRSxxQkFBcUI7WUFDM0IsVUFBVSxFQUFFO2dCQUNWLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsMEJBQTBCLEVBQUUsMEJBQTBCLENBQUM7b0JBQ2pFLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxhQUFhLEdBQVUsSUFBSSxjQUFJLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUN6RCxTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUN2RCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLGVBQWUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFFSCxJQUFJLFVBQVUsR0FBa0IsSUFBSSx5QkFBWSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDbkUsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHFCQUFxQixDQUFDLENBQUM7WUFDakUsdUJBQXVCLEVBQUUsQ0FBQyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxrQkFBa0IsRUFBRSxDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDO1NBQzFDLENBQUMsQ0FBQztRQUVILElBQUksZUFBZSxHQUFrQixJQUFJLHlCQUFZLENBQ25ELElBQUksRUFDSixpQkFBaUIsRUFDakI7WUFDRSxJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdDQUF3QyxDQUFDLENBQy9EO1lBQ0QsdUJBQXVCLEVBQUUsQ0FBQyx5QkFBWSxDQUFDLE1BQU0sQ0FBQztZQUM5QyxrQkFBa0IsRUFBRSxDQUFDLG9CQUFPLENBQUMsV0FBVyxDQUFDO1NBQzFDLENBQ0YsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqRCxJQUFJLEVBQUUsR0FBbUIsSUFBSSx1QkFBYSxDQUN4QyxJQUFJLEVBQ0osK0JBQStCLEVBQy9CO2dCQUNFLFdBQVcsRUFDVCx5REFBeUQ7Z0JBQzNELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZCxnQkFBZ0IsRUFBRSxJQUFJO2FBQ3ZCLENBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxxQkFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtnQkFDckQsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztnQkFDNUIsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtnQkFDakMsT0FBTyxFQUFFLG9CQUFPLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQztnQkFDckMsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07b0JBQ2xCLFNBQVMsRUFBRSxpQkFBRyxDQUFDLFNBQVM7aUJBQ3pCO2dCQUNELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZCxjQUFjLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLFVBQVUsRUFBRSxLQUFLLENBQUMsZUFBZTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxxQkFBUSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtnQkFDckQsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztnQkFDNUIsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDJCQUEyQixDQUFDLENBQUM7Z0JBQ3ZFLE9BQU8sRUFBRSxlQUFlO2dCQUN4QixJQUFJLEVBQUUsYUFBYTtnQkFDbkIsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtnQkFDakMsT0FBTyxFQUFFLG9CQUFPLENBQUMsTUFBTTtnQkFDdkIsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsVUFBVSxFQUFFLEdBQUc7Z0JBQ2YsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLGVBQWUsQ0FBQztnQkFDckMsV0FBVyxFQUFFO29CQUNYLE1BQU0sRUFBRSxpQkFBRyxDQUFDLE1BQU07b0JBQ2xCLFNBQVMsRUFBRSxpQkFBRyxDQUFDLFNBQVM7aUJBQ3pCO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsdUJBQXVCLEVBQUUsUUFBUSxFQUFFO1lBQzVELG9CQUFvQixFQUFFLENBQUMsdUJBQXVCLENBQUM7U0FDaEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUU7WUFDOUMsTUFBTSxFQUFFLHVCQUF1QjtZQUMvQixTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FDN0IsNENBQTRDLENBQzdDO1lBQ0QsYUFBYSxFQUFFLGdCQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDN0MsWUFBWSxFQUFFLGVBQWUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUU7WUFDekQsU0FBUyxFQUFFLHdCQUFhLENBQUMsUUFBUTtZQUNqQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7WUFDN0MsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDdEQsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztvQkFDcEIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7aUJBQ3ZDLENBQUM7YUFDSDtZQUNELEtBQUssRUFBRSxDQUFDLGFBQWEsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6SkQsNERBeUpDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEF3cywgRHVyYXRpb24sIEZuLCBSZW1vdmFsUG9saWN5LCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVNlY3VyaXR5R3JvdXAsIFNlY3VyaXR5R3JvdXAgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7XG4gIEVmZmVjdCxcbiAgSU1hbmFnZWRQb2xpY3ksXG4gIElSb2xlLFxuICBNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIFJvbGUsXG4gIFNlcnZpY2VQcmluY2lwYWwsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHtcbiAgQXJjaGl0ZWN0dXJlLFxuICBDb2RlLFxuICBGdW5jdGlvbixcbiAgSUZ1bmN0aW9uLFxuICBJTGF5ZXJWZXJzaW9uLFxuICBMYXllclZlcnNpb24sXG4gIFJ1bnRpbWUsXG4gIFRyYWNpbmcsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgSUxvZ0dyb3VwLCBMb2dHcm91cCwgUmV0ZW50aW9uRGF5cyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSU91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiB9IGZyb20gJy4vSU91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbic7XG5pbXBvcnQgeyBPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb25Qcm9wcyB9IGZyb20gJy4vcHJvcHMvT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMnO1xuXG5leHBvcnQgY2xhc3MgT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uXG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSU91dGxpZXJEZXRlY3Rpb25GdW5jdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgei1zY29yZSBmdW5jdGlvblxuICAgKi9cbiAgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB3aGVyZSB0aGUgY2FuYXJ0eSBsb2dzIHdpbGwgYmUgc2VudFxuICAgKi9cbiAgbG9nR3JvdXA6IElMb2dHcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IE91dGxpZXJEZXRlY3Rpb25GdW5jdGlvblByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IHhyYXlNYW5hZ2VkUG9saWN5OiBJTWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgICd4cmF5TWFuYWdlZFBvbGljeScsXG4gICAgICB7XG4gICAgICAgIHBhdGg6ICcvb3V0bGllci1kZXRlY3Rpb24vJyxcbiAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAneHJheTpQdXRUcmFjZVNlZ21lbnRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6UHV0VGVsZW1ldHJ5UmVjb3JkcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nUnVsZXMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1RhcmdldHMnLFxuICAgICAgICAgICAgICAneHJheTpHZXRTYW1wbGluZ1N0YXRpc3RpY1N1bW1hcmllcycsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICApO1xuICAgIGxldCBjd01hbmFnZWRQb2xpY3kgPSBuZXcgTWFuYWdlZFBvbGljeSh0aGlzLCAnQ1dNYW5hZ2VkUG9saWN5Jywge1xuICAgICAgcGF0aDogJy9vdXRsaWVyLWRldGVjdGlvbi8nLFxuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2Nsb3Vkd2F0Y2g6R2V0TWV0cmljRGF0YScsICdjbG9kdXdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBsZXQgZXhlY3V0aW9uUm9sZTogSVJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnZXhlY3V0aW9uUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2xhbWJkYS5hbWF6b25hd3MuY29tJyksXG4gICAgICBwYXRoOiAnL291dGxpZXItZGV0ZWN0aW9uLycsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFt4cmF5TWFuYWdlZFBvbGljeSwgY3dNYW5hZ2VkUG9saWN5XSxcbiAgICB9KTtcblxuICAgIGxldCBzY2lQeUxheWVyOiBJTGF5ZXJWZXJzaW9uID0gbmV3IExheWVyVmVyc2lvbih0aGlzLCAnU2NpUHlMYXllcicsIHtcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdzcmMvc2NpcHktbGF5ZXIuemlwJykpLFxuICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtBcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgIGNvbXBhdGlibGVSdW50aW1lczogW1J1bnRpbWUuUFlUSE9OXzNfMTJdLFxuICAgIH0pO1xuXG4gICAgbGV0IG1vbml0b3JpbmdMYXllcjogSUxheWVyVmVyc2lvbiA9IG5ldyBMYXllclZlcnNpb24oXG4gICAgICB0aGlzLFxuICAgICAgJ01vbml0b3JpbmdMYXllcicsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KFxuICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9tb25pdG9yaW5nL3NyYy9tb25pdG9yaW5nLWxheWVyLnppcCcpLFxuICAgICAgICApLFxuICAgICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW0FyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgICBjb21wYXRpYmxlUnVudGltZXM6IFtSdW50aW1lLlBZVEhPTl8zXzEyXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy52cGMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy52cGMgIT0gbnVsbCkge1xuICAgICAgbGV0IHNnOiBJU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnT3V0bGllckRldGVjdGlvblNlY3VyaXR5R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQWxsb3cgb3V0bGllciBkZXRlY3Rpb24gZnVuY3Rpb24gdG8gY29tbXVuaWNhdGUgd2l0aCBDVycsXG4gICAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ091dGxpZXJEZXRlY3Rpb24nLCB7XG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuUFlUSE9OXzNfMTIsXG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdzcmMvb3V0bGllci1kZXRlY3Rpb24uemlwJykpLFxuICAgICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICAgIHJvbGU6IGV4ZWN1dGlvblJvbGUsXG4gICAgICAgIGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgICAgdHJhY2luZzogVHJhY2luZy5BQ1RJVkUsXG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoNSksXG4gICAgICAgIG1lbW9yeVNpemU6IDUxMixcbiAgICAgICAgbGF5ZXJzOiBbc2NpUHlMYXllciwgbW9uaXRvcmluZ0xheWVyXSxcbiAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBSRUdJT046IEF3cy5SRUdJT04sXG4gICAgICAgICAgUEFSVElUSU9OOiBBd3MuUEFSVElUSU9OLFxuICAgICAgICB9LFxuICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IFtzZ10sXG4gICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnN1Ym5ldFNlbGVjdGlvbixcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdPdXRsaWVyRGV0ZWN0aW9uJywge1xuICAgICAgICBydW50aW1lOiBSdW50aW1lLlBZVEhPTl8zXzEyLFxuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnc3JjL291dGxpZXItZGV0ZWN0aW9uLnppcCcpKSxcbiAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICByb2xlOiBleGVjdXRpb25Sb2xlLFxuICAgICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICAgIHRyYWNpbmc6IFRyYWNpbmcuQUNUSVZFLFxuICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgICBtZW1vcnlTaXplOiA1MTIsXG4gICAgICAgIGxheWVyczogW3NjaVB5TGF5ZXIsIG1vbml0b3JpbmdMYXllcl0sXG4gICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgUkVHSU9OOiBBd3MuUkVHSU9OLFxuICAgICAgICAgIFBBUlRJVElPTjogQXdzLlBBUlRJVElPTixcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIFRhZ3Mub2YodGhpcy5mdW5jdGlvbikuYWRkKCdjbG91ZHdhdGNoOmRhdGFzb3VyY2UnLCAnY3VzdG9tJywge1xuICAgICAgaW5jbHVkZVJlc291cmNlVHlwZXM6IFsnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJ10sXG4gICAgfSk7XG5cbiAgICB0aGlzLmZ1bmN0aW9uLmFkZFBlcm1pc3Npb24oJ2ludm9rZVBlcm1pc3Npb24nLCB7XG4gICAgICBhY3Rpb246ICdsYW1iZGE6SW52b2tlRnVuY3Rpb24nLFxuICAgICAgcHJpbmNpcGFsOiBuZXcgU2VydmljZVByaW5jaXBhbChcbiAgICAgICAgJ2xhbWJkYS5kYXRhc291cmNlLmNsb3Vkd2F0Y2guYW1hem9uYXdzLmNvbScsXG4gICAgICApLFxuICAgICAgc291cmNlQWNjb3VudDogRm4ucmVmKCdBV1M6OkFjY291bnRJZCcpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IG5ldyBMb2dHcm91cCh0aGlzLCAnbG9nR3JvdXAnLCB7XG4gICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke3RoaXMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lfWAsXG4gICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG5cbiAgICBuZXcgTWFuYWdlZFBvbGljeSh0aGlzLCAnY3dMb2dzTWFuYWdlZFBvbGljeScsIHtcbiAgICAgIHBhdGg6ICcvb3V0bGllci1kZXRlY3Rpb24vJyxcbiAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogWydsb2dzOkNyZWF0ZUxvZ1N0cmVhbScsICdsb2dzOlB1dExvZ0V2ZW50cyddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogW3RoaXMubG9nR3JvdXAubG9nR3JvdXBBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgICByb2xlczogW2V4ZWN1dGlvblJvbGVdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL291dGxpZXItZGV0ZWN0aW9uL091dGxpZXJEZXRlY3Rpb25GdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBQ3RDLDZCQUE2QjtBQUM3Qiw2Q0FBaUU7QUFDakUsaURBQW9FO0FBQ3BFLGlEQVE2QjtBQUM3Qix1REFRZ0M7QUFDaEMsbURBQTBFO0FBQzFFLDJDQUF1QztBQUd2Qyw4REFBMkQ7QUFFM0QsTUFBYSx3QkFDWCxTQUFRLHNCQUFTO0lBWWpCLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQW9DO1FBRXBDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxpQkFBaUIsR0FBbUIsSUFBSSx1QkFBYSxDQUN2RCxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CO1lBQ0UsSUFBSSxFQUFFLHFCQUFxQjtZQUMzQixVQUFVLEVBQUU7Z0JBQ1YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AsdUJBQXVCO3dCQUN2QiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixvQ0FBb0M7cUJBQ3JDO29CQUNELE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7b0JBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztpQkFDakIsQ0FBQzthQUNIO1NBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxlQUFlLEdBQUcsSUFBSSx1QkFBYSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMvRCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixDQUFDO29CQUNqRSxNQUFNLEVBQUUsZ0JBQU0s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LHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLHNCQUFzQixFQUFFLG1CQUFtQixDQUFDO29CQUN0RCxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztpQkFDdkMsQ0FBQzthQUNIO1lBQ0QsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQXpKRCw0REF5SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgQXdzLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQge1xuICBFZmZlY3QsXG4gIElNYW5hZ2VkUG9saWN5LFxuICBJUm9sZSxcbiAgTWFuYWdlZFBvbGljeSxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7XG4gIEFyY2hpdGVjdHVyZSxcbiAgQ29kZSxcbiAgRnVuY3Rpb24sXG4gIElGdW5jdGlvbixcbiAgSUxheWVyVmVyc2lvbixcbiAgTGF5ZXJWZXJzaW9uLFxuICBUcmFjaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24gfSBmcm9tICcuL0lPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb24nO1xuaW1wb3J0IHsgT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMgfSBmcm9tICcuL3Byb3BzL091dGxpZXJEZXRlY3Rpb25GdW5jdGlvblByb3BzJztcbmltcG9ydCB7IE1ldHJpY3NIZWxwZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvTWV0cmljc0hlbHBlcic7XG5cbmV4cG9ydCBjbGFzcyBPdXRsaWVyRGV0ZWN0aW9uRnVuY3Rpb25cbiAgZXh0ZW5kcyBDb25zdHJ1Y3RcbiAgaW1wbGVtZW50cyBJT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB6LXNjb3JlIGZ1bmN0aW9uXG4gICAqL1xuICBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHdoZXJlIHRoZSBjYW5hcnR5IGxvZ3Mgd2lsbCBiZSBzZW50XG4gICAqL1xuICBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogT3V0bGllckRldGVjdGlvbkZ1bmN0aW9uUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBsZXQgeHJheU1hbmFnZWRQb2xpY3k6IElNYW5hZ2VkUG9saWN5ID0gbmV3IE1hbmFnZWRQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgJ3hyYXlNYW5hZ2VkUG9saWN5JyxcbiAgICAgIHtcbiAgICAgICAgcGF0aDogJy9vdXRsaWVyLWRldGVjdGlvbi8nLFxuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICd4cmF5OlB1dFRyYWNlU2VnbWVudHMnLFxuICAgICAgICAgICAgICAneHJheTpQdXRUZWxlbWV0cnlSZWNvcmRzJyxcbiAgICAgICAgICAgICAgJ3hyYXk6R2V0U2FtcGxpbmdSdWxlcycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nVGFyZ2V0cycsXG4gICAgICAgICAgICAgICd4cmF5OkdldFNhbXBsaW5nU3RhdGlzdGljU3VtbWFyaWVzJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICk7XG4gICAgbGV0IGN3TWFuYWdlZFBvbGljeSA9IG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdDV01hbmFnZWRQb2xpY3knLCB7XG4gICAgICBwYXRoOiAnL291dGxpZXItZGV0ZWN0aW9uLycsXG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnY2xvdWR3YXRjaDpHZXRNZXRyaWNEYXRhJywgJ2Nsb2R1d2F0Y2g6UHV0TWV0cmljRGF0YSddLFxuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGxldCBleGVjdXRpb25Sb2xlOiBJUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdleGVjdXRpb25Sb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSxcbiAgICAgIHBhdGg6ICcvb3V0bGllci1kZXRlY3Rpb24vJyxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW3hyYXlNYW5hZ2VkUG9saWN5LCBjd01hbmFnZWRQb2xpY3ldLFxuICAgIH0pO1xuXG4gICAgbGV0IHNjaVB5TGF5ZXI6IElMYXllclZlcnNpb24gPSBuZXcgTGF5ZXJWZXJzaW9uKHRoaXMsICdTY2lQeUxheWVyJywge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9zY2lweS1sYXllci56aXAnKSksXG4gICAgICBjb21wYXRpYmxlQXJjaGl0ZWN0dXJlczogW0FyY2hpdGVjdHVyZS5BUk1fNjRdLFxuICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbTWV0cmljc0hlbHBlci5QeXRob25SdW50aW1lXSxcbiAgICB9KTtcblxuICAgIGxldCBtb25pdG9yaW5nTGF5ZXI6IElMYXllclZlcnNpb24gPSBuZXcgTGF5ZXJWZXJzaW9uKFxuICAgICAgdGhpcyxcbiAgICAgICdNb25pdG9yaW5nTGF5ZXInLFxuICAgICAge1xuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChcbiAgICAgICAgICBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbW9uaXRvcmluZy9zcmMvbW9uaXRvcmluZy1sYXllci56aXAnKSxcbiAgICAgICAgKSxcbiAgICAgICAgY29tcGF0aWJsZUFyY2hpdGVjdHVyZXM6IFtBcmNoaXRlY3R1cmUuQVJNXzY0XSxcbiAgICAgICAgY29tcGF0aWJsZVJ1bnRpbWVzOiBbTWV0cmljc0hlbHBlci5QeXRob25SdW50aW1lXSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy52cGMgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy52cGMgIT0gbnVsbCkge1xuICAgICAgbGV0IHNnOiBJU2VjdXJpdHlHcm91cCA9IG5ldyBTZWN1cml0eUdyb3VwKFxuICAgICAgICB0aGlzLFxuICAgICAgICAnT3V0bGllckRldGVjdGlvblNlY3VyaXR5R3JvdXAnLFxuICAgICAgICB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQWxsb3cgb3V0bGllciBkZXRlY3Rpb24gZnVuY3Rpb24gdG8gY29tbXVuaWNhdGUgd2l0aCBDVycsXG4gICAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ091dGxpZXJEZXRlY3Rpb24nLCB7XG4gICAgICAgIHJ1bnRpbWU6IE1ldHJpY3NIZWxwZXIuUHl0aG9uUnVudGltZSxcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9vdXRsaWVyLWRldGVjdGlvbi56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBsYXllcnM6IFtzY2lQeUxheWVyLCBtb25pdG9yaW5nTGF5ZXJdLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFJFR0lPTjogQXdzLlJFR0lPTixcbiAgICAgICAgICBQQVJUSVRJT046IEF3cy5QQVJUSVRJT04sXG4gICAgICAgIH0sXG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW3NnXSxcbiAgICAgICAgdnBjU3VibmV0czogcHJvcHMuc3VibmV0U2VsZWN0aW9uLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ091dGxpZXJEZXRlY3Rpb24nLCB7XG4gICAgICAgIHJ1bnRpbWU6IE1ldHJpY3NIZWxwZXIuUHl0aG9uUnVudGltZSxcbiAgICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJ3NyYy9vdXRsaWVyLWRldGVjdGlvbi56aXAnKSksXG4gICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgcm9sZTogZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgYXJjaGl0ZWN0dXJlOiBBcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgICB0cmFjaW5nOiBUcmFjaW5nLkFDVElWRSxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgICAgbWVtb3J5U2l6ZTogNTEyLFxuICAgICAgICBsYXllcnM6IFtzY2lQeUxheWVyLCBtb25pdG9yaW5nTGF5ZXJdLFxuICAgICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAgIFJFR0lPTjogQXdzLlJFR0lPTixcbiAgICAgICAgICBQQVJUSVRJT046IEF3cy5QQVJUSVRJT04sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBUYWdzLm9mKHRoaXMuZnVuY3Rpb24pLmFkZCgnY2xvdWR3YXRjaDpkYXRhc291cmNlJywgJ2N1c3RvbScsIHtcbiAgICAgIGluY2x1ZGVSZXNvdXJjZVR5cGVzOiBbJ0FXUzo6TGFtYmRhOjpGdW5jdGlvbiddLFxuICAgIH0pO1xuXG4gICAgdGhpcy5mdW5jdGlvbi5hZGRQZXJtaXNzaW9uKCdpbnZva2VQZXJtaXNzaW9uJywge1xuICAgICAgYWN0aW9uOiAnbGFtYmRhOkludm9rZUZ1bmN0aW9uJyxcbiAgICAgIHByaW5jaXBhbDogbmV3IFNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgICdsYW1iZGEuZGF0YXNvdXJjZS5jbG91ZHdhdGNoLmFtYXpvbmF3cy5jb20nLFxuICAgICAgKSxcbiAgICAgIHNvdXJjZUFjY291bnQ6IEF3cy5BQ0NPVU5UX0lEXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvZ0dyb3VwID0gbmV3IExvZ0dyb3VwKHRoaXMsICdsb2dHcm91cCcsIHtcbiAgICAgIGxvZ0dyb3VwTmFtZTogYC9hd3MvbGFtYmRhLyR7dGhpcy5mdW5jdGlvbi5mdW5jdGlvbk5hbWV9YCxcbiAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfV0VFSyxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICB9KTtcblxuICAgIG5ldyBNYW5hZ2VkUG9saWN5KHRoaXMsICdjd0xvZ3NNYW5hZ2VkUG9saWN5Jywge1xuICAgICAgcGF0aDogJy9vdXRsaWVyLWRldGVjdGlvbi8nLFxuICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJywgJ2xvZ3M6UHV0TG9nRXZlbnRzJ10sXG4gICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5sb2dHcm91cC5sb2dHcm91cEFybl0sXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICAgIHJvbGVzOiBbZXhlY3V0aW9uUm9sZV0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The options for calculating if a NAT Gateway is an outlier for packet loss
3
+ */
4
+ export declare enum PacketLossOutlierAlgorithm {
5
+ /**
6
+ * This will take the availability threshold and calculate if one AZ is responsible
7
+ * for that percentage of packet loss.
8
+ */
9
+ STATIC = "STATIC"
10
+ }
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PacketLossOutlierAlgorithm = void 0;
4
+ /**
5
+ * The options for calculating if a NAT Gateway is an outlier for packet loss
6
+ */
7
+ var PacketLossOutlierAlgorithm;
8
+ (function (PacketLossOutlierAlgorithm) {
9
+ /**
10
+ * This will take the availability threshold and calculate if one AZ is responsible
11
+ * for that percentage of packet loss.
12
+ */
13
+ PacketLossOutlierAlgorithm["STATIC"] = "STATIC";
14
+ })(PacketLossOutlierAlgorithm || (exports.PacketLossOutlierAlgorithm = PacketLossOutlierAlgorithm = {}));
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2V0TG9zc091dGxpZXJBbGdvcml0aG0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3V0bGllci1kZXRlY3Rpb24vUGFja2V0TG9zc091dGxpZXJBbGdvcml0aG0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFZLDBCQU1YO0FBTkQsV0FBWSwwQkFBMEI7SUFDbEM7OztPQUdHO0lBQ0gsK0NBQWlCLENBQUE7QUFDckIsQ0FBQyxFQU5XLDBCQUEwQiwwQ0FBMUIsMEJBQTBCLFFBTXJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGUgb3B0aW9ucyBmb3IgY2FsY3VsYXRpbmcgaWYgYSBOQVQgR2F0ZXdheSBpcyBhbiBvdXRsaWVyIGZvciBwYWNrZXQgbG9zc1xuICovXG5leHBvcnQgZW51bSBQYWNrZXRMb3NzT3V0bGllckFsZ29yaXRobSB7XG4gICAgLyoqXG4gICAgICogVGhpcyB3aWxsIHRha2UgdGhlIGF2YWlsYWJpbGl0eSB0aHJlc2hvbGQgYW5kIGNhbGN1bGF0ZSBpZiBvbmUgQVogaXMgcmVzcG9uc2libGVcbiAgICAgKiBmb3IgdGhhdCBwZXJjZW50YWdlIG9mIHBhY2tldCBsb3NzLlxuICAgICAqL1xuICAgIFNUQVRJQyA9IFwiU1RBVElDXCJcbn0iXX0=
@@ -1,5 +1,6 @@
1
1
  import { ICanaryMetrics } from './ICanaryMetrics';
2
- import { IOperationMetricDetails } from './IOperationMetricDetails';
2
+ import { IOperationAvailabilityMetricDetails } from './IOperationAvailabilityMetricDetails';
3
+ import { IOperationLatencyMetricDetails } from './IOperationLatencyMetricDetails';
3
4
  import { CanaryMetricProps } from './props/CanaryMetricProps';
4
5
  /**
5
6
  * Represents metrics for a canary testing a service
@@ -8,10 +9,10 @@ export declare class CanaryMetrics implements ICanaryMetrics {
8
9
  /**
9
10
  * The canary availability metric details
10
11
  */
11
- readonly canaryAvailabilityMetricDetails: IOperationMetricDetails;
12
+ readonly canaryAvailabilityMetricDetails: IOperationAvailabilityMetricDetails;
12
13
  /**
13
14
  * The canary latency metric details
14
15
  */
15
- readonly canaryLatencyMetricDetails: IOperationMetricDetails;
16
+ readonly canaryLatencyMetricDetails: IOperationLatencyMetricDetails;
16
17
  constructor(props: CanaryMetricProps);
17
18
  }