@sylvesterllc/aws-constructs 1.0.90 → 1.0.91
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 declare const getUUID: () => string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getUUID = void 0;
|
|
4
|
+
const uuid_1 = require("uuid");
|
|
5
|
+
const getUUID = () => {
|
|
6
|
+
return (0, uuid_1.v4)();
|
|
7
|
+
};
|
|
8
|
+
exports.getUUID = getUUID;
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy91dGlsLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBb0M7QUFFN0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBRXhCLE9BQU8sSUFBQSxTQUFNLEdBQUUsQ0FBQztBQUNwQixDQUFDLENBQUM7QUFIVyxRQUFBLE9BQU8sV0FHbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJztcblxuZXhwb3J0IGNvbnN0IGdldFVVSUQgPSAoKSA9PiB7XG5cbiAgICByZXR1cm4gdXVpZHY0KCk7XG59OyJdfQ==
|
|
@@ -8,6 +8,7 @@ const path = require("path");
|
|
|
8
8
|
const baseResource_1 = require("../base/baseResource");
|
|
9
9
|
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
10
10
|
const lambdaHelper_1 = require("./lambdaHelper");
|
|
11
|
+
const util_helper_1 = require("../../helpers/util-helper");
|
|
11
12
|
class CreateLambda extends baseResource_1.BaseResource {
|
|
12
13
|
layers;
|
|
13
14
|
Lambdas = [];
|
|
@@ -93,29 +94,30 @@ class CreateLambda extends baseResource_1.BaseResource {
|
|
|
93
94
|
const invocationMetric = lambda.metricInvocations({
|
|
94
95
|
period: aws_cdk_lib_1.Duration.minutes(3),
|
|
95
96
|
});
|
|
96
|
-
|
|
97
|
+
const uuid = (0, util_helper_1.getUUID)().split('-')[0];
|
|
98
|
+
new aws_cloudwatch_1.Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-error-alarm`, {
|
|
97
99
|
metric: errorMetric,
|
|
98
100
|
threshold: 5,
|
|
99
101
|
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
100
102
|
evaluationPeriods: 3,
|
|
101
|
-
alarmDescription: `${this.config.AppPrefix}
|
|
102
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
103
|
+
alarmDescription: `${this.config.AppPrefix} errors over 3 min period`,
|
|
104
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-error-alarm`
|
|
103
105
|
});
|
|
104
|
-
new aws_cloudwatch_1.Alarm(this.scope, `${this.config.AppPrefix}-${
|
|
106
|
+
new aws_cloudwatch_1.Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-duration-alarm`, {
|
|
105
107
|
metric: durationMetric,
|
|
106
108
|
threshold: 1,
|
|
107
109
|
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
108
110
|
evaluationPeriods: 3,
|
|
109
|
-
alarmDescription: `${this.config.AppPrefix}-${
|
|
110
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
111
|
+
alarmDescription: `${this.config.AppPrefix}-${uuid} duration errors over 3 min period`,
|
|
112
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-duration-alarm`
|
|
111
113
|
});
|
|
112
|
-
const invocationAlarm = new aws_cloudwatch_1.Alarm(this.scope, `${this.config.AppPrefix}-${
|
|
114
|
+
const invocationAlarm = new aws_cloudwatch_1.Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-invocation-alarm`, {
|
|
113
115
|
metric: errorMetric,
|
|
114
116
|
threshold: 1000,
|
|
115
117
|
comparisonOperator: aws_cloudwatch_1.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
116
118
|
evaluationPeriods: 3,
|
|
117
|
-
alarmDescription: `${this.config.AppPrefix}-${
|
|
118
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
119
|
+
alarmDescription: `${this.config.AppPrefix}-${uuid} errors over 3 min period`,
|
|
120
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-invocation-Metric-alarm`
|
|
119
121
|
});
|
|
120
122
|
});
|
|
121
123
|
}
|
|
@@ -135,4 +137,4 @@ class CreateLambda extends baseResource_1.BaseResource {
|
|
|
135
137
|
}
|
|
136
138
|
}
|
|
137
139
|
exports.CreateLambda = CreateLambda;
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUVsRCwrREFBcUY7QUFHckYscUVBQW1HO0FBRW5HLDZCQUE2QjtBQU03Qix1REFBb0Q7QUFDcEQsbURBQXFEO0FBQ3JELGlEQUE4QztBQUc5QyxNQUFhLFlBQWEsU0FBUSwyQkFBNEI7SUFLRDtJQUhsRCxPQUFPLEdBQXFCLEVBQUUsQ0FBQztJQUMvQixhQUFhLEdBQW1DLEVBQUUsQ0FBQztJQUUxRCxZQUFZLEtBQWdCLEVBQUUsTUFBaUIsRUFBVSxNQUF1QjtRQUM1RSxLQUFLLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRGdDLFdBQU0sR0FBTixNQUFNLENBQWlCO1FBRzVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUV2QyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQWdCO1FBRXJDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRS9DLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFUyxZQUFZ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QUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBVSxDQUFDO1FBS3hDLE1BQU0sWUFBWSxHQUF1QyxFQUF3QyxDQUFDO1FBRWxHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDNUIsWUFBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQWdCLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0NBQ0o7QUF6S0Qsb0NBeUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yLCBJQWxhcm1BY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IElSb2xlLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dFwiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBMYW1iZGFIZWxwZXIgfSBmcm9tIFwiLi9sYW1iZGFIZWxwZXJcIjtcblxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlTGFtYmRhIGV4dGVuZHMgQmFzZVJlc291cmNlPE5vZGVqc0Z1bmN0aW9uPiB7XG5cbiAgICBwdWJsaWMgTGFtYmRhczogTm9kZWpzRnVuY3Rpb25bXSA9IFtdO1xuICAgIHB1YmxpYyBMYW1iZGFSZWNvcmRzOiBSZWNvcmQ8c3RyaW5nLCBOb2RlanNGdW5jdGlvbj4gPSB7fTtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGNvbmZpZzogQXBwQ29uZmlnLCBwcml2YXRlIGxheWVycz86IExheWVyVmVyc2lvbltdKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBjb25maWcpO1xuXG4gICAgICAgIGNvbnN0IHJlc291cmNlcyA9IHRoaXMuY3JlYXRlUmVzb3VyY2Uoc2NvcGUpO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlZFJlc291cmNlcyA9IFsuLi5yZXNvdXJjZXNdO1xuXG4gICAgICAgIHRoaXMuTGFtYmRhcyA9IFsuLi5yZXNvdXJjZXNdO1xuXG4gICAgICAgIHRoaXMuY3JlYXRlQWxhcm1zRm9yTGFtYmRhcyh0aGlzLkxhbWJkYXMpO1xuXG4gICAgICAgIHRoaXMuTGFtYmRhUmVjb3JkcyA9IHRoaXMuY3JlYXRlUmVjb3JkRm9yTGFtYmRhKHRoaXMuTGFtYmRhcyk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVPdXRwdXQoc2NvcGUsIHJlc291cmNlcyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZVJlc291cmNlKHNjb3BlOiBDb25zdHJ1Y3QpOiBOb2RlanNGdW5jdGlvbltdIHtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNyZWF0ZUxhbWJkYXModGhpcy5jb25maWcpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNyZWF0ZU91dHB1dDxUPihzY29wZTogQ29uc3RydWN0LCBjcmVhdGVkQXNzZXRzOiBUW10pOiB2b2lkIHtcbiAgICAgICAgY3JlYXRlZEFzc2V0cy5mb3JFYWNoKCh4LCBpZHgpID0+IHtcblxuICAgICAgICAgICAgbmV3IENmbk91dHB1dChzY29wZSwgYGxhbWJkYS0ke2lkeH1gLCB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHZhbHVlOiB4LmZ1bmN0aW9uTmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFtYmRhcyhjb25maWc6IEFwcENvbmZpZyk6IE5vZGVqc0Z1bmN0aW9uW10ge1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZWRMYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdID0gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvbnModGhpcy5zY29wZSwgdW5kZWZpbmVkLCB0aGlzLmxheWVycyk7XG5cbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRMYW1iZGFzO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlTGFtYmRhRnVuY3Rpb25zKHNjb3BlOiBDb25zdHJ1Y3QsIHJvbGU/OiBJUm9sZSwgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10pIHsgICAgICAgIFxuXG4gICAgICAgIGNvbnN0IGNyZWF0ZWRMYW1iZGFzID0gdGhpcy5jb25maWcuUkVTT1VSQ0VTLkxBTUJEQS5tYXAoKGNvbmZpZzogVHNnTGFtYmRhUHJvcCkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgbGFtYmRhUHJvcHMgPSB0aGlzLmNyZWF0ZUxhbWJkYVByb3BzKGNvbmZpZywgcm9sZSwgbGF5ZXJzKTtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEoY29uZmlnLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgICAgICBsZXQgZmN0biA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgbGFtYmRhSWQsIGxhbWJkYVByb3BzKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZjdG47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcyB8fCBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYVByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3AsIHJvbGU/OiBJUm9sZSwgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sIHByb3BzPzogVHNnTGFtYmRhUHJvcHMpIHtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHtcbiAgICAgICAgICAgIHByb3AsXG4gICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHByb3BzOiBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgcHJvcCwgcm9sZSwgbGF5ZXJzIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBOb2RlanNGdW5jdGlvblByb3BzID0ge1xuICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihwcm9wLmNvZGVQYXRoKSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke3Byb3AubmFtZX1gLFxuICAgICAgICAgICAgaGFuZGxlcjogcHJvcC5oYW5kbGVyLFxuICAgICAgICAgICAgbG9nUmV0ZW50aW9uOiAoIXByb3AubG9nRHVyYXRpb24pID8gUmV0ZW50aW9uRGF5cy5GSVZFX0RBWVMgOiBMYW1iZGFIZWxwZXIuZ2V0RGF5VG9TYXZlTG9ncyhwcm9wLmxvZ0R1cmF0aW9uKSxcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgLi4ucHJvcC5lbnZpcm9ubWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6ICdlczIwMjAnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXBNb2RlOiBTb3VyY2VNYXBNb2RlLkVYVEVSTkFMLFxuICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBwcm9wLmVudmlyb25tZW50IHx8IHByb3AuZW52aXJvbm1lbnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9sZSxcbiAgICAgICAgICAgIGxheWVyc1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGFtYmRhUHJvcDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjcmVhdGVBbGFybXNGb3JMYW1iZGFzKGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSwgaWR4KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWV0cmljID0gbGFtYmRhLm1ldHJpY0Vycm9ycyh7XG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpLFxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZHVyYXRpb25NZXRyaWMgPSBsYW1iZGEubWV0cmljRHVyYXRpb24oe1xuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygzKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uTWV0cmljID0gbGFtYmRhLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMyksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgbmV3IEFsYXJtKHRoaXMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWVycm9yLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZXJyb3JNZXRyaWMsXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiA1LFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0gZXJyb3JzIG92ZXIgMyBtaW4gcGVyaW9kYCxcbiAgICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9LWVycm9yLWFsYXJtYFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG5ldyBBbGFybSh0aGlzLnNjb3BlLCBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1kdXJhdGlvbi1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGR1cmF0aW9uTWV0cmljLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9IGR1cmF0aW9uIGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1kdXJhdGlvbi1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uQWxhcm0gPSBuZXcgQWxhcm0odGhpcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke2lkeH0taW52b2NhdGlvbi1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGVycm9yTWV0cmljLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogMTAwMCxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHtpZHh9IGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7aWR4fS1pbnZvY2F0aW9uLU1ldHJpYy1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldElkRm9yTGFtYmRhKGxhbWJkYVByb3A6IFRzZ0xhbWJkYVByb3AsIGFwcENvbmZpZzogQXBwQ29uZmlnKSB7XG4gICAgICAgIHJldHVybiBgJHthcHBDb25maWcuQXBwUHJlZml4fS0ke2xhbWJkYVByb3AubmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuICAgIFxuICAgIHByaXZhdGUgY3JlYXRlUmVjb3JkRm9yTGFtYmRhKGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuY29uZmlnLlJFU09VUkNFUy5MQU1CREEubWFwKChsYW1iZGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBsYW1iZGEubmFtZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhTmFtZXMgPSBbLi4ubmFtZXNdIGFzIGNvbnN0O1xuXG4gICAgICAgIHR5cGUgTGFtYmRhTmFtZSA9IHR5cGVvZiBsYW1iZGFOYW1lc1tudW1iZXJdO1xuICAgIFxuXG4gICAgICAgIGNvbnN0IGxhbWJkYVJlY29yZDogUmVjb3JkPExhbWJkYU5hbWUsIE5vZGVqc0Z1bmN0aW9uPiA9IHt9IGFzIFJlY29yZDxMYW1iZGFOYW1lLCBOb2RlanNGdW5jdGlvbj47XG5cbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsYW1iZGEsIGlkeCkgPT4ge1xuICAgICAgICAgICAgbGFtYmRhUmVjb3JkW2xhbWJkYU5hbWVzW2lkeF0gIGFzIExhbWJkYU5hbWVdID0gbGFtYmRhc1tpZHhdO1xuICAgICAgICB9KTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiBsYW1iZGFSZWNvcmQ7XG4gICAgfVxufVxuXG5cbiJdfQ==
|
|
140
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlTGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Jlc291cmNlcy9sYW1iZGEvY3JlYXRlTGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFrRDtBQUVsRCwrREFBcUY7QUFHckYscUVBQW1HO0FBRW5HLDZCQUE2QjtBQU03Qix1REFBb0Q7QUFDcEQsbURBQXFEO0FBQ3JELGlEQUE4QztBQUM5QywyREFBb0Q7QUFHcEQsTUFBYSxZQUFhLFNBQVEsMkJBQTRCO0lBS0Q7SUFIbEQsT0FBTyxHQUFxQixFQUFFLENBQUM7SUFDL0IsYUFBYSxHQUFtQyxFQUFFLENBQUM7SUFFMUQsWUFBWSxLQUFnQixFQUFFLE1BQWlCLEVBQVUsTUFBdUI7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQURnQyxXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUc1RSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFFOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFOUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxLQUFnQjtRQUVyQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixD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QU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3RELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQVUsQ0FBQztRQUt4QyxNQUFNLFlBQVksR0FBdUMsRUFBd0MsQ0FBQztRQUVsRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQzVCLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFlLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLFlBQVksQ0FBQztJQUN4QixDQUFDO0NBQ0o7QUExS0Qsb0NBMEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgVG9rZW5BdXRob3JpemVyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBBbGFybSwgQ29tcGFyaXNvbk9wZXJhdG9yLCBJQWxhcm1BY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IElSb2xlLCBNYW5hZ2VkUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IExheWVyVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiwgTm9kZWpzRnVuY3Rpb25Qcm9wcywgU291cmNlTWFwTW9kZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBBcHBDb25maWcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL0FwcENvbmZpZ1wiO1xuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcCB9IGZyb20gXCIuLi8uLi9jb25maWcvdHlwZXNcIjtcblxuaW1wb3J0IHsgVHNnTGFtYmRhUHJvcHMgfSBmcm9tIFwiLi4vLi4vY29uZmlnL3R5cGVzL1RzZ0xhbWJkYVByb3BzXCI7XG5pbXBvcnQgeyBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvQ3JlYXRlTGFtYmRhRnVuY3Rpb25JbnB1dFwiO1xuaW1wb3J0IHsgQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvYmFzZVJlc291cmNlXCI7XG5pbXBvcnQgeyBSZXRlbnRpb25EYXlzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgeyBMYW1iZGFIZWxwZXIgfSBmcm9tIFwiLi9sYW1iZGFIZWxwZXJcIjtcbmltcG9ydCB7IGdldFVVSUQgfSBmcm9tIFwiLi4vLi4vaGVscGVycy91dGlsLWhlbHBlclwiO1xuXG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVMYW1iZGEgZXh0ZW5kcyBCYXNlUmVzb3VyY2U8Tm9kZWpzRnVuY3Rpb24+IHtcblxuICAgIHB1YmxpYyBMYW1iZGFzOiBOb2RlanNGdW5jdGlvbltdID0gW107XG4gICAgcHVibGljIExhbWJkYVJlY29yZHM6IFJlY29yZDxzdHJpbmcsIE5vZGVqc0Z1bmN0aW9uPiA9IHt9O1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgY29uZmlnOiBBcHBDb25maWcsIHByaXZhdGUgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10pIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGNvbmZpZyk7XG5cbiAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gdGhpcy5jcmVhdGVSZXNvdXJjZShzY29wZSk7XG5cbiAgICAgICAgdGhpcy5jcmVhdGVkUmVzb3VyY2VzID0gWy4uLnJlc291cmNlc107XG5cbiAgICAgICAgdGhpcy5MYW1iZGFzID0gWy4uLnJlc291cmNlc107XG5cbiAgICAgICAgdGhpcy5jcmVhdGVBbGFybXNGb3JMYW1iZGFzKHRoaXMuTGFtYmRhcyk7XG5cbiAgICAgICAgdGhpcy5MYW1iZGFSZWNvcmRzID0gdGhpcy5jcmVhdGVSZWNvcmRGb3JMYW1iZGEodGhpcy5MYW1iZGFzKTtcblxuICAgICAgICB0aGlzLmNyZWF0ZU91dHB1dChzY29wZSwgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2Uoc2NvcGU6IENvbnN0cnVjdCk6IE5vZGVqc0Z1bmN0aW9uW10ge1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY3JlYXRlTGFtYmRhcyh0aGlzLmNvbmZpZyk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QsIGNyZWF0ZWRBc3NldHM6IFRbXSk6IHZvaWQge1xuICAgICAgICBjcmVhdGVkQXNzZXRzLmZvckVhY2goKHgsIGlkeCkgPT4ge1xuXG4gICAgICAgICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgbGFtYmRhLSR7aWR4fWAsIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgdmFsdWU6IHguZnVuY3Rpb25OYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFzKGNvbmZpZzogQXBwQ29uZmlnKTogTm9kZWpzRnVuY3Rpb25bXSB7XG5cbiAgICAgICAgY29uc3QgY3JlYXRlZExhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10gPSB0aGlzLmNyZWF0ZUxhbWJkYUZ1bmN0aW9ucyh0aGlzLnNjb3BlLCB1bmRlZmluZWQsIHRoaXMubGF5ZXJzKTtcblxuICAgICAgICByZXR1cm4gY3JlYXRlZExhbWJkYXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvbnMoc2NvcGU6IENvbnN0cnVjdCwgcm9sZT86IElSb2xlLCBsYXllcnM/OiBMYXllclZlcnNpb25bXSkge1xuXG4gICAgICAgIGNvbnN0IGNyZWF0ZWRMYW1iZGFzID0gdGhpcy5jb25maWcuUkVTT1VSQ0VTLkxBTUJEQS5tYXAoKGNvbmZpZzogVHNnTGFtYmRhUHJvcCkgPT4ge1xuXG4gICAgICAgICAgICBsZXQgbGFtYmRhUHJvcHMgPSB0aGlzLmNyZWF0ZUxhbWJkYVByb3BzKGNvbmZpZywgcm9sZSwgbGF5ZXJzKTtcblxuICAgICAgICAgICAgY29uc3QgbGFtYmRhSWQgPSBDcmVhdGVMYW1iZGEuZ2V0SWRGb3JMYW1iZGEoY29uZmlnLCB0aGlzLmNvbmZpZyk7XG4gICAgICAgICAgICBsZXQgZmN0biA9IG5ldyBOb2RlanNGdW5jdGlvbihzY29wZSwgbGFtYmRhSWQsIGxhbWJkYVByb3BzKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZjdG47XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjcmVhdGVkTGFtYmRhcyB8fCBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZUxhbWJkYVByb3BzKHByb3A6IFRzZ0xhbWJkYVByb3AsIHJvbGU/OiBJUm9sZSwgbGF5ZXJzPzogTGF5ZXJWZXJzaW9uW10sIHByb3BzPzogVHNnTGFtYmRhUHJvcHMpIHtcblxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHtcbiAgICAgICAgICAgIHByb3AsXG4gICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgbGF5ZXJzLFxuICAgICAgICAgICAgcHJvcHNcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVMYW1iZGFGdW5jdGlvblByb3BzKHByb3BzOiBDcmVhdGVMYW1iZGFGdW5jdGlvbklucHV0KSB7XG4gICAgICAgIGNvbnN0IHsgcHJvcCwgcm9sZSwgbGF5ZXJzIH0gPSBwcm9wcztcblxuICAgICAgICBjb25zdCBsYW1iZGFQcm9wOiBOb2RlanNGdW5jdGlvblByb3BzID0ge1xuICAgICAgICAgICAgZW50cnk6IHBhdGguam9pbihwcm9wLmNvZGVQYXRoKSxcbiAgICAgICAgICAgIGZ1bmN0aW9uTmFtZTogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke3Byb3AubmFtZX1gLFxuICAgICAgICAgICAgaGFuZGxlcjogcHJvcC5oYW5kbGVyLFxuICAgICAgICAgICAgbG9nUmV0ZW50aW9uOiAoIXByb3AubG9nRHVyYXRpb24pID8gUmV0ZW50aW9uRGF5cy5GSVZFX0RBWVMgOiBMYW1iZGFIZWxwZXIuZ2V0RGF5VG9TYXZlTG9ncyhwcm9wLmxvZ0R1cmF0aW9uKSxcbiAgICAgICAgICAgIHJ1bnRpbWU6IHByb3AucnVudGltZSB8fCB0aGlzLmNvbmZpZy5HTE9CQUxTLnN0YWNrUnVudGltZSxcbiAgICAgICAgICAgIHRpbWVvdXQ6IHByb3AuZHVyYXRpb24gfHwgRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgICAgIG1lbW9yeVNpemU6IHByb3AubWVtb3J5IHx8IDUxMixcbiAgICAgICAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgICAgICAgICAgXCJWRVJCT1NFX0xPR0dJTkdcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgICAgICAgLi4ucHJvcC5lbnZpcm9ubWVudFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICAgICAgbWluaWZ5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6ICdlczIwMjAnLFxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXBNb2RlOiBTb3VyY2VNYXBNb2RlLkVYVEVSTkFMLFxuICAgICAgICAgICAgICAgIGVudmlyb25tZW50OiBwcm9wLmVudmlyb25tZW50IHx8IHByb3AuZW52aXJvbm1lbnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcm9sZSxcbiAgICAgICAgICAgIGxheWVyc1xuXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbGFtYmRhUHJvcDtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBjcmVhdGVBbGFybXNGb3JMYW1iZGFzKGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSwgaWR4KSA9PiB7XG5cbiAgICAgICAgICAgIGNvbnN0IGVycm9yTWV0cmljID0gbGFtYmRhLm1ldHJpY0Vycm9ycyh7XG4gICAgICAgICAgICAgICAgcGVyaW9kOiBEdXJhdGlvbi5taW51dGVzKDMpLFxuXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZHVyYXRpb25NZXRyaWMgPSBsYW1iZGEubWV0cmljRHVyYXRpb24oe1xuICAgICAgICAgICAgICAgIHBlcmlvZDogRHVyYXRpb24ubWludXRlcygzKSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBpbnZvY2F0aW9uTWV0cmljID0gbGFtYmRhLm1ldHJpY0ludm9jYXRpb25zKHtcbiAgICAgICAgICAgICAgICBwZXJpb2Q6IER1cmF0aW9uLm1pbnV0ZXMoMyksXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdXVpZCA9IGdldFVVSUQoKS5zcGxpdCgnLScpWzBdO1xuICAgICAgICAgICAgbmV3IEFsYXJtKHRoaXMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHt1dWlkfS1lcnJvci1hbGFybWAsIHtcbiAgICAgICAgICAgICAgICBtZXRyaWM6IGVycm9yTWV0cmljLFxuICAgICAgICAgICAgICAgIHRocmVzaG9sZDogNSxcbiAgICAgICAgICAgICAgICBjb21wYXJpc29uT3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvci5HUkVBVEVSX1RIQU5fT1JfRVFVQUxfVE9fVEhSRVNIT0xELFxuICAgICAgICAgICAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAzLFxuICAgICAgICAgICAgICAgIGFsYXJtRGVzY3JpcHRpb246IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0gZXJyb3JzIG92ZXIgMyBtaW4gcGVyaW9kYCxcbiAgICAgICAgICAgICAgICBhbGFybU5hbWU6IGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHt1dWlkfS1lcnJvci1hbGFybWBcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBuZXcgQWxhcm0odGhpcy5zY29wZSwgYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke3V1aWR9LWR1cmF0aW9uLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZHVyYXRpb25NZXRyaWMsXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke3V1aWR9IGR1cmF0aW9uIGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dXVpZH0tZHVyYXRpb24tYWxhcm1gXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgaW52b2NhdGlvbkFsYXJtID0gbmV3IEFsYXJtKHRoaXMuc2NvcGUsIGAke3RoaXMuY29uZmlnLkFwcFByZWZpeH0tJHt1dWlkfS1pbnZvY2F0aW9uLWFsYXJtYCwge1xuICAgICAgICAgICAgICAgIG1ldHJpYzogZXJyb3JNZXRyaWMsXG4gICAgICAgICAgICAgICAgdGhyZXNob2xkOiAxMDAwLFxuICAgICAgICAgICAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogQ29tcGFyaXNvbk9wZXJhdG9yLkdSRUFURVJfVEhBTl9PUl9FUVVBTF9UT19USFJFU0hPTEQsXG4gICAgICAgICAgICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDMsXG4gICAgICAgICAgICAgICAgYWxhcm1EZXNjcmlwdGlvbjogYCR7dGhpcy5jb25maWcuQXBwUHJlZml4fS0ke3V1aWR9IGVycm9ycyBvdmVyIDMgbWluIHBlcmlvZGAsXG4gICAgICAgICAgICAgICAgYWxhcm1OYW1lOiBgJHt0aGlzLmNvbmZpZy5BcHBQcmVmaXh9LSR7dXVpZH0taW52b2NhdGlvbi1NZXRyaWMtYWxhcm1gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRJZEZvckxhbWJkYShsYW1iZGFQcm9wOiBUc2dMYW1iZGFQcm9wLCBhcHBDb25maWc6IEFwcENvbmZpZykge1xuICAgICAgICByZXR1cm4gYCR7YXBwQ29uZmlnLkFwcFByZWZpeH0tJHtsYW1iZGFQcm9wLm5hbWV9YC50b0xvd2VyQ2FzZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlUmVjb3JkRm9yTGFtYmRhKGxhbWJkYXM6IE5vZGVqc0Z1bmN0aW9uW10pIHtcblxuICAgICAgICBjb25zdCBuYW1lcyA9IHRoaXMuY29uZmlnLlJFU09VUkNFUy5MQU1CREEubWFwKChsYW1iZGEpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBsYW1iZGEubmFtZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgbGFtYmRhTmFtZXMgPSBbLi4ubmFtZXNdIGFzIGNvbnN0O1xuXG4gICAgICAgIHR5cGUgTGFtYmRhTmFtZSA9IHR5cGVvZiBsYW1iZGFOYW1lc1tudW1iZXJdO1xuXG5cbiAgICAgICAgY29uc3QgbGFtYmRhUmVjb3JkOiBSZWNvcmQ8TGFtYmRhTmFtZSwgTm9kZWpzRnVuY3Rpb24+ID0ge30gYXMgUmVjb3JkPExhbWJkYU5hbWUsIE5vZGVqc0Z1bmN0aW9uPjtcblxuICAgICAgICBsYW1iZGFzLmZvckVhY2goKGxhbWJkYSwgaWR4KSA9PiB7XG4gICAgICAgICAgICBsYW1iZGFSZWNvcmRbbGFtYmRhTmFtZXNbaWR4XSBhcyBMYW1iZGFOYW1lXSA9IGxhbWJkYXNbaWR4XTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGxhbWJkYVJlY29yZDtcbiAgICB9XG59XG5cblxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sylvesterllc/aws-constructs",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.91",
|
|
4
4
|
"description": "AWS Constructs",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"keywords": [
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"@types/jest": "^29.5.5",
|
|
38
38
|
"@types/luxon": "^3.3.2",
|
|
39
39
|
"@types/node": "^20.8.3",
|
|
40
|
+
"@types/uuid": "^9.0.8",
|
|
40
41
|
"jest": "^29.7.0",
|
|
41
42
|
"ts-jest": "^29.1.1",
|
|
42
43
|
"ts-node": "^10.9.1",
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"fsbin": "^1.0.11",
|
|
50
51
|
"luxon": "^3.4.3",
|
|
51
52
|
"source-map-support": "^0.5.21",
|
|
53
|
+
"uuid": "^9.0.1",
|
|
52
54
|
"winston": "^3.11.0"
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -14,6 +14,7 @@ import { CreateLambdaFunctionInput } from "../../interfaces/CreateLambdaFunction
|
|
|
14
14
|
import { BaseResource } from "../base/baseResource";
|
|
15
15
|
import { RetentionDays } from "aws-cdk-lib/aws-logs";
|
|
16
16
|
import { LambdaHelper } from "./lambdaHelper";
|
|
17
|
+
import { getUUID } from "../../helpers/util-helper";
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
export class CreateLambda extends BaseResource<NodejsFunction> {
|
|
@@ -61,7 +62,7 @@ export class CreateLambda extends BaseResource<NodejsFunction> {
|
|
|
61
62
|
return createdLambdas;
|
|
62
63
|
}
|
|
63
64
|
|
|
64
|
-
private createLambdaFunctions(scope: Construct, role?: IRole, layers?: LayerVersion[]) {
|
|
65
|
+
private createLambdaFunctions(scope: Construct, role?: IRole, layers?: LayerVersion[]) {
|
|
65
66
|
|
|
66
67
|
const createdLambdas = this.config.RESOURCES.LAMBDA.map((config: TsgLambdaProp) => {
|
|
67
68
|
|
|
@@ -133,31 +134,32 @@ export class CreateLambda extends BaseResource<NodejsFunction> {
|
|
|
133
134
|
period: Duration.minutes(3),
|
|
134
135
|
});
|
|
135
136
|
|
|
136
|
-
|
|
137
|
+
const uuid = getUUID().split('-')[0];
|
|
138
|
+
new Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-error-alarm`, {
|
|
137
139
|
metric: errorMetric,
|
|
138
140
|
threshold: 5,
|
|
139
141
|
comparisonOperator: ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
140
142
|
evaluationPeriods: 3,
|
|
141
|
-
alarmDescription: `${this.config.AppPrefix}
|
|
142
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
143
|
+
alarmDescription: `${this.config.AppPrefix} errors over 3 min period`,
|
|
144
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-error-alarm`
|
|
143
145
|
});
|
|
144
146
|
|
|
145
|
-
new Alarm(this.scope, `${this.config.AppPrefix}-${
|
|
147
|
+
new Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-duration-alarm`, {
|
|
146
148
|
metric: durationMetric,
|
|
147
149
|
threshold: 1,
|
|
148
150
|
comparisonOperator: ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
149
151
|
evaluationPeriods: 3,
|
|
150
|
-
alarmDescription: `${this.config.AppPrefix}-${
|
|
151
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
152
|
+
alarmDescription: `${this.config.AppPrefix}-${uuid} duration errors over 3 min period`,
|
|
153
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-duration-alarm`
|
|
152
154
|
});
|
|
153
155
|
|
|
154
|
-
const invocationAlarm = new Alarm(this.scope, `${this.config.AppPrefix}-${
|
|
156
|
+
const invocationAlarm = new Alarm(this.scope, `${this.config.AppPrefix}-${uuid}-invocation-alarm`, {
|
|
155
157
|
metric: errorMetric,
|
|
156
158
|
threshold: 1000,
|
|
157
159
|
comparisonOperator: ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
|
|
158
160
|
evaluationPeriods: 3,
|
|
159
|
-
alarmDescription: `${this.config.AppPrefix}-${
|
|
160
|
-
alarmName: `${this.config.AppPrefix}-${
|
|
161
|
+
alarmDescription: `${this.config.AppPrefix}-${uuid} errors over 3 min period`,
|
|
162
|
+
alarmName: `${this.config.AppPrefix}-${uuid}-invocation-Metric-alarm`
|
|
161
163
|
});
|
|
162
164
|
});
|
|
163
165
|
}
|
|
@@ -165,7 +167,7 @@ export class CreateLambda extends BaseResource<NodejsFunction> {
|
|
|
165
167
|
public static getIdForLambda(lambdaProp: TsgLambdaProp, appConfig: AppConfig) {
|
|
166
168
|
return `${appConfig.AppPrefix}-${lambdaProp.name}`.toLowerCase();
|
|
167
169
|
}
|
|
168
|
-
|
|
170
|
+
|
|
169
171
|
private createRecordForLambda(lambdas: NodejsFunction[]) {
|
|
170
172
|
|
|
171
173
|
const names = this.config.RESOURCES.LAMBDA.map((lambda) => {
|
|
@@ -175,14 +177,14 @@ export class CreateLambda extends BaseResource<NodejsFunction> {
|
|
|
175
177
|
const lambdaNames = [...names] as const;
|
|
176
178
|
|
|
177
179
|
type LambdaName = typeof lambdaNames[number];
|
|
178
|
-
|
|
180
|
+
|
|
179
181
|
|
|
180
182
|
const lambdaRecord: Record<LambdaName, NodejsFunction> = {} as Record<LambdaName, NodejsFunction>;
|
|
181
183
|
|
|
182
184
|
lambdas.forEach((lambda, idx) => {
|
|
183
|
-
lambdaRecord[lambdaNames[idx]
|
|
185
|
+
lambdaRecord[lambdaNames[idx] as LambdaName] = lambdas[idx];
|
|
184
186
|
});
|
|
185
|
-
|
|
187
|
+
|
|
186
188
|
return lambdaRecord;
|
|
187
189
|
}
|
|
188
190
|
}
|