@rio-cloud/cdk-v2-constructs 4.13.1 → 4.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/.jsii +7478 -3329
  2. package/CHANGELOG.md +21 -0
  3. package/lib/datadog/datadog-log-index-monitoring.d.ts +2 -2
  4. package/lib/datadog/datadog-log-index-monitoring.js +1 -1
  5. package/lib/datadogv2/datadog-dashboard.d.ts +28 -0
  6. package/lib/datadogv2/datadog-dashboard.js +31 -0
  7. package/lib/datadogv2/datadog-log-index-monitoring.d.ts +61 -0
  8. package/lib/datadogv2/datadog-log-index-monitoring.js +115 -0
  9. package/lib/datadogv2/datadog-monitor.d.ts +234 -0
  10. package/lib/datadogv2/datadog-monitor.js +134 -0
  11. package/lib/datadogv2/datadog-notification.d.ts +100 -0
  12. package/lib/datadogv2/datadog-notification.js +94 -0
  13. package/lib/datadogv2/index.d.ts +4 -0
  14. package/lib/datadogv2/index.js +17 -0
  15. package/lib/fargate/datadog.js +2 -2
  16. package/lib/fargate/index.d.ts +1 -0
  17. package/lib/fargate/index.js +14 -0
  18. package/lib/fargate/rio-fargate-service.d.ts +18 -18
  19. package/lib/fargate/rio-fargate-service.js +1 -1
  20. package/lib/index.d.ts +7 -13
  21. package/lib/index.js +8 -14
  22. package/lib/kafka/kafka-topic.d.ts +5 -5
  23. package/lib/kafka/kafka-topic.js +1 -1
  24. package/lib/kafka/rio-kafka-event-source.d.ts +1 -1
  25. package/lib/kafka/rio-kafka-event-source.js +1 -1
  26. package/lib/pipeline/rio-backup-secrets-restore-stage.d.ts +1 -1
  27. package/lib/pipeline/rio-backup-secrets-restore-stage.js +1 -1
  28. package/lib/pipeline/rio-bitbucket-source-action.d.ts +1 -1
  29. package/lib/pipeline/rio-bitbucket-source-action.js +1 -1
  30. package/lib/rio-landing-zone.d.ts +6 -0
  31. package/lib/rio-landing-zone.js +19 -1
  32. package/lib/watchful/alb.d.ts +2 -2
  33. package/lib/watchful/alb.js +1 -1
  34. package/lib/watchful/aspect.d.ts +6 -6
  35. package/lib/watchful/aspect.js +12 -7
  36. package/lib/watchful/cloudfront.d.ts +2 -2
  37. package/lib/watchful/cloudfront.js +1 -1
  38. package/lib/watchful/datadog-log-alarm.d.ts +1 -0
  39. package/lib/watchful/datadog-log-alarm.js +1 -1
  40. package/lib/watchful/docdb.d.ts +4 -4
  41. package/lib/watchful/docdb.js +1 -1
  42. package/lib/watchful/dynamodb.d.ts +5 -5
  43. package/lib/watchful/dynamodb.js +1 -1
  44. package/lib/watchful/ecs.d.ts +2 -2
  45. package/lib/watchful/ecs.js +1 -1
  46. package/lib/watchful/index.d.ts +13 -0
  47. package/lib/watchful/index.js +26 -0
  48. package/lib/watchful/lambda.d.ts +3 -3
  49. package/lib/watchful/lambda.js +2 -1
  50. package/lib/watchful/metric-alarm.d.ts +16 -16
  51. package/lib/watchful/metric-alarm.js +1 -1
  52. package/lib/watchful/rds.d.ts +2 -2
  53. package/lib/watchful/rds.js +1 -1
  54. package/lib/watchful/targetgroup.d.ts +2 -2
  55. package/lib/watchful/targetgroup.js +1 -1
  56. package/lib/watchful/watchful.d.ts +52 -48
  57. package/lib/watchful/watchful.js +104 -98
  58. package/lib/watchfulv2/datadog-log-alarm.d.ts +37 -0
  59. package/lib/watchfulv2/datadog-log-alarm.js +61 -0
  60. package/lib/watchfulv2/datadog-metric-alarm.d.ts +29 -0
  61. package/lib/watchfulv2/datadog-metric-alarm.js +132 -0
  62. package/lib/watchfulv2/index.d.ts +1 -0
  63. package/lib/watchfulv2/index.js +14 -0
  64. package/lib/watchfulv2/watchful.d.ts +53 -0
  65. package/lib/watchfulv2/watchful.js +76 -0
  66. package/package.json +18 -8
  67. package/version.json +1 -1
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDogMetricAlarm = void 0;
4
+ const cdk = require("aws-cdk-lib");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const constructs_1 = require("constructs");
7
+ const datadogv2_1 = require("../datadogv2");
8
+ const upperToLower_1 = require("../watchful/upperToLower");
9
+ /**
10
+ * A wrapper for a custom resource that creates a DataDog Monitor.
11
+ *
12
+ * To use this construct, the DataDog integration needs to be installed.
13
+ */
14
+ class DataDogMetricAlarm extends constructs_1.Construct {
15
+ constructor(scope, id, props) {
16
+ super(scope, id);
17
+ new datadogv2_1.DatadogMonitor(this, 'ErrorMonitorMetricAlert', {
18
+ serviceName: props.serviceName,
19
+ name: `${this.node.scope?.node.id} ${id}`,
20
+ monitorType: datadogv2_1.DatadogMonitorQueryAlertType.QUERY_ALERT,
21
+ query: this.alarmToDataDogQuery(props),
22
+ message: this.getMessage(props),
23
+ notification: props.notification,
24
+ });
25
+ }
26
+ getMessage(props) {
27
+ return `
28
+ {{#is_alert}}
29
+ ${props.alarmDescription}
30
+ {{/is_alert}}
31
+
32
+ {{#is_alert_recovery}}
33
+ ${props.alarmDescription} is back to normal.
34
+ {{/is_alert_recovery}}`;
35
+ }
36
+ /**
37
+ * Helper function to convert a generic alarm into a DataDog query string.
38
+ */
39
+ alarmToDataDogQuery(alarm) {
40
+ let unit;
41
+ let totalPeriod;
42
+ if (alarm.metric.period.toSeconds() < 60) {
43
+ totalPeriod = alarm.metric.period.toSeconds() * alarm.evaluationPeriods;
44
+ unit = 's';
45
+ }
46
+ else if (alarm.metric.period.toMinutes() < 1440) {
47
+ totalPeriod = alarm.metric.period.toMinutes() * alarm.evaluationPeriods;
48
+ unit = 'm';
49
+ }
50
+ else {
51
+ totalPeriod = alarm.metric.period.toDays() * alarm.evaluationPeriods;
52
+ unit = 'd';
53
+ }
54
+ // avg(last_15m):max:aws.fargate.cpu.percent{ecs_container_name:$ServiceName$} > 95
55
+ const namespace = alarm.metric.namespace.toLocaleLowerCase().replace('/', '.');
56
+ let metricName = alarm.metric.metricName;
57
+ // Special case for ALB / TargetGroup metrics
58
+ switch (metricName) {
59
+ case 'HTTPCode_ELB_5XX_Count':
60
+ metricName = 'HTTPCode_ELB_5XX';
61
+ break;
62
+ case 'HTTPCode_Target_5XX_Count':
63
+ metricName = 'HTTPCode_Target_5XX';
64
+ break;
65
+ }
66
+ if (!metricName.includes('_')) {
67
+ metricName = metricName.replace(/([a-z])([A-Z])/g, '$1_$2');
68
+ }
69
+ metricName = metricName.toLocaleLowerCase();
70
+ const metric = `${namespace}.${metricName}`;
71
+ // statistics must be lowerCase and probably also converted (see allowed values in cw.Metric)
72
+ let comparisonOperator = 'not supported';
73
+ switch (alarm.comparisonOperator) {
74
+ case cdk.aws_cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD:
75
+ comparisonOperator = '>=';
76
+ break;
77
+ case cdk.aws_cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD:
78
+ comparisonOperator = '>';
79
+ break;
80
+ case cdk.aws_cloudwatch.ComparisonOperator.LESS_THAN_OR_EQUAL_TO_THRESHOLD:
81
+ comparisonOperator = '<=';
82
+ break;
83
+ case cdk.aws_cloudwatch.ComparisonOperator.LESS_THAN_THRESHOLD:
84
+ comparisonOperator = '<';
85
+ break;
86
+ }
87
+ let alarmStatistic = 'not supported';
88
+ switch (alarm.metric.statistic) {
89
+ case cdk.aws_cloudwatch.Statistic.AVERAGE:
90
+ alarmStatistic = 'avg';
91
+ break;
92
+ case cdk.aws_cloudwatch.Statistic.MAXIMUM:
93
+ alarmStatistic = 'max';
94
+ break;
95
+ case cdk.aws_cloudwatch.Statistic.MINIMUM:
96
+ alarmStatistic = 'min';
97
+ break;
98
+ case cdk.aws_cloudwatch.Statistic.SAMPLE_COUNT:
99
+ break;
100
+ case cdk.aws_cloudwatch.Statistic.SUM:
101
+ alarmStatistic = 'sum';
102
+ break;
103
+ default:
104
+ alarmStatistic = 'avg';
105
+ break;
106
+ }
107
+ let dimensions = `account_id:${aws_cdk_lib_1.Stack.of(this).account}`;
108
+ if (alarm.metric.dimensions) {
109
+ for (const key in alarm.metric.dimensions) {
110
+ const upperToLowerCr = new aws_cdk_lib_1.CustomResource(this, `${key}UpperToLower`, {
111
+ resourceType: 'Custom::UpperToLower',
112
+ serviceToken: upperToLower_1.UpperToLower.getOrCreate(this).provider.serviceToken,
113
+ properties: {
114
+ Upper: alarm.metric.dimensions[key],
115
+ },
116
+ });
117
+ const value = upperToLowerCr.getAtt('Lower');
118
+ dimensions += `,${key.toLocaleLowerCase()}:${value}`;
119
+ }
120
+ }
121
+ switch (alarm.treatMissingData) {
122
+ case cdk.aws_cloudwatch.TreatMissingData.NOT_BREACHING:
123
+ return `${alarmStatistic}(last_${totalPeriod}${unit}):default_zero(${alarmStatistic}:${metric}{${dimensions}}) ${comparisonOperator} ${alarm.threshold}`;
124
+ case cdk.aws_cloudwatch.TreatMissingData.BREACHING:
125
+ case cdk.aws_cloudwatch.TreatMissingData.IGNORE:
126
+ default:
127
+ return `${alarmStatistic}(last_${totalPeriod}${unit}):${alarmStatistic}:${metric}{${dimensions}} ${comparisonOperator} ${alarm.threshold}`;
128
+ }
129
+ }
130
+ }
131
+ exports.DataDogMetricAlarm = DataDogMetricAlarm;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1tZXRyaWMtYWxhcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi9kYXRhZG9nLW1ldHJpYy1hbGFybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsNkNBQW9EO0FBQ3BELDJDQUF1QztBQUN2Qyw0Q0FBMkY7QUFFM0YsMkRBQXdEO0FBbUJ4RDs7OztHQUlHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQUUvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCO1FBQ3RFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSwwQkFBYyxDQUFDLElBQUksRUFDckIseUJBQXlCLEVBQ3pCO1lBQ0UsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQ3pDLFdBQVcsRUFBRSx3Q0FBNEIsQ0FBQyxXQUFXO1lBQ3JELEtBQUssRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUMvQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0lBRVAsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUE4QjtRQUMvQyxPQUFPOztFQUVULEtBQUssQ0FBQyxnQkFBZ0I7Ozs7RUFJdEIsS0FBSyxDQUFDLGdCQUFnQjt1QkFDRCxDQUFDO0lBQ3RCLENBQUM7SUFFRDs7T0FFRztJQUNILG1CQUFtQixDQUFDLEtBQXVCO1FBQ3pDLElBQUksSUFBWSxDQUFDO1FBQ2pCLElBQUksV0FBbUIsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMs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Y0FBYyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQztZQUNuRCxLQUFLLEdBQUcsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1lBQ2hEO2dCQUNFLE9BQU8sR0FBRyxjQUFjLFNBQVMsV0FBVyxHQUFHLElBQUksS0FBSyxjQUFjLElBQUksTUFBTSxJQUFJLFVBQVUsS0FBSyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDOUk7SUFDSCxDQUFDO0NBQ0Y7QUFsSUQsZ0RBa0lDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGF0YWRvZ01vbml0b3IsIERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUsIElOb3RpZmljYXRpb24gfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgTWV0cmljQWxhcm1Qcm9wcyB9IGZyb20gJy4uL3dhdGNoZnVsL21ldHJpYy1hbGFybSc7XG5pbXBvcnQgeyBVcHBlclRvTG93ZXIgfSBmcm9tICcuLi93YXRjaGZ1bC91cHBlclRvTG93ZXInO1xuXG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBEYXRhRG9nTW9uaXRvciBpbXBsZW1lbnRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEYXRhRG9nTWV0cmljQWxhcm1Qcm9wcyBleHRlbmRzIE1ldHJpY0FsYXJtUHJvcHMge1xuXG4gIC8qKlxuICAgICAqIFRoZSBzZXJ2aWNlIG5hbWUgdXNlZCB0byBuYW1lIGFuZCB0YWcgdGhlIG1vbml0b3JzLlxuICAgICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIERhdGFEb2cncyBPcHNHZW5pZSBpbnRlZ3JhdGlvbi4gVXNlZCB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBPcHNHZW5pZSBhbGFybXMgZm9yIHRoZSBjcmVhdGVkIERhdGFEb2cgTW9uaXRvci5cbiAgICAgKi9cbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uPzogSU5vdGlmaWNhdGlvbjtcbn1cblxuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGEgY3VzdG9tIHJlc291cmNlIHRoYXQgY3JlYXRlcyBhIERhdGFEb2cgTW9uaXRvci5cbiAqXG4gKiBUbyB1c2UgdGhpcyBjb25zdHJ1Y3QsIHRoZSBEYXRhRG9nIGludGVncmF0aW9uIG5lZWRzIHRvIGJlIGluc3RhbGxlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFEb2dNZXRyaWNBbGFybSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFEb2dNZXRyaWNBbGFybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBEYXRhZG9nTW9uaXRvcih0aGlzLFxuICAgICAgJ0Vycm9yTW9uaXRvck1ldHJpY0FsZXJ0JyxcbiAgICAgIHtcbiAgICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICBuYW1lOiBgJHt0aGlzLm5vZGUuc2NvcGU/Lm5vZGUuaWR9ICR7aWR9YCxcbiAgICAgICAgbW9uaXRvclR5cGU6IERhdGFkb2dNb25pdG9yUXVlcnlBbGVydFR5cGUuUVVFUllfQUxFUlQsXG4gICAgICAgIHF1ZXJ5OiB0aGlzLmFsYXJtVG9EYXRhRG9nUXVlcnkocHJvcHMpLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmdldE1lc3NhZ2UocHJvcHMpLFxuICAgICAgICBub3RpZmljYXRpb246IHByb3BzLm5vdGlmaWNhdGlvbixcbiAgICAgIH0pO1xuXG4gIH1cblxuICBwcml2YXRlIGdldE1lc3NhZ2UocHJvcHM6IERhdGFEb2dNZXRyaWNBbGFybVByb3BzKSB7XG4gICAgcmV0dXJuIGBcbnt7I2lzX2FsZXJ0fX1cbiR7cHJvcHMuYWxhcm1EZXNjcmlwdGlvbn1cbnt7L2lzX2FsZXJ0fX0gXG5cbnt7I2lzX2FsZXJ0X3JlY292ZXJ5fX1cbiR7cHJvcHMuYWxhcm1EZXNjcmlwdGlvbn0gaXMgYmFjayB0byBub3JtYWwuXG57ey9pc19hbGVydF9yZWNvdmVyeX19YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY29udmVydCBhIGdlbmVyaWMgYWxhcm0gaW50byBhIERhdGFEb2cgcXVlcnkgc3RyaW5nLlxuICAgKi9cbiAgYWxhcm1Ub0RhdGFEb2dRdWVyeShhbGFybTogTWV0cmljQWxhcm1Qcm9wcyk6IHN0cmluZyB7XG4gICAgbGV0IHVuaXQ6IHN0cmluZztcbiAgICBsZXQgdG90YWxQZXJpb2Q6IG51bWJlcjtcbiAgICBpZiAoYWxhcm0ubWV0cmljLnBlcmlvZC50b1NlY29uZHMoKSA8IDYwKSB7XG4gICAgICB0b3RhbFBlcmlvZCA9IGFsYXJtLm1ldHJpYy5wZXJpb2QudG9TZWNvbmRzKCkgKiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICAgIHVuaXQgPSAncyc7XG4gICAgfSBlbHNlIGlmIChhbGFybS5tZXRyaWMucGVyaW9kLnRvTWludXRlcygpIDwgMTQ0MCkge1xuICAgICAgdG90YWxQZXJpb2QgPSBhbGFybS5tZXRyaWMucGVyaW9kLnRvTWludXRlcygpICogYWxhcm0uZXZhbHVhdGlvblBlcmlvZHM7XG4gICAgICB1bml0ID0gJ20nO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b3RhbFBlcmlvZCA9IGFsYXJtLm1ldHJpYy5wZXJpb2QudG9EYXlzKCkgKiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcztcbiAgICAgIHVuaXQgPSAnZCc7XG4gICAgfVxuXG4gICAgLy8gYXZnKGxhc3RfMTVtKTptYXg6YXdzLmZhcmdhdGUuY3B1LnBlcmNlbnR7ZWNzX2NvbnRhaW5lcl9uYW1lOiRTZXJ2aWNlTmFtZSR9ID4gOTVcbiAgICBjb25zdCBuYW1lc3BhY2UgPSBhbGFybS5tZXRyaWMubmFtZXNwYWNlLnRvTG9jYWxlTG93ZXJDYXNlKCkucmVwbGFjZSgnLycsICcuJyk7XG5cbiAgICBsZXQgbWV0cmljTmFtZSA9IGFsYXJtLm1ldHJpYy5tZXRyaWNOYW1lO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBBTEIgLyBUYXJnZXRHcm91cCBtZXRyaWNzXG4gICAgc3dpdGNoIChtZXRyaWNOYW1lKSB7XG4gICAgICBjYXNlICdIVFRQQ29kZV9FTEJfNVhYX0NvdW50JzpcbiAgICAgICAgbWV0cmljTmFtZSA9ICdIVFRQQ29kZV9FTEJfNVhYJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIVFRQQ29kZV9UYXJnZXRfNVhYX0NvdW50JzpcbiAgICAgICAgbWV0cmljTmFtZSA9ICdIVFRQQ29kZV9UYXJnZXRfNVhYJztcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmICghbWV0cmljTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICBtZXRyaWNOYW1lID0gbWV0cmljTmFtZS5yZXBsYWNlKC8oW2Etel0pKFtBLVpdKS9nLCAnJDFfJDInKTtcbiAgICB9XG4gICAgbWV0cmljTmFtZSA9IG1ldHJpY05hbWUudG9Mb2NhbGVMb3dlckNhc2UoKTtcblxuICAgIGNvbnN0IG1ldHJpYyA9IGAke25hbWVzcGFjZX0uJHttZXRyaWNOYW1lfWA7XG5cbiAgICAvLyBzdGF0aXN0aWNzIG11c3QgYmUgbG93ZXJDYXNlIGFuZCBwcm9iYWJseSBhbHNvIGNvbnZlcnRlZCAoc2VlIGFsbG93ZWQgdmFsdWVzIGluIGN3Lk1ldHJpYylcbiAgICBsZXQgY29tcGFyaXNvbk9wZXJhdG9yID0gJ25vdCBzdXBwb3J0ZWQnO1xuICAgIHN3aXRjaCAoYWxhcm0uY29tcGFyaXNvbk9wZXJhdG9yKSB7XG4gICAgICBjYXNlIGNkay5hd3NfY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRDpcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yID0gJz49JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIGNkay5hd3NfY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX1RIUkVTSE9MRDpcbiAgICAgICAgY29tcGFyaXNvbk9wZXJhdG9yID0gJz4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xEOlxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3IgPSAnPD0nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLkNvbXBhcmlzb25PcGVyYXRvci5MRVNTX1RIQU5fVEhSRVNIT0xEOlxuICAgICAgICBjb21wYXJpc29uT3BlcmF0b3IgPSAnPCc7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGxldCBhbGFybVN0YXRpc3RpYyA9ICdub3Qgc3VwcG9ydGVkJztcbiAgICBzd2l0Y2ggKGFsYXJtLm1ldHJpYy5zdGF0aXN0aWMpIHtcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5BVkVSQUdFOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdhdmcnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5NQVhJTVVNOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdtYXgnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5NSU5JTVVNOlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdtaW4nO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlN0YXRpc3RpYy5TQU1QTEVfQ09VTlQ6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guU3RhdGlzdGljLlNVTTpcbiAgICAgICAgYWxhcm1TdGF0aXN0aWMgPSAnc3VtJztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhbGFybVN0YXRpc3RpYyA9ICdhdmcnO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBsZXQgZGltZW5zaW9ucyA9IGBhY2NvdW50X2lkOiR7U3RhY2sub2YodGhpcykuYWNjb3VudH1gO1xuXG4gICAgaWYgKGFsYXJtLm1ldHJpYy5kaW1lbnNpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBhbGFybS5tZXRyaWMuZGltZW5zaW9ucykge1xuICAgICAgICBjb25zdCB1cHBlclRvTG93ZXJDciA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCBgJHtrZXl9VXBwZXJUb0xvd2VyYCwge1xuICAgICAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6VXBwZXJUb0xvd2VyJyxcbiAgICAgICAgICBzZXJ2aWNlVG9rZW46IFVwcGVyVG9Mb3dlci5nZXRPckNyZWF0ZSh0aGlzKS5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgVXBwZXI6IGFsYXJtLm1ldHJpYy5kaW1lbnNpb25zW2tleV0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdXBwZXJUb0xvd2VyQ3IuZ2V0QXR0KCdMb3dlcicpO1xuICAgICAgICBkaW1lbnNpb25zICs9IGAsJHtrZXkudG9Mb2NhbGVMb3dlckNhc2UoKX06JHt2YWx1ZX1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN3aXRjaCAoYWxhcm0udHJlYXRNaXNzaW5nRGF0YSkge1xuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5OT1RfQlJFQUNISU5HOlxuICAgICAgICByZXR1cm4gYCR7YWxhcm1TdGF0aXN0aWN9KGxhc3RfJHt0b3RhbFBlcmlvZH0ke3VuaXR9KTpkZWZhdWx0X3plcm8oJHthbGFybVN0YXRpc3RpY306JHttZXRyaWN9eyR7ZGltZW5zaW9uc319KSAke2NvbXBhcmlzb25PcGVyYXRvcn0gJHthbGFybS50aHJlc2hvbGR9YDtcbiAgICAgIGNhc2UgY2RrLmF3c19jbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuQlJFQUNISU5HOlxuICAgICAgY2FzZSBjZGsuYXdzX2Nsb3Vkd2F0Y2guVHJlYXRNaXNzaW5nRGF0YS5JR05PUkU6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gYCR7YWxhcm1TdGF0aXN0aWN9KGxhc3RfJHt0b3RhbFBlcmlvZH0ke3VuaXR9KToke2FsYXJtU3RhdGlzdGljfToke21ldHJpY317JHtkaW1lbnNpb25zfX0gJHtjb21wYXJpc29uT3BlcmF0b3J9ICR7YWxhcm0udGhyZXNob2xkfWA7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from './watchful';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./watchful"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3dhdGNoZnVsJzsiXX0=
@@ -0,0 +1,53 @@
1
+ import { Construct } from 'constructs';
2
+ import { INotification } from '../datadogv2';
3
+ import { MetricAlarmProps, AbstractWatchful } from '../watchful';
4
+ import { LogAlarmProps } from './datadog-log-alarm';
5
+ /**
6
+ * Properties for defining Watchful
7
+ */
8
+ export interface WatchfulProps {
9
+ /**
10
+ * The service name.
11
+ *
12
+ * @defaultValue The stack name.
13
+ */
14
+ readonly serviceName?: string;
15
+ /**
16
+ * Set the way how monitors should notify in case of an alert.
17
+ *
18
+ * @defaultValue {@link DefaultSlackNotification}
19
+ */
20
+ readonly notification?: INotification;
21
+ }
22
+ /**
23
+ * A construct to watch given scope or resources. Opinionated DataDog alarms are automatically created for watched resources.
24
+ *
25
+ * Usage with non-default notification:
26
+ * ```ts
27
+ * const dw = new watchfulv2.Watchful(this, 'Watchful', {
28
+ * serviceName: props.serviceName,
29
+ * notification: new datadogv2.SlackNotification({channel: 'team-alert-channel'})
30
+ * });
31
+ * dw.watchScope(this);
32
+ *```
33
+ */
34
+ export declare class Watchful extends AbstractWatchful {
35
+ private readonly notification;
36
+ private readonly serviceName;
37
+ constructor(scope: Construct, id: string, props?: WatchfulProps);
38
+ /**
39
+ * Adds the alarmTopic as alarm action to the given alarm.
40
+ *
41
+ * @param alarm - The watchful to add those resources to
42
+ */
43
+ createAlarm(scope: Construct, id: string, alarm: MetricAlarmProps): void;
44
+ /**
45
+ * Adds an alert for error logs
46
+ * @param scope
47
+ */
48
+ createLogAlarm(scope: Construct, id: string, alarm: LogAlarmProps): void;
49
+ /**
50
+ * Watches the given scope and adds alarms for known resources.
51
+ */
52
+ watchScope(scope: Construct): void;
53
+ }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Watchful = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const datadogv2_1 = require("../datadogv2");
8
+ const watchful_1 = require("../watchful");
9
+ const datadog_log_alarm_1 = require("./datadog-log-alarm");
10
+ const datadog_metric_alarm_1 = require("./datadog-metric-alarm");
11
+ /**
12
+ * A construct to watch given scope or resources. Opinionated DataDog alarms are automatically created for watched resources.
13
+ *
14
+ * Usage with non-default notification:
15
+ * ```ts
16
+ * const dw = new watchfulv2.Watchful(this, 'Watchful', {
17
+ * serviceName: props.serviceName,
18
+ * notification: new datadogv2.SlackNotification({channel: 'team-alert-channel'})
19
+ * });
20
+ * dw.watchScope(this);
21
+ *```
22
+ */
23
+ class Watchful extends watchful_1.AbstractWatchful {
24
+ constructor(scope, id, props = {}) {
25
+ super(scope, id);
26
+ this.serviceName = props.serviceName ?? aws_cdk_lib_1.Stack.of(this).stackName;
27
+ this.notification = props.notification ?? new datadogv2_1.DefaultSlackNotification();
28
+ }
29
+ /**
30
+ * Adds the alarmTopic as alarm action to the given alarm.
31
+ *
32
+ * @param alarm - The watchful to add those resources to
33
+ */
34
+ createAlarm(scope, id, alarm) {
35
+ new datadog_metric_alarm_1.DataDogMetricAlarm(scope, id, {
36
+ serviceName: this.serviceName,
37
+ notification: this.notification,
38
+ alarmDescription: alarm.alarmDescription,
39
+ comparisonOperator: alarm.comparisonOperator,
40
+ evaluationPeriods: alarm.evaluationPeriods,
41
+ metric: alarm.metric,
42
+ threshold: alarm.threshold,
43
+ treatMissingData: alarm.treatMissingData,
44
+ });
45
+ }
46
+ /**
47
+ * Adds an alert for error logs
48
+ * @param scope
49
+ */
50
+ createLogAlarm(scope, id, alarm) {
51
+ new datadog_log_alarm_1.DataDogLogAlarm(scope, id, {
52
+ serviceName: alarm.lambdaCloudwatchGroupName ?? this.serviceName,
53
+ autoCloseOpsGenieAlerts: alarm.autoCloseOpsGenieAlerts,
54
+ period: alarm.period,
55
+ unitOfPeriod: alarm.unitOfPeriod,
56
+ periodOperator: alarm.periodOperator,
57
+ statistic: alarm.statistic,
58
+ queryFilters: alarm.queryFilters,
59
+ alarmDescription: alarm.alarmDescription,
60
+ threshold: alarm.threshold,
61
+ priority: alarm.priority,
62
+ index: alarm.index,
63
+ });
64
+ }
65
+ /**
66
+ * Watches the given scope and adds alarms for known resources.
67
+ */
68
+ watchScope(scope) {
69
+ const aspect = new watchful_1.WatchfulAspect(this);
70
+ aws_cdk_lib_1.Aspects.of(scope).add(aspect);
71
+ }
72
+ }
73
+ exports.Watchful = Watchful;
74
+ _a = JSII_RTTI_SYMBOL_1;
75
+ Watchful[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.watchfulv2.Watchful", version: "0.0.0" };
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0Y2hmdWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2F0Y2hmdWx2Mi93YXRjaGZ1bC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUU3Qyw0Q0FBdUU7QUFDdkUsMENBQWlGO0FBQ2pGLDJEQUFxRTtBQUNyRSxpRUFBNEQ7QUFxQjVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsMkJBQWdCO0lBSTVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBdUIsRUFBRTtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsSUFBSSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFakUsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLElBQUksb0NBQXdCLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUN0RSxJQUFJLHlDQUFrQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDaEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGNBQWMsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUV0RSxJQUFJLG1DQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM3QixXQUFXLEVBQUUsS0FBSyxDQUFDLHlCQUF5QixJQUFJLElBQUksQ0FBQyxXQUFXO1lBQ2hFLHVCQUF1QixFQUFFLEtBQUssQ0FBQyx1QkFBdUI7WUFDdEQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWM7WUFDcEMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxLQUFnQjtRQUNoQyxNQUFNLE1BQU0sR0FBRyxJQUFJLHlCQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEMscUJBQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O0FBeERILDRCQXlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzcGVjdHMsIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBEZWZhdWx0U2xhY2tOb3RpZmljYXRpb24sIElOb3RpZmljYXRpb24gfSBmcm9tICcuLi9kYXRhZG9ndjInO1xuaW1wb3J0IHsgV2F0Y2hmdWxBc3BlY3QsIE1ldHJpY0FsYXJtUHJvcHMsIEFic3RyYWN0V2F0Y2hmdWwgfSBmcm9tICcuLi93YXRjaGZ1bCc7XG5pbXBvcnQgeyBEYXRhRG9nTG9nQWxhcm0sIExvZ0FsYXJtUHJvcHMgfSBmcm9tICcuL2RhdGFkb2ctbG9nLWFsYXJtJztcbmltcG9ydCB7IERhdGFEb2dNZXRyaWNBbGFybSB9IGZyb20gJy4vZGF0YWRvZy1tZXRyaWMtYWxhcm0nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIFdhdGNoZnVsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hmdWxQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFRoZSBzdGFjayBuYW1lLlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgd2F5IGhvdyBtb25pdG9ycyBzaG91bGQgbm90aWZ5IGluIGNhc2Ugb2YgYW4gYWxlcnQuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUge0BsaW5rIERlZmF1bHRTbGFja05vdGlmaWNhdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmaWNhdGlvbj86IElOb3RpZmljYXRpb247XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdG8gd2F0Y2ggZ2l2ZW4gc2NvcGUgb3IgcmVzb3VyY2VzLiBPcGluaW9uYXRlZCBEYXRhRG9nIGFsYXJtcyBhcmUgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB3YXRjaGVkIHJlc291cmNlcy5cbiAqXG4gKiBVc2FnZSB3aXRoIG5vbi1kZWZhdWx0IG5vdGlmaWNhdGlvbjpcbiAqIGBgYHRzXG4gKiBjb25zdCBkdyA9IG5ldyB3YXRjaGZ1bHYyLldhdGNoZnVsKHRoaXMsICdXYXRjaGZ1bCcsIHtcbiAqICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICogICBub3RpZmljYXRpb246IG5ldyBkYXRhZG9ndjIuU2xhY2tOb3RpZmljYXRpb24oe2NoYW5uZWw6ICd0ZWFtLWFsZXJ0LWNoYW5uZWwnfSlcbiAqIH0pO1xuICogZHcud2F0Y2hTY29wZSh0aGlzKTtcbiAqYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBXYXRjaGZ1bCBleHRlbmRzIEFic3RyYWN0V2F0Y2hmdWwge1xuICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvbjogSU5vdGlmaWNhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXYXRjaGZ1bFByb3BzID0ge30pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZSA/PyBTdGFjay5vZih0aGlzKS5zdGFja05hbWU7XG5cbiAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IHByb3BzLm5vdGlmaWNhdGlvbiA/PyBuZXcgRGVmYXVsdFNsYWNrTm90aWZpY2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyB0aGUgYWxhcm1Ub3BpYyBhcyBhbGFybSBhY3Rpb24gdG8gdGhlIGdpdmVuIGFsYXJtLlxuICAgKlxuICAgKiBAcGFyYW0gYWxhcm0gLSBUaGUgd2F0Y2hmdWwgdG8gYWRkIHRob3NlIHJlc291cmNlcyB0b1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFsYXJtKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGFsYXJtOiBNZXRyaWNBbGFybVByb3BzKTogdm9pZCB7XG4gICAgbmV3IERhdGFEb2dNZXRyaWNBbGFybShzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiB0aGlzLnNlcnZpY2VOYW1lLFxuICAgICAgbm90aWZpY2F0aW9uOiB0aGlzLm5vdGlmaWNhdGlvbixcbiAgICAgIGFsYXJtRGVzY3JpcHRpb246IGFsYXJtLmFsYXJtRGVzY3JpcHRpb24sXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IGFsYXJtLmNvbXBhcmlzb25PcGVyYXRvcixcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBhbGFybS5ldmFsdWF0aW9uUGVyaW9kcyxcbiAgICAgIG1ldHJpYzogYWxhcm0ubWV0cmljLFxuICAgICAgdGhyZXNob2xkOiBhbGFybS50aHJlc2hvbGQsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBhbGFybS50cmVhdE1pc3NpbmdEYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWxlcnQgZm9yIGVycm9yIGxvZ3NcbiAgICogQHBhcmFtIHNjb3BlXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTG9nQWxhcm0oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYWxhcm06IExvZ0FsYXJtUHJvcHMpOnZvaWQge1xuXG4gICAgbmV3IERhdGFEb2dMb2dBbGFybShzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VOYW1lOiBhbGFybS5sYW1iZGFDbG91ZHdhdGNoR3JvdXBOYW1lID8/IHRoaXMuc2VydmljZU5hbWUsXG4gICAgICBhdXRvQ2xvc2VPcHNHZW5pZUFsZXJ0czogYWxhcm0uYXV0b0Nsb3NlT3BzR2VuaWVBbGVydHMsXG4gICAgICBwZXJpb2Q6IGFsYXJtLnBlcmlvZCxcbiAgICAgIHVuaXRPZlBlcmlvZDogYWxhcm0udW5pdE9mUGVyaW9kLCAvLyB0b0RvOiBtb3ZlIHRoYXQgc29tZXdoZXJlIGVsc2UgYW5kIHNldCBkZWZhdWx0cyB0aGVyZT9cbiAgICAgIHBlcmlvZE9wZXJhdG9yOiBhbGFybS5wZXJpb2RPcGVyYXRvcixcbiAgICAgIHN0YXRpc3RpYzogYWxhcm0uc3RhdGlzdGljLFxuICAgICAgcXVlcnlGaWx0ZXJzOiBhbGFybS5xdWVyeUZpbHRlcnMsIC8vIHRvRG86IG1vdmUgdGhhdCBzb21ld2hlcmUgZWxzZSBhbmQgc2V0IGRlZmF1bHRzIHRoZXJlP1xuICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYWxhcm0uYWxhcm1EZXNjcmlwdGlvbixcbiAgICAgIHRocmVzaG9sZDogYWxhcm0udGhyZXNob2xkLFxuICAgICAgcHJpb3JpdHk6IGFsYXJtLnByaW9yaXR5LFxuICAgICAgaW5kZXg6IGFsYXJtLmluZGV4LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFdhdGNoZXMgdGhlIGdpdmVuIHNjb3BlIGFuZCBhZGRzIGFsYXJtcyBmb3Iga25vd24gcmVzb3VyY2VzLlxuICAgKi9cbiAgcHVibGljIHdhdGNoU2NvcGUoc2NvcGU6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IGFzcGVjdCA9IG5ldyBXYXRjaGZ1bEFzcGVjdCh0aGlzKTtcbiAgICBBc3BlY3RzLm9mKHNjb3BlKS5hZGQoYXNwZWN0KTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -15,9 +15,14 @@
15
15
  ],
16
16
  "main": "lib/index.js",
17
17
  "license": "Apache-2.0",
18
- "version": "4.13.1",
18
+ "version": "4.14.0",
19
19
  "types": "lib/index.d.ts",
20
20
  "stability": "stable",
21
+ "exports": {
22
+ ".": "./lib/index.js",
23
+ "./datadogv2": "./lib/datadogv2/index.js",
24
+ "./watchfulv2": "./lib/watchfulv2/index.js"
25
+ },
21
26
  "jsii": {
22
27
  "outdir": "dist",
23
28
  "targets": {},
@@ -47,7 +52,8 @@
47
52
  "release:check-last-commit": "node release-commit-check.js",
48
53
  "release:build": "npm run build && npm run bump",
49
54
  "release:push": "echo '✅ pushing release' && git push origin master --follow-tags",
50
- "release": "npm run release:check-last-commit && npm run release:build"
55
+ "release": "npm run release:check-last-commit && npm run release:build",
56
+ "release:dry-run": "npm run build && npm run release:check && standard-version --dry-run"
51
57
  },
52
58
  "devDependencies": {
53
59
  "@types/jest": "27.4.1",
@@ -55,15 +61,16 @@
55
61
  "@types/node": "17.0.23",
56
62
  "@typescript-eslint/eslint-plugin": "5.18.0",
57
63
  "@typescript-eslint/parser": "5.18.0",
58
- "aws-cdk": "^2.77.0",
59
- "aws-cdk-lib": "^2.77.0",
60
- "constructs": "10.0.107",
64
+ "aws-cdk": "~2.81.0",
65
+ "aws-cdk-lib": "2.81.0",
66
+ "constructs": "10.2.69",
61
67
  "copyfiles": "2.4.1",
62
68
  "esbuild": "0.14.32",
63
69
  "eslint": "8.12.0",
64
70
  "eslint-import-resolver-node": "0.3.6",
65
71
  "eslint-import-resolver-typescript": "2.7.1",
66
72
  "eslint-plugin-import": "2.26.0",
73
+ "eslint-plugin-tsdoc": "^0.2.17",
67
74
  "jest": "~27.5.1 ",
68
75
  "jest-junit": "13.1.0",
69
76
  "jsii": "~1.78.0",
@@ -74,8 +81,8 @@
74
81
  "typescript": "~4.6.4"
75
82
  },
76
83
  "peerDependencies": {
77
- "aws-cdk-lib": "^2.41.0",
78
- "constructs": "^10.0.107"
84
+ "aws-cdk-lib": "~2.81.0",
85
+ "constructs": "^10.2.69"
79
86
  },
80
87
  "dependencies": {
81
88
  "js-yaml": "~4.1.0"
@@ -124,5 +131,8 @@
124
131
  "tsconfig": "tsconfig.dev.json"
125
132
  }
126
133
  }
127
- }
134
+ },
135
+ "bundleDependencies": [
136
+ "js-yaml"
137
+ ]
128
138
  }
package/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.13.1"
2
+ "version": "4.14.0"
3
3
  }