truemark-cdk-lib 0.0.3 → 0.0.4

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.
@@ -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 @@
1
+ export * from './log-alarm';
@@ -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("./log-alarm"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xvZy1hbGFybSc7XG4iXX0=
@@ -0,0 +1,47 @@
1
+ import { Construct } from 'constructs';
2
+ import { Alarm, CreateAlarmOptions, IAlarmAction, IMetric } from 'aws-cdk-lib/aws-cloudwatch';
3
+ import { ILogGroup, MetricFilter } from 'aws-cdk-lib/aws-logs';
4
+ import { Duration } from 'aws-cdk-lib';
5
+ import { ITopic } from 'aws-cdk-lib/aws-sns';
6
+ /**
7
+ * Properties for LogAlarm
8
+ */
9
+ export interface LogAlarmProps extends CreateAlarmOptions {
10
+ /**
11
+ * The log group to watch.
12
+ *
13
+ * If not set, the alarm and metric are not created.
14
+ */
15
+ readonly logGroup: ILogGroup;
16
+ /**
17
+ * The log pattern to match.
18
+ */
19
+ readonly pattern: string;
20
+ /**
21
+ * The namespace of the metric to emit.
22
+ */
23
+ readonly metricNamespace?: string;
24
+ /**
25
+ * The name of the metric to emit.
26
+ *
27
+ * Default value is the id passed into the Construct.
28
+ */
29
+ readonly metricName?: string;
30
+ /**
31
+ * The period over which statistics are applied
32
+ *
33
+ * Default is 5 minutes.
34
+ */
35
+ readonly metricPeriod?: Duration;
36
+ }
37
+ /**
38
+ * Create a CloudWatch Alarm to trigger when log patterns are matched
39
+ */
40
+ export declare class LogAlarm extends Construct {
41
+ readonly alarm: Alarm;
42
+ readonly filter: MetricFilter;
43
+ readonly metric: IMetric;
44
+ constructor(scope: Construct, id: string, props: LogAlarmProps);
45
+ addAlarmActions(actions?: IAlarmAction[]): LogAlarm;
46
+ addAlarmTopics(topics?: ITopic[]): LogAlarm;
47
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogAlarm = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const aws_cloudwatch_1 = require("aws-cdk-lib/aws-cloudwatch");
6
+ const aws_logs_1 = require("aws-cdk-lib/aws-logs");
7
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
8
+ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
9
+ /**
10
+ * Create a CloudWatch Alarm to trigger when log patterns are matched
11
+ */
12
+ class LogAlarm extends constructs_1.Construct {
13
+ constructor(scope, id, props) {
14
+ var _a, _b, _c, _d, _e, _f, _g, _h;
15
+ super(scope, id);
16
+ this.filter = new aws_logs_1.MetricFilter(this, (_a = props.metricName) !== null && _a !== void 0 ? _a : '' + 'Filter', {
17
+ logGroup: props.logGroup,
18
+ metricName: (_b = props.metricName) !== null && _b !== void 0 ? _b : id,
19
+ metricNamespace: (_c = props.metricNamespace) !== null && _c !== void 0 ? _c : 'TrueMark',
20
+ defaultValue: 0,
21
+ metricValue: "1",
22
+ filterPattern: {
23
+ logPatternString: props.pattern
24
+ }
25
+ });
26
+ this.metric = this.filter.metric({
27
+ statistic: 'Sum',
28
+ period: (_d = props.metricPeriod) !== null && _d !== void 0 ? _d : aws_cdk_lib_1.Duration.minutes(5),
29
+ });
30
+ this.alarm = new aws_cloudwatch_1.Alarm(this, (_e = props.metricName) !== null && _e !== void 0 ? _e : 'Alarm', {
31
+ metric: this.metric,
32
+ threshold: (_f = props.threshold) !== null && _f !== void 0 ? _f : 1,
33
+ comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
34
+ evaluationPeriods: props.evaluationPeriods,
35
+ datapointsToAlarm: (_g = props.datapointsToAlarm) !== null && _g !== void 0 ? _g : 1,
36
+ treatMissingData: (_h = props.treatMissingData) !== null && _h !== void 0 ? _h : aws_cloudwatch_1.TreatMissingData.MISSING
37
+ });
38
+ }
39
+ addAlarmActions(actions) {
40
+ actions === null || actions === void 0 ? void 0 : actions.forEach((action) => {
41
+ this.alarm.addAlarmAction(action);
42
+ });
43
+ return this;
44
+ }
45
+ addAlarmTopics(topics) {
46
+ topics === null || topics === void 0 ? void 0 : topics.forEach((topic) => {
47
+ this.alarm.addAlarmAction(new aws_cloudwatch_actions_1.SnsAction(topic));
48
+ });
49
+ return this;
50
+ }
51
+ }
52
+ exports.LogAlarm = LogAlarm;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWFsYXJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nLWFsYXJtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUFxQztBQUNyQywrREFPb0M7QUFDcEMsbURBQTZEO0FBQzdELDZDQUFxQztBQUVyQywrRUFBNkQ7QUF1QzdEOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFNckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjs7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksdUJBQVksQ0FBQyxJQUFJLFFBQUUsS0FBSyxDQUFDLFVBQVUsbUNBQUUsRUFBRSxHQUFHLFFBQVEsRUFBRTtZQUNwRSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsVUFBVSxRQUFFLEtBQUssQ0FBQyxVQUFVLG1DQUFFLEVBQUU7WUFDaEMsZUFBZSxRQUFFLEtBQUssQ0FBQyxlQUFlLG1DQUFFLFVBQVU7WUFDbEQsWUFBWSxFQUFFLENBQUM7WUFDZixXQUFXLEVBQUUsR0FBRztZQUNoQixhQUFhLEVBQUU7Z0JBQ2IsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLE9BQU87YUFDaEM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQy9CLFNBQVMsRUFBRSxLQUFLO1lBQ2hCLE1BQU0sUUFBRSxLQUFLLENBQUMsWUFBWSxtQ0FBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDaEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLHNCQUFLLENBQUMsSUFBSSxRQUFFLEtBQUssQ0FBQyxVQUFVLG1DQUFFLE9BQU8sRUFBRTtZQUN0RCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsU0FBUyxRQUFFLEtBQUssQ0FBQyxTQUFTLG1DQUFFLENBQUM7WUFDN0Isa0JBQWtCLEVBQUUsbUNBQWtCLENBQUMsa0NBQWtDO1lBQ3pFLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsaUJBQWlCLFFBQUUsS0FBSyxDQUFDLGlCQUFpQixtQ0FBRSxDQUFDO1lBQzdDLGdCQUFnQixRQUFFLEtBQUssQ0FBQyxnQkFBZ0IsbUNBQUUsaUNBQWdCLENBQUMsT0FBTztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQXdCO1FBQ3RDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQyxDQUFDLEVBQUU7UUFDSCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBaUI7UUFDOUIsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksa0NBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQ2pELENBQUMsRUFBRTtRQUNILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBL0NELDRCQStDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7XG4gIEFsYXJtLFxuICBDb21wYXJpc29uT3BlcmF0b3IsXG4gIENyZWF0ZUFsYXJtT3B0aW9ucyxcbiAgSUFsYXJtQWN0aW9uLFxuICBJTWV0cmljLFxuICBUcmVhdE1pc3NpbmdEYXRhXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCB7SUxvZ0dyb3VwLCBNZXRyaWNGaWx0ZXJ9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7RHVyYXRpb259IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7SVRvcGljfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7U25zQWN0aW9ufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaC1hY3Rpb25zJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBMb2dBbGFybVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0FsYXJtUHJvcHMgZXh0ZW5kcyBDcmVhdGVBbGFybU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIHdhdGNoLlxuICAgKlxuICAgKiBJZiBub3Qgc2V0LCB0aGUgYWxhcm0gYW5kIG1ldHJpYyBhcmUgbm90IGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cDogSUxvZ0dyb3VwLFxuXG4gIC8qKlxuICAgKiBUaGUgbG9nIHBhdHRlcm4gdG8gbWF0Y2guXG4gICAqL1xuICByZWFkb25seSBwYXR0ZXJuOiBzdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1ldHJpYyB0byBlbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljTmFtZXNwYWNlPzogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWV0cmljIHRvIGVtaXQuXG4gICAqXG4gICAqIERlZmF1bHQgdmFsdWUgaXMgdGhlIGlkIHBhc3NlZCBpbnRvIHRoZSBDb25zdHJ1Y3QuXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNOYW1lPzogc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgcGVyaW9kIG92ZXIgd2hpY2ggc3RhdGlzdGljcyBhcmUgYXBwbGllZFxuICAgKlxuICAgKiBEZWZhdWx0IGlzIDUgbWludXRlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY1BlcmlvZD86IER1cmF0aW9uXG59XG5cbi8qKlxuICogQ3JlYXRlIGEgQ2xvdWRXYXRjaCBBbGFybSB0byB0cmlnZ2VyIHdoZW4gbG9nIHBhdHRlcm5zIGFyZSBtYXRjaGVkXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dBbGFybSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcmVhZG9ubHkgYWxhcm06IEFsYXJtO1xuICByZWFkb25seSBmaWx0ZXI6IE1ldHJpY0ZpbHRlcjtcbiAgcmVhZG9ubHkgbWV0cmljOiBJTWV0cmljO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBMb2dBbGFybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmZpbHRlciA9IG5ldyBNZXRyaWNGaWx0ZXIodGhpcywgcHJvcHMubWV0cmljTmFtZT8/JycgKyAnRmlsdGVyJywge1xuICAgICAgbG9nR3JvdXA6IHByb3BzLmxvZ0dyb3VwLFxuICAgICAgbWV0cmljTmFtZTogcHJvcHMubWV0cmljTmFtZT8/aWQsXG4gICAgICBtZXRyaWNOYW1lc3BhY2U6IHByb3BzLm1ldHJpY05hbWVzcGFjZT8/J1RydWVNYXJrJyxcbiAgICAgIGRlZmF1bHRWYWx1ZTogMCxcbiAgICAgIG1ldHJpY1ZhbHVlOiBcIjFcIixcbiAgICAgIGZpbHRlclBhdHRlcm46IHtcbiAgICAgICAgbG9nUGF0dGVyblN0cmluZzogcHJvcHMucGF0dGVyblxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5tZXRyaWMgPSB0aGlzLmZpbHRlci5tZXRyaWMoe1xuICAgICAgc3RhdGlzdGljOiAnU3VtJyxcbiAgICAgIHBlcmlvZDogcHJvcHMubWV0cmljUGVyaW9kPz9EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hbGFybSA9IG5ldyBBbGFybSh0aGlzLCBwcm9wcy5tZXRyaWNOYW1lPz8nQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMubWV0cmljLFxuICAgICAgdGhyZXNob2xkOiBwcm9wcy50aHJlc2hvbGQ/PzEsXG4gICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IHByb3BzLmV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgZGF0YXBvaW50c1RvQWxhcm06IHByb3BzLmRhdGFwb2ludHNUb0FsYXJtPz8xLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogcHJvcHMudHJlYXRNaXNzaW5nRGF0YT8/VHJlYXRNaXNzaW5nRGF0YS5NSVNTSU5HXG4gICAgfSk7XG4gIH1cblxuICBhZGRBbGFybUFjdGlvbnMoYWN0aW9ucz86IElBbGFybUFjdGlvbltdKTogTG9nQWxhcm0ge1xuICAgIGFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgdGhpcy5hbGFybS5hZGRBbGFybUFjdGlvbihhY3Rpb24pO1xuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQWxhcm1Ub3BpY3ModG9waWNzPzogSVRvcGljW10pOiBMb2dBbGFybSB7XG4gICAgdG9waWNzPy5mb3JFYWNoKCh0b3BpYykgPT4ge1xuICAgICAgdGhpcy5hbGFybS5hZGRBbGFybUFjdGlvbihuZXcgU25zQWN0aW9uKHRvcGljKSlcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
@@ -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 @@
1
+ export * from './standard-functions';
@@ -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("./standard-functions"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx1REFBcUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0YW5kYXJkLWZ1bmN0aW9ucyc7XG4iXX0=
@@ -0,0 +1,217 @@
1
+ import { Architecture, Function, Runtime, Tracing } from 'aws-cdk-lib/aws-lambda';
2
+ import { Construct } from 'constructs';
3
+ import * as logs from 'aws-cdk-lib/aws-logs';
4
+ import * as ec2 from 'aws-cdk-lib/aws-ec2';
5
+ import { Duration } from 'aws-cdk-lib';
6
+ import { IDashboardFactory, MonitoringFacade } from 'cdk-monitoring-constructs';
7
+ import { ITopic } from 'aws-cdk-lib/aws-sns';
8
+ import { IAlarmAction } from 'aws-cdk-lib/aws-cloudwatch';
9
+ import { LogAlarm } from '../../aws-cloudwatch';
10
+ export interface StandardFunctionAlarmProps {
11
+ /**
12
+ * Maximum 50th percentile latency
13
+ */
14
+ readonly p50Latency?: Duration;
15
+ /**
16
+ * Maximum 90th percentile latency
17
+ */
18
+ readonly p90Latency?: Duration;
19
+ /**
20
+ * Maximum 99th percentile latency
21
+ */
22
+ readonly p99Latency?: Duration;
23
+ /**
24
+ * Maximum number of faults
25
+ *
26
+ * @default 0
27
+ */
28
+ readonly maxFaults?: number;
29
+ /**
30
+ * Average number of faults
31
+ */
32
+ readonly avgFaults?: number;
33
+ /**
34
+ * Minimum transactions
35
+ */
36
+ readonly minTps?: number;
37
+ /**
38
+ * Maximum transactions
39
+ */
40
+ readonly maxTps?: number;
41
+ /**
42
+ * Maximum number of throttles
43
+ *
44
+ * @default 0
45
+ */
46
+ readonly maxThrottles?: number;
47
+ /**
48
+ * Average number of throttles
49
+ */
50
+ readonly avgThrottles?: number;
51
+ /**
52
+ * Maximum concurrent executions
53
+ */
54
+ readonly maxConcurrentExecutions?: number;
55
+ /**
56
+ * Amount of time data waits before being processed by the function.
57
+ * See https://aws.amazon.com/premiumsupport/knowledge-center/lambda-iterator-age/
58
+ */
59
+ readonly maxIteratorAge?: number;
60
+ /**
61
+ * Maximum amount of CPU time
62
+ */
63
+ readonly maxCpuTime?: Duration;
64
+ /**
65
+ * 90th percentile CPU time
66
+ */
67
+ readonly p90CpuTime?: Duration;
68
+ /**
69
+ * Average CPU time
70
+ */
71
+ readonly avgCpuTime?: Duration;
72
+ /**
73
+ * Maximum amount of memory
74
+ */
75
+ readonly maxMemory?: number;
76
+ /**
77
+ * 90th percentile memory
78
+ */
79
+ readonly p90Memory?: number;
80
+ /**
81
+ * Average memory
82
+ */
83
+ readonly avgMemory?: number;
84
+ /**
85
+ * Topics to send alarm notifications
86
+ */
87
+ readonly notifyTopics?: [ITopic];
88
+ /**
89
+ * Actions to send alarm notifications
90
+ */
91
+ readonly notifyActions?: [IAlarmAction];
92
+ /**
93
+ * Log pattern to match for metrics.
94
+ *
95
+ * @default '\\\[ERROR\\\]'
96
+ */
97
+ readonly metricLogPattern?: string;
98
+ /**
99
+ * Log pattern to match for the dashboard
100
+ *
101
+ * @default '"[ERROR]"'
102
+ */
103
+ readonly dashboardLogPattern?: string;
104
+ /**
105
+ * Maximum number of log events matching the pattern.
106
+ *
107
+ * @default 0 for Critical Alarm
108
+ */
109
+ readonly maxLogCount?: number;
110
+ }
111
+ export interface StandardFunctionProps {
112
+ /**
113
+ * Enable AWS X-Ray Tracing.
114
+ *
115
+ * @default Tracing.PASS_THROUGH
116
+ */
117
+ readonly tracing?: Tracing;
118
+ /**
119
+ * The number of days to retain logs.
120
+ *
121
+ * @default logs.RetentionDays.THREE_DAYS
122
+ */
123
+ readonly logRetention?: logs.RetentionDays;
124
+ /**
125
+ * The system architecture.
126
+ *
127
+ * @default Architecture.ARM_64
128
+ */
129
+ readonly architecture?: Architecture;
130
+ /**
131
+ * VPC network to place the lambda network interfaces
132
+ *
133
+ * @default - not placed in a VPC
134
+ */
135
+ readonly vpc?: ec2.IVpc;
136
+ /**
137
+ * Where to place the lambda inside the VPC. Only used if 'vpc' is supplied.
138
+ *
139
+ * @default - VPC default strategy is used if not specified
140
+ */
141
+ readonly vpcSubnets?: ec2.SubnetSelection;
142
+ /**
143
+ * Amount of memory in MB and proportionally CPU power to allocate.
144
+ *
145
+ * @default 768
146
+ */
147
+ readonly memorySize?: number;
148
+ /**
149
+ * Function execution time (in seconds) after which the Lambda terminates.
150
+ *
151
+ * @default Duration.seconds(30)
152
+ */
153
+ readonly timeout?: Duration;
154
+ /**
155
+ * Environment variables to make available.
156
+ */
157
+ readonly environment?: {
158
+ [key: string]: string;
159
+ };
160
+ /**
161
+ * A description of the function
162
+ */
163
+ readonly description?: string;
164
+ /**
165
+ * The DashboardFactory to use when generating CloudWatch dashboards.
166
+ *
167
+ * If not defined, dashboards are not generated.
168
+ */
169
+ readonly dashboardFactory?: IDashboardFactory;
170
+ /**
171
+ * Alarm thresholds for critical alarms.
172
+ *
173
+ * If no properties are provided, a set of default alarms are created.
174
+ */
175
+ readonly criticalAlarmProps?: StandardFunctionAlarmProps;
176
+ /**
177
+ * Alarm threshold for warning alarms.
178
+ *
179
+ * If no properties are provided, a set of default alarms are created.
180
+ */
181
+ readonly warningAlarmProps?: StandardFunctionAlarmProps;
182
+ }
183
+ export interface PythonFunctionProps extends StandardFunctionProps {
184
+ /**
185
+ * The runtime environment for the Lambda function. Must be one of the Python runtimes.
186
+ *
187
+ * @default Runtime.PYTHON_3_9
188
+ */
189
+ readonly runtime?: Runtime;
190
+ /**
191
+ * Location on the filesystem the Lambda assets are found.
192
+ *
193
+ * Example: path.join(__dirname, '..', 'mylambda')
194
+ */
195
+ readonly entry: string;
196
+ /**
197
+ * File containing the handler.
198
+ *
199
+ * @default 'index.py'
200
+ */
201
+ readonly index?: string;
202
+ /**
203
+ * Exported handler function
204
+ *
205
+ * @default 'handler'
206
+ */
207
+ readonly handler?: string;
208
+ }
209
+ export declare class PythonFunction extends Construct {
210
+ static readonly DEFAULT_LOG_METRIC_PATTERN = "\"[ERROR]\"";
211
+ static readonly DEFAULT_LOG_INSIGHTS_PATTERN = "\\[ERROR\\]";
212
+ readonly monitoring: MonitoringFacade;
213
+ readonly function: Function;
214
+ readonly criticalLogAlarm: LogAlarm;
215
+ readonly warningLogAlarm: LogAlarm;
216
+ constructor(scope: Construct, id: string, props: PythonFunctionProps);
217
+ }
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PythonFunction = void 0;
4
+ const fs = require("fs");
5
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
6
+ const constructs_1 = require("constructs");
7
+ const logs = require("aws-cdk-lib/aws-logs");
8
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
9
+ const cdk_monitoring_constructs_1 = require("cdk-monitoring-constructs");
10
+ const aws_cloudwatch_1 = require("../../aws-cloudwatch");
11
+ const aws_monitoring_1 = require("../../aws-monitoring");
12
+ const aws_cloudwatch_actions_1 = require("aws-cdk-lib/aws-cloudwatch-actions");
13
+ const path = require("path");
14
+ function toAlarmProps(prop, warningThreshold, criticalThreshold, warningAlarmActions, criticalAlarmActions, warningDefaultThreshold, criticalDefaultThreshold) {
15
+ let alarmProps = {};
16
+ if (criticalThreshold !== undefined) {
17
+ alarmProps.Critical = {
18
+ [prop]: criticalThreshold,
19
+ actionsEnabled: true,
20
+ actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: criticalAlarmActions })
21
+ };
22
+ }
23
+ else if (criticalDefaultThreshold !== undefined) {
24
+ alarmProps.Critical = {
25
+ [prop]: criticalDefaultThreshold,
26
+ actionsEnabled: true,
27
+ actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: criticalAlarmActions })
28
+ };
29
+ }
30
+ if (warningThreshold !== undefined) {
31
+ alarmProps.Warning = {
32
+ [prop]: warningThreshold,
33
+ actionsEnabled: true,
34
+ actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: warningAlarmActions })
35
+ };
36
+ }
37
+ else if (warningDefaultThreshold !== undefined) {
38
+ alarmProps.Warning = {
39
+ [prop]: warningDefaultThreshold,
40
+ actionsEnabled: true,
41
+ actionOverride: new aws_monitoring_1.StandardAlarmActionsStrategy({ actions: warningAlarmActions })
42
+ };
43
+ }
44
+ return Object.keys(alarmProps).length > 0 ? alarmProps : undefined;
45
+ }
46
+ class PythonFunction extends constructs_1.Construct {
47
+ constructor(scope, id, props) {
48
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3;
49
+ super(scope, id);
50
+ this.monitoring = new cdk_monitoring_constructs_1.MonitoringFacade(this, 'Monitoring', {
51
+ metricFactoryDefaults: {},
52
+ alarmFactoryDefaults: {
53
+ actionsEnabled: true,
54
+ alarmNamePrefix: scope.node.path.replace(/\//g, '-'),
55
+ },
56
+ dashboardFactory: props.dashboardFactory
57
+ });
58
+ let bundling = fs.existsSync(path.join(props.entry, 'requirements.txt')) ? {
59
+ image: (_b = (_a = props.runtime) === null || _a === void 0 ? void 0 : _a.bundlingImage) !== null && _b !== void 0 ? _b : aws_lambda_1.Runtime.PYTHON_3_9.bundlingImage,
60
+ command: [
61
+ 'bash', '-c', [
62
+ 'pip install --target /asset-output/ -r requirements.txt',
63
+ 'cp -ra * /asset-output/'
64
+ ].join('&&')
65
+ ],
66
+ outputType: aws_cdk_lib_1.BundlingOutput.NOT_ARCHIVED,
67
+ } : undefined;
68
+ this.function = new aws_lambda_1.Function(this, id, {
69
+ runtime: (_c = props.runtime) !== null && _c !== void 0 ? _c : aws_lambda_1.Runtime.PYTHON_3_9,
70
+ tracing: (_d = props.tracing) !== null && _d !== void 0 ? _d : aws_lambda_1.Tracing.PASS_THROUGH,
71
+ logRetention: (_e = props.logRetention) !== null && _e !== void 0 ? _e : logs.RetentionDays.THREE_DAYS,
72
+ architecture: (_f = props.architecture) !== null && _f !== void 0 ? _f : aws_lambda_1.Architecture.ARM_64,
73
+ vpc: props.vpc,
74
+ vpcSubnets: props.vpcSubnets,
75
+ memorySize: (_g = props.memorySize) !== null && _g !== void 0 ? _g : 768,
76
+ timeout: (_h = props.timeout) !== null && _h !== void 0 ? _h : aws_cdk_lib_1.Duration.seconds(30),
77
+ environment: props.environment,
78
+ description: props.description,
79
+ code: aws_lambda_1.Code.fromAsset(props.entry, { bundling }),
80
+ handler: ((_j = props.index) !== null && _j !== void 0 ? _j : 'index.py').replace('.py', '') + '.' + ((_k = props.handler) !== null && _k !== void 0 ? _k : 'handler')
81
+ });
82
+ const warnProps = props.warningAlarmProps;
83
+ const warnActions = [];
84
+ (_l = warnProps === null || warnProps === void 0 ? void 0 : warnProps.notifyActions) === null || _l === void 0 ? void 0 : _l.forEach((action) => warnActions.push(action));
85
+ (_m = warnProps === null || warnProps === void 0 ? void 0 : warnProps.notifyTopics) === null || _m === void 0 ? void 0 : _m.forEach((topic) => warnActions.push(new aws_cloudwatch_actions_1.SnsAction(topic)));
86
+ const critProps = props.criticalAlarmProps;
87
+ const critActions = [];
88
+ (_o = critProps === null || critProps === void 0 ? void 0 : critProps.notifyActions) === null || _o === void 0 ? void 0 : _o.forEach((action) => critActions.push(action));
89
+ (_p = critProps === null || critProps === void 0 ? void 0 : critProps.notifyTopics) === null || _p === void 0 ? void 0 : _p.forEach((topic) => critActions.push(new aws_cloudwatch_actions_1.SnsAction(topic)));
90
+ this.monitoring.monitorLambdaFunction({
91
+ lambdaFunction: this.function,
92
+ lambdaInsightsEnabled: true,
93
+ addToAlarmDashboard: true,
94
+ addToDetailDashboard: true,
95
+ addToSummaryDashboard: true,
96
+ addLatencyP50Alarm: toAlarmProps('maxLatency', warnProps === null || warnProps === void 0 ? void 0 : warnProps.p50Latency, critProps === null || critProps === void 0 ? void 0 : critProps.p50Latency, warnActions, critActions),
97
+ addLatencyP90Alarm: toAlarmProps('maxLatency', warnProps === null || warnProps === void 0 ? void 0 : warnProps.p90Latency, critProps === null || critProps === void 0 ? void 0 : critProps.p90Latency, warnActions, critActions),
98
+ addLatencyP99Alarm: toAlarmProps('maxLatency', warnProps === null || warnProps === void 0 ? void 0 : warnProps.p99Latency, critProps === null || critProps === void 0 ? void 0 : critProps.p99Latency, warnActions, critActions),
99
+ addFaultCountAlarm: toAlarmProps('maxErrorCount', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxFaults, critProps === null || critProps === void 0 ? void 0 : critProps.maxFaults, warnActions, critActions, undefined, 0),
100
+ addFaultRateAlarm: toAlarmProps('maxErrorRate', warnProps === null || warnProps === void 0 ? void 0 : warnProps.avgFaults, critProps === null || critProps === void 0 ? void 0 : critProps.avgFaults, warnActions, critActions),
101
+ addLowTpsAlarm: toAlarmProps('minTps', warnProps === null || warnProps === void 0 ? void 0 : warnProps.minTps, critProps === null || critProps === void 0 ? void 0 : critProps.minTps, warnActions, critActions),
102
+ addHighTpsAlarm: toAlarmProps('maxTps', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxTps, critProps === null || critProps === void 0 ? void 0 : critProps.maxTps, warnActions, critActions),
103
+ addThrottlesCountAlarm: toAlarmProps('maxErrorCount', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxThrottles, critProps === null || critProps === void 0 ? void 0 : critProps.maxThrottles, warnActions, critActions, undefined, 0),
104
+ addThrottlesRateAlarm: toAlarmProps('maxErrorRate', warnProps === null || warnProps === void 0 ? void 0 : warnProps.avgThrottles, critProps === null || critProps === void 0 ? void 0 : critProps.avgThrottles, warnActions, critActions),
105
+ addConcurrentExecutionsCountAlarm: toAlarmProps('maxRunningTasks', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxConcurrentExecutions, critProps === null || critProps === void 0 ? void 0 : critProps.maxConcurrentExecutions, warnActions, critActions),
106
+ addMaxIteratorAgeAlarm: toAlarmProps('maxAgeInMillis', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxIteratorAge, critProps === null || critProps === void 0 ? void 0 : critProps.maxIteratorAge, warnActions, critActions),
107
+ addEnhancedMonitoringMaxCpuTotalTimeAlarm: toAlarmProps('maxDuration', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxCpuTime, critProps === null || critProps === void 0 ? void 0 : critProps.maxCpuTime, warnActions, critActions),
108
+ addEnhancedMonitoringP90CpuTotalTimeAlarm: toAlarmProps('maxDuration', warnProps === null || warnProps === void 0 ? void 0 : warnProps.p90CpuTime, critProps === null || critProps === void 0 ? void 0 : critProps.p90CpuTime, warnActions, critActions),
109
+ addEnhancedMonitoringAvgCpuTotalTimeAlarm: toAlarmProps('maxDuration', warnProps === null || warnProps === void 0 ? void 0 : warnProps.avgCpuTime, critProps === null || critProps === void 0 ? void 0 : critProps.avgCpuTime, warnActions, critActions),
110
+ addEnhancedMonitoringMaxMemoryUtilizationAlarm: toAlarmProps('maxUsagePercent', warnProps === null || warnProps === void 0 ? void 0 : warnProps.maxMemory, critProps === null || critProps === void 0 ? void 0 : critProps.maxMemory, warnActions, critActions),
111
+ addEnhancedMonitoringP90MemoryUtilizationAlarm: toAlarmProps('maxUsagePercent', warnProps === null || warnProps === void 0 ? void 0 : warnProps.p90Memory, critProps === null || critProps === void 0 ? void 0 : critProps.p90Memory, warnActions, critActions),
112
+ addEnhancedMonitoringAvgMemoryUtilizationAlarm: toAlarmProps('maxUsagePercent', warnProps === null || warnProps === void 0 ? void 0 : warnProps.avgMemory, critProps === null || critProps === void 0 ? void 0 : critProps.avgMemory, warnActions, critActions),
113
+ });
114
+ // Add log monitoring to dashboard
115
+ let critMaxLogCount = (_r = (_q = props.criticalAlarmProps) === null || _q === void 0 ? void 0 : _q.maxLogCount) !== null && _r !== void 0 ? _r : 1;
116
+ let pattern = '';
117
+ if (critMaxLogCount > 0) {
118
+ pattern = (_t = (_s = props.criticalAlarmProps) === null || _s === void 0 ? void 0 : _s.dashboardLogPattern) !== null && _t !== void 0 ? _t : PythonFunction.DEFAULT_LOG_INSIGHTS_PATTERN;
119
+ }
120
+ if (((_u = props.warningAlarmProps) === null || _u === void 0 ? void 0 : _u.maxLogCount) !== undefined && pattern !== props.warningAlarmProps.dashboardLogPattern) {
121
+ pattern += (pattern !== '' ? '|' : '') + props.warningAlarmProps.dashboardLogPattern;
122
+ }
123
+ if (pattern !== '') {
124
+ this.monitoring.monitorLog({
125
+ logGroupName: this.function.logGroup.logGroupName,
126
+ pattern,
127
+ });
128
+ }
129
+ // Add critical log alarm
130
+ if (critMaxLogCount > 0) {
131
+ this.criticalLogAlarm = new aws_cloudwatch_1.LogAlarm(this, 'LogsCritical', {
132
+ logGroup: this.function.logGroup,
133
+ pattern: (_w = (_v = props.criticalAlarmProps) === null || _v === void 0 ? void 0 : _v.metricLogPattern) !== null && _w !== void 0 ? _w : PythonFunction.DEFAULT_LOG_METRIC_PATTERN,
134
+ threshold: critMaxLogCount,
135
+ evaluationPeriods: 3
136
+ });
137
+ if (((_x = props.criticalAlarmProps) === null || _x === void 0 ? void 0 : _x.notifyActions) !== undefined) {
138
+ this.criticalLogAlarm.addAlarmActions(props.criticalAlarmProps.notifyActions);
139
+ }
140
+ if (((_y = props.criticalAlarmProps) === null || _y === void 0 ? void 0 : _y.notifyTopics) !== undefined) {
141
+ this.criticalLogAlarm.addAlarmTopics(props.criticalAlarmProps.notifyTopics);
142
+ }
143
+ }
144
+ // Add warning log alarm
145
+ if (((_z = props.warningAlarmProps) === null || _z === void 0 ? void 0 : _z.maxLogCount) !== undefined && props.warningAlarmProps.maxLogCount > 0) {
146
+ this.warningLogAlarm = new aws_cloudwatch_1.LogAlarm(this, 'LogsWarning', {
147
+ logGroup: this.function.logGroup,
148
+ pattern: (_1 = (_0 = props.warningAlarmProps) === null || _0 === void 0 ? void 0 : _0.metricLogPattern) !== null && _1 !== void 0 ? _1 : PythonFunction.DEFAULT_LOG_METRIC_PATTERN,
149
+ threshold: props.warningAlarmProps.maxLogCount,
150
+ evaluationPeriods: 3
151
+ });
152
+ if (((_2 = props.warningAlarmProps) === null || _2 === void 0 ? void 0 : _2.notifyActions) !== undefined) {
153
+ this.warningLogAlarm.addAlarmActions(props.warningAlarmProps.notifyActions);
154
+ }
155
+ if (((_3 = props.warningAlarmProps) === null || _3 === void 0 ? void 0 : _3.notifyTopics) !== undefined) {
156
+ this.warningLogAlarm.addAlarmTopics(props.warningAlarmProps.notifyTopics);
157
+ }
158
+ }
159
+ }
160
+ }
161
+ exports.PythonFunction = PythonFunction;
162
+ PythonFunction.DEFAULT_LOG_METRIC_PATTERN = '"[ERROR]"';
163
+ PythonFunction.DEFAULT_LOG_INSIGHTS_PATTERN = '\\\[ERROR\\\]';
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtZnVuY3Rpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlCQUF5QjtBQUN6Qix1REFBc0Y7QUFDdEYsMkNBQXFDO0FBQ3JDLDZDQUE2QztBQUU3Qyw2Q0FBc0U7QUFDdEUseUVBYW1DO0FBR25DLHlEQUE4QztBQUM5Qyx5REFBa0U7QUFDbEUsK0VBQTZEO0FBQzdELDZCQUE2QjtBQWtQN0IsU0FBUyxZQUFZLENBQ25CLElBQVksRUFDWixnQkFBb0MsRUFDcEMsaUJBQXFDLEVBQ3JDLG1CQUFvQyxFQUNwQyxvQkFBcUMsRUFDckMsdUJBQTJDLEVBQzNDLHdCQUE0QztJQUU1QyxJQUFJLFVBQVUsR0FBeUMsRUFBRSxDQUFBO0lBQ3pELElBQUksaUJBQWlCLEtBQUssU0FBUyxFQUFFO1FBQ25DLFVBQVUsQ0FBQyxRQUFRLEdBQUc7WUFDcEIsQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBaUI7WUFDekIsY0FBYyxFQUFFLElBQUk7WUFDcEIsY0FBYyxFQUFFLElBQUksNkNBQTRCLENBQUMsRUFBQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQztTQUNsRixDQUFBO0tBQ0Y7U0FBTSxJQUFJLHdCQUF3QixLQUFLLFNBQVMsRUFBRTtRQUNqRCxVQUFVLENBQUMsUUFBUSxHQUFHO1lBQ3BCLENBQUMsSUFBSSxDQUFDLEVBQUUsd0JBQXdCO1lBQ2hDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxJQUFJLDZDQUE0QixDQUFDLEVBQUMsT0FBTyxFQUFFLG9CQUFvQixFQUFDLENBQUM7U0FDbEYsQ0FBQTtLQUNGO0lBQ0QsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7UUFDbEMsVUFBVSxDQUFDLE9BQU8sR0FBRztZQUNuQixDQUFDLElBQUksQ0FBQyxFQUFFLGdCQUFnQjtZQUN4QixjQUFjLEVBQUUsSUFBSTtZQUNwQixjQUFjLEVB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QzthQUM3RTtTQUNGO1FBRUQsd0JBQXdCO1FBQ3hCLElBQUksT0FBQSxLQUFLLENBQUMsaUJBQWlCLDBDQUFFLFdBQVcsTUFBSyxTQUFTLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUU7WUFDakcsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLHlCQUFRLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtnQkFDdkQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUTtnQkFDaEMsT0FBTyxjQUFFLEtBQUssQ0FBQyxpQkFBaUIsMENBQUUsZ0JBQWdCLG1DQUFFLGNBQWMsQ0FBQywwQkFBMEI7Z0JBQzdGLFNBQVMsRUFBRSxLQUFLLENBQUMsaUJBQWlCLENBQUMsV0FBVztnQkFDOUMsaUJBQWlCLEVBQUUsQ0FBQzthQUNyQixDQUFDLENBQUM7WUFDSCxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxhQUFhLE1BQUssU0FBUyxFQUFFO2dCQUN4RCxJQUFJLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDN0U7WUFDRCxJQUFJLE9BQUEsS0FBSyxDQUFDLGlCQUFpQiwwQ0FBRSxZQUFZLE1BQUssU0FBUyxFQUFFO2dCQUN2RCxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDM0U7U0FDRjtJQUNILENBQUM7O0FBaElILHdDQWlJQztBQS9IaUIseUNBQTBCLEdBQUcsV0FBVyxDQUFDO0FBQ3pDLDJDQUE0QixHQUFHLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCB7QXJjaGl0ZWN0dXJlLCBDb2RlLCBGdW5jdGlvbiwgUnVudGltZSwgVHJhY2luZ30gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7QnVuZGxpbmdPcHRpb25zLCBCdW5kbGluZ091dHB1dCwgRHVyYXRpb259IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEN1c3RvbUFsYXJtVGhyZXNob2xkLFxuICBEdXJhdGlvblRocmVzaG9sZCxcbiAgRXJyb3JDb3VudFRocmVzaG9sZCxcbiAgRXJyb3JSYXRlVGhyZXNob2xkLFxuICBIaWdoVHBzVGhyZXNob2xkLFxuICBJRGFzaGJvYXJkRmFjdG9yeSxcbiAgTGF0ZW5jeVRocmVzaG9sZCxcbiAgTG93VHBzVGhyZXNob2xkLFxuICBNYXhBZ2VUaHJlc2hvbGQsXG4gIE1vbml0b3JpbmdGYWNhZGUsXG4gIFJ1bm5pbmdUYXNrQ291bnRUaHJlc2hvbGQsXG4gIFVzYWdlVGhyZXNob2xkLFxufSBmcm9tICdjZGstbW9uaXRvcmluZy1jb25zdHJ1Y3RzJztcbmltcG9ydCB7SVRvcGljfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc25zJztcbmltcG9ydCB7SUFsYXJtQWN0aW9ufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQge0xvZ0FsYXJtfSBmcm9tICcuLi8uLi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQge1N0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3l9IGZyb20gJy4uLy4uL2F3cy1tb25pdG9yaW5nJztcbmltcG9ydCB7U25zQWN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2gtYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRnVuY3Rpb25BbGFybVByb3BzIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUb3BpY3MgdG8gc2VuZCBhbGFybSBub3RpZmljYXRpb25zXG4gICAqL1xuICByZWFkb25seSBub3RpZnlUb3BpY3M/OiBbSVRvcGljXTtcblxuICAvKipcbiAgICogQWN0aW9ucyB0byBzZW5kIGFsYXJtIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG5vdGlmeUFjdGlvbnM/OiBbSUFsYXJtQWN0aW9uXTtcblxuICAvKipcbiAgICogTG9nIHBhdHRlcm4gdG8gbWF0Y2ggZm9yIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcXFxcXFxbRVJST1JcXFxcXFxdJ1xuICAgKi9cbiAgcmVhZG9ubHkgbWV0cmljTG9nUGF0dGVybj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgdGhlIGRhc2hib2FyZFxuICAgKlxuICAgKiBAZGVmYXVsdCAnXCJbRVJST1JdXCInXG4gICAqL1xuICByZWFkb25seSBkYXNoYm9hcmRMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIHBhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkRnVuY3Rpb25Qcm9wcyB7XG5cbiAgLyoqXG4gICAqIEVuYWJsZSBBV1MgWC1SYXkgVHJhY2luZy5cbiAgICpcbiAgICogQGRlZmF1bHQgVHJhY2luZy5QQVNTX1RIUk9VR0hcbiAgICovXG4gIHJlYWRvbmx5IHRyYWNpbmc/OiBUcmFjaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRheXMgdG8gcmV0YWluIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGxvZ3MuUmV0ZW50aW9uRGF5cy5USFJFRV9EQVlTXG4gICAqL1xuICByZWFkb25seSBsb2dSZXRlbnRpb24/OiBsb2dzLlJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBcmNoaXRlY3R1cmUuQVJNXzY0XG4gICAqL1xuICByZWFkb25seSBhcmNoaXRlY3R1cmU/OiBBcmNoaXRlY3R1cmU7XG5cbiAgLyoqXG4gICAqIFZQQyBuZXR3b3JrIHRvIHBsYWNlIHRoZSBsYW1iZGEgbmV0d29yayBpbnRlcmZhY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90IHBsYWNlZCBpbiBhIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBsYW1iZGEgaW5zaWRlIHRoZSBWUEMuIE9ubHkgdXNlZCBpZiAndnBjJyBpcyBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBWUEMgZGVmYXVsdCBzdHJhdGVneSBpcyB1c2VkIGlmIG5vdCBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBBbW91bnQgb2YgbWVtb3J5IGluIE1CIGFuZCBwcm9wb3J0aW9uYWxseSBDUFUgcG93ZXIgdG8gYWxsb2NhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDc2OFxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogRnVuY3Rpb24gZXhlY3V0aW9uIHRpbWUgKGluIHNlY29uZHMpIGFmdGVyIHdoaWNoIHRoZSBMYW1iZGEgdGVybWluYXRlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygzMClcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG1ha2UgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBEYXNoYm9hcmRGYWN0b3J5IHRvIHVzZSB3aGVuIGdlbmVyYXRpbmcgQ2xvdWRXYXRjaCBkYXNoYm9hcmRzLlxuICAgKlxuICAgKiBJZiBub3QgZGVmaW5lZCwgZGFzaGJvYXJkcyBhcmUgbm90IGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZEZhY3Rvcnk/OiBJRGFzaGJvYXJkRmFjdG9yeTtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkcyBmb3IgY3JpdGljYWwgYWxhcm1zLlxuICAgKlxuICAgKiBJZiBubyBwcm9wZXJ0aWVzIGFyZSBwcm92aWRlZCwgYSBzZXQgb2YgZGVmYXVsdCBhbGFybXMgYXJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjcml0aWNhbEFsYXJtUHJvcHM/OiBTdGFuZGFyZEZ1bmN0aW9uQWxhcm1Qcm9wcztcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkIGZvciB3YXJuaW5nIGFsYXJtcy5cbiAgICpcbiAgICogSWYgbm8gcHJvcGVydGllcyBhcmUgcHJvdmlkZWQsIGEgc2V0IG9mIGRlZmF1bHQgYWxhcm1zIGFyZSBjcmVhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgd2FybmluZ0FsYXJtUHJvcHM/OiBTdGFuZGFyZEZ1bmN0aW9uQWxhcm1Qcm9wcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQeXRob25GdW5jdGlvblByb3BzIGV4dGVuZHMgU3RhbmRhcmRGdW5jdGlvblByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgZW52aXJvbm1lbnQgZm9yIHRoZSBMYW1iZGEgZnVuY3Rpb24uIE11c3QgYmUgb25lIG9mIHRoZSBQeXRob24gcnVudGltZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJ1bnRpbWUuUFlUSE9OXzNfOVxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IFJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIExvY2F0aW9uIG9uIHRoZSBmaWxlc3lzdGVtIHRoZSBMYW1iZGEgYXNzZXRzIGFyZSBmb3VuZC5cbiAgICpcbiAgICogRXhhbXBsZTogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ215bGFtYmRhJylcbiAgICovXG4gIHJlYWRvbmx5IGVudHJ5OiBzdHJpbmdcblxuICAvKipcbiAgICogRmlsZSBjb250YWluaW5nIHRoZSBoYW5kbGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnaW5kZXgucHknXG4gICAqL1xuICByZWFkb25seSBpbmRleD86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBFeHBvcnRlZCBoYW5kbGVyIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdoYW5kbGVyJ1xuICAgKi9cbiAgcmVhZG9ubHkgaGFuZGxlcj86IHN0cmluZ1xufVxuXG5mdW5jdGlvbiB0b0FsYXJtUHJvcHMoXG4gIHByb3A6IHN0cmluZyxcbiAgd2FybmluZ1RocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uLFxuICBjcml0aWNhbFRocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uLFxuICB3YXJuaW5nQWxhcm1BY3Rpb25zPzogSUFsYXJtQWN0aW9uW10sXG4gIGNyaXRpY2FsQWxhcm1BY3Rpb25zPzogSUFsYXJtQWN0aW9uW10sXG4gIHdhcm5pbmdEZWZhdWx0VGhyZXNob2xkPzogbnVtYmVyIHwgRHVyYXRpb24sXG4gIGNyaXRpY2FsRGVmYXVsdFRocmVzaG9sZD86IG51bWJlciB8IER1cmF0aW9uXG4pOiBSZWNvcmQ8c3RyaW5nLCBDdXN0b21BbGFybVRocmVzaG9sZD4gfCB1bmRlZmluZWQge1xuICBsZXQgYWxhcm1Qcm9wczogUmVjb3JkPHN0cmluZywgQ3VzdG9tQWxhcm1UaHJlc2hvbGQ+ID0ge31cbiAgaWYgKGNyaXRpY2FsVGhyZXNob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICBhbGFybVByb3BzLkNyaXRpY2FsID0ge1xuICAgICAgW3Byb3BdOiBjcml0aWNhbFRocmVzaG9sZCxcbiAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgYWN0aW9uT3ZlcnJpZGU6IG5ldyBTdGFuZGFyZEFsYXJtQWN0aW9uc1N0cmF0ZWd5KHthY3Rpb25zOiBjcml0aWNhbEFsYXJtQWN0aW9uc30pXG4gICAgfVxuICB9IGVsc2UgaWYgKGNyaXRpY2FsRGVmYXVsdFRocmVzaG9sZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgYWxhcm1Qcm9wcy5Dcml0aWNhbCA9IHtcbiAgICAgIFtwcm9wXTogY3JpdGljYWxEZWZhdWx0VGhyZXNob2xkLFxuICAgICAgYWN0aW9uc0VuYWJsZWQ6IHRydWUsXG4gICAgICBhY3Rpb25PdmVycmlkZTogbmV3IFN0YW5kYXJkQWxhcm1BY3Rpb25zU3RyYXRlZ3koe2FjdGlvbnM6IGNyaXRpY2FsQWxhcm1BY3Rpb25zfSlcbiAgICB9XG4gIH1cbiAgaWYgKHdhcm5pbmdUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgIGFsYXJtUHJvcHMuV2FybmluZyA9IHtcbiAgICAgIFtwcm9wXTogd2FybmluZ1RocmVzaG9sZCxcbiAgICAgIGFjdGlvbnNFbmFibGVkOiB0cnVlLFxuICAgICAgYWN0aW9uT3ZlcnJpZGU6IG5ldyBTdGFuZGFyZEFsYXJtQWN0aW9uc1N0cmF0ZWd5KHthY3Rpb25zOiB3YXJuaW5nQWxhcm1BY3Rpb25zfSlcbiAgICB9XG4gIH0gZWxzZSBpZiAod2FybmluZ0RlZmF1bHRUaHJlc2hvbGQgIT09IHVuZGVmaW5lZCkge1xuICAgIGFsYXJtUHJvcHMuV2FybmluZyA9IHtcbiAgICAgIFtwcm9wXTogd2FybmluZ0RlZmF1bHRUaHJlc2hvbGQsXG4gICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgIGFjdGlvbk92ZXJyaWRlOiBuZXcgU3RhbmRhcmRBbGFybUFjdGlvbnNTdHJhdGVneSh7YWN0aW9uczogd2FybmluZ0FsYXJtQWN0aW9uc30pXG4gICAgfVxuICB9XG4gIHJldHVybiBPYmplY3Qua2V5cyhhbGFybVByb3BzKS5sZW5ndGggPiAwID8gYWxhcm1Qcm9wcyA6IHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY2xhc3MgUHl0aG9uRnVuY3Rpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltFUlJPUl1cIic7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0xPR19JTlNJR0hUU19QQVRURVJOID0gJ1xcXFxcXFtFUlJPUlxcXFxcXF0nO1xuICByZWFkb25seSBkZWNsYXJlIG1vbml0b3Jpbmc6IE1vbml0b3JpbmdGYWNhZGVcbiAgcmVhZG9ubHkgZGVjbGFyZSBmdW5jdGlvbjogRnVuY3Rpb247XG4gIHJlYWRvbmx5IGRlY2xhcmUgY3JpdGljYWxMb2dBbGFybTogTG9nQWxhcm07XG4gIHJlYWRvbmx5IGRlY2xhcmUgd2FybmluZ0xvZ0FsYXJtOiBMb2dBbGFybTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHl0aG9uRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLm1vbml0b3JpbmcgPSBuZXcgTW9uaXRvcmluZ0ZhY2FkZSh0aGlzLCAnTW9uaXRvcmluZycsIHtcbiAgICAgIG1ldHJpY0ZhY3RvcnlEZWZhdWx0czoge30sXG4gICAgICBhbGFybUZhY3RvcnlEZWZhdWx0czoge1xuICAgICAgICBhY3Rpb25zRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgYWxhcm1OYW1lUHJlZml4OiBzY29wZS5ub2RlLnBhdGgucmVwbGFjZSgvXFwvL2csICctJyksXG4gICAgICB9LFxuICAgICAgZGFzaGJvYXJkRmFjdG9yeTogcHJvcHMuZGFzaGJvYXJkRmFjdG9yeVxuICAgIH0pO1xuXG4gICAgbGV0IGJ1bmRsaW5nOiBCdW5kbGluZ09wdGlvbnMgfCB1bmRlZmluZWQgPSBmcy5leGlzdHNTeW5jKHBhdGguam9pbihwcm9wcy5lbnRyeSwgJ3JlcXVpcmVtZW50cy50eHQnKSkgPyB7XG4gICAgICBpbWFnZTogcHJvcHMucnVudGltZT8uYnVuZGxpbmdJbWFnZT8/UnVudGltZS5QWVRIT05fM185LmJ1bmRsaW5nSW1hZ2UsXG4gICAgICBjb21tYW5kOiBbXG4gICAgICAgICdiYXNoJywgJy1jJywgW1xuICAgICAgICAgICdwaXAgaW5zdGFsbCAtLXRhcmdldCAvYXNzZXQtb3V0cHV0LyAtciByZXF1aXJlbWVudHMudHh0JyxcbiAgICAgICAgICAnY3AgLXJhICogL2Fzc2V0LW91dHB1dC8nXG4gICAgICAgIF0uam9pbignJiYnKVxuICAgICAgXSxcbiAgICAgIG91dHB1dFR5cGU6IEJ1bmRsaW5nT3V0cHV0Lk5PVF9BUkNISVZFRCxcbiAgICB9IDogdW5kZWZpbmVkXG5cbiAgICB0aGlzLmZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBydW50aW1lOiBwcm9wcy5ydW50aW1lPz9SdW50aW1lLlBZVEhPTl8zXzksXG4gICAgICB0cmFjaW5nOiBwcm9wcy50cmFjaW5nPz9UcmFjaW5nLlBBU1NfVEhST1VHSCxcbiAgICAgIGxvZ1JldGVudGlvbjogcHJvcHMubG9nUmV0ZW50aW9uPz9sb2dzLlJldGVudGlvbkRheXMuVEhSRUVfREFZUyxcbiAgICAgIGFyY2hpdGVjdHVyZTogcHJvcHMuYXJjaGl0ZWN0dXJlPz9BcmNoaXRlY3R1cmUuQVJNXzY0LFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZT8/NzY4LFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dD8/RHVyYXRpb24uc2Vjb25kcygzMCksXG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnQsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChwcm9wcy5lbnRyeSwge2J1bmRsaW5nfSksXG4gICAgICBoYW5kbGVyOiAocHJvcHMuaW5kZXg/PydpbmRleC5weScpLnJlcGxhY2UoJy5weScsICcnKSArICcuJyArIChwcm9wcy5oYW5kbGVyPz8naGFuZGxlcicpXG4gICAgfSk7XG5cbiAgICBjb25zdCB3YXJuUHJvcHMgPSBwcm9wcy53YXJuaW5nQWxhcm1Qcm9wcztcbiAgICBjb25zdCB3YXJuQWN0aW9uczogSUFsYXJtQWN0aW9uW10gPSBbXTtcbiAgICB3YXJuUHJvcHM/Lm5vdGlmeUFjdGlvbnM/LmZvckVhY2goKGFjdGlvbikgPT4gd2FybkFjdGlvbnMucHVzaChhY3Rpb24pKTtcbiAgICB3YXJuUHJvcHM/Lm5vdGlmeVRvcGljcz8uZm9yRWFjaCgodG9waWMpID0+IHdhcm5BY3Rpb25zLnB1c2gobmV3IFNuc0FjdGlvbih0b3BpYykpKTtcbiAgICBjb25zdCBjcml0UHJvcHMgPSBwcm9wcy5jcml0aWNhbEFsYXJtUHJvcHM7XG4gICAgY29uc3QgY3JpdEFjdGlvbnM6IElBbGFybUFjdGlvbltdID0gW107XG4gICAgY3JpdFByb3BzPy5ub3RpZnlBY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IGNyaXRBY3Rpb25zLnB1c2goYWN0aW9uKSk7XG4gICAgY3JpdFByb3BzPy5ub3RpZnlUb3BpY3M/LmZvckVhY2goKHRvcGljKSA9PiBjcml0QWN0aW9ucy5wdXNoKG5ldyBTbnNBY3Rpb24odG9waWMpKSk7XG5cbiAgICB0aGlzLm1vbml0b3JpbmcubW9uaXRvckxhbWJkYUZ1bmN0aW9uKHtcbiAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmZ1bmN0aW9uLFxuICAgICAgbGFtYmRhSW5zaWdodHNFbmFibGVkOiB0cnVlLFxuICAgICAgYWRkVG9BbGFybURhc2hib2FyZDogdHJ1ZSxcbiAgICAgIGFkZFRvRGV0YWlsRGFzaGJvYXJkOiB0cnVlLFxuICAgICAgYWRkVG9TdW1tYXJ5RGFzaGJvYXJkOiB0cnVlLFxuICAgICAgYWRkTGF0ZW5jeVA1MEFsYXJtOiB0b0FsYXJtUHJvcHMoJ21heExhdGVuY3knLCB3YXJuUHJvcHM/LnA1MExhdGVuY3ksIGNyaXRQcm9wcz8ucDUwTGF0ZW5jeSwgd2FybkFjdGlvbnMsIGNyaXRBY3Rpb25zKSBhcyBSZWNvcmQ8c3RyaW5nLCBMYXRlbmN5VGhyZXNob2xkPixcbiAgICAgIGFkZExhdGVuY3lQOTBBbGFybTogdG9BbGFybVByb3BzKCdtYXhMYXRlbmN5Jywgd2FyblByb3BzPy5wOTBMYXRlbmN5LCBjcml0UHJvcHM/LnA5MExhdGVuY3ksIHdhcm5BY3Rpb25zLCBjcml0QWN0aW9ucykgYXMgUmVjb3JkPHN0cmluZywgTGF0ZW5jeVRocmVzaG9sZD4sXG4gICAgICBhZGRMYXRlbmN5UDk5QWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4TGF0ZW5jeScsIHdhcm5Qcm9wcz8ucDk5TGF0ZW5jeSwgY3JpdFByb3BzPy5wOTlMYXRlbmN5LCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIExhdGVuY3lUaHJlc2hvbGQ+LFxuICAgICAgYWRkRmF1bHRDb3VudEFsYXJtOiB0b0FsYXJtUHJvcHMoJ21heEVycm9yQ291bnQnLCB3YXJuUHJvcHM/Lm1heEZhdWx0cywgY3JpdFByb3BzPy5tYXhGYXVsdHMsIHdhcm5BY3Rpb25zLCBjcml0QWN0aW9ucywgdW5kZWZpbmVkLCAwKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvckNvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZEZhdWx0UmF0ZUFsYXJtOiB0b0FsYXJtUHJvcHMoJ21heEVycm9yUmF0ZScsIHdhcm5Qcm9wcz8uYXZnRmF1bHRzLCBjcml0UHJvcHM/LmF2Z0ZhdWx0cywgd2FybkFjdGlvbnMsIGNyaXRBY3Rpb25zKSBhcyBSZWNvcmQ8c3RyaW5nLCBFcnJvclJhdGVUaHJlc2hvbGQ+LFxuICAgICAgYWRkTG93VHBzQWxhcm06IHRvQWxhcm1Qcm9wcygnbWluVHBzJywgd2FyblByb3BzPy5taW5UcHMsIGNyaXRQcm9wcz8ubWluVHBzLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIExvd1Rwc1RocmVzaG9sZD4sXG4gICAgICBhZGRIaWdoVHBzQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4VHBzJywgd2FyblByb3BzPy5tYXhUcHMsIGNyaXRQcm9wcz8ubWF4VHBzLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIEhpZ2hUcHNUaHJlc2hvbGQ+LFxuICAgICAgYWRkVGhyb3R0bGVzQ291bnRBbGFybTogdG9BbGFybVByb3BzKCdtYXhFcnJvckNvdW50Jywgd2FyblByb3BzPy5tYXhUaHJvdHRsZXMsIGNyaXRQcm9wcz8ubWF4VGhyb3R0bGVzLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMsIHVuZGVmaW5lZCwgMCkgYXMgUmVjb3JkPHN0cmluZywgRXJyb3JDb3VudFRocmVzaG9sZD4sXG4gICAgICBhZGRUaHJvdHRsZXNSYXRlQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4RXJyb3JSYXRlJywgd2FyblByb3BzPy5hdmdUaHJvdHRsZXMsIGNyaXRQcm9wcz8uYXZnVGhyb3R0bGVzLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIEVycm9yUmF0ZVRocmVzaG9sZD4sXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4UnVubmluZ1Rhc2tzJywgd2FyblByb3BzPy5tYXhDb25jdXJyZW50RXhlY3V0aW9ucywgY3JpdFByb3BzPy5tYXhDb25jdXJyZW50RXhlY3V0aW9ucywgd2FybkFjdGlvbnMsIGNyaXRBY3Rpb25zKSBhcyBSZWNvcmQ8c3RyaW5nLCBSdW5uaW5nVGFza0NvdW50VGhyZXNob2xkPixcbiAgICAgIGFkZE1heEl0ZXJhdG9yQWdlQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4QWdlSW5NaWxsaXMnLCB3YXJuUHJvcHM/Lm1heEl0ZXJhdG9yQWdlLCBjcml0UHJvcHM/Lm1heEl0ZXJhdG9yQWdlLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIE1heEFnZVRocmVzaG9sZD4sXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhDcHVUb3RhbFRpbWVBbGFybTogdG9BbGFybVByb3BzKCdtYXhEdXJhdGlvbicsIHdhcm5Qcm9wcz8ubWF4Q3B1VGltZSwgY3JpdFByb3BzPy5tYXhDcHVUaW1lLCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIER1cmF0aW9uVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5MENwdVRvdGFsVGltZUFsYXJtOiB0b0FsYXJtUHJvcHMoJ21heER1cmF0aW9uJywgd2FyblByb3BzPy5wOTBDcHVUaW1lLCBjcml0UHJvcHM/LnA5MENwdVRpbWUsIHdhcm5BY3Rpb25zLCBjcml0QWN0aW9ucykgYXMgUmVjb3JkPHN0cmluZywgRHVyYXRpb25UaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nQXZnQ3B1VG90YWxUaW1lQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4RHVyYXRpb24nLCB3YXJuUHJvcHM/LmF2Z0NwdVRpbWUsIGNyaXRQcm9wcz8uYXZnQ3B1VGltZSwgd2FybkFjdGlvbnMsIGNyaXRBY3Rpb25zKSBhcyAgUmVjb3JkPHN0cmluZywgRHVyYXRpb25UaHJlc2hvbGQ+LFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4TWVtb3J5VXRpbGl6YXRpb25BbGFybTogdG9BbGFybVByb3BzKCdtYXhVc2FnZVBlcmNlbnQnLCB3YXJuUHJvcHM/Lm1heE1lbW9yeSwgY3JpdFByb3BzPy5tYXhNZW1vcnksIHdhcm5BY3Rpb25zLCBjcml0QWN0aW9ucykgYXMgIFJlY29yZDxzdHJpbmcsIFVzYWdlVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4VXNhZ2VQZXJjZW50Jywgd2FyblByb3BzPy5wOTBNZW1vcnksIGNyaXRQcm9wcz8ucDkwTWVtb3J5LCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIFVzYWdlVGhyZXNob2xkPixcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ0F2Z01lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRvQWxhcm1Qcm9wcygnbWF4VXNhZ2VQZXJjZW50Jywgd2FyblByb3BzPy5hdmdNZW1vcnksIGNyaXRQcm9wcz8uYXZnTWVtb3J5LCB3YXJuQWN0aW9ucywgY3JpdEFjdGlvbnMpIGFzIFJlY29yZDxzdHJpbmcsIFVzYWdlVGhyZXNob2xkPixcbiAgICB9KTtcblxuICAgIC8vIEFkZCBsb2cgbW9uaXRvcmluZyB0byBkYXNoYm9hcmRcbiAgICBsZXQgY3JpdE1heExvZ0NvdW50ID0gcHJvcHMuY3JpdGljYWxBbGFybVByb3BzPy5tYXhMb2dDb3VudD8/MVxuICAgIGxldCBwYXR0ZXJuID0gJyc7XG4gICAgaWYgKGNyaXRNYXhMb2dDb3VudCA+IDApIHtcbiAgICAgIHBhdHRlcm4gPSBwcm9wcy5jcml0aWNhbEFsYXJtUHJvcHM/LmRhc2hib2FyZExvZ1BhdHRlcm4/P1B5dGhvbkZ1bmN0aW9uLkRFRkFVTFRfTE9HX0lOU0lHSFRTX1BBVFRFUk5cbiAgICB9XG4gICAgaWYgKHByb3BzLndhcm5pbmdBbGFybVByb3BzPy5tYXhMb2dDb3VudCAhPT0gdW5kZWZpbmVkICYmIHBhdHRlcm4gIT09IHByb3BzLndhcm5pbmdBbGFybVByb3BzLmRhc2hib2FyZExvZ1BhdHRlcm4pIHtcbiAgICAgIHBhdHRlcm4gKz0gKHBhdHRlcm4gIT09ICcnID8gJ3wnIDogJycpICsgcHJvcHMud2FybmluZ0FsYXJtUHJvcHMuZGFzaGJvYXJkTG9nUGF0dGVyblxuICAgIH1cbiAgICBpZiAocGF0dGVybiAhPT0gJycpIHtcbiAgICAgIHRoaXMubW9uaXRvcmluZy5tb25pdG9yTG9nKHtcbiAgICAgICAgbG9nR3JvdXBOYW1lOiB0aGlzLmZ1bmN0aW9uLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgcGF0dGVybixcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBjcml0aWNhbCBsb2cgYWxhcm1cbiAgICBpZiAoY3JpdE1heExvZ0NvdW50ID4gMCkge1xuICAgICAgdGhpcy5jcml0aWNhbExvZ0FsYXJtID0gbmV3IExvZ0FsYXJtKHRoaXMsICdMb2dzQ3JpdGljYWwnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLmZ1bmN0aW9uLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuOiBwcm9wcy5jcml0aWNhbEFsYXJtUHJvcHM/Lm1ldHJpY0xvZ1BhdHRlcm4/P1B5dGhvbkZ1bmN0aW9uLkRFRkFVTFRfTE9HX01FVFJJQ19QQVRURVJOLFxuICAgICAgICB0aHJlc2hvbGQ6IGNyaXRNYXhMb2dDb3VudCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDNcbiAgICAgIH0pO1xuICAgICAgaWYgKHByb3BzLmNyaXRpY2FsQWxhcm1Qcm9wcz8ubm90aWZ5QWN0aW9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY3JpdGljYWxMb2dBbGFybS5hZGRBbGFybUFjdGlvbnMocHJvcHMuY3JpdGljYWxBbGFybVByb3BzLm5vdGlmeUFjdGlvbnMpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNyaXRpY2FsQWxhcm1Qcm9wcz8ubm90aWZ5VG9waWNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5jcml0aWNhbExvZ0FsYXJtLmFkZEFsYXJtVG9waWNzKHByb3BzLmNyaXRpY2FsQWxhcm1Qcm9wcy5ub3RpZnlUb3BpY3MpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkZCB3YXJuaW5nIGxvZyBhbGFybVxuICAgIGlmIChwcm9wcy53YXJuaW5nQWxhcm1Qcm9wcz8ubWF4TG9nQ291bnQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy53YXJuaW5nQWxhcm1Qcm9wcy5tYXhMb2dDb3VudCA+IDApIHtcbiAgICAgIHRoaXMud2FybmluZ0xvZ0FsYXJtID0gbmV3IExvZ0FsYXJtKHRoaXMsICdMb2dzV2FybmluZycsIHtcbiAgICAgICAgbG9nR3JvdXA6IHRoaXMuZnVuY3Rpb24ubG9nR3JvdXAsXG4gICAgICAgIHBhdHRlcm46IHByb3BzLndhcm5pbmdBbGFybVByb3BzPy5tZXRyaWNMb2dQYXR0ZXJuPz9QeXRob25GdW5jdGlvbi5ERUZBVUxUX0xPR19NRVRSSUNfUEFUVEVSTixcbiAgICAgICAgdGhyZXNob2xkOiBwcm9wcy53YXJuaW5nQWxhcm1Qcm9wcy5tYXhMb2dDb3VudCxcbiAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDNcbiAgICAgIH0pO1xuICAgICAgaWYgKHByb3BzLndhcm5pbmdBbGFybVByb3BzPy5ub3RpZnlBY3Rpb25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy53YXJuaW5nTG9nQWxhcm0uYWRkQWxhcm1BY3Rpb25zKHByb3BzLndhcm5pbmdBbGFybVByb3BzLm5vdGlmeUFjdGlvbnMpO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLndhcm5pbmdBbGFybVByb3BzPy5ub3RpZnlUb3BpY3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLndhcm5pbmdMb2dBbGFybS5hZGRBbGFybVRvcGljcyhwcm9wcy53YXJuaW5nQWxhcm1Qcm9wcy5ub3RpZnlUb3BpY3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -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 @@
1
+ export * from './standard-alarm-actions-strategy';
@@ -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("./standard-alarm-actions-strategy"), exports);
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxvRUFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3N0YW5kYXJkLWFsYXJtLWFjdGlvbnMtc3RyYXRlZ3knO1xuIl19
@@ -0,0 +1,10 @@
1
+ import { AlarmActionStrategyProps, IAlarmActionStrategy } from "cdk-monitoring-constructs";
2
+ import { IAlarmAction } from "aws-cdk-lib/aws-cloudwatch";
3
+ export interface StandardAlarmActionsStrategyProps {
4
+ readonly actions?: IAlarmAction[];
5
+ }
6
+ export declare class StandardAlarmActionsStrategy implements IAlarmActionStrategy {
7
+ protected readonly actions: IAlarmAction[];
8
+ constructor(props: StandardAlarmActionsStrategyProps);
9
+ addAlarmActions(props: AlarmActionStrategyProps): void;
10
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StandardAlarmActionsStrategy = void 0;
4
+ class StandardAlarmActionsStrategy {
5
+ constructor(props) {
6
+ var _a;
7
+ this.actions = (_a = props.actions) !== null && _a !== void 0 ? _a : [];
8
+ }
9
+ addAlarmActions(props) {
10
+ var _a;
11
+ (_a = this.actions) === null || _a === void 0 ? void 0 : _a.forEach((action) => {
12
+ props.alarm.addAlarmAction(action);
13
+ });
14
+ }
15
+ }
16
+ exports.StandardAlarmActionsStrategy = StandardAlarmActionsStrategy;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtYWxhcm0tYWN0aW9ucy1zdHJhdGVneS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YW5kYXJkLWFsYXJtLWFjdGlvbnMtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsTUFBYSw0QkFBNEI7SUFJdkMsWUFBWSxLQUF3Qzs7UUFDbEQsSUFBSSxDQUFDLE9BQU8sU0FBRyxLQUFLLENBQUMsT0FBTyxtQ0FBRSxFQUFFLENBQUE7SUFDbEMsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUErQjs7UUFDN0MsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMvQixLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNwQyxDQUFDLEVBQUU7SUFDTCxDQUFDO0NBQ0Y7QUFiRCxvRUFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWxhcm1BY3Rpb25TdHJhdGVneVByb3BzLCBJQWxhcm1BY3Rpb25TdHJhdGVneX0gZnJvbSBcImNkay1tb25pdG9yaW5nLWNvbnN0cnVjdHNcIjtcbmltcG9ydCB7SUFsYXJtQWN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZEFsYXJtQWN0aW9uc1N0cmF0ZWd5UHJvcHMge1xuICByZWFkb25seSBhY3Rpb25zPzogSUFsYXJtQWN0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZEFsYXJtQWN0aW9uc1N0cmF0ZWd5IGltcGxlbWVudHMgSUFsYXJtQWN0aW9uU3RyYXRlZ3kge1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBhY3Rpb25zOiBJQWxhcm1BY3Rpb25bXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogU3RhbmRhcmRBbGFybUFjdGlvbnNTdHJhdGVneVByb3BzKSB7XG4gICAgdGhpcy5hY3Rpb25zID0gcHJvcHMuYWN0aW9ucz8/W11cbiAgfVxuXG4gIGFkZEFsYXJtQWN0aW9ucyhwcm9wczogQWxhcm1BY3Rpb25TdHJhdGVneVByb3BzKTogdm9pZCB7XG4gICAgdGhpcy5hY3Rpb25zPy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgIHByb3BzLmFsYXJtLmFkZEFsYXJtQWN0aW9uKGFjdGlvbilcbiAgICB9KTtcbiAgfVxufVxuIl19
package/index.d.ts CHANGED
@@ -1 +1,4 @@
1
+ export * as aws_cloudwatch from './aws-cloudwatch';
2
+ export * as aws_lambda from './aws-lambda';
3
+ export * as aws_monitoring from './aws-monitoring';
1
4
  export * as aws_route53 from './aws-route53';
package/index.js CHANGED
@@ -1,4 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.aws_cloudwatch = require("./aws-cloudwatch");
4
+ exports.aws_lambda = require("./aws-lambda");
5
+ exports.aws_monitoring = require("./aws-monitoring");
3
6
  exports.aws_route53 = require("./aws-route53");
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLCtDQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGF3c19yb3V0ZTUzIGZyb20gJy4vYXdzLXJvdXRlNTMnO1xuXG4iXX0=
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFEQUFtRDtBQUNuRCw2Q0FBMkM7QUFDM0MscURBQW1EO0FBQ25ELCtDQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGF3c19jbG91ZHdhdGNoIGZyb20gJy4vYXdzLWNsb3Vkd2F0Y2gnO1xuZXhwb3J0ICogYXMgYXdzX2xhbWJkYSBmcm9tICcuL2F3cy1sYW1iZGEnO1xuZXhwb3J0ICogYXMgYXdzX21vbml0b3JpbmcgZnJvbSAnLi9hd3MtbW9uaXRvcmluZyc7XG5leHBvcnQgKiBhcyBhd3Nfcm91dGU1MyBmcm9tICcuL2F3cy1yb3V0ZTUzJztcbiJdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "truemark-cdk-lib",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "scripts": {
@@ -24,10 +24,16 @@
24
24
  "exports": {
25
25
  ".": "./index.js",
26
26
  "./package.json": "./package.json",
27
- "./aws-route53": "./aws-route53/index.js"
27
+ "./aws-route53": "./aws-route53/index.js",
28
+ "./aws-monitoring": "./aws-monitoring/index.js",
29
+ "./aws-lambda": "./aws-lambda/index.js",
30
+ "./aws-cloudwatch": "./aws-cloudwatch/index.js"
28
31
  },
29
32
  "publishConfig": {
30
33
  "access": "public"
31
34
  },
32
- "gitHead": "e6e9877fc7bfbcc6adff7c03151309192eb28ae8"
35
+ "dependencies": {
36
+ "cdk-monitoring-constructs": "^1.6.4"
37
+ },
38
+ "gitHead": "21b86e99ab77de7660d53d2a7b504c90af9c3810"
33
39
  }