truemark-cdk-lib 0.0.12-alpha.7 → 0.0.13

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 (60) hide show
  1. package/aws-cloudwatch/lib/index.d.ts +0 -1
  2. package/aws-cloudwatch/lib/index.js +1 -2
  3. package/aws-cloudwatch/lib/log-metric-alarm.d.ts +47 -11
  4. package/aws-cloudwatch/lib/log-metric-alarm.js +70 -13
  5. package/aws-cloudwatch/lib/log-metric-filter.d.ts +1 -1
  6. package/aws-cloudwatch/lib/log-metric-filter.js +2 -2
  7. package/aws-codepipeline/index.d.ts +1 -0
  8. package/aws-codepipeline/index.js +14 -0
  9. package/aws-codepipeline/lib/artifact-bucket.d.ts +26 -0
  10. package/aws-codepipeline/lib/artifact-bucket.js +35 -0
  11. package/aws-codepipeline/lib/cdk-pipeline.d.ts +76 -0
  12. package/aws-codepipeline/lib/cdk-pipeline.js +68 -0
  13. package/aws-codepipeline/lib/index.d.ts +3 -0
  14. package/aws-codepipeline/lib/index.js +16 -0
  15. package/aws-codepipeline/lib/pipeline-notification-rule.d.ts +37 -0
  16. package/aws-codepipeline/lib/pipeline-notification-rule.js +55 -0
  17. package/aws-lambda/lib/bundle-python.sh +9 -0
  18. package/aws-lambda/lib/bundled-function.d.ts +4 -5
  19. package/aws-lambda/lib/bundled-function.js +3 -3
  20. package/aws-lambda/lib/deployed-function.d.ts +42 -0
  21. package/aws-lambda/lib/deployed-function.js +28 -0
  22. package/aws-lambda/lib/function-alarms.d.ts +233 -0
  23. package/aws-lambda/lib/function-alarms.js +187 -327
  24. package/aws-lambda/lib/function-deployment.d.ts +121 -0
  25. package/aws-lambda/lib/function-deployment.js +66 -0
  26. package/aws-lambda/lib/index.d.ts +4 -1
  27. package/aws-lambda/lib/index.js +5 -2
  28. package/aws-lambda/lib/observed-function.d.ts +4 -225
  29. package/aws-lambda/lib/observed-function.js +4 -185
  30. package/aws-lambda/lib/python-function.d.ts +3 -3
  31. package/aws-lambda/lib/python-function.js +14 -14
  32. package/aws-monitoring/lib/standard-alarm-actions-strategy.d.ts +6 -0
  33. package/aws-monitoring/lib/standard-alarm-actions-strategy.js +4 -1
  34. package/aws-route53/lib/weighted-latency-a-record.d.ts +11 -10
  35. package/aws-route53/lib/weighted-latency-a-record.js +15 -10
  36. package/aws-sqs/lib/index.d.ts +2 -0
  37. package/aws-sqs/lib/index.js +3 -1
  38. package/aws-sqs/lib/observed-queue-alarms.d.ts +121 -0
  39. package/aws-sqs/lib/observed-queue-alarms.js +134 -0
  40. package/aws-sqs/lib/observed-queue.d.ts +15 -0
  41. package/aws-sqs/lib/observed-queue.js +19 -0
  42. package/aws-sqs/lib/standard-queue.d.ts +33 -87
  43. package/aws-sqs/lib/standard-queue.js +67 -101
  44. package/index.d.ts +1 -0
  45. package/index.js +2 -1
  46. package/package.json +3 -2
  47. package/test/aws-lambda/python-function.test.d.ts +1 -0
  48. package/test/aws-lambda/python-function.test.js +16 -0
  49. package/test/aws-lambda/python-lambda/index.py +9 -0
  50. package/test/aws-lambda/python-lambda/requirements.txt +1 -0
  51. package/test/aws-sqs/observed-queue.test.d.ts +1 -0
  52. package/test/aws-sqs/observed-queue.test.js +13 -0
  53. package/test/aws-sqs/standard-queue.test.d.ts +1 -0
  54. package/test/aws-sqs/standard-queue.test.js +13 -0
  55. package/aws-cloudwatch/lib/extended-alarm.d.ts +0 -27
  56. package/aws-cloudwatch/lib/extended-alarm.js +0 -39
  57. package/aws-lambda/lib/python-function-old.d.ts +0 -0
  58. package/aws-lambda/lib/python-function-old.js +0 -197
  59. package/aws-lambda/lib/standard-function.d.ts +0 -0
  60. package/aws-lambda/lib/standard-function.js +0 -227
@@ -1,3 +1,2 @@
1
- export * from './extended-alarm';
2
1
  export * from './log-metric-filter';
3
2
  export * from './log-metric-alarm';
@@ -10,7 +10,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./extended-alarm"), exports);
14
13
  __exportStar(require("./log-metric-filter"), exports);
15
14
  __exportStar(require("./log-metric-alarm"), exports);
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxtREFBaUM7QUFDakMsc0RBQW9DO0FBQ3BDLHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXh0ZW5kZWQtYWxhcm0nO1xuZXhwb3J0ICogZnJvbSAnLi9sb2ctbWV0cmljLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xvZy1tZXRyaWMtYWxhcm0nO1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0M7QUFDcEMscURBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9sb2ctbWV0cmljLWZpbHRlcic7XG5leHBvcnQgKiBmcm9tICcuL2xvZy1tZXRyaWMtYWxhcm0nO1xuIl19
@@ -1,9 +1,11 @@
1
- import { Metric } from "aws-cdk-lib/aws-cloudwatch";
1
+ import { Alarm, Metric } from "aws-cdk-lib/aws-cloudwatch";
2
2
  import { Construct } from "constructs";
3
3
  import { LogMetricFilter, LogMetricFilterProps } from "./log-metric-filter";
4
- import { Duration } from "aws-cdk-lib";
4
+ import { Duration, RemovalPolicy, ResourceEnvironment, Stack } from "aws-cdk-lib";
5
5
  import { ComparisonOperator, TreatMissingData } from "aws-cdk-lib/aws-cloudwatch/lib/alarm";
6
- import { ExtendedAlarm } from "./extended-alarm";
6
+ import { IAlarm } from "aws-cdk-lib/aws-cloudwatch/lib/alarm-base";
7
+ import { ITopic } from "aws-cdk-lib/aws-sns";
8
+ import { IAlarmAction } from "aws-cdk-lib/aws-cloudwatch/lib/alarm-action";
7
9
  /**
8
10
  * Properties for LogAlarm.
9
11
  */
@@ -41,7 +43,7 @@ export interface LogMetricAlarmProps extends LogMetricFilterProps {
41
43
  /**
42
44
  * The number of periods over which data is compared to the specified threshold.
43
45
  *
44
- * @default 3
46
+ * @default 2
45
47
  */
46
48
  readonly evaluationPeriods?: number;
47
49
  /**
@@ -79,17 +81,51 @@ export interface LogMetricAlarmProps extends LogMetricFilterProps {
79
81
  * CloudWatch alarm that matches patterns on a LogGroup. This class is a higher-level
80
82
  * construct than LogMetricAlarm and will create the filter and metric.
81
83
  */
82
- export declare class LogMetricAlarm extends ExtendedAlarm {
84
+ export declare class LogMetricAlarm extends Construct implements IAlarm {
85
+ readonly filter: LogMetricFilter;
86
+ readonly alarm: Alarm;
87
+ readonly metric: Metric;
88
+ readonly alarmArn: string;
89
+ readonly alarmName: string;
90
+ readonly env: ResourceEnvironment;
91
+ readonly stack: Stack;
92
+ constructor(scope: Construct, id: string, props: LogMetricAlarmProps);
83
93
  /**
84
- * The filter created using the parent scope.
94
+ * Notify SNS topics if the alarm fires.
95
+ *
96
+ * @param topics the topics to notify
85
97
  */
86
- readonly filter: LogMetricFilter;
98
+ addAlarmTopic(...topics: ITopic[]): void;
87
99
  /**
88
- * The metric created from the filter.
100
+ * Notify SNS topics if the alarm returns from breaching a state into an ok state.
101
+ *
102
+ * @param topics the topics to notify
89
103
  */
90
- readonly metric: Metric;
104
+ addOkTopic(...topics: ITopic[]): void;
91
105
  /**
92
- * Creates a new LogAlarm.
106
+ * Notify SNS topics if there is insufficient data to evaluate the alarm.
107
+ *
108
+ * @param topics the topics to notify
93
109
  */
94
- constructor(scope: Construct, id: string, props: LogMetricAlarmProps);
110
+ addInsufficientDataTopic(...topics: ITopic[]): void;
111
+ /**
112
+ * Trigger actions if the alarm fires.
113
+ *
114
+ * @param actions the actions to trigger
115
+ */
116
+ addAlarmAction(...actions: IAlarmAction[]): void;
117
+ /**
118
+ * Trigger actions if there is insufficient data to evaluate the alarm.
119
+ *
120
+ * @param actions the actions to trigger
121
+ */
122
+ addInsufficientDataAction(...actions: IAlarmAction[]): void;
123
+ /**
124
+ * Trigger actions if the alarm returns from breaching a state into an ok state.
125
+ *
126
+ * @param actions the actions to trigger
127
+ */
128
+ addOkAction(...actions: IAlarmAction[]): void;
129
+ applyRemovalPolicy(policy: RemovalPolicy): void;
130
+ renderAlarmRule(): string;
95
131
  }
@@ -1,32 +1,89 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LogMetricAlarm = void 0;
4
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
5
+ const constructs_1 = require("constructs");
4
6
  const log_metric_filter_1 = require("./log-metric-filter");
5
- const extended_alarm_1 = require("./extended-alarm");
7
+ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
6
8
  /**
7
9
  * CloudWatch alarm that matches patterns on a LogGroup. This class is a higher-level
8
10
  * construct than LogMetricAlarm and will create the filter and metric.
9
11
  */
10
- class LogMetricAlarm extends extended_alarm_1.ExtendedAlarm {
11
- /**
12
- * Creates a new LogAlarm.
13
- */
12
+ class LogMetricAlarm extends constructs_1.Construct {
14
13
  constructor(scope, id, props) {
15
14
  var _a, _b, _c;
16
- const filter = new log_metric_filter_1.LogMetricFilter(scope, id + 'Filter', {
15
+ super(scope, id);
16
+ this.filter = new log_metric_filter_1.LogMetricFilter(this, 'Filter', {
17
17
  ...props
18
18
  });
19
- const metric = filter.sumMetric(props.period);
20
- super(scope, id, {
19
+ this.metric = this.filter.sumMetric(props.period);
20
+ this.alarm = new aws_cloudwatch_1.Alarm(this, 'Alarm', {
21
21
  ...props,
22
22
  threshold: (_a = props.threshold) !== null && _a !== void 0 ? _a : 1,
23
- evaluationPeriods: (_b = props.evaluationPeriods) !== null && _b !== void 0 ? _b : 3,
23
+ evaluationPeriods: (_b = props.evaluationPeriods) !== null && _b !== void 0 ? _b : 2,
24
24
  datapointsToAlarm: (_c = props.datapointsToAlarm) !== null && _c !== void 0 ? _c : 1,
25
- metric
25
+ metric: this.metric
26
26
  });
27
- this.filter = filter;
28
- this.metric = metric;
27
+ this.alarmArn = this.alarm.alarmArn;
28
+ this.alarmName = this.alarm.alarmName;
29
+ this.env = this.alarm.env;
30
+ this.stack = this.alarm.stack;
31
+ }
32
+ /**
33
+ * Notify SNS topics if the alarm fires.
34
+ *
35
+ * @param topics the topics to notify
36
+ */
37
+ addAlarmTopic(...topics) {
38
+ this.alarm.addAlarmAction(...topics.map((topic) => new aws_cloudwatch_actions_1.SnsAction(topic)));
39
+ }
40
+ /**
41
+ * Notify SNS topics if the alarm returns from breaching a state into an ok state.
42
+ *
43
+ * @param topics the topics to notify
44
+ */
45
+ addOkTopic(...topics) {
46
+ this.alarm.addOkAction(...topics.map((topic) => new aws_cloudwatch_actions_1.SnsAction(topic)));
47
+ }
48
+ /**
49
+ * Notify SNS topics if there is insufficient data to evaluate the alarm.
50
+ *
51
+ * @param topics the topics to notify
52
+ */
53
+ addInsufficientDataTopic(...topics) {
54
+ this.alarm.addInsufficientDataAction(...topics.map((topic) => new aws_cloudwatch_actions_1.SnsAction(topic)));
55
+ }
56
+ /**
57
+ * Trigger actions if the alarm fires.
58
+ *
59
+ * @param actions the actions to trigger
60
+ */
61
+ addAlarmAction(...actions) {
62
+ return this.alarm.addAlarmAction(...actions);
63
+ }
64
+ /**
65
+ * Trigger actions if there is insufficient data to evaluate the alarm.
66
+ *
67
+ * @param actions the actions to trigger
68
+ */
69
+ addInsufficientDataAction(...actions) {
70
+ return this.alarm.addInsufficientDataAction(...actions);
71
+ }
72
+ /**
73
+ * Trigger actions if the alarm returns from breaching a state into an ok state.
74
+ *
75
+ * @param actions the actions to trigger
76
+ */
77
+ addOkAction(...actions) {
78
+ return this.alarm.addOkAction(...actions);
79
+ }
80
+ // From IAlarm
81
+ applyRemovalPolicy(policy) {
82
+ this.alarm.applyRemovalPolicy(policy);
83
+ }
84
+ renderAlarmRule() {
85
+ return this.alarm.renderAlarmRule();
29
86
  }
30
87
  }
31
88
  exports.LogMetricAlarm = LogMetricAlarm;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLW1ldHJpYy1hbGFybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZy1tZXRyaWMtYWxhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMkRBQTBFO0FBRzFFLHFEQUErQztBQXNGL0M7OztHQUdHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsOEJBQWE7SUFZL0M7O09BRUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCOztRQUVsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLG1DQUFlLENBQUMsS0FBSyxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUU7WUFDdkQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixTQUFTLFFBQUUsS0FBSyxDQUFDLFNBQVMsbUNBQUUsQ0FBQztZQUM3QixpQkFBaUIsUUFBRSxLQUFLLENBQUMsaUJBQWlCLG1DQUFFLENBQUM7WUFDN0MsaUJBQWlCLFFBQUUsS0FBSyxDQUFDLGlCQUFpQixtQ0FBRSxDQUFDO1lBQzdDLE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUFsQ0Qsd0NBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtNZXRyaWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0xvZ01ldHJpY0ZpbHRlciwgTG9nTWV0cmljRmlsdGVyUHJvcHN9IGZyb20gXCIuL2xvZy1tZXRyaWMtZmlsdGVyXCI7XG5pbXBvcnQge0R1cmF0aW9ufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7Q29tcGFyaXNvbk9wZXJhdG9yLCBUcmVhdE1pc3NpbmdEYXRhfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gvbGliL2FsYXJtXCI7XG5pbXBvcnQge0V4dGVuZGVkQWxhcm19IGZyb20gXCIuL2V4dGVuZGVkLWFsYXJtXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTG9nQWxhcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nTWV0cmljQWxhcm1Qcm9wcyBleHRlbmRzIExvZ01ldHJpY0ZpbHRlclByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHBlcmlvZCBvdmVyIHdoaWNoIHN0YXRpc3RpY3MgYXJlIGFwcGxpZWRcbiAgICpcbiAgICogRGVmYXVsdCBpcyA1IG1pbnV0ZXMuXG4gICAqL1xuICByZWFkb25seSBwZXJpb2Q/OiBEdXJhdGlvblxuXG4gIC8vIEJlbG93IGFyZSBmaWVsZHMgZnJvbSBDcmVhdGVBbGFybU9wdGlvbnMgd2hpY2ggd2UgbmVlZCB0byBvdmVycmlkZVxuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhbGFybVxuICAgKlxuICAgKiBAZGVmYXVsdCBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBhbGFybU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgYWxhcm1cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbXBhcmlzb24gdG8gdXNlIHRvIGNoZWNrIGlmIG1ldHJpYyBpcyBicmVhY2hpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgR3JlYXRlclRoYW5PckVxdWFsVG9UaHJlc2hvbGRcbiAgICovXG4gIHJlYWRvbmx5IGNvbXBhcmlzb25PcGVyYXRvcj86IENvbXBhcmlzb25PcGVyYXRvcjtcblxuICAvKipcbiAgICogVGhlIHZhbHVlIGFnYWluc3Qgd2hpY2ggdGhlIHNwZWNpZmllZCBzdGF0aXN0aWMgaXMgY29tcGFyZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IHRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCB0byB0aGUgc3BlY2lmaWVkIHRocmVzaG9sZC5cbiAgICpcbiAgICogQGRlZmF1bHQgM1xuICAgKi9cbiAgcmVhZG9ubHkgZXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRvIGV2YWx1YXRlIHRoZSBkYXRhIGFuZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIGFsYXJtIHN0YXRlIGlmIHRoZXJlIGFyZSB0b28gZmV3IGRhdGEgcG9pbnRzIHRvIGJlIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQuXG4gICAqXG4gICAqIFVzZWQgb25seSBmb3IgYWxhcm1zIHRoYXQgYXJlIGJhc2VkIG9uIHBlcmNlbnRpbGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBjb25maWd1cmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXZhbHVhdGVMb3dTYW1wbGVDb3VudFBlcmNlbnRpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldHMgaG93IHRoaXMgYWxhcm0gaXMgdG8gaGFuZGxlIG1pc3NpbmcgZGF0YSBwb2ludHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFRyZWF0TWlzc2luZ0RhdGEuTWlzc2luZ1xuICAgKi9cbiAgcmVhZG9ubHkgdHJlYXRNaXNzaW5nRGF0YT86IFRyZWF0TWlzc2luZ0RhdGE7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGFjdGlvbnMgZm9yIHRoaXMgYWxhcm0gYXJlIGVuYWJsZWRcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uc0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRhdGFwb2ludHMgdGhhdCBtdXN0IGJlIGJyZWFjaGluZyB0byB0cmlnZ2VyIHRoZSBhbGFybS4gVGhpcyBpcyB1c2VkIG9ubHkgaWYgeW91IGFyZSBzZXR0aW5nIGFuIFwiTVxuICAgKiBvdXQgb2YgTlwiIGFsYXJtLiBJbiB0aGF0IGNhc2UsIHRoaXMgdmFsdWUgaXMgdGhlIE0uIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgRXZhbHVhdGluZyBhbiBBbGFybSBpbiB0aGUgQW1hem9uXG4gICAqIENsb3VkV2F0Y2ggVXNlciBHdWlkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9tb25pdG9yaW5nL0FsYXJtVGhhdFNlbmRzRW1haWwuaHRtbCNhbGFybS1ldmFsdWF0aW9uXG4gICAqL1xuICByZWFkb25seSBkYXRhcG9pbnRzVG9BbGFybT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDbG91ZFdhdGNoIGFsYXJtIHRoYXQgbWF0Y2hlcyBwYXR0ZXJucyBvbiBhIExvZ0dyb3VwLiBUaGlzIGNsYXNzIGlzIGEgaGlnaGVyLWxldmVsXG4gKiBjb25zdHJ1Y3QgdGhhbiBMb2dNZXRyaWNBbGFybSBhbmQgd2lsbCBjcmVhdGUgdGhlIGZpbHRlciBhbmQgbWV0cmljLlxuICovXG5leHBvcnQgY2xhc3MgTG9nTWV0cmljQWxhcm0gZXh0ZW5kcyBFeHRlbmRlZEFsYXJtIHtcblxuICAvKipcbiAgICogVGhlIGZpbHRlciBjcmVhdGVkIHVzaW5nIHRoZSBwYXJlbnQgc2NvcGUuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXI6IExvZ01ldHJpY0ZpbHRlcjtcblxuICAvKipcbiAgICogVGhlIG1ldHJpYyBjcmVhdGVkIGZyb20gdGhlIGZpbHRlci5cbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpYzogTWV0cmljXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTG9nQWxhcm0uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTG9nTWV0cmljQWxhcm1Qcm9wcykge1xuXG4gICAgY29uc3QgZmlsdGVyID0gbmV3IExvZ01ldHJpY0ZpbHRlcihzY29wZSwgaWQgKyAnRmlsdGVyJywge1xuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcblxuICAgIGNvbnN0IG1ldHJpYyA9IGZpbHRlci5zdW1NZXRyaWMocHJvcHMucGVyaW9kKTtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0aHJlc2hvbGQ6IHByb3BzLnRocmVzaG9sZD8/MSxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5ldmFsdWF0aW9uUGVyaW9kcz8/MyxcbiAgICAgIGRhdGFwb2ludHNUb0FsYXJtOiBwcm9wcy5kYXRhcG9pbnRzVG9BbGFybT8/MSxcbiAgICAgIG1ldHJpY1xuICAgIH0pO1xuXG4gICAgdGhpcy5maWx0ZXIgPSBmaWx0ZXI7XG4gICAgdGhpcy5tZXRyaWMgPSBtZXRyaWM7XG4gIH1cbn1cbiJdfQ==
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLW1ldHJpYy1hbGFybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImxvZy1tZXRyaWMtYWxhcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0RBQXlEO0FBQ3pELDJDQUFxQztBQUNyQywyREFBMEU7QUFLMUUsK0VBQTZEO0FBdUY3RDs7O0dBR0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxzQkFBUztJQVkzQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCOztRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxtQ0FBZSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDaEQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHNCQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUNwQyxHQUFHLEtBQUs7WUFDUixTQUFTLFFBQUUsS0FBSyxDQUFDLFNBQVMsbUNBQUUsQ0FBQztZQUM3QixpQkFBaUIsUUFBRSxLQUFLLENBQUMsaUJBQWlCLG1DQUFFLENBQUM7WUFDN0MsaUJBQWlCLFFBQUMsS0FBSyxDQUFDLGlCQUFpQixtQ0FBRSxDQUFDO1lBQzVDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtTQUNwQixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsYUFBYSxDQUFDLEdBQUcsTUFBZ0I7UUFDL0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGtDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEdBQUcsTUFBZ0I7UUFDNUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGtDQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsd0JBQXdCLENBQUMsR0FBRyxNQUFnQjtRQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxrQ0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxHQUFHLE9BQXVCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHlCQUF5QixDQUFDLEdBQUcsT0FBdUI7UUFDbEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxXQUFXLENBQUMsR0FBRyxPQUF1QjtRQUNwQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGNBQWM7SUFFZCxrQkFBa0IsQ0FBQyxNQUFxQjtRQUN0QyxJQUFJLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDRjtBQWxHRCx3Q0FrR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FsYXJtLCBNZXRyaWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0xvZ01ldHJpY0ZpbHRlciwgTG9nTWV0cmljRmlsdGVyUHJvcHN9IGZyb20gXCIuL2xvZy1tZXRyaWMtZmlsdGVyXCI7XG5pbXBvcnQge0R1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBSZXNvdXJjZUVudmlyb25tZW50LCBTdGFja30gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0NvbXBhcmlzb25PcGVyYXRvciwgVHJlYXRNaXNzaW5nRGF0YX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoL2xpYi9hbGFybVwiO1xuaW1wb3J0IHtJQWxhcm19IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC9saWIvYWxhcm0tYmFzZVwiO1xuaW1wb3J0IHtJVG9waWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc25zXCI7XG5pbXBvcnQge1Nuc0FjdGlvbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoLWFjdGlvbnNcIjtcbmltcG9ydCB7SUFsYXJtQWN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gvbGliL2FsYXJtLWFjdGlvblwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIExvZ0FsYXJtLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ01ldHJpY0FsYXJtUHJvcHMgZXh0ZW5kcyBMb2dNZXRyaWNGaWx0ZXJQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJpb2Qgb3ZlciB3aGljaCBzdGF0aXN0aWNzIGFyZSBhcHBsaWVkXG4gICAqXG4gICAqIERlZmF1bHQgaXMgNSBtaW51dGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcGVyaW9kPzogRHVyYXRpb25cblxuICAvLyBCZWxvdyBhcmUgZmllbGRzIGZyb20gQ3JlYXRlQWxhcm1PcHRpb25zIHdoaWNoIHdlIG5lZWQgdG8gb3ZlcnJpZGVcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgYWxhcm1cbiAgICpcbiAgICogQGRlZmF1bHQgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxhcm1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBmb3IgdGhlIGFsYXJtXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBhbGFybURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb21wYXJpc29uIHRvIHVzZSB0byBjaGVjayBpZiBtZXRyaWMgaXMgYnJlYWNoaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IEdyZWF0ZXJUaGFuT3JFcXVhbFRvVGhyZXNob2xkXG4gICAqL1xuICByZWFkb25seSBjb21wYXJpc29uT3BlcmF0b3I/OiBDb21wYXJpc29uT3BlcmF0b3I7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBhZ2FpbnN0IHdoaWNoIHRoZSBzcGVjaWZpZWQgc3RhdGlzdGljIGlzIGNvbXBhcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSB0aHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcGVyaW9kcyBvdmVyIHdoaWNoIGRhdGEgaXMgY29tcGFyZWQgdG8gdGhlIHNwZWNpZmllZCB0aHJlc2hvbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IDJcbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0byBldmFsdWF0ZSB0aGUgZGF0YSBhbmQgcG90ZW50aWFsbHkgY2hhbmdlIHRoZSBhbGFybSBzdGF0ZSBpZiB0aGVyZSBhcmUgdG9vIGZldyBkYXRhIHBvaW50cyB0byBiZSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50LlxuICAgKlxuICAgKiBVc2VkIG9ubHkgZm9yIGFsYXJtcyB0aGF0IGFyZSBiYXNlZCBvbiBwZXJjZW50aWxlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRlTG93U2FtcGxlQ291bnRQZXJjZW50aWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXRzIGhvdyB0aGlzIGFsYXJtIGlzIHRvIGhhbmRsZSBtaXNzaW5nIGRhdGEgcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUcmVhdE1pc3NpbmdEYXRhLk1pc3NpbmdcbiAgICovXG4gIHJlYWRvbmx5IHRyZWF0TWlzc2luZ0RhdGE/OiBUcmVhdE1pc3NpbmdEYXRhO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhY3Rpb25zIGZvciB0aGlzIGFsYXJtIGFyZSBlbmFibGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbnNFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkYXRhcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0uIFRoaXMgaXMgdXNlZCBvbmx5IGlmIHlvdSBhcmUgc2V0dGluZyBhbiBcIk1cbiAgICogb3V0IG9mIE5cIiBhbGFybS4gSW4gdGhhdCBjYXNlLCB0aGlzIHZhbHVlIGlzIHRoZSBNLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIEV2YWx1YXRpbmcgYW4gQWxhcm0gaW4gdGhlIEFtYXpvblxuICAgKiBDbG91ZFdhdGNoIFVzZXIgR3VpZGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvbW9uaXRvcmluZy9BbGFybVRoYXRTZW5kc0VtYWlsLmh0bWwjYWxhcm0tZXZhbHVhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YXBvaW50c1RvQWxhcm0/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IG1hdGNoZXMgcGF0dGVybnMgb24gYSBMb2dHcm91cC4gVGhpcyBjbGFzcyBpcyBhIGhpZ2hlci1sZXZlbFxuICogY29uc3RydWN0IHRoYW4gTG9nTWV0cmljQWxhcm0gYW5kIHdpbGwgY3JlYXRlIHRoZSBmaWx0ZXIgYW5kIG1ldHJpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ01ldHJpY0FsYXJtIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUFsYXJtIHtcblxuICByZWFkb25seSBmaWx0ZXI6IExvZ01ldHJpY0ZpbHRlcjtcbiAgcmVhZG9ubHkgYWxhcm06IEFsYXJtO1xuICByZWFkb25seSBtZXRyaWM6IE1ldHJpYztcblxuICAvLyBGcm9tIElBbGFybVxuICByZWFkb25seSBhbGFybUFybjogc3RyaW5nO1xuICByZWFkb25seSBhbGFybU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZW52OiBSZXNvdXJjZUVudmlyb25tZW50O1xuICByZWFkb25seSBzdGFjazogU3RhY2s7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExvZ01ldHJpY0FsYXJtUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5maWx0ZXIgPSBuZXcgTG9nTWV0cmljRmlsdGVyKHRoaXMsICdGaWx0ZXInLCB7XG4gICAgICAuLi5wcm9wc1xuICAgIH0pO1xuXG4gICAgdGhpcy5tZXRyaWMgPSB0aGlzLmZpbHRlci5zdW1NZXRyaWMocHJvcHMucGVyaW9kKTtcblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgQWxhcm0odGhpcywgJ0FsYXJtJywge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0aHJlc2hvbGQ6IHByb3BzLnRocmVzaG9sZD8/MSxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5ldmFsdWF0aW9uUGVyaW9kcz8/MixcbiAgICAgIGRhdGFwb2ludHNUb0FsYXJtOnByb3BzLmRhdGFwb2ludHNUb0FsYXJtPz8xLFxuICAgICAgbWV0cmljOiB0aGlzLm1ldHJpY1xuICAgIH0pO1xuXG4gICAgdGhpcy5hbGFybUFybiA9IHRoaXMuYWxhcm0uYWxhcm1Bcm47XG4gICAgdGhpcy5hbGFybU5hbWUgPSB0aGlzLmFsYXJtLmFsYXJtTmFtZTtcbiAgICB0aGlzLmVudiA9IHRoaXMuYWxhcm0uZW52O1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLmFsYXJtLnN0YWNrO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdGlmeSBTTlMgdG9waWNzIGlmIHRoZSBhbGFybSBmaXJlcy5cbiAgICpcbiAgICogQHBhcmFtIHRvcGljcyB0aGUgdG9waWNzIHRvIG5vdGlmeVxuICAgKi9cbiAgYWRkQWxhcm1Ub3BpYyguLi50b3BpY3M6IElUb3BpY1tdKTogdm9pZCB7XG4gICAgdGhpcy5hbGFybS5hZGRBbGFybUFjdGlvbiguLi50b3BpY3MubWFwKCh0b3BpYykgPT4gbmV3IFNuc0FjdGlvbih0b3BpYykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3RpZnkgU05TIHRvcGljcyBpZiB0aGUgYWxhcm0gcmV0dXJucyBmcm9tIGJyZWFjaGluZyBhIHN0YXRlIGludG8gYW4gb2sgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB0b3BpY3MgdGhlIHRvcGljcyB0byBub3RpZnlcbiAgICovXG4gIGFkZE9rVG9waWMoLi4udG9waWNzOiBJVG9waWNbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm0uYWRkT2tBY3Rpb24oLi4udG9waWNzLm1hcCgodG9waWMpID0+IG5ldyBTbnNBY3Rpb24odG9waWMpKSk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZ5IFNOUyB0b3BpY3MgaWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGRhdGEgdG8gZXZhbHVhdGUgdGhlIGFsYXJtLlxuICAgKlxuICAgKiBAcGFyYW0gdG9waWNzIHRoZSB0b3BpY3MgdG8gbm90aWZ5XG4gICAqL1xuICBhZGRJbnN1ZmZpY2llbnREYXRhVG9waWMoLi4udG9waWNzOiBJVG9waWNbXSk6IHZvaWQge1xuICAgIHRoaXMuYWxhcm0uYWRkSW5zdWZmaWNpZW50RGF0YUFjdGlvbiguLi50b3BpY3MubWFwKCh0b3BpYykgPT4gbmV3IFNuc0FjdGlvbih0b3BpYykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyIGFjdGlvbnMgaWYgdGhlIGFsYXJtIGZpcmVzLlxuICAgKlxuICAgKiBAcGFyYW0gYWN0aW9ucyB0aGUgYWN0aW9ucyB0byB0cmlnZ2VyXG4gICAqL1xuICBhZGRBbGFybUFjdGlvbiguLi5hY3Rpb25zOiBJQWxhcm1BY3Rpb25bXSk6IHZvaWQge1xuICAgIHJldHVybiB0aGlzLmFsYXJtLmFkZEFsYXJtQWN0aW9uKC4uLmFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgYWN0aW9ucyBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgZGF0YSB0byBldmFsdWF0ZSB0aGUgYWxhcm0uXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zIHRoZSBhY3Rpb25zIHRvIHRyaWdnZXJcbiAgICovXG4gIGFkZEluc3VmZmljaWVudERhdGFBY3Rpb24oLi4uYWN0aW9uczogSUFsYXJtQWN0aW9uW10pOiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5hbGFybS5hZGRJbnN1ZmZpY2llbnREYXRhQWN0aW9uKC4uLmFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXIgYWN0aW9ucyBpZiB0aGUgYWxhcm0gcmV0dXJucyBmcm9tIGJyZWFjaGluZyBhIHN0YXRlIGludG8gYW4gb2sgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSBhY3Rpb25zIHRoZSBhY3Rpb25zIHRvIHRyaWdnZXJcbiAgICovXG4gIGFkZE9rQWN0aW9uKC4uLmFjdGlvbnM6IElBbGFybUFjdGlvbltdKTogdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm0uYWRkT2tBY3Rpb24oLi4uYWN0aW9ucyk7XG4gIH1cblxuICAvLyBGcm9tIElBbGFybVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IFJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aGlzLmFsYXJtLmFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3kpO1xuICB9XG5cbiAgcmVuZGVyQWxhcm1SdWxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWxhcm0ucmVuZGVyQWxhcm1SdWxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -9,7 +9,7 @@ export interface LogMetricFilterProps {
9
9
  /**
10
10
  * The namespace of the metric to emit.
11
11
  *
12
- * @default 'AWS/Logs'
12
+ * @default 'TrueMark/Logs'
13
13
  */
14
14
  readonly metricNamespace?: string;
15
15
  /**
@@ -14,7 +14,7 @@ class LogMetricFilter extends aws_logs_1.MetricFilter {
14
14
  var _a;
15
15
  super(scope, id, {
16
16
  ...props,
17
- metricNamespace: (_a = props.metricNamespace) !== null && _a !== void 0 ? _a : 'AWS/Logs',
17
+ metricNamespace: (_a = props.metricNamespace) !== null && _a !== void 0 ? _a : 'TrueMark/Logs',
18
18
  defaultValue: 0,
19
19
  metricValue: '1',
20
20
  filterPattern: {
@@ -35,4 +35,4 @@ class LogMetricFilter extends aws_logs_1.MetricFilter {
35
35
  }
36
36
  }
37
37
  exports.LogMetricFilter = LogMetricFilter;
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLW1ldHJpYy1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2ctbWV0cmljLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBNkQ7QUFDN0QsNkNBQXFDO0FBZ0NyQzs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1QkFBWTtJQUUvQzs7T0FFRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7O1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsZUFBZSxRQUFFLEtBQUssQ0FBQyxlQUFlLG1DQUFFLFVBQVU7WUFDbEQsWUFBWSxFQUFFLENBQUM7WUFDZixXQUFXLEVBQUUsR0FBRztZQUNoQixhQUFhLEVBQUU7Z0JBQ2IsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDaEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUFpQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxFQUFFLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE1QkQsMENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lMb2dHcm91cCwgTWV0cmljRmlsdGVyfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7RHVyYXRpb259IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtNZXRyaWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIExvZ01ldHJpY0ZpbHRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dNZXRyaWNGaWx0ZXJQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1ldHJpYyB0byBlbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnQVdTL0xvZ3MnXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBtZXRyaWMgdG8gZW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhdHRlcm4gdG8gYXBwbHkgdG8gdGhlIGxvZ3MuXG4gICAqL1xuICByZWFkb25seSBwYXR0ZXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gY3JlYXRlIHRoZSBmaWx0ZXIgb24uXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG59XG5cbi8qKlxuICogTWV0cmljRmlsdGVyIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2YgcmVjb3JkcyBtYXRjaGluZyB0aGUgcHJvdmlkZWQgcGF0dGVybi5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ01ldHJpY0ZpbHRlciBleHRlbmRzIE1ldHJpY0ZpbHRlciB7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTG9nTWV0cmljRmlsdGVyXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTG9nTWV0cmljRmlsdGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgbWV0cmljTmFtZXNwYWNlOiBwcm9wcy5tZXRyaWNOYW1lc3BhY2U/PydBV1MvTG9ncycsXG4gICAgICBkZWZhdWx0VmFsdWU6IDAsXG4gICAgICBtZXRyaWNWYWx1ZTogJzEnLFxuICAgICAgZmlsdGVyUGF0dGVybjoge1xuICAgICAgICBsb2dQYXR0ZXJuU3RyaW5nOiBwcm9wcy5wYXR0ZXJuXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3VtIG1ldHJpYyBmb3IgdGhpcyBmaWx0ZXIuXG4gICAqXG4gICAqIEBwYXJhbSBwZXJpb2QgdGhlIHBlcmlvZCBvdmVyIHdoaWNoIHN0YXRpc3RpY3MgYXJlIGFwcGxpZWQgKGRlZmF1bHQgaXMgNSBtaW51dGVzKVxuICAgKi9cbiAgc3VtTWV0cmljKHBlcmlvZD86IER1cmF0aW9uKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIHBlcmlvZDogcGVyaW9kPz9EdXJhdGlvbi5taW51dGVzKDUpXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLW1ldHJpYy1maWx0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2ctbWV0cmljLWZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBNkQ7QUFDN0QsNkNBQXFDO0FBZ0NyQzs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSx1QkFBWTtJQUUvQzs7T0FFRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7O1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsZUFBZSxRQUFFLEtBQUssQ0FBQyxlQUFlLG1DQUFFLGVBQWU7WUFDdkQsWUFBWSxFQUFFLENBQUM7WUFDZixXQUFXLEVBQUUsR0FBRztZQUNoQixhQUFhLEVBQUU7Z0JBQ2IsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDaEM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxNQUFpQjtRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDakIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsTUFBTSxFQUFFLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE1QkQsMENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0lMb2dHcm91cCwgTWV0cmljRmlsdGVyfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7RHVyYXRpb259IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtNZXRyaWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIExvZ01ldHJpY0ZpbHRlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dNZXRyaWNGaWx0ZXJQcm9wcyB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1ldHJpYyB0byBlbWl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnVHJ1ZU1hcmsvTG9ncydcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY05hbWVzcGFjZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG1ldHJpYyB0byBlbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGF0dGVybiB0byBhcHBseSB0byB0aGUgbG9ncy5cbiAgICovXG4gIHJlYWRvbmx5IHBhdHRlcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byBjcmVhdGUgdGhlIGZpbHRlciBvbi5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG5cbn1cblxuLyoqXG4gKiBNZXRyaWNGaWx0ZXIgdGhhdCBjb3VudHMgdGhlIG51bWJlciBvZiByZWNvcmRzIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBwYXR0ZXJuLlxuICovXG5leHBvcnQgY2xhc3MgTG9nTWV0cmljRmlsdGVyIGV4dGVuZHMgTWV0cmljRmlsdGVyIHtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBMb2dNZXRyaWNGaWx0ZXJcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMb2dNZXRyaWNGaWx0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBtZXRyaWNOYW1lc3BhY2U6IHByb3BzLm1ldHJpY05hbWVzcGFjZT8/J1RydWVNYXJrL0xvZ3MnLFxuICAgICAgZGVmYXVsdFZhbHVlOiAwLFxuICAgICAgbWV0cmljVmFsdWU6ICcxJyxcbiAgICAgIGZpbHRlclBhdHRlcm46IHtcbiAgICAgICAgbG9nUGF0dGVyblN0cmluZzogcHJvcHMucGF0dGVyblxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHN1bSBtZXRyaWMgZm9yIHRoaXMgZmlsdGVyLlxuICAgKlxuICAgKiBAcGFyYW0gcGVyaW9kIHRoZSBwZXJpb2Qgb3ZlciB3aGljaCBzdGF0aXN0aWNzIGFyZSBhcHBsaWVkIChkZWZhdWx0IGlzIDUgbWludXRlcylcbiAgICovXG4gIHN1bU1ldHJpYyhwZXJpb2Q/OiBEdXJhdGlvbik6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljKHtcbiAgICAgIHN0YXRpc3RpYzogJ1N1bScsXG4gICAgICBwZXJpb2Q6IHBlcmlvZD8/RHVyYXRpb24ubWludXRlcyg1KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export * from './lib';
@@ -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("./lib"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx3Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { Bucket } from "aws-cdk-lib/aws-s3";
2
+ import { IKey } from "aws-cdk-lib/aws-kms";
3
+ import { Construct } from "constructs";
4
+ /**
5
+ * Properties for ArtifactBucket.
6
+ */
7
+ export interface ArtifactBucketProps {
8
+ /**
9
+ * By default, CDK will create KMS keys for cross account deployments. This
10
+ * can be costly if you have a large number of pipelines. This property
11
+ * allows a common key to be shared across pipelines.
12
+ */
13
+ readonly encryptionKey: IKey;
14
+ /**
15
+ * List of AWS account IDs that should have access to this bucket.
16
+ */
17
+ readonly accountIds: string[];
18
+ }
19
+ /**
20
+ * An S3 bucket for storing artifacts in a pipeline. The created bucket will
21
+ * automatically be destroyed along with its contents when the CDK stack
22
+ * containing it is destroyed. This is not presently the CDK default.
23
+ */
24
+ export declare class ArtifactBucket extends Bucket {
25
+ constructor(scope: Construct, id: string, props: ArtifactBucketProps);
26
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArtifactBucket = void 0;
4
+ const aws_s3_1 = require("aws-cdk-lib/aws-s3");
5
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
6
+ const aws_iam_1 = require("aws-cdk-lib/aws-iam");
7
+ /**
8
+ * An S3 bucket for storing artifacts in a pipeline. The created bucket will
9
+ * automatically be destroyed along with its contents when the CDK stack
10
+ * containing it is destroyed. This is not presently the CDK default.
11
+ */
12
+ class ArtifactBucket extends aws_s3_1.Bucket {
13
+ constructor(scope, id, props) {
14
+ super(scope, id, {
15
+ autoDeleteObjects: true,
16
+ removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
17
+ blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
18
+ encryptionKey: props.encryptionKey
19
+ });
20
+ this.addToResourcePolicy(new aws_iam_1.PolicyStatement({
21
+ effect: aws_iam_1.Effect.ALLOW,
22
+ actions: [
23
+ "s3:Get*",
24
+ "s3:List*"
25
+ ],
26
+ principals: props.accountIds.map((id) => new aws_iam_1.AccountPrincipal(id)),
27
+ resources: [
28
+ this.arnForObjects('*'),
29
+ this.bucketArn
30
+ ]
31
+ }));
32
+ }
33
+ }
34
+ exports.ArtifactBucket = ArtifactBucket;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3QtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3QtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUE2RDtBQUc3RCw2Q0FBMEM7QUFDMUMsaURBQThFO0FBbUI5RTs7OztHQUlHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsZUFBTTtJQUV4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLGlCQUFpQixFQUFFLDBCQUFpQixDQUFDLFNBQVM7WUFDOUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLHlCQUFlLENBQUM7WUFDM0MsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUU7Z0JBQ1AsU0FBUztnQkFDVCxVQUFVO2FBQ1g7WUFDRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksMEJBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEUsU0FBUyxFQUFFO2dCQUNULElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUzthQUNmO1NBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUF0QkQsd0NBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtCbG9ja1B1YmxpY0FjY2VzcywgQnVja2V0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQge0lLZXl9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7UmVtb3ZhbFBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0FjY291bnRQcmluY2lwYWwsIEVmZmVjdCwgUG9saWN5U3RhdGVtZW50fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEFydGlmYWN0QnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFydGlmYWN0QnVja2V0UHJvcHMge1xuICAvKipcbiAgICogQnkgZGVmYXVsdCwgQ0RLIHdpbGwgY3JlYXRlIEtNUyBrZXlzIGZvciBjcm9zcyBhY2NvdW50IGRlcGxveW1lbnRzLiBUaGlzXG4gICAqIGNhbiBiZSBjb3N0bHkgaWYgeW91IGhhdmUgYSBsYXJnZSBudW1iZXIgb2YgcGlwZWxpbmVzLiBUaGlzIHByb3BlcnR5XG4gICAqIGFsbG93cyBhIGNvbW1vbiBrZXkgdG8gYmUgc2hhcmVkIGFjcm9zcyBwaXBlbGluZXMuXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIEFXUyBhY2NvdW50IElEcyB0aGF0IHNob3VsZCBoYXZlIGFjY2VzcyB0byB0aGlzIGJ1Y2tldC5cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZHM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEFuIFMzIGJ1Y2tldCBmb3Igc3RvcmluZyBhcnRpZmFjdHMgaW4gYSBwaXBlbGluZS4gVGhlIGNyZWF0ZWQgYnVja2V0IHdpbGxcbiAqIGF1dG9tYXRpY2FsbHkgYmUgZGVzdHJveWVkIGFsb25nIHdpdGggaXRzIGNvbnRlbnRzIHdoZW4gdGhlIENESyBzdGFja1xuICogY29udGFpbmluZyBpdCBpcyBkZXN0cm95ZWQuIFRoaXMgaXMgbm90IHByZXNlbnRseSB0aGUgQ0RLIGRlZmF1bHQuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnRpZmFjdEJ1Y2tldCBleHRlbmRzIEJ1Y2tldCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFydGlmYWN0QnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLmVuY3J5cHRpb25LZXlcbiAgICB9KTtcbiAgICB0aGlzLmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgXCJzMzpHZXQqXCIsXG4gICAgICAgIFwiczM6TGlzdCpcIlxuICAgICAgXSxcbiAgICAgIHByaW5jaXBhbHM6IHByb3BzLmFjY291bnRJZHMubWFwKChpZCkgPT4gbmV3IEFjY291bnRQcmluY2lwYWwoaWQpKSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICB0aGlzLmFybkZvck9iamVjdHMoJyonKSxcbiAgICAgICAgdGhpcy5idWNrZXRBcm5cbiAgICAgIF1cbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,76 @@
1
+ import { Construct } from "constructs";
2
+ import { AddStageOpts, CodePipeline, StageDeployment, Wave, WaveOptions } from "aws-cdk-lib/pipelines";
3
+ import { ComputeType, IBuildImage } from "aws-cdk-lib/aws-codebuild";
4
+ import { PipelineNotificationRule } from "./pipeline-notification-rule";
5
+ import { Stage } from "aws-cdk-lib";
6
+ /**
7
+ * Properties for CdkPipeline
8
+ */
9
+ export interface CdkPipelineProps {
10
+ /**
11
+ * By default, CDK will create KMS keys for cross account deployments. This
12
+ * can be costly if you have a large number of pipelines. This property
13
+ * allows a common key to be shared across pipelines.
14
+ */
15
+ readonly keyArn: string;
16
+ /**
17
+ * List of account IDs this pipeline will deploy into.
18
+ */
19
+ readonly accountIds: string[];
20
+ /**
21
+ * Arn of the CodeStar connection used to access the source code repository.
22
+ */
23
+ readonly connectionArn: string;
24
+ /**
25
+ * Name of the source code repository.
26
+ */
27
+ readonly repo: string;
28
+ /**
29
+ * Branch to use inside the source code repository.
30
+ */
31
+ readonly branch: string;
32
+ /**
33
+ * Enable docker for the 'synth' step.
34
+ *
35
+ * @default true
36
+ */
37
+ readonly dockerEnabledForSynth?: boolean;
38
+ /**
39
+ * Enable docker for the self-mutate step.
40
+ *
41
+ * @default true
42
+ */
43
+ readonly dockerEnabledForSelfMutation?: boolean;
44
+ /**
45
+ * Type of compute to use for this build.
46
+ *
47
+ * @default ComputeType.SMALL
48
+ */
49
+ readonly computeType?: ComputeType;
50
+ /**
51
+ * The image to use for builds.
52
+ *
53
+ * @default LinuxBuildImage.AMAZON_LINUX_2_3
54
+ */
55
+ readonly buildImage?: IBuildImage;
56
+ /**
57
+ * The Slack channel configuration to use for notifications.
58
+ */
59
+ readonly slackChannelConfigurationArn?: string;
60
+ /**
61
+ * The list of notification events to receive. By default this is all notifications.
62
+ *
63
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-pipeline
64
+ */
65
+ readonly notificationEvents?: string[];
66
+ }
67
+ /**
68
+ * An abstraction to ease CDK pipeline creation and configuration.
69
+ */
70
+ export declare class CdkPipeline extends Construct {
71
+ readonly pipeline: CodePipeline;
72
+ readonly pipelineNotificationRule: PipelineNotificationRule;
73
+ constructor(scope: Construct, id: string, props: CdkPipelineProps);
74
+ addStage(stage: Stage, options?: AddStageOpts): StageDeployment;
75
+ addWave(id: string, options?: WaveOptions): Wave;
76
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CdkPipeline = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const aws_codepipeline_1 = require("aws-cdk-lib/aws-codepipeline");
6
+ const aws_kms_1 = require("aws-cdk-lib/aws-kms");
7
+ const artifact_bucket_1 = require("./artifact-bucket");
8
+ const pipelines_1 = require("aws-cdk-lib/pipelines");
9
+ const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
10
+ const pipeline_notification_rule_1 = require("./pipeline-notification-rule");
11
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
12
+ /**
13
+ * An abstraction to ease CDK pipeline creation and configuration.
14
+ */
15
+ class CdkPipeline extends constructs_1.Construct {
16
+ constructor(scope, id, props) {
17
+ var _a, _b, _c, _d;
18
+ super(scope, id);
19
+ const encryptionKey = aws_kms_1.Key.fromKeyArn(this, 'EncryptionKey', props.keyArn);
20
+ const artifactBucket = new artifact_bucket_1.ArtifactBucket(this, 'ArtifactBucket', {
21
+ encryptionKey,
22
+ accountIds: props.accountIds
23
+ });
24
+ const underlyingPipeline = new aws_codepipeline_1.Pipeline(this, 'Pipeline', {
25
+ artifactBucket
26
+ });
27
+ const input = pipelines_1.CodePipelineSource.connection(props.repo, props.branch, {
28
+ connectionArn: props.connectionArn
29
+ });
30
+ const stackName = aws_cdk_lib_1.Stack.of(this).stackName;
31
+ this.pipeline = new pipelines_1.CodePipeline(this, 'CodePipeline', {
32
+ codePipeline: underlyingPipeline,
33
+ dockerEnabledForSynth: (_a = props.dockerEnabledForSynth) !== null && _a !== void 0 ? _a : true,
34
+ dockerEnabledForSelfMutation: (_b = props.dockerEnabledForSelfMutation) !== null && _b !== void 0 ? _b : true,
35
+ synth: new pipelines_1.ShellStep('Synth', {
36
+ primaryOutputDirectory: 'cdk.out',
37
+ input,
38
+ commands: [
39
+ 'npm ci',
40
+ 'npm run build',
41
+ 'npm run test',
42
+ `npx cdk synth ${stackName}`
43
+ ],
44
+ additionalInputs: {}
45
+ }),
46
+ synthCodeBuildDefaults: {
47
+ buildEnvironment: {
48
+ computeType: (_c = props.computeType) !== null && _c !== void 0 ? _c : aws_codebuild_1.ComputeType.SMALL,
49
+ buildImage: (_d = props.buildImage) !== null && _d !== void 0 ? _d : aws_codebuild_1.LinuxBuildImage.AMAZON_LINUX_2_3
50
+ }
51
+ }
52
+ });
53
+ if (props.slackChannelConfigurationArn) {
54
+ this.pipelineNotificationRule = new pipeline_notification_rule_1.PipelineNotificationRule(this, 'Notification', {
55
+ source: underlyingPipeline,
56
+ slackChannelConfigurationArn: props.slackChannelConfigurationArn
57
+ });
58
+ }
59
+ }
60
+ addStage(stage, options) {
61
+ return this.pipeline.addStage(stage, options);
62
+ }
63
+ addWave(id, options) {
64
+ return this.pipeline.addWave(id, options);
65
+ }
66
+ }
67
+ exports.CdkPipeline = CdkPipeline;
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXBpcGVsaW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLXBpcGVsaW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxQztBQUNyQyxtRUFBc0Q7QUFDdEQsaURBQXdDO0FBQ3hDLHVEQUFpRDtBQUNqRCxxREFRK0I7QUFDL0IsNkRBQW9GO0FBQ3BGLDZFQUFzRTtBQUN0RSw2Q0FBeUM7QUEyRXpDOztHQUVHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsc0JBQVM7SUFLeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1Qjs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGFBQWEsR0FBRyxhQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTFFLE1BQU0sY0FBYyxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7WUFDaEUsYUFBYTtZQUNiLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtTQUM3QixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLElBQUksMkJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3hELGNBQWM7U0FDZixDQUFDLENBQUM7UUFFSCxNQUFNLEtBQUssR0FBRyw4QkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ3BFLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtTQUNuQyxDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHdCQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNyRCxZQUFZLEVBQUUsa0JBQWtCO1lBQ2hDLHFCQUFxQixRQUFFLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUUsSUFBSTtZQUN4RCw0QkFBNEIsUUFBRSxLQUFLLENBQUMsNEJBQTRCLG1DQUFFLElBQUk7WUFDdEUsS0FBSyxFQUFFLElBQUkscUJBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQzVCLHNCQUFzQixFQUFFLFNBQVM7Z0JBQ2pDLEtBQUs7Z0JBQ0wsUUFBUSxFQUFFO29CQUNSLFFBQVE7b0JBQ1IsZUFBZTtvQkFDZixjQUFjO29CQUNkLGlCQUFpQixTQUFTLEVBQUU7aUJBQzdCO2dCQUNELGdCQUFnQixFQUFFLEVBQUU7YUFDckIsQ0FBQztZQUNGLHNCQUFzQixFQUFFO2dCQUN0QixnQkFBZ0IsRUFBRTtvQkFDaEIsV0FBVyxRQUFFLEtBQUssQ0FBQyxXQUFXLG1DQUFFLDJCQUFXLENBQUMsS0FBSztvQkFDakQsVUFBVSxRQUFFLEtBQUssQ0FBQyxVQUFVLG1DQUFFLCtCQUFlLENBQUMsZ0JBQWdCO2lCQUMvRDthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxLQUFLLENBQUMsNEJBQTRCLEVBQUU7WUFDdEMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUkscURBQXdCLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtnQkFDakYsTUFBTSxFQUFFLGtCQUFrQjtnQkFDMUIsNEJBQTRCLEVBQUUsS0FBSyxDQUFDLDRCQUE0QjthQUNqRSxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsS0FBWSxFQUFFLE9BQXNCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVSxFQUFFLE9BQXFCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQTlERCxrQ0E4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7UGlwZWxpbmV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lXCI7XG5pbXBvcnQge0tleX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCB7QXJ0aWZhY3RCdWNrZXR9IGZyb20gXCIuL2FydGlmYWN0LWJ1Y2tldFwiO1xuaW1wb3J0IHtcbiAgQWRkU3RhZ2VPcHRzLFxuICBDb2RlUGlwZWxpbmUsXG4gIENvZGVQaXBlbGluZVNvdXJjZSxcbiAgU2hlbGxTdGVwLFxuICBTdGFnZURlcGxveW1lbnQsXG4gIFdhdmUsXG4gIFdhdmVPcHRpb25zXG59IGZyb20gXCJhd3MtY2RrLWxpYi9waXBlbGluZXNcIjtcbmltcG9ydCB7Q29tcHV0ZVR5cGUsIElCdWlsZEltYWdlLCBMaW51eEJ1aWxkSW1hZ2V9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQge1BpcGVsaW5lTm90aWZpY2F0aW9uUnVsZX0gZnJvbSBcIi4vcGlwZWxpbmUtbm90aWZpY2F0aW9uLXJ1bGVcIjtcbmltcG9ydCB7U3RhY2ssIFN0YWdlfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBDZGtQaXBlbGluZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENka1BpcGVsaW5lUHJvcHMge1xuXG4gIC8qKlxuICAgKiBCeSBkZWZhdWx0LCBDREsgd2lsbCBjcmVhdGUgS01TIGtleXMgZm9yIGNyb3NzIGFjY291bnQgZGVwbG95bWVudHMuIFRoaXNcbiAgICogY2FuIGJlIGNvc3RseSBpZiB5b3UgaGF2ZSBhIGxhcmdlIG51bWJlciBvZiBwaXBlbGluZXMuIFRoaXMgcHJvcGVydHlcbiAgICogYWxsb3dzIGEgY29tbW9uIGtleSB0byBiZSBzaGFyZWQgYWNyb3NzIHBpcGVsaW5lcy5cbiAgICovXG4gIHJlYWRvbmx5IGtleUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFjY291bnQgSURzIHRoaXMgcGlwZWxpbmUgd2lsbCBkZXBsb3kgaW50by5cbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnRJZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBcm4gb2YgdGhlIENvZGVTdGFyIGNvbm5lY3Rpb24gdXNlZCB0byBhY2Nlc3MgdGhlIHNvdXJjZSBjb2RlIHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSBjb25uZWN0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBjb2RlIHJlcG9zaXRvcnkuXG4gICAqL1xuICByZWFkb25seSByZXBvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byB1c2UgaW5zaWRlIHRoZSBzb3VyY2UgY29kZSByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkb2NrZXIgZm9yIHRoZSAnc3ludGgnIHN0ZXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckVuYWJsZWRGb3JTeW50aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBkb2NrZXIgZm9yIHRoZSBzZWxmLW11dGF0ZSBzdGVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJFbmFibGVkRm9yU2VsZk11dGF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHlwZSBvZiBjb21wdXRlIHRvIHVzZSBmb3IgdGhpcyBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuU01BTExcbiAgICovXG4gIHJlYWRvbmx5IGNvbXB1dGVUeXBlPzogQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSB0byB1c2UgZm9yIGJ1aWxkcy5cbiAgICpcbiAgICogQGRlZmF1bHQgTGludXhCdWlsZEltYWdlLkFNQVpPTl9MSU5VWF8yXzNcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBJQnVpbGRJbWFnZTtcblxuICAvKipcbiAgICogVGhlIFNsYWNrIGNoYW5uZWwgY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIG5vdGlmaWNhdGlvbnMuXG4gICAqL1xuICByZWFkb25seSBzbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBub3RpZmljYXRpb24gZXZlbnRzIHRvIHJlY2VpdmUuIEJ5IGRlZmF1bHQgdGhpcyBpcyBhbGwgbm90aWZpY2F0aW9ucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZHRjb25zb2xlL2xhdGVzdC91c2VyZ3VpZGUvY29uY2VwdHMuaHRtbCNldmVudHMtcmVmLXBpcGVsaW5lXG4gICAqL1xuICByZWFkb25seSBub3RpZmljYXRpb25FdmVudHM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBbiBhYnN0cmFjdGlvbiB0byBlYXNlIENESyBwaXBlbGluZSBjcmVhdGlvbiBhbmQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENka1BpcGVsaW5lIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICByZWFkb25seSBwaXBlbGluZTogQ29kZVBpcGVsaW5lO1xuICByZWFkb25seSBwaXBlbGluZU5vdGlmaWNhdGlvblJ1bGU6IFBpcGVsaW5lTm90aWZpY2F0aW9uUnVsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2RrUGlwZWxpbmVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBlbmNyeXB0aW9uS2V5ID0gS2V5LmZyb21LZXlBcm4odGhpcywgJ0VuY3J5cHRpb25LZXknLCBwcm9wcy5rZXlBcm4pO1xuXG4gICAgY29uc3QgYXJ0aWZhY3RCdWNrZXQgPSBuZXcgQXJ0aWZhY3RCdWNrZXQodGhpcywgJ0FydGlmYWN0QnVja2V0Jywge1xuICAgICAgZW5jcnlwdGlvbktleSxcbiAgICAgIGFjY291bnRJZHM6IHByb3BzLmFjY291bnRJZHNcbiAgICB9KTtcblxuICAgIGNvbnN0IHVuZGVybHlpbmdQaXBlbGluZSA9IG5ldyBQaXBlbGluZSh0aGlzLCAnUGlwZWxpbmUnLCB7XG4gICAgICBhcnRpZmFjdEJ1Y2tldFxuICAgIH0pO1xuXG4gICAgY29uc3QgaW5wdXQgPSBDb2RlUGlwZWxpbmVTb3VyY2UuY29ubmVjdGlvbihwcm9wcy5yZXBvLCBwcm9wcy5icmFuY2gsIHtcbiAgICAgIGNvbm5lY3Rpb25Bcm46IHByb3BzLmNvbm5lY3Rpb25Bcm5cbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YWNrTmFtZSA9IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZTtcblxuICAgIHRoaXMucGlwZWxpbmUgPSBuZXcgQ29kZVBpcGVsaW5lKHRoaXMsICdDb2RlUGlwZWxpbmUnLCB7XG4gICAgICBjb2RlUGlwZWxpbmU6IHVuZGVybHlpbmdQaXBlbGluZSxcbiAgICAgIGRvY2tlckVuYWJsZWRGb3JTeW50aDogcHJvcHMuZG9ja2VyRW5hYmxlZEZvclN5bnRoPz90cnVlLFxuICAgICAgZG9ja2VyRW5hYmxlZEZvclNlbGZNdXRhdGlvbjogcHJvcHMuZG9ja2VyRW5hYmxlZEZvclNlbGZNdXRhdGlvbj8/dHJ1ZSxcbiAgICAgIHN5bnRoOiBuZXcgU2hlbGxTdGVwKCdTeW50aCcsIHtcbiAgICAgICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogJ2Nkay5vdXQnLFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAnbnBtIGNpJyxcbiAgICAgICAgICAnbnBtIHJ1biBidWlsZCcsXG4gICAgICAgICAgJ25wbSBydW4gdGVzdCcsXG4gICAgICAgICAgYG5weCBjZGsgc3ludGggJHtzdGFja05hbWV9YFxuICAgICAgICBdLFxuICAgICAgICBhZGRpdGlvbmFsSW5wdXRzOiB7fVxuICAgICAgfSksXG4gICAgICBzeW50aENvZGVCdWlsZERlZmF1bHRzOiB7XG4gICAgICAgIGJ1aWxkRW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICBjb21wdXRlVHlwZTogcHJvcHMuY29tcHV0ZVR5cGU/P0NvbXB1dGVUeXBlLlNNQUxMLFxuICAgICAgICAgIGJ1aWxkSW1hZ2U6IHByb3BzLmJ1aWxkSW1hZ2U/P0xpbnV4QnVpbGRJbWFnZS5BTUFaT05fTElOVVhfMl8zXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAocHJvcHMuc2xhY2tDaGFubmVsQ29uZmlndXJhdGlvbkFybikge1xuICAgICAgdGhpcy5waXBlbGluZU5vdGlmaWNhdGlvblJ1bGUgPSBuZXcgUGlwZWxpbmVOb3RpZmljYXRpb25SdWxlKHRoaXMsICdOb3RpZmljYXRpb24nLCB7XG4gICAgICAgIHNvdXJjZTogdW5kZXJseWluZ1BpcGVsaW5lLFxuICAgICAgICBzbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuOiBwcm9wcy5zbGFja0NoYW5uZWxDb25maWd1cmF0aW9uQXJuXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhZGRTdGFnZShzdGFnZTogU3RhZ2UsIG9wdGlvbnM/OiBBZGRTdGFnZU9wdHMpOiBTdGFnZURlcGxveW1lbnQge1xuICAgIHJldHVybiB0aGlzLnBpcGVsaW5lLmFkZFN0YWdlKHN0YWdlLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFdhdmUoaWQ6IHN0cmluZywgb3B0aW9ucz86IFdhdmVPcHRpb25zKTogV2F2ZSB7XG4gICAgcmV0dXJuIHRoaXMucGlwZWxpbmUuYWRkV2F2ZShpZCwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './artifact-bucket';
2
+ export * from './cdk-pipeline';
3
+ export * from './pipeline-notification-rule';
@@ -0,0 +1,16 @@
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("./artifact-bucket"), exports);
14
+ __exportStar(require("./cdk-pipeline"), exports);
15
+ __exportStar(require("./pipeline-notification-rule"), exports);
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxvREFBa0M7QUFDbEMsaURBQStCO0FBQy9CLCtEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJ0aWZhY3QtYnVja2V0JztcbmV4cG9ydCAqIGZyb20gJy4vY2RrLXBpcGVsaW5lJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZWxpbmUtbm90aWZpY2F0aW9uLXJ1bGUnXG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { NotificationRule } from "aws-cdk-lib/aws-codestarnotifications";
2
+ import { Construct } from "constructs";
3
+ import { IPipeline } from "aws-cdk-lib/aws-codepipeline";
4
+ import { ISlackChannelConfiguration } from "aws-cdk-lib/aws-chatbot";
5
+ /**
6
+ * Properties for PipelineNotificationRule.
7
+ */
8
+ export interface PipelineNotificationRuleProps {
9
+ /**
10
+ * The events to notify on.
11
+ *
12
+ * @see https://docs.aws.amazon.com/dtconsole/latest/userguide/concepts.html#events-ref-pipeline
13
+ * @default PipelineNotificationRule.PIPELINE_EXECUTION_EVENTS
14
+ */
15
+ readonly events?: string[];
16
+ /**
17
+ * Pipeline source for the events.
18
+ */
19
+ readonly source: IPipeline;
20
+ /**
21
+ * Arn of the Slack channel to notify.
22
+ */
23
+ readonly slackChannelConfigurationArn: string;
24
+ }
25
+ /**
26
+ * Configures notifications for a pipeline to a ChatOps Slack channel.
27
+ */
28
+ export declare class PipelineNotificationRule extends Construct {
29
+ static readonly ACTION_EXECUTION_EVENTS: string[];
30
+ static readonly STAGE_EXECUTION_EVENTS: string[];
31
+ static readonly PIPELINE_EXECUTION_EVENTS: string[];
32
+ static readonly MANUAL_APPROVAL_EVENTS: string[];
33
+ static readonly ALL_NOTIFICATION_EVENTS: string[];
34
+ readonly slackChannel: ISlackChannelConfiguration;
35
+ readonly notificationRule: NotificationRule;
36
+ constructor(scope: Construct, id: string, props: PipelineNotificationRuleProps);
37
+ }