truemark-cdk-lib 0.0.34-alpha.2 → 0.0.34
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.
- package/aws-lambda/lib/function-alarms.d.ts +6 -3
- package/aws-lambda/lib/function-alarms.js +21 -14
- package/aws-lambda/lib/nodejs-function.d.ts +0 -11
- package/aws-lambda/lib/nodejs-function.js +3 -31
- package/aws-s3/lib/bucket-alarms.d.ts +14 -0
- package/aws-s3/lib/bucket-alarms.js +21 -0
- package/aws-s3/lib/bucket.d.ts +15 -0
- package/aws-s3/lib/bucket.js +31 -0
- package/aws-s3/lib/index.d.ts +1 -1
- package/aws-s3/lib/index.js +2 -2
- package/aws-website/lib/website.d.ts +2 -2
- package/aws-website/lib/website.js +29 -27
- package/package.json +2 -2
- package/aws-s3/lib/standard-bucket.d.ts +0 -43
- package/aws-s3/lib/standard-bucket.js +0 -21
|
@@ -143,15 +143,18 @@ export declare class FunctionAlarms extends AlarmsBase<FunctionAlarmsCategoryOpt
|
|
|
143
143
|
/**
|
|
144
144
|
* Default pattern used for the critical log metric.
|
|
145
145
|
*/
|
|
146
|
-
static readonly DEFAULT_CRITICAL_LOG_METRIC_PATTERN = "
|
|
146
|
+
static readonly DEFAULT_CRITICAL_LOG_METRIC_PATTERN = "ERROR";
|
|
147
|
+
static readonly BRACKET_ERROR_LOG_METRIC_PATTERN = "\"[ERROR]\"";
|
|
147
148
|
/**
|
|
148
149
|
* Default pattern used for the warning log metric.
|
|
149
150
|
*/
|
|
150
|
-
static readonly DEFAULT_WARNING_LOG_METRIC_PATTERN = "
|
|
151
|
+
static readonly DEFAULT_WARNING_LOG_METRIC_PATTERN = "WARNING";
|
|
152
|
+
static readonly BRACKET_WARNING_LOG_METRIC_PATTERN = "\"[WARNING]\"";
|
|
151
153
|
/**
|
|
152
154
|
* Default pattern used to show logs on the CloudWatch dashboard.
|
|
153
155
|
*/
|
|
154
|
-
static readonly DEFAULT_LOG_INSIGHTS_PATTERN = "
|
|
156
|
+
static readonly DEFAULT_LOG_INSIGHTS_PATTERN = "ERROR|WARNING";
|
|
157
|
+
static readonly BRACKET_LOG_INSIGHTS_PATTERN = "\\[ERROR\\]|\\[WARNING\\]";
|
|
155
158
|
private addFunctionMonitoring;
|
|
156
159
|
private criticalLogAlarm;
|
|
157
160
|
private warningLogAlarm;
|
|
@@ -49,13 +49,13 @@ class FunctionAlarms extends aws_monitoring_1.AlarmsBase {
|
|
|
49
49
|
const evaluationPeriods = (_c = fprops === null || fprops === void 0 ? void 0 : fprops.logEvaluationPeriods) !== null && _c !== void 0 ? _c : 2;
|
|
50
50
|
const datapointsToAlarm = (_d = fprops === null || fprops === void 0 ? void 0 : fprops.logDataPointsToAlarm) !== null && _d !== void 0 ? _d : 1;
|
|
51
51
|
if (threshold !== undefined && threshold > 0) {
|
|
52
|
-
const logAlarm = new aws_cloudwatch_1.LogMetricAlarm(this, category +
|
|
52
|
+
const logAlarm = new aws_cloudwatch_1.LogMetricAlarm(this, category + "LogCount", {
|
|
53
53
|
logGroup: this.props.logGroup,
|
|
54
54
|
pattern,
|
|
55
55
|
threshold,
|
|
56
56
|
evaluationPeriods,
|
|
57
57
|
datapointsToAlarm,
|
|
58
|
-
metricName: category +
|
|
58
|
+
metricName: category + "LogCount",
|
|
59
59
|
});
|
|
60
60
|
if (category === aws_monitoring_1.AlarmCategory.Critical) {
|
|
61
61
|
this.criticalLogAlarm = logAlarm;
|
|
@@ -66,14 +66,18 @@ class FunctionAlarms extends aws_monitoring_1.AlarmsBase {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
addLogMonitoringToDashboard() {
|
|
69
|
-
var _a, _b, _c, _d
|
|
70
|
-
let pattern =
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
69
|
+
var _a, _b, _c, _d;
|
|
70
|
+
let pattern = FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN;
|
|
71
|
+
if (((_a = this.props.criticalAlarmOptions) === null || _a === void 0 ? void 0 : _a.dashboardLogPattern) !== undefined || ((_b = this.props.warningAlarmOptions) === null || _b === void 0 ? void 0 : _b.dashboardLogPattern) !== undefined) {
|
|
72
|
+
pattern = "";
|
|
73
|
+
if (((_c = this.props.criticalAlarmOptions) === null || _c === void 0 ? void 0 : _c.dashboardLogPattern) !== undefined) {
|
|
74
|
+
pattern = this.props.criticalAlarmOptions.dashboardLogPattern;
|
|
75
|
+
}
|
|
76
|
+
if (((_d = this.props.warningAlarmOptions) === null || _d === void 0 ? void 0 : _d.dashboardLogPattern) !== undefined) {
|
|
77
|
+
pattern = pattern + (pattern !== "" ? "|" : "") + this.props.warningAlarmOptions.dashboardLogPattern;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (pattern !== "") {
|
|
77
81
|
this.monitoringFacade.monitorLog({
|
|
78
82
|
logGroupName: this.props.logGroup.logGroupName,
|
|
79
83
|
pattern,
|
|
@@ -94,13 +98,16 @@ exports.FunctionAlarms = FunctionAlarms;
|
|
|
94
98
|
/**
|
|
95
99
|
* Default pattern used for the critical log metric.
|
|
96
100
|
*/
|
|
97
|
-
FunctionAlarms.DEFAULT_CRITICAL_LOG_METRIC_PATTERN =
|
|
101
|
+
FunctionAlarms.DEFAULT_CRITICAL_LOG_METRIC_PATTERN = "ERROR";
|
|
102
|
+
FunctionAlarms.BRACKET_ERROR_LOG_METRIC_PATTERN = '"[ERROR]"';
|
|
98
103
|
/**
|
|
99
104
|
* Default pattern used for the warning log metric.
|
|
100
105
|
*/
|
|
101
|
-
FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN =
|
|
106
|
+
FunctionAlarms.DEFAULT_WARNING_LOG_METRIC_PATTERN = "WARNING";
|
|
107
|
+
FunctionAlarms.BRACKET_WARNING_LOG_METRIC_PATTERN = '"[WARNING]"';
|
|
102
108
|
/**
|
|
103
109
|
* Default pattern used to show logs on the CloudWatch dashboard.
|
|
104
110
|
*/
|
|
105
|
-
FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN =
|
|
106
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLHlEQUFxRztBQUlyRyx5REFBb0Q7QUFtS3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsMkJBQThEO0lBeUZoRyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUE5RU8scUJBQXFCOztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7WUFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxtQkFBbUIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixtQ0FBRSxJQUFJO1lBQ3pELG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLG1DQUFFLElBQUk7WUFDM0QscUJBQXFCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUUsSUFBSTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFtQixZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQy9FLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQW1CLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDL0Usa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBbUIsWUFBWSxFQUFFLFlBQVksQ0FB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TUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN2QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBeEdILHdDQXlHQztBQXZHQzs7R0FFRztBQUNhLGtEQUFtQyxHQUFHLFdBQVcsQ0FBQztBQUVsRTs7R0FFRztBQUNhLGlEQUFrQyxHQUFHLGFBQWEsQ0FBQztBQUVuRTs7R0FFRztBQUNhLDJDQUE0QixHQUFHLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBEdXJhdGlvblRocmVzaG9sZCxcbiAgRXJyb3JDb3VudFRocmVzaG9sZCxcbiAgRXJyb3JSYXRlVGhyZXNob2xkLFxuICBIaWdoVHBzVGhyZXNob2xkLFxuICBMYXRlbmN5VGhyZXNob2xkLFxuICBMb3dUcHNUaHJlc2hvbGQsXG4gIE1heEFnZVRocmVzaG9sZCxcbiAgUnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZCxcbiAgVXNhZ2VUaHJlc2hvbGRcbn0gZnJvbSBcImNkay1tb25pdG9yaW5nLWNvbnN0cnVjdHNcIjtcbmltcG9ydCB7QWxhcm1DYXRlZ29yeSwgQWxhcm1zQmFzZSwgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBBbGFybXNPcHRpb25zfSBmcm9tIFwiLi4vLi4vYXdzLW1vbml0b3JpbmdcIjtcbmltcG9ydCB7SUZ1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtJTG9nR3JvdXB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0xvZ01ldHJpY0FsYXJtfSBmcm9tIFwiLi4vLi4vYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7QWxhcm19IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaFwiO1xuXG4vKipcbiAqIENhdGVnb3J5IG9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIGV4dGVuZHMgQWxhcm1zQ2F0ZWdvcnlPcHRpb25zIHtcblxuICAvKipcbiAgICogTWF4aW11bSA1MHRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDUwTGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDkwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwOTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTl0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5OUxhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgZmF1bHRzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgZmF1bHRzXG4gICAqL1xuICByZWFkb25seSBhdmdGYXVsdHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtaW5UcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdHJhbnNhY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhUcHM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSBtYXhUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbnVtYmVyIG9mIHRocm90dGxlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZnVGhyb3R0bGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGNvbmN1cnJlbnQgZXhlY3V0aW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFtb3VudCBvZiB0aW1lIGRhdGEgd2FpdHMgYmVmb3JlIGJlaW5nIHByb2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24uXG4gICAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL3ByZW1pdW1zdXBwb3J0L2tub3dsZWRnZS1jZW50ZXIvbGFtYmRhLWl0ZXJhdG9yLWFnZS9cbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZXJhdG9yQWdlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgQ1BVIHRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHA5MENwdVRpbWU/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQXZlcmFnZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIGFtb3VudCBvZiBtZW1vcnlcbiAgICovXG4gIHJlYWRvbmx5IG1heE1lbW9yeT86IG51bWJlcjtcblxuICAvKipcbiAgICogOTB0aCBwZXJjZW50aWxlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgYXZnTWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBMb2cgcGF0dGVybiB0byBtYXRjaCBmb3IgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgJ1xcXFxcXFtFUlJPUlxcXFxcXF0nXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNMb2dQYXR0ZXJuPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGxvZyBldmVudHMgbWF0Y2hpbmcgdGhlIG1ldHJpY0xvZ1BhdHRlcm4uXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgZm9yIENyaXRpY2FsIEFsYXJtXG4gICAqL1xuICByZWFkb25seSBtYXhMb2dDb3VudD86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZXZhbHVhdGlvbiBwZXJpb2RzIG92ZXIgd2hpY2ggZGF0YSBpcyBjb21wYXJlZCBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRXZhbHVhdGlvblBlcmlvZHM/OiBudW1iZXJcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGRhdGEgcG9pbnRzIHRoYXQgbXVzdCBiZSBicmVhY2hpbmcgdG8gdHJpZ2dlciB0aGUgYWxhcm0gZm9yIGxvZyBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0RhdGFQb2ludHNUb0FsYXJtPzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciB0aGUgZGFzaGJvYXJkXG4gICAqXG4gICAqIEBkZWZhdWx0ICdcIltFUlJPUl1cIidcbiAgICovXG4gIHJlYWRvbmx5IGRhc2hib2FyZExvZ1BhdHRlcm4/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBDbG91ZFdhdGNoIGFsYXJtcyBmb3IgTGFtYmRhIEZ1bmN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucyBleHRlbmRzIEFsYXJtc09wdGlvbnM8RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxuICAvKipcbiAgICogR2VuZXJhdGUgZGFzaGJvYXJkIGNoYXJ0cyBmb3IgTGFtYmRhIGluc2lnaHRzIG1ldHJpY3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYUluc2lnaHRzRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRnVuY3Rpb25BbGFybXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFsYXJtc1Byb3BzIGV4dGVuZHMgRnVuY3Rpb25BbGFybXNPcHRpb25zIHtcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9uIHRvIG9ic2VydmUuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uXG5cbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgYXR0YWNoZWQgdG8gdGhlIGZ1bmN0aW9uIHRvIGJlIG9ic2VydmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXA6IElMb2dHcm91cFxufVxuXG4vKipcbiAqIENyZWF0ZXMgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIGEgTGFtYmRhIEZ1bmN0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgRnVuY3Rpb25BbGFybXMgZXh0ZW5kcyBBbGFybXNCYXNlPEZ1bmN0aW9uQWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBGdW5jdGlvbkFsYXJtc1Byb3BzPiB7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgY3JpdGljYWwgbG9nIG1ldHJpYy5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0NSSVRJQ0FMX0xPR19NRVRSSUNfUEFUVEVSTiA9ICdcIltFUlJPUl1cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIGZvciB0aGUgd2FybmluZyBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfV0FSTklOR19MT0dfTUVUUklDX1BBVFRFUk4gPSAnXCJbV0FSTklOR11cIic7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgcGF0dGVybiB1c2VkIHRvIHNob3cgbG9ncyBvbiB0aGUgQ2xvdWRXYXRjaCBkYXNoYm9hcmQuXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTiA9ICdcXFxcXFxbRVJST1JcXFxcXFxdfFxcXFxcXFtXQVJOSU5HXFxcXFxcXSc7XG5cbiAgcHJpdmF0ZSBhZGRGdW5jdGlvbk1vbml0b3JpbmcoKSB7XG4gICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMYW1iZGFGdW5jdGlvbih7XG4gICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5wcm9wcy5mdW5jdGlvbixcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZFRvRGV0YWlsRGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvRGV0YWlsRGFzaGJvYXJkPz90cnVlLFxuICAgICAgYWRkVG9TdW1tYXJ5RGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvU3VtbWFyeURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZExhdGVuY3lQNTBBbGFybTogdGhpcy50b1JlY29yZDxMYXRlbmN5VGhyZXNob2xkPihcInA1MExhdGVuY3lcIiwgXCJtYXhMYXRlbmN5XCIpLFxuICAgICAgYWRkTGF0ZW5jeVA5MEFsYXJtOiB0aGlzLnRvUmVjb3JkPExhdGVuY3lUaHJlc2hvbGQ+KFwicDkwTGF0ZW5jeVwiLCBcIm1heExhdGVuY3lcIiksXG4gICAgICBhZGRMYXRlbmN5UDk5QWxhcm06IHRoaXMudG9SZWNvcmQ8TGF0ZW5jeVRocmVzaG9sZD4oXCJwOTlMYXRlbmN5XCIsIFwibWF4TGF0ZW5jeVwiKSxcbiAgICAgIGFkZEZhdWx0Q291bnRBbGFybTogdGhpcy50b1JlY29yZDxFcnJvckNvdW50VGhyZXNob2xkPihcIm1heEZhdWx0c1wiLCBcIm1heEVycm9yQ291bnRcIiwgMCksXG4gICAgICBhZGRGYXVsdFJhdGVBbGFybTogdGhpcy50b1JlY29yZDxFcnJvclJhdGVUaHJlc2hvbGQ+KFwiYXZnRmF1bHRzXCIsIFwibWF4RXJyb3JSYXRlXCIpLFxuICAgICAgYWRkTG93VHBzQWxhcm06IHRoaXMudG9SZWNvcmQ8TG93VHBzVGhyZXNob2xkPihcIm1pblRwc1wiLCBcIm1pblRwc1wiKSxcbiAgICAgIGFkZEhpZ2hUcHNBbGFybTogdGhpcy50b1JlY29yZDxIaWdoVHBzVGhyZXNob2xkPihcIm1heFRwc1wiLCBcIm1heFRwc1wiKSxcbiAgICAgIGFkZFRocm90dGxlc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8RXJyb3JDb3VudFRocmVzaG9sZD4oXCJtYXhUaHJvdHRsZXNcIiwgXCJtYXhFcnJvckNvdW50XCIsIDApLFxuICAgICAgYWRkVGhyb3R0bGVzUmF0ZUFsYXJtOiB0aGlzLnRvUmVjb3JkPEVycm9yUmF0ZVRocmVzaG9sZD4oXCJhdmdUaHJvdHRsZXNcIiwgXCJtYXhFcnJvclJhdGVcIiksXG4gICAgICBhZGRDb25jdXJyZW50RXhlY3V0aW9uc0NvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8UnVubmluZ1Rhc2tDb3VudFRocmVzaG9sZD4oXCJtYXhDb25jdXJyZW50RXhlY3V0aW9uc1wiLCBcIm1heFJ1bm5pbmdUYXNrc1wiKSxcbiAgICAgIGFkZE1heEl0ZXJhdG9yQWdlQWxhcm06IHRoaXMudG9SZWNvcmQ8TWF4QWdlVGhyZXNob2xkPihcIm1heEl0ZXJhdG9yQWdlXCIsIFwibWF4QWdlSW5NaWxsaXNcIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJtYXhDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJwOTBDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdBdmdDcHVUb3RhbFRpbWVBbGFybTogdGhpcy50b1JlY29yZDxEdXJhdGlvblRocmVzaG9sZD4oXCJhdmdDcHVUaW1lXCIsIFwibWF4RHVyYXRpb25cIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdNYXhNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkPFVzYWdlVGhyZXNob2xkPihcIm1heE1lbW9yeVwiLCBcIm1heFVzYWdlUGVyY2VudFwiKSxcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ1A5ME1lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQ8VXNhZ2VUaHJlc2hvbGQ+KFwicDkwTWVtb3J5XCIsIFwibWF4VXNhZ2VQZXJjZW50XCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nQXZnTWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZDxVc2FnZVRocmVzaG9sZD4oXCJhdmdNZW1vcnlcIiwgXCJtYXhVc2FnZVBlcmNlbnRcIilcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRPRE8gV2UgbmVlZCB0byBmaWd1cmUgb3V0IGEgd2F5IHRvIGV4dGVuZCBtb25pdG9yaW5nRmFjYWRlIHRvIHN1cHBvcnQgY3JlYXRpbmcgdGhlc2UgYWxhcm1zLiBNYXliZSBleHRlbmQgTW9ub3RvcmluZ0ZhY2FkZS5tb25pdG9yTG9nKClcblxuICBwcml2YXRlIGNyaXRpY2FsTG9nQWxhcm06IExvZ01ldHJpY0FsYXJtIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHdhcm5pbmdMb2dBbGFybTogTG9nTWV0cmljQWxhcm0gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhZGRMb2dBbGFybShjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSwgZGVmYXVsdFRocmVzaG9sZD86IG51bWJlcikge1xuICAgIGNvbnN0IGZwcm9wcyA9IGNhdGVnb3J5ID09PSBBbGFybUNhdGVnb3J5LkNyaXRpY2FsID8gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucyA6IHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucztcbiAgICBjb25zdCB0aHJlc2hvbGQgPSBmcHJvcHM/Lm1heExvZ0NvdW50Pz9kZWZhdWx0VGhyZXNob2xkXG4gICAgY29uc3QgcGF0dGVybiA9IGZwcm9wcz8ubWV0cmljTG9nUGF0dGVybj8/XG4gICAgY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWxcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9DUklUSUNBTF9MT0dfTUVUUklDX1BBVFRFUk5cbiAgICAgIDogRnVuY3Rpb25BbGFybXMuREVGQVVMVF9XQVJOSU5HX0xPR19NRVRSSUNfUEFUVEVSTjtcbiAgICBjb25zdCBldmFsdWF0aW9uUGVyaW9kcyA9IGZwcm9wcz8ubG9nRXZhbHVhdGlvblBlcmlvZHM/PzJcbiAgICBjb25zdCBkYXRhcG9pbnRzVG9BbGFybSA9IGZwcm9wcz8ubG9nRGF0YVBvaW50c1RvQWxhcm0/PzFcbiAgICBpZiAodGhyZXNob2xkICE9PSB1bmRlZmluZWQgJiYgdGhyZXNob2xkID4gMCkge1xuICAgICAgY29uc3QgbG9nQWxhcm0gPSBuZXcgTG9nTWV0cmljQWxhcm0odGhpcywgY2F0ZWdvcnkgKyAnTG9nQ291bnQnLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyAnTG9nQ291bnQnLFxuICAgICAgfSk7XG4gICAgICBpZiAoY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwpIHtcbiAgICAgICAgdGhpcy5jcml0aWNhbExvZ0FsYXJtID0gbG9nQWxhcm07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLndhcm5pbmdMb2dBbGFybSA9IGxvZ0FsYXJtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCkge1xuICAgIGxldCBwYXR0ZXJuID0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiA9PT0gdW5kZWZpbmVkXG4gICAgJiYgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuID09PSB1bmRlZmluZWRcbiAgICAgID8gRnVuY3Rpb25BbGFybXMuREVGQVVMVF9MT0dfSU5TSUdIVFNfUEFUVEVSTlxuICAgICAgOiAnJ1xuICAgIHBhdHRlcm4gKz0gdGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgcGF0dGVybiArPSAocGF0dGVybiAhPT0gJyc/ICd8JyA6ICcnKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybj8/Jyc7XG4gICAgaWYgKHBhdHRlcm4gIT09ICcnKSB7XG4gICAgICB0aGlzLm1vbml0b3JpbmdGYWNhZGUubW9uaXRvckxvZyh7XG4gICAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5wcm9wcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICAgIHBhdHRlcm4sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRnVuY3Rpb25BbGFybXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCk7XG4gICAgdGhpcy5hZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwsIDEpO1xuICAgIHRoaXMuYWRkTG9nQWxhcm0oQWxhcm1DYXRlZ29yeS5XYXJuaW5nKTtcbiAgfVxuXG4gIGdldEFsYXJtcyhjYXRlZ29yeTogQWxhcm1DYXRlZ29yeSk6IEFsYXJtW10ge1xuICAgIGNvbnN0IGFsYXJtcyA9IHN1cGVyLmdldEFsYXJtcyhjYXRlZ29yeSk7XG4gICAgY29uc3QgbG9nQWxhcm0gPSBjYXRlZ29yeSA9PT0gQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMuY3JpdGljYWxMb2dBbGFybT8uYWxhcm0gOiB0aGlzLndhcm5pbmdMb2dBbGFybT8uYWxhcm07XG4gICAgaWYgKGxvZ0FsYXJtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGFsYXJtcy5wdXNoKGxvZ0FsYXJtKTtcbiAgICB9XG4gICAgcmV0dXJuIGFsYXJtcztcbiAgfVxufVxuIl19
|
|
111
|
+
FunctionAlarms.DEFAULT_LOG_INSIGHTS_PATTERN = "ERROR|WARNING";
|
|
112
|
+
FunctionAlarms.BRACKET_LOG_INSIGHTS_PATTERN = '\\\[ERROR\\\]|\\\[WARNING\\\]';
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxhcm1zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVuY3Rpb24tYWxhcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVlBLHlEQUFxRztBQUlyRyx5REFBb0Q7QUFtS3BEOztHQUVHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsMkJBQThEO0lBZ0doRyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCO1FBQ2xFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsOEJBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyw4QkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFsRk8scUJBQXFCOztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLENBQUM7WUFDMUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUNuQyxtQkFBbUIsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG1CQUFtQixtQ0FBRSxJQUFJO1lBQ3pELG9CQUFvQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLG1DQUFFLElBQUk7WUFDM0QscUJBQXFCLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsbUNBQUUsSUFBSTtZQUM3RCxrQkFBa0IsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFtQixZQUFZLEVBQUUsWUFBWSxDQUFDO1lBQy9FLGtCQUFrQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQW1CLFlBQVksRUFBRSxZQUFZLENBQUM7WUFDL0Usa0JBQWtCLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBbUIsWUFBWSxFQUFFLFlBQVksQ0FB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LDhCQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBQyxJQUFJLENBQUMsZ0JBQWdCLDBDQUFFLEtBQUssQ0FBQyxDQUFDLE9BQUMsSUFBSSxDQUFDLGVBQWUsMENBQUUsS0FBSyxDQUFDO1FBQ2xILElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQzs7QUEvR0gsd0NBZ0hDO0FBOUdDOztHQUVHO0FBQ2Esa0RBQW1DLEdBQUcsT0FBTyxDQUFDO0FBQzlDLCtDQUFnQyxHQUFHLFdBQVcsQ0FBQztBQUUvRDs7R0FFRztBQUNhLGlEQUFrQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxpREFBa0MsR0FBRyxhQUFhLENBQUM7QUFFbkU7O0dBRUc7QUFDYSwyQ0FBNEIsR0FBRyxlQUFlLENBQUM7QUFDL0MsMkNBQTRCLEdBQUcsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0R1cmF0aW9ufSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIER1cmF0aW9uVGhyZXNob2xkLFxuICBFcnJvckNvdW50VGhyZXNob2xkLFxuICBFcnJvclJhdGVUaHJlc2hvbGQsXG4gIEhpZ2hUcHNUaHJlc2hvbGQsXG4gIExhdGVuY3lUaHJlc2hvbGQsXG4gIExvd1Rwc1RocmVzaG9sZCxcbiAgTWF4QWdlVGhyZXNob2xkLFxuICBSdW5uaW5nVGFza0NvdW50VGhyZXNob2xkLFxuICBVc2FnZVRocmVzaG9sZFxufSBmcm9tIFwiY2RrLW1vbml0b3JpbmctY29uc3RydWN0c1wiO1xuaW1wb3J0IHtBbGFybUNhdGVnb3J5LCBBbGFybXNCYXNlLCBBbGFybXNDYXRlZ29yeU9wdGlvbnMsIEFsYXJtc09wdGlvbnN9IGZyb20gXCIuLi8uLi9hd3MtbW9uaXRvcmluZ1wiO1xuaW1wb3J0IHtJRnVuY3Rpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQge0lMb2dHcm91cH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TG9nTWV0cmljQWxhcm19IGZyb20gXCIuLi8uLi9hd3MtY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHtBbGFybX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoXCI7XG5cbi8qKlxuICogQ2F0ZWdvcnkgb3B0aW9ucyBmb3IgQ2xvdWRXYXRjaCBhbGFybXMgZm9yIExhbWJkYSBGdW5jdGlvbnMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnMgZXh0ZW5kcyBBbGFybXNDYXRlZ29yeU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIDUwdGggcGVyY2VudGlsZSBsYXRlbmN5XG4gICAqL1xuICByZWFkb25seSBwNTBMYXRlbmN5PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gOTB0aCBwZXJjZW50aWxlIGxhdGVuY3lcbiAgICovXG4gIHJlYWRvbmx5IHA5MExhdGVuY3k/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogTWF4aW11bSA5OXRoIHBlcmNlbnRpbGUgbGF0ZW5jeVxuICAgKi9cbiAgcmVhZG9ubHkgcDk5TGF0ZW5jeT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBmYXVsdHNcbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4RmF1bHRzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIG51bWJlciBvZiBmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGF2Z0ZhdWx0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWluaW11bSB0cmFuc2FjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG1pblRwcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSB0cmFuc2FjdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IG1heFRwcz86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgdGhyb3R0bGVzXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IG1heFRocm90dGxlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSBudW1iZXIgb2YgdGhyb3R0bGVzXG4gICAqL1xuICByZWFkb25seSBhdmdUaHJvdHRsZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gY29uY3VycmVudCBleGVjdXRpb25zXG4gICAqL1xuICByZWFkb25seSBtYXhDb25jdXJyZW50RXhlY3V0aW9ucz86IG51bWJlcjtcblxuICAvKipcbiAgICogQW1vdW50IG9mIHRpbWUgZGF0YSB3YWl0cyBiZWZvcmUgYmVpbmcgcHJvY2Vzc2VkIGJ5IHRoZSBmdW5jdGlvbi5cbiAgICogU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJlbWl1bXN1cHBvcnQva25vd2xlZGdlLWNlbnRlci9sYW1iZGEtaXRlcmF0b3ItYWdlL1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4SXRlcmF0b3JBZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gYW1vdW50IG9mIENQVSB0aW1lXG4gICAqL1xuICByZWFkb25seSBtYXhDcHVUaW1lPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIDkwdGggcGVyY2VudGlsZSBDUFUgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgcDkwQ3B1VGltZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBdmVyYWdlIENQVSB0aW1lXG4gICAqL1xuICByZWFkb25seSBhdmdDcHVUaW1lPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIE1heGltdW0gYW1vdW50IG9mIG1lbW9yeVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4TWVtb3J5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiA5MHRoIHBlcmNlbnRpbGUgbWVtb3J5XG4gICAqL1xuICByZWFkb25seSBwOTBNZW1vcnk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF2ZXJhZ2UgbWVtb3J5XG4gICAqL1xuICByZWFkb25seSBhdmdNZW1vcnk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIExvZyBwYXR0ZXJuIHRvIG1hdGNoIGZvciBtZXRyaWNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnXFxcXFxcW0VSUk9SXFxcXFxcXSdcbiAgICovXG4gIHJlYWRvbmx5IG1ldHJpY0xvZ1BhdHRlcm4/OiBzdHJpbmdcblxuICAvKipcbiAgICogTWF4aW11bSBudW1iZXIgb2YgbG9nIGV2ZW50cyBtYXRjaGluZyB0aGUgbWV0cmljTG9nUGF0dGVybi5cbiAgICpcbiAgICogQGRlZmF1bHQgMCBmb3IgQ3JpdGljYWwgQWxhcm1cbiAgICovXG4gIHJlYWRvbmx5IG1heExvZ0NvdW50PzogbnVtYmVyXG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBldmFsdWF0aW9uIHBlcmlvZHMgb3ZlciB3aGljaCBkYXRhIGlzIGNvbXBhcmVkIGZvciBsb2cgZXZlbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSBsb2dFdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlclxuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgZGF0YSBwb2ludHMgdGhhdCBtdXN0IGJlIGJyZWFjaGluZyB0byB0cmlnZ2VyIHRoZSBhbGFybSBmb3IgbG9nIGV2ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRGF0YVBvaW50c1RvQWxhcm0/OiBudW1iZXJcblxuICAvKipcbiAgICogTG9nIHBhdHRlcm4gdG8gbWF0Y2ggZm9yIHRoZSBkYXNoYm9hcmRcbiAgICpcbiAgICogQGRlZmF1bHQgJ1wiW0VSUk9SXVwiJ1xuICAgKi9cbiAgcmVhZG9ubHkgZGFzaGJvYXJkTG9nUGF0dGVybj86IHN0cmluZ1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIENsb3VkV2F0Y2ggYWxhcm1zIGZvciBMYW1iZGEgRnVuY3Rpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BbGFybXNPcHRpb25zIGV4dGVuZHMgQWxhcm1zT3B0aW9uczxGdW5jdGlvbkFsYXJtc0NhdGVnb3J5T3B0aW9ucz4ge1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBkYXNoYm9hcmQgY2hhcnRzIGZvciBMYW1iZGEgaW5zaWdodHMgbWV0cmljcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSW5zaWdodHNFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBGdW5jdGlvbkFsYXJtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQWxhcm1zUHJvcHMgZXh0ZW5kcyBGdW5jdGlvbkFsYXJtc09wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgZnVuY3Rpb24gdG8gb2JzZXJ2ZS5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb25cblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCBhdHRhY2hlZCB0byB0aGUgZnVuY3Rpb24gdG8gYmUgb2JzZXJ2ZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cDogSUxvZ0dyb3VwXG59XG5cbi8qKlxuICogQ3JlYXRlcyBDbG91ZFdhdGNoIGFsYXJtcyBmb3IgYSBMYW1iZGEgRnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkFsYXJtcyBleHRlbmRzIEFsYXJtc0Jhc2U8RnVuY3Rpb25BbGFybXNDYXRlZ29yeU9wdGlvbnMsIEZ1bmN0aW9uQWxhcm1zUHJvcHM+IHtcblxuICAvKipcbiAgICogRGVmYXVsdCBwYXR0ZXJuIHVzZWQgZm9yIHRoZSBjcml0aWNhbCBsb2cgbWV0cmljLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfQ1JJVElDQUxfTE9HX01FVFJJQ19QQVRURVJOID0gXCJFUlJPUlwiO1xuICBzdGF0aWMgcmVhZG9ubHkgQlJBQ0tFVF9FUlJPUl9MT0dfTUVUUklDX1BBVFRFUk4gPSAnXCJbRVJST1JdXCInO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHBhdHRlcm4gdXNlZCBmb3IgdGhlIHdhcm5pbmcgbG9nIG1ldHJpYy5cbiAgICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1dBUk5JTkdfTE9HX01FVFJJQ19QQVRURVJOID0gXCJXQVJOSU5HXCI7XG4gIHN0YXRpYyByZWFkb25seSBCUkFDS0VUX1dBUk5JTkdfTE9HX01FVFJJQ19QQVRURVJOID0gJ1wiW1dBUk5JTkddXCInO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHBhdHRlcm4gdXNlZCB0byBzaG93IGxvZ3Mgb24gdGhlIENsb3VkV2F0Y2ggZGFzaGJvYXJkLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfTE9HX0lOU0lHSFRTX1BBVFRFUk4gPSBcIkVSUk9SfFdBUk5JTkdcIjtcbiAgc3RhdGljIHJlYWRvbmx5IEJSQUNLRVRfTE9HX0lOU0lHSFRTX1BBVFRFUk4gPSAnXFxcXFxcW0VSUk9SXFxcXFxcXXxcXFxcXFxbV0FSTklOR1xcXFxcXF0nO1xuXG4gIHByaXZhdGUgYWRkRnVuY3Rpb25Nb25pdG9yaW5nKCkge1xuICAgIHRoaXMubW9uaXRvcmluZ0ZhY2FkZS5tb25pdG9yTGFtYmRhRnVuY3Rpb24oe1xuICAgICAgbGFtYmRhRnVuY3Rpb246IHRoaXMucHJvcHMuZnVuY3Rpb24sXG4gICAgICBhZGRUb0FsYXJtRGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvQWxhcm1EYXNoYm9hcmQ/P3RydWUsXG4gICAgICBhZGRUb0RldGFpbERhc2hib2FyZDogdGhpcy5wcm9wcy5hZGRUb0RldGFpbERhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZFRvU3VtbWFyeURhc2hib2FyZDogdGhpcy5wcm9wcy5hZGRUb1N1bW1hcnlEYXNoYm9hcmQ/P3RydWUsXG4gICAgICBhZGRMYXRlbmN5UDUwQWxhcm06IHRoaXMudG9SZWNvcmQ8TGF0ZW5jeVRocmVzaG9sZD4oXCJwNTBMYXRlbmN5XCIsIFwibWF4TGF0ZW5jeVwiKSxcbiAgICAgIGFkZExhdGVuY3lQOTBBbGFybTogdGhpcy50b1JlY29yZDxMYXRlbmN5VGhyZXNob2xkPihcInA5MExhdGVuY3lcIiwgXCJtYXhMYXRlbmN5XCIpLFxuICAgICAgYWRkTGF0ZW5jeVA5OUFsYXJtOiB0aGlzLnRvUmVjb3JkPExhdGVuY3lUaHJlc2hvbGQ+KFwicDk5TGF0ZW5jeVwiLCBcIm1heExhdGVuY3lcIiksXG4gICAgICBhZGRGYXVsdENvdW50QWxhcm06IHRoaXMudG9SZWNvcmQ8RXJyb3JDb3VudFRocmVzaG9sZD4oXCJtYXhGYXVsdHNcIiwgXCJtYXhFcnJvckNvdW50XCIsIDApLFxuICAgICAgYWRkRmF1bHRSYXRlQWxhcm06IHRoaXMudG9SZWNvcmQ8RXJyb3JSYXRlVGhyZXNob2xkPihcImF2Z0ZhdWx0c1wiLCBcIm1heEVycm9yUmF0ZVwiKSxcbiAgICAgIGFkZExvd1Rwc0FsYXJtOiB0aGlzLnRvUmVjb3JkPExvd1Rwc1RocmVzaG9sZD4oXCJtaW5UcHNcIiwgXCJtaW5UcHNcIiksXG4gICAgICBhZGRIaWdoVHBzQWxhcm06IHRoaXMudG9SZWNvcmQ8SGlnaFRwc1RocmVzaG9sZD4oXCJtYXhUcHNcIiwgXCJtYXhUcHNcIiksXG4gICAgICBhZGRUaHJvdHRsZXNDb3VudEFsYXJtOiB0aGlzLnRvUmVjb3JkPEVycm9yQ291bnRUaHJlc2hvbGQ+KFwibWF4VGhyb3R0bGVzXCIsIFwibWF4RXJyb3JDb3VudFwiLCAwKSxcbiAgICAgIGFkZFRocm90dGxlc1JhdGVBbGFybTogdGhpcy50b1JlY29yZDxFcnJvclJhdGVUaHJlc2hvbGQ+KFwiYXZnVGhyb3R0bGVzXCIsIFwibWF4RXJyb3JSYXRlXCIpLFxuICAgICAgYWRkQ29uY3VycmVudEV4ZWN1dGlvbnNDb3VudEFsYXJtOiB0aGlzLnRvUmVjb3JkPFJ1bm5pbmdUYXNrQ291bnRUaHJlc2hvbGQ+KFwibWF4Q29uY3VycmVudEV4ZWN1dGlvbnNcIiwgXCJtYXhSdW5uaW5nVGFza3NcIiksXG4gICAgICBhZGRNYXhJdGVyYXRvckFnZUFsYXJtOiB0aGlzLnRvUmVjb3JkPE1heEFnZVRocmVzaG9sZD4oXCJtYXhJdGVyYXRvckFnZVwiLCBcIm1heEFnZUluTWlsbGlzXCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4Q3B1VG90YWxUaW1lQWxhcm06IHRoaXMudG9SZWNvcmQ8RHVyYXRpb25UaHJlc2hvbGQ+KFwibWF4Q3B1VGltZVwiLCBcIm1heER1cmF0aW9uXCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nUDkwQ3B1VG90YWxUaW1lQWxhcm06IHRoaXMudG9SZWNvcmQ8RHVyYXRpb25UaHJlc2hvbGQ+KFwicDkwQ3B1VGltZVwiLCBcIm1heER1cmF0aW9uXCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nQXZnQ3B1VG90YWxUaW1lQWxhcm06IHRoaXMudG9SZWNvcmQ8RHVyYXRpb25UaHJlc2hvbGQ+KFwiYXZnQ3B1VGltZVwiLCBcIm1heER1cmF0aW9uXCIpLFxuICAgICAgYWRkRW5oYW5jZWRNb25pdG9yaW5nTWF4TWVtb3J5VXRpbGl6YXRpb25BbGFybTogdGhpcy50b1JlY29yZDxVc2FnZVRocmVzaG9sZD4oXCJtYXhNZW1vcnlcIiwgXCJtYXhVc2FnZVBlcmNlbnRcIiksXG4gICAgICBhZGRFbmhhbmNlZE1vbml0b3JpbmdQOTBNZW1vcnlVdGlsaXphdGlvbkFsYXJtOiB0aGlzLnRvUmVjb3JkPFVzYWdlVGhyZXNob2xkPihcInA5ME1lbW9yeVwiLCBcIm1heFVzYWdlUGVyY2VudFwiKSxcbiAgICAgIGFkZEVuaGFuY2VkTW9uaXRvcmluZ0F2Z01lbW9yeVV0aWxpemF0aW9uQWxhcm06IHRoaXMudG9SZWNvcmQ8VXNhZ2VUaHJlc2hvbGQ+KFwiYXZnTWVtb3J5XCIsIFwibWF4VXNhZ2VQZXJjZW50XCIpXG4gICAgfSk7XG4gIH1cblxuICAvLyBUT0RPIFdlIG5lZWQgdG8gZmlndXJlIG91dCBhIHdheSB0byBleHRlbmQgbW9uaXRvcmluZ0ZhY2FkZSB0byBzdXBwb3J0IGNyZWF0aW5nIHRoZXNlIGFsYXJtcy4gTWF5YmUgZXh0ZW5kIE1vbm90b3JpbmdGYWNhZGUubW9uaXRvckxvZygpXG5cbiAgcHJpdmF0ZSBjcml0aWNhbExvZ0FsYXJtOiBMb2dNZXRyaWNBbGFybSB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSB3YXJuaW5nTG9nQWxhcm06IExvZ01ldHJpY0FsYXJtIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYWRkTG9nQWxhcm0oY2F0ZWdvcnk6IEFsYXJtQ2F0ZWdvcnksIGRlZmF1bHRUaHJlc2hvbGQ/OiBudW1iZXIpIHtcbiAgICBjb25zdCBmcHJvcHMgPSBjYXRlZ29yeSA9PT0gQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCA/IHRoaXMucHJvcHMuY3JpdGljYWxBbGFybU9wdGlvbnMgOiB0aGlzLnByb3BzLndhcm5pbmdBbGFybU9wdGlvbnM7XG4gICAgY29uc3QgdGhyZXNob2xkID0gZnByb3BzPy5tYXhMb2dDb3VudD8/ZGVmYXVsdFRocmVzaG9sZFxuICAgIGNvbnN0IHBhdHRlcm4gPSBmcHJvcHM/Lm1ldHJpY0xvZ1BhdHRlcm4/P1xuICAgIGNhdGVnb3J5ID09PSBBbGFybUNhdGVnb3J5LkNyaXRpY2FsXG4gICAgICA/IEZ1bmN0aW9uQWxhcm1zLkRFRkFVTFRfQ1JJVElDQUxfTE9HX01FVFJJQ19QQVRURVJOXG4gICAgICA6IEZ1bmN0aW9uQWxhcm1zLkRFRkFVTFRfV0FSTklOR19MT0dfTUVUUklDX1BBVFRFUk47XG4gICAgY29uc3QgZXZhbHVhdGlvblBlcmlvZHMgPSBmcHJvcHM/LmxvZ0V2YWx1YXRpb25QZXJpb2RzPz8yXG4gICAgY29uc3QgZGF0YXBvaW50c1RvQWxhcm0gPSBmcHJvcHM/LmxvZ0RhdGFQb2ludHNUb0FsYXJtPz8xXG4gICAgaWYgKHRocmVzaG9sZCAhPT0gdW5kZWZpbmVkICYmIHRocmVzaG9sZCA+IDApIHtcbiAgICAgIGNvbnN0IGxvZ0FsYXJtID0gbmV3IExvZ01ldHJpY0FsYXJtKHRoaXMsIGNhdGVnb3J5ICsgXCJMb2dDb3VudFwiLCB7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmxvZ0dyb3VwLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgICB0aHJlc2hvbGQsXG4gICAgICAgIGV2YWx1YXRpb25QZXJpb2RzLFxuICAgICAgICBkYXRhcG9pbnRzVG9BbGFybSxcbiAgICAgICAgbWV0cmljTmFtZTogY2F0ZWdvcnkgKyBcIkxvZ0NvdW50XCIsXG4gICAgICB9KTtcbiAgICAgIGlmIChjYXRlZ29yeSA9PT0gQWxhcm1DYXRlZ29yeS5Dcml0aWNhbCkge1xuICAgICAgICB0aGlzLmNyaXRpY2FsTG9nQWxhcm0gPSBsb2dBbGFybTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud2FybmluZ0xvZ0FsYXJtID0gbG9nQWxhcm07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRMb2dNb25pdG9yaW5nVG9EYXNoYm9hcmQoKSB7XG4gICAgbGV0IHBhdHRlcm4gPSBGdW5jdGlvbkFsYXJtcy5ERUZBVUxUX0xPR19JTlNJR0hUU19QQVRURVJOO1xuICAgIGlmICh0aGlzLnByb3BzLmNyaXRpY2FsQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuICE9PSB1bmRlZmluZWQgfHwgdGhpcy5wcm9wcy53YXJuaW5nQWxhcm1PcHRpb25zPy5kYXNoYm9hcmRMb2dQYXR0ZXJuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhdHRlcm4gPSBcIlwiXG4gICAgICBpZiAodGhpcy5wcm9wcy5jcml0aWNhbEFsYXJtT3B0aW9ucz8uZGFzaGJvYXJkTG9nUGF0dGVybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHBhdHRlcm4gPSB0aGlzLnByb3BzLmNyaXRpY2FsQWxhcm1PcHRpb25zLmRhc2hib2FyZExvZ1BhdHRlcm5cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnByb3BzLndhcm5pbmdBbGFybU9wdGlvbnM/LmRhc2hib2FyZExvZ1BhdHRlcm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybiArIChwYXR0ZXJuICE9PSBcIlwiID8gXCJ8XCIgOiBcIlwiKSArIHRoaXMucHJvcHMud2FybmluZ0FsYXJtT3B0aW9ucy5kYXNoYm9hcmRMb2dQYXR0ZXJuO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGF0dGVybiAhPT0gXCJcIikge1xuICAgICAgdGhpcy5tb25pdG9yaW5nRmFjYWRlLm1vbml0b3JMb2coe1xuICAgICAgICBsb2dHcm91cE5hbWU6IHRoaXMucHJvcHMubG9nR3JvdXAubG9nR3JvdXBOYW1lLFxuICAgICAgICBwYXR0ZXJuLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEZ1bmN0aW9uQWxhcm1zUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLmFkZEZ1bmN0aW9uTW9uaXRvcmluZygpO1xuICAgIHRoaXMuYWRkTG9nTW9uaXRvcmluZ1RvRGFzaGJvYXJkKCk7XG4gICAgdGhpcy5hZGRMb2dBbGFybShBbGFybUNhdGVnb3J5LkNyaXRpY2FsLCAxKTtcbiAgICB0aGlzLmFkZExvZ0FsYXJtKEFsYXJtQ2F0ZWdvcnkuV2FybmluZyk7XG4gIH1cblxuICBnZXRBbGFybXMoY2F0ZWdvcnk6IEFsYXJtQ2F0ZWdvcnkpOiBBbGFybVtdIHtcbiAgICBjb25zdCBhbGFybXMgPSBzdXBlci5nZXRBbGFybXMoY2F0ZWdvcnkpO1xuICAgIGNvbnN0IGxvZ0FsYXJtID0gY2F0ZWdvcnkgPT09IEFsYXJtQ2F0ZWdvcnkuQ3JpdGljYWwgPyB0aGlzLmNyaXRpY2FsTG9nQWxhcm0/LmFsYXJtIDogdGhpcy53YXJuaW5nTG9nQWxhcm0/LmFsYXJtO1xuICAgIGlmIChsb2dBbGFybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBhbGFybXMucHVzaChsb2dBbGFybSk7XG4gICAgfVxuICAgIHJldHVybiBhbGFybXM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,21 +3,10 @@ import { Construct } from "constructs";
|
|
|
3
3
|
import { FunctionAlarms, FunctionAlarmsOptions } from "./function-alarms";
|
|
4
4
|
import { FunctionDeployment } from "./function-deployment";
|
|
5
5
|
import { DeployedFunctionOptions } from "./function";
|
|
6
|
-
export declare enum PreBundlingCommand {
|
|
7
|
-
"None" = "DoNothing",
|
|
8
|
-
"NpmInstall" = "NpmInstall",
|
|
9
|
-
"NpmCleanInstall" = "NpmCleanInstall"
|
|
10
|
-
}
|
|
11
6
|
/**
|
|
12
7
|
* Properties for NodejsFunction
|
|
13
8
|
*/
|
|
14
9
|
export interface NodejsFunctionProps extends nodejs.NodejsFunctionProps, FunctionAlarmsOptions, DeployedFunctionOptions {
|
|
15
|
-
/**
|
|
16
|
-
* Command to run before bundling.
|
|
17
|
-
*
|
|
18
|
-
* @default BeforeBundlingCommand.NpmCleanInstall
|
|
19
|
-
*/
|
|
20
|
-
readonly preBundlingCommand?: PreBundlingCommand | string;
|
|
21
10
|
}
|
|
22
11
|
/**
|
|
23
12
|
* Extended version of the NodejsFunction that supports alarms and deployments and modified defaults.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NodejsFunction =
|
|
3
|
+
exports.NodejsFunction = void 0;
|
|
4
4
|
const nodejs = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
5
5
|
const function_alarms_1 = require("./function-alarms");
|
|
6
6
|
const function_deployment_1 = require("./function-deployment");
|
|
@@ -9,12 +9,6 @@ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
|
9
9
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
10
10
|
const fs = require("fs");
|
|
11
11
|
const path = require("path");
|
|
12
|
-
var PreBundlingCommand;
|
|
13
|
-
(function (PreBundlingCommand) {
|
|
14
|
-
PreBundlingCommand["None"] = "DoNothing";
|
|
15
|
-
PreBundlingCommand["NpmInstall"] = "NpmInstall";
|
|
16
|
-
PreBundlingCommand["NpmCleanInstall"] = "NpmCleanInstall";
|
|
17
|
-
})(PreBundlingCommand = exports.PreBundlingCommand || (exports.PreBundlingCommand = {}));
|
|
18
12
|
/**
|
|
19
13
|
* Extended version of the NodejsFunction that supports alarms and deployments and modified defaults.
|
|
20
14
|
*/
|
|
@@ -28,29 +22,7 @@ class NodejsFunction extends nodejs.NodejsFunction {
|
|
|
28
22
|
timeout: aws_cdk_lib_1.Duration.seconds(30),
|
|
29
23
|
runtime: aws_lambda_1.Runtime.NODEJS_16_X,
|
|
30
24
|
depsLockFilePath: NodejsFunction.findDepsLockFile(props.entry),
|
|
31
|
-
...props
|
|
32
|
-
bundling: {
|
|
33
|
-
commandHooks: {
|
|
34
|
-
beforeBundling(inputDir, outputDir) {
|
|
35
|
-
if (props.preBundlingCommand === PreBundlingCommand.None) {
|
|
36
|
-
return [];
|
|
37
|
-
}
|
|
38
|
-
else if (props.preBundlingCommand === undefined || props.preBundlingCommand === PreBundlingCommand.NpmCleanInstall) {
|
|
39
|
-
return [`if [ -f ${inputDir}/package-lock.json ]; then cd ${inputDir} && npm ci --prefer-offline --no-fund; fi`];
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
return [`if [ -f ${inputDir}/package-lock.json ]; then cd ${inputDir} && npm install --no-fund; fi`];
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
beforeInstall(inputDir, outputDir) {
|
|
46
|
-
return [];
|
|
47
|
-
},
|
|
48
|
-
afterBundling(inputDir, outputDir) {
|
|
49
|
-
return [];
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
...props.bundling
|
|
53
|
-
},
|
|
25
|
+
...props
|
|
54
26
|
});
|
|
55
27
|
this.alarms = new function_alarms_1.FunctionAlarms(this, "Alarms", {
|
|
56
28
|
function: this,
|
|
@@ -81,4 +53,4 @@ class NodejsFunction extends nodejs.NodejsFunction {
|
|
|
81
53
|
}
|
|
82
54
|
}
|
|
83
55
|
exports.NodejsFunction = NodejsFunction;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm9kZWpzLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF1RDtBQUV2RCx1REFBd0U7QUFDeEUsK0RBQXlEO0FBRXpELG1EQUFtRDtBQUNuRCx1REFBNkQ7QUFDN0QsNkNBQXFDO0FBQ3JDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFTN0I7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxNQUFNLENBQUMsY0FBYztJQWV2RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBCOztRQUVsRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSx3QkFBYSxDQUFDLFVBQVU7WUFDdEMsWUFBWSxFQUFFLHlCQUFZLENBQUMsTUFBTTtZQUNqQyxVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixnQkFBZ0IsRUFBRSxjQUFjLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUM5RCxHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZ0NBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQy9DLFFBQVEsRUFBRSxJQUFJO1lBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQztRQUVILGdCQUFJLEtBQUssQ0FBQyxpQkFBaUIsMENBQUUsZ0JBQWdCLG1DQUFFLElBQUksRUFBRTtZQUNuRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksd0NBQWtCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDM0QsR0FBRyxLQUFLLENBQUMsaUJBQWlCO2dCQUMxQixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztZQUNILGdCQUFJLEtBQUssQ0FBQyxpQkFBaUIsMENBQUUscUJBQXFCLG1DQUFFLElBQUksRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQzthQUMvRDtZQUNELGdCQUFJLEtBQUssQ0FBQyxpQkFBaUIsMENBQUUsb0JBQW9CLG1DQUFFLEtBQUssRUFBRTtnQkFDeEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQzthQUM5RDtTQUNGO0lBQ0gsQ0FBQztJQXhDTyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBeUI7UUFDdkQsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7WUFDN0UsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ25DLE9BQU8sZ0JBQWdCLENBQUM7YUFDekI7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFBO0lBQ2xCLENBQUM7Q0FpQ0Y7QUE5Q0Qsd0NBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbm9kZWpzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7RnVuY3Rpb25BbGFybXMsIEZ1bmN0aW9uQWxhcm1zT3B0aW9uc30gZnJvbSBcIi4vZnVuY3Rpb24tYWxhcm1zXCI7XG5pbXBvcnQge0Z1bmN0aW9uRGVwbG95bWVudH0gZnJvbSBcIi4vZnVuY3Rpb24tZGVwbG95bWVudFwiO1xuaW1wb3J0IHtEZXBsb3llZEZ1bmN0aW9uT3B0aW9uc30gZnJvbSBcIi4vZnVuY3Rpb25cIjtcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge0FyY2hpdGVjdHVyZSwgUnVudGltZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7RHVyYXRpb259IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTm9kZWpzRnVuY3Rpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlanNGdW5jdGlvblByb3BzIGV4dGVuZHMgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uUHJvcHMsIEZ1bmN0aW9uQWxhcm1zT3B0aW9ucywgRGVwbG95ZWRGdW5jdGlvbk9wdGlvbnMge1xuXG59XG5cbi8qKlxuICogRXh0ZW5kZWQgdmVyc2lvbiBvZiB0aGUgTm9kZWpzRnVuY3Rpb24gdGhhdCBzdXBwb3J0cyBhbGFybXMgYW5kIGRlcGxveW1lbnRzIGFuZCBtb2RpZmllZCBkZWZhdWx0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVqc0Z1bmN0aW9uIGV4dGVuZHMgbm9kZWpzLk5vZGVqc0Z1bmN0aW9uIHtcblxuICByZWFkb25seSBhbGFybXM6IEZ1bmN0aW9uQWxhcm1zO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBGdW5jdGlvbkRlcGxveW1lbnQ7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZmluZERlcHNMb2NrRmlsZShlbnRyeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZW50cnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZGVwc0xvY2tGaWxlUGF0aCA9IHBhdGguam9pbihwYXRoLmRpcm5hbWUoZW50cnkpLCBcInBhY2thZ2UtbG9jay5qc29uXCIpO1xuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoZGVwc0xvY2tGaWxlUGF0aCkpIHtcbiAgICAgICAgcmV0dXJuIGRlcHNMb2NrRmlsZVBhdGg7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOb2RlanNGdW5jdGlvblByb3BzKSB7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGxvZ1JldGVudGlvbjogUmV0ZW50aW9uRGF5cy5USFJFRV9EQVlTLCAvLyBjaGFuZ2UgZGVmYXVsdCBmcm9tIElORklOSVRFXG4gICAgICBhcmNoaXRlY3R1cmU6IEFyY2hpdGVjdHVyZS5BUk1fNjQsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gWDg2XzY0XG4gICAgICBtZW1vcnlTaXplOiA3NjgsIC8vIGNoYW5nZSBkZWZhdWx0IGZyb20gMTI4XG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSwgLy8gY2hhbmdlIGRlZmF1bHQgZnJvbSAzXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xNl9YLCAvLyBjaGFuZ2UgZGVmYXVsdCBmcm9tIE5PREVKU18xNF9YXG4gICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBOb2RlanNGdW5jdGlvbi5maW5kRGVwc0xvY2tGaWxlKHByb3BzLmVudHJ5KSxcbiAgICAgIC4uLnByb3BzXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsYXJtcyA9IG5ldyBGdW5jdGlvbkFsYXJtcyh0aGlzLCBcIkFsYXJtc1wiLCB7XG4gICAgICBmdW5jdGlvbjogdGhpcyxcbiAgICAgIGxvZ0dyb3VwOiB0aGlzLmxvZ0dyb3VwLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uY3JlYXRlRGVwbG95bWVudD8/dHJ1ZSkge1xuICAgICAgdGhpcy5kZXBsb3ltZW50ID0gbmV3IEZ1bmN0aW9uRGVwbG95bWVudCh0aGlzLCBcIkRlcGxveW1lbnRcIiwge1xuICAgICAgICAuLi5wcm9wcy5kZXBsb3ltZW50T3B0aW9ucyxcbiAgICAgICAgZnVuY3Rpb246IHRoaXNcbiAgICAgIH0pO1xuICAgICAgaWYgKHByb3BzLmRlcGxveW1lbnRPcHRpb25zPy5pbmNsdWRlQ3JpdGljYWxBbGFybXM/P3RydWUpIHtcbiAgICAgICAgdGhpcy5kZXBsb3ltZW50LmFkZEFsYXJtcyguLi50aGlzLmFsYXJtcy5nZXRDcml0aWNhbEFsYXJtcygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5kZXBsb3ltZW50T3B0aW9ucz8uaW5jbHVkZVdhcm5pbmdBbGFybXM/P2ZhbHNlKSB7XG4gICAgICAgIHRoaXMuZGVwbG95bWVudC5hZGRBbGFybXMoLi4udGhpcy5hbGFybXMuZ2V0V2FybmluZ0FsYXJtcygpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AlarmsBase, AlarmsCategoryOptions, AlarmsOptions } from "../../aws-monitoring";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { IBucket } from "aws-cdk-lib/aws-s3";
|
|
4
|
+
export interface BucketAlarmsCategoryOptions extends AlarmsCategoryOptions {
|
|
5
|
+
}
|
|
6
|
+
export interface BucketAlarmsOptions extends AlarmsOptions<BucketAlarmsCategoryOptions> {
|
|
7
|
+
}
|
|
8
|
+
export interface BucketAlarmProps extends BucketAlarmsOptions {
|
|
9
|
+
readonly bucket: IBucket;
|
|
10
|
+
}
|
|
11
|
+
export declare class BucketAlarms extends AlarmsBase<BucketAlarmsCategoryOptions, BucketAlarmProps> {
|
|
12
|
+
private addBucketMonitoring;
|
|
13
|
+
constructor(scope: Construct, id: string, props: BucketAlarmProps);
|
|
14
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BucketAlarms = void 0;
|
|
4
|
+
const aws_monitoring_1 = require("../../aws-monitoring");
|
|
5
|
+
class BucketAlarms extends aws_monitoring_1.AlarmsBase {
|
|
6
|
+
addBucketMonitoring() {
|
|
7
|
+
var _a, _b, _c;
|
|
8
|
+
this.monitoringFacade.monitorS3Bucket({
|
|
9
|
+
bucket: this.props.bucket,
|
|
10
|
+
addToAlarmDashboard: (_a = this.props.addToAlarmDashboard) !== null && _a !== void 0 ? _a : true,
|
|
11
|
+
addToDetailDashboard: (_b = this.props.addToDetailDashboard) !== null && _b !== void 0 ? _b : true,
|
|
12
|
+
addToSummaryDashboard: (_c = this.props.addToSummaryDashboard) !== null && _c !== void 0 ? _c : true,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
constructor(scope, id, props) {
|
|
16
|
+
super(scope, id, props);
|
|
17
|
+
this.addBucketMonitoring();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.BucketAlarms = BucketAlarms;
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LWFsYXJtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1Y2tldC1hbGFybXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseURBQXNGO0FBa0J0RixNQUFhLFlBQWEsU0FBUSwyQkFBeUQ7SUFFakYsbUJBQW1COztRQUN6QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDO1lBQ3BDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDekIsbUJBQW1CLFFBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsbUNBQUUsSUFBSTtZQUN6RCxvQkFBb0IsUUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixtQ0FBRSxJQUFJO1lBQzNELHFCQUFxQixRQUFFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLG1DQUFFLElBQUk7U0FDOUQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBZkQsb0NBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FsYXJtc0Jhc2UsIEFsYXJtc0NhdGVnb3J5T3B0aW9ucywgQWxhcm1zT3B0aW9uc30gZnJvbSBcIi4uLy4uL2F3cy1tb25pdG9yaW5nXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7SUJ1Y2tldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldEFsYXJtc0NhdGVnb3J5T3B0aW9ucyBleHRlbmRzIEFsYXJtc0NhdGVnb3J5T3B0aW9ucyB7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWNrZXRBbGFybXNPcHRpb25zIGV4dGVuZHMgQWxhcm1zT3B0aW9uczxCdWNrZXRBbGFybXNDYXRlZ29yeU9wdGlvbnM+IHtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldEFsYXJtUHJvcHMgZXh0ZW5kcyBCdWNrZXRBbGFybXNPcHRpb25zIHtcblxuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEJ1Y2tldEFsYXJtcyBleHRlbmRzIEFsYXJtc0Jhc2U8QnVja2V0QWxhcm1zQ2F0ZWdvcnlPcHRpb25zLCBCdWNrZXRBbGFybVByb3BzPiB7XG5cbiAgcHJpdmF0ZSBhZGRCdWNrZXRNb25pdG9yaW5nKCkge1xuICAgIHRoaXMubW9uaXRvcmluZ0ZhY2FkZS5tb25pdG9yUzNCdWNrZXQoe1xuICAgICAgYnVja2V0OiB0aGlzLnByb3BzLmJ1Y2tldCxcbiAgICAgIGFkZFRvQWxhcm1EYXNoYm9hcmQ6IHRoaXMucHJvcHMuYWRkVG9BbGFybURhc2hib2FyZD8/dHJ1ZSxcbiAgICAgIGFkZFRvRGV0YWlsRGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvRGV0YWlsRGFzaGJvYXJkPz90cnVlLFxuICAgICAgYWRkVG9TdW1tYXJ5RGFzaGJvYXJkOiB0aGlzLnByb3BzLmFkZFRvU3VtbWFyeURhc2hib2FyZD8/dHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCdWNrZXRBbGFybVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5hZGRCdWNrZXRNb25pdG9yaW5nKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { BucketAlarms } from "./bucket-alarms";
|
|
4
|
+
/**
|
|
5
|
+
* Properties of Bucket.
|
|
6
|
+
*/
|
|
7
|
+
export interface BucketProps extends s3.BucketProps {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Extended version of Bucket that changes defaults.
|
|
11
|
+
*/
|
|
12
|
+
export declare class Bucket extends s3.Bucket {
|
|
13
|
+
readonly alarms: BucketAlarms;
|
|
14
|
+
constructor(scope: Construct, id: string, props?: BucketProps);
|
|
15
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Bucket = void 0;
|
|
4
|
+
const s3 = require("aws-cdk-lib/aws-s3");
|
|
5
|
+
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const bucket_alarms_1 = require("./bucket-alarms");
|
|
8
|
+
/**
|
|
9
|
+
* Extended version of Bucket that changes defaults.
|
|
10
|
+
*/
|
|
11
|
+
class Bucket extends s3.Bucket {
|
|
12
|
+
constructor(scope, id, props) {
|
|
13
|
+
var _a, _b, _c, _d;
|
|
14
|
+
super(scope, id, {
|
|
15
|
+
encryption: (props === null || props === void 0 ? void 0 : props.encryptionKey) ? aws_s3_1.BucketEncryption.KMS : aws_s3_1.BucketEncryption.S3_MANAGED,
|
|
16
|
+
removalPolicy: (_a = props === null || props === void 0 ? void 0 : props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
17
|
+
autoDeleteObjects: (props === null || props === void 0 ? void 0 : props.removalPolicy) === undefined || props.removalPolicy !== aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
18
|
+
versioned: (_b = props === null || props === void 0 ? void 0 : props.versioned) !== null && _b !== void 0 ? _b : false,
|
|
19
|
+
publicReadAccess: (_c = props === null || props === void 0 ? void 0 : props.publicReadAccess) !== null && _c !== void 0 ? _c : false,
|
|
20
|
+
blockPublicAccess: (_d = props === null || props === void 0 ? void 0 : props.blockPublicAccess) !== null && _d !== void 0 ? _d : aws_s3_1.BlockPublicAccess.BLOCK_ALL,
|
|
21
|
+
...props
|
|
22
|
+
// TODO Look at adding easy support for bucket access logs
|
|
23
|
+
});
|
|
24
|
+
this.alarms = new bucket_alarms_1.BucketAlarms(this, "Alarms", {
|
|
25
|
+
bucket: this,
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.Bucket = Bucket;
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF5QztBQUV6QywrQ0FBdUU7QUFDdkUsNkNBQTBDO0FBQzFDLG1EQUE2QztBQU83Qzs7R0FFRztBQUNILE1BQWEsTUFBTyxTQUFRLEVBQUUsQ0FBQyxNQUFNO0lBSW5DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7O1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsVUFBVSxFQUFFLENBQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGFBQWEsRUFBQSxDQUFDLENBQUEseUJBQWdCLENBQUMsR0FBRyxDQUFBLENBQUMsQ0FBQSx5QkFBZ0IsQ0FBQyxVQUFVO1lBQ2pGLGFBQWEsUUFBRSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxtQ0FBRSwyQkFBYSxDQUFDLE1BQU07WUFDekQsaUJBQWlCLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxNQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLDJCQUFhLENBQUMsTUFBTTtZQUNyRyxTQUFTLFFBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsbUNBQUUsS0FBSztZQUNsQyxnQkFBZ0IsUUFBRSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsZ0JBQWdCLG1DQUFFLEtBQUs7WUFDaEQsaUJBQWlCLFFBQUUsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLGlCQUFpQixtQ0FBRSwwQkFBaUIsQ0FBQyxTQUFTO1lBQ3hFLEdBQUcsS0FBSztZQUNSLDBEQUEwRDtTQUMzRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksNEJBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzdDLE1BQU0sRUFBRSxJQUFJO1lBQ1osR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBckJELHdCQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7QmxvY2tQdWJsaWNBY2Nlc3MsIEJ1Y2tldEVuY3J5cHRpb259IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7UmVtb3ZhbFBvbGljeX0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0J1Y2tldEFsYXJtc30gZnJvbSBcIi4vYnVja2V0LWFsYXJtc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgQnVja2V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1Y2tldFByb3BzIGV4dGVuZHMgczMuQnVja2V0UHJvcHMge31cblxuLyoqXG4gKiBFeHRlbmRlZCB2ZXJzaW9uIG9mIEJ1Y2tldCB0aGF0IGNoYW5nZXMgZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdWNrZXQgZXh0ZW5kcyBzMy5CdWNrZXQge1xuXG4gIHJlYWRvbmx5IGFsYXJtczogQnVja2V0QWxhcm1zO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGVuY3J5cHRpb246IHByb3BzPy5lbmNyeXB0aW9uS2V5P0J1Y2tldEVuY3J5cHRpb24uS01TOkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5Pz9SZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiBwcm9wcz8ucmVtb3ZhbFBvbGljeSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnJlbW92YWxQb2xpY3kgIT09IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgdmVyc2lvbmVkOiBwcm9wcz8udmVyc2lvbmVkPz9mYWxzZSxcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IHByb3BzPy5wdWJsaWNSZWFkQWNjZXNzPz9mYWxzZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBwcm9wcz8uYmxvY2tQdWJsaWNBY2Nlc3M/P0Jsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIC4uLnByb3BzXG4gICAgICAvLyBUT0RPIExvb2sgYXQgYWRkaW5nIGVhc3kgc3VwcG9ydCBmb3IgYnVja2V0IGFjY2VzcyBsb2dzXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsYXJtcyA9IG5ldyBCdWNrZXRBbGFybXModGhpcywgXCJBbGFybXNcIiwge1xuICAgICAgYnVja2V0OiB0aGlzLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/aws-s3/lib/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./bucket";
|
package/aws-s3/lib/index.js
CHANGED
|
@@ -10,5 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
__exportStar(require("./bucket"), exports);
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9idWNrZXRcIjtcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Construct } from "constructs";
|
|
2
2
|
import { IBucket } from "aws-cdk-lib/aws-s3";
|
|
3
|
-
import {
|
|
3
|
+
import { Distribution, Function, HttpVersion, OriginAccessIdentity, PriceClass, SecurityPolicyProtocol } from "aws-cdk-lib/aws-cloudfront";
|
|
4
4
|
import { ARecord, IHostedZone } from "aws-cdk-lib/aws-route53";
|
|
5
5
|
import { BucketDeployment } from "aws-cdk-lib/aws-s3-deployment";
|
|
6
6
|
import { BundlingOptions, Duration } from "aws-cdk-lib";
|
|
@@ -88,7 +88,7 @@ export declare class Website extends Construct {
|
|
|
88
88
|
*/
|
|
89
89
|
static readonly HUGO_BUNDLING_OPTIONS: BundlingOptions;
|
|
90
90
|
/**
|
|
91
|
-
* The default bundling options for SourceType.NpmDist. It
|
|
91
|
+
* The default bundling options for SourceType.NpmDist. It"s expected that "npm run dist" command
|
|
92
92
|
* will place files in ${CDK_BUNDLING_OUTPUT_DIR}. Example: "ng build --output-path=/asset-output"
|
|
93
93
|
*/
|
|
94
94
|
static readonly NPM_DIST_BUNDLING_OPTIONS: BundlingOptions;
|
|
@@ -9,7 +9,6 @@ const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
|
9
9
|
const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
|
|
10
10
|
const aws_s3_deployment_1 = require("aws-cdk-lib/aws-s3-deployment");
|
|
11
11
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
12
|
-
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
13
12
|
const aws_s3_1 = require("../../aws-s3");
|
|
14
13
|
var SourceType;
|
|
15
14
|
(function (SourceType) {
|
|
@@ -25,10 +24,10 @@ class DomainName {
|
|
|
25
24
|
this.createRecord = createRecord;
|
|
26
25
|
}
|
|
27
26
|
toString() {
|
|
28
|
-
return (this.prefix ==
|
|
27
|
+
return (this.prefix == "" ? "" : this.prefix + ".") + this.zone;
|
|
29
28
|
}
|
|
30
29
|
toIdentifier() {
|
|
31
|
-
return this.toString().replace(
|
|
30
|
+
return this.toString().replace(".", "-");
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
exports.DomainName = DomainName;
|
|
@@ -36,36 +35,39 @@ class Website extends constructs_1.Construct {
|
|
|
36
35
|
constructor(scope, id, props) {
|
|
37
36
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
38
37
|
super(scope, id);
|
|
39
|
-
this.bucket = (_a = props.bucket) !== null && _a !== void 0 ? _a : new aws_s3_1.
|
|
38
|
+
this.bucket = (_a = props.bucket) !== null && _a !== void 0 ? _a : new aws_s3_1.Bucket(this, "Bucket", {
|
|
39
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
40
|
+
autoDeleteObjects: true
|
|
41
|
+
});
|
|
40
42
|
this.fallbackBucket = props.fallbackBucket;
|
|
41
|
-
this.originAccessIdentity = new aws_cloudfront_1.OriginAccessIdentity(this,
|
|
43
|
+
this.originAccessIdentity = new aws_cloudfront_1.OriginAccessIdentity(this, "Access");
|
|
42
44
|
this.bucket.grantRead(this.originAccessIdentity);
|
|
43
45
|
if (this.fallbackBucket) {
|
|
44
46
|
this.fallbackBucket.grantRead(this.originAccessIdentity);
|
|
45
47
|
}
|
|
46
|
-
this.apexDomain = ((_b = props === null || props === void 0 ? void 0 : props.domainNames) === null || _b === void 0 ? void 0 : _b[0].toString()) ||
|
|
47
|
-
this.viewerRequestFunction = new aws_cloudfront_1.Function(this,
|
|
48
|
+
this.apexDomain = ((_b = props === null || props === void 0 ? void 0 : props.domainNames) === null || _b === void 0 ? void 0 : _b[0].toString()) || "";
|
|
49
|
+
this.viewerRequestFunction = new aws_cloudfront_1.Function(this, "ViewerRequestFunction", {
|
|
48
50
|
code: aws_cloudfront_1.FunctionCode.fromInline(`
|
|
49
51
|
function handler(event) {
|
|
50
52
|
var host = event.request.headers.host.value;
|
|
51
53
|
var uri = event.request.uri;
|
|
52
54
|
var matchApex = MATCH_APEX;
|
|
53
|
-
if (matchApex && host !==
|
|
55
|
+
if (matchApex && host !== "APEX_DOMAIN") {
|
|
54
56
|
return {
|
|
55
57
|
statusCode: 301,
|
|
56
|
-
statusDescription:
|
|
58
|
+
statusDescription: "Permanently moved",
|
|
57
59
|
headers: {
|
|
58
60
|
"location": { "value": "https://APEX_DOMAIN" + uri }
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
if (uri.endsWith(
|
|
63
|
-
event.request.uri = uri +
|
|
64
|
+
if (uri.endsWith("/")) {
|
|
65
|
+
event.request.uri = uri + "index.html";
|
|
64
66
|
}
|
|
65
67
|
return event.request;
|
|
66
68
|
}`
|
|
67
69
|
.replace(/APEX_DOMAIN/g, this.apexDomain)
|
|
68
|
-
.replace(/MATCH_APEX/g, this.apexDomain !==
|
|
70
|
+
.replace(/MATCH_APEX/g, this.apexDomain !== "" && ((_c = props.redirectToApexDomain) !== null && _c !== void 0 ? _c : true) ? "true" : "false"))
|
|
69
71
|
});
|
|
70
72
|
const bucketOrigin = new aws_cloudfront_origins_1.S3Origin(this.bucket, {
|
|
71
73
|
originAccessIdentity: this.originAccessIdentity
|
|
@@ -77,7 +79,7 @@ function handler(event) {
|
|
|
77
79
|
primaryOrigin: bucketOrigin,
|
|
78
80
|
fallbackOrigin: fallbackBucketOrigin
|
|
79
81
|
});
|
|
80
|
-
this.distribution = new aws_cloudfront_1.Distribution(this,
|
|
82
|
+
this.distribution = new aws_cloudfront_1.Distribution(this, "Distribution", {
|
|
81
83
|
defaultBehavior: {
|
|
82
84
|
origin: defaultOrigin,
|
|
83
85
|
viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
@@ -92,23 +94,23 @@ function handler(event) {
|
|
|
92
94
|
{
|
|
93
95
|
httpStatus: 404,
|
|
94
96
|
responseHttpStatus: 404,
|
|
95
|
-
responsePagePath:
|
|
97
|
+
responsePagePath: "/404.html"
|
|
96
98
|
}
|
|
97
99
|
],
|
|
98
100
|
httpVersion: (_d = props.httpVersion) !== null && _d !== void 0 ? _d : aws_cloudfront_1.HttpVersion.HTTP1_1,
|
|
99
101
|
minimumProtocolVersion: (_e = props.minimumProtocolVersion) !== null && _e !== void 0 ? _e : aws_cloudfront_1.SecurityPolicyProtocol.TLS_V1_2_2021,
|
|
100
102
|
defaultRootObject: "index.html",
|
|
101
|
-
certificate: (props === null || props === void 0 ? void 0 : props.certificateArn) == undefined ? undefined : aws_certificatemanager_1.Certificate.fromCertificateArn(this,
|
|
103
|
+
certificate: (props === null || props === void 0 ? void 0 : props.certificateArn) == undefined ? undefined : aws_certificatemanager_1.Certificate.fromCertificateArn(this, "Certificate", props.certificateArn),
|
|
102
104
|
domainNames: (_f = props === null || props === void 0 ? void 0 : props.domainNames) === null || _f === void 0 ? void 0 : _f.map((domainName) => domainName.toString()),
|
|
103
105
|
enableIpv6: true,
|
|
104
106
|
priceClass: (_g = props.priceClass) !== null && _g !== void 0 ? _g : aws_cloudfront_1.PriceClass.PRICE_CLASS_100
|
|
105
107
|
});
|
|
106
|
-
this.distributionUrl = `https://${(this.apexDomain !=
|
|
108
|
+
this.distributionUrl = `https://${(this.apexDomain != "" ? this.apexDomain : this.distribution.distributionDomainName)}`;
|
|
107
109
|
this.aRecords = [];
|
|
108
110
|
if ((props === null || props === void 0 ? void 0 : props.domainNames) != undefined && props.domainNames.length > 0) {
|
|
109
111
|
for (let domainName of props.domainNames) {
|
|
110
112
|
if ((_h = domainName.createRecord) !== null && _h !== void 0 ? _h : true) {
|
|
111
|
-
let zone = typeof domainName.zone !== "string" ? domainName.zone : aws_route53_1.HostedZone.fromLookup(this,
|
|
113
|
+
let zone = typeof domainName.zone !== "string" ? domainName.zone : aws_route53_1.HostedZone.fromLookup(this, "zone-" + domainName.toIdentifier(), {
|
|
112
114
|
domainName: domainName.zone
|
|
113
115
|
});
|
|
114
116
|
this.aRecords.push(new aws_route53_1.ARecord(this, domainName.toIdentifier(), {
|
|
@@ -168,24 +170,24 @@ exports.Website = Website;
|
|
|
168
170
|
* The default bundling options for SourceType.Hugo.
|
|
169
171
|
*/
|
|
170
172
|
Website.HUGO_BUNDLING_OPTIONS = {
|
|
171
|
-
image:
|
|
173
|
+
image: aws_cdk_lib_1.DockerImage.fromRegistry("klakegg/hugo:latest-ext"),
|
|
172
174
|
command: [
|
|
173
|
-
|
|
175
|
+
"-d", "/asset-output"
|
|
174
176
|
]
|
|
175
177
|
};
|
|
176
178
|
/**
|
|
177
|
-
* The default bundling options for SourceType.NpmDist. It
|
|
179
|
+
* The default bundling options for SourceType.NpmDist. It"s expected that "npm run dist" command
|
|
178
180
|
* will place files in ${CDK_BUNDLING_OUTPUT_DIR}. Example: "ng build --output-path=/asset-output"
|
|
179
181
|
*/
|
|
180
182
|
Website.NPM_DIST_BUNDLING_OPTIONS = {
|
|
181
|
-
image:
|
|
183
|
+
image: aws_cdk_lib_1.DockerImage.fromRegistry("node:16-alpine"),
|
|
182
184
|
command: [
|
|
183
185
|
// TODO Figure out how to cache .npmcache
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
].join(
|
|
186
|
+
"sh", "-c", [
|
|
187
|
+
"mkdir -p .npmcache",
|
|
188
|
+
"npm ci --cache .npmcache --prefer-offline",
|
|
189
|
+
"npm run dist"
|
|
190
|
+
].join(" && ")
|
|
189
191
|
]
|
|
190
192
|
};
|
|
191
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2l0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndlYnNpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBRXJDLCtEQU1vQztBQUNwQywrRUFBeUU7QUFDekUsK0VBQStEO0FBQy9ELHlEQUF1RjtBQUN2Rix5RUFBaUU7QUFDakUscUVBQXFGO0FBQ3JGLDZDQUFzRDtBQUN0RCw2Q0FBd0M7QUFDeEMseUNBQTRDO0FBRTVDLElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiwrQkFBaUIsQ0FBQTtJQUNqQiwyQkFBYSxDQUFBO0lBQ2IsaUNBQW1CLENBQUE7SUFDbkIsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBS3JCO0FBRUQsTUFBYSxVQUFVO0lBS3JCLFlBQVksTUFBYyxFQUFFLElBQTBCLEVBQUUsWUFBc0I7UUFDNUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUE7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDO0NBQ0Y7QUFsQkQsZ0NBa0JDO0FBK0VELE1BQWEsT0FBUSxTQUFRLHNCQUFTO0lBdUNwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1COztRQUMzRCxLQUFLLENBQUMsS0FBSyxF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O0tBQ3RCO0NBQ0YsQ0FBQTtBQUVEOzs7R0FHRztBQUNhLGlDQUF5QixHQUFvQjtJQUMzRCxLQUFLLEVBQUUseUJBQVcsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsT0FBTyxFQUFFO1FBQ1AseUNBQXlDO1FBQ3pDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDVixvQkFBb0I7WUFDcEIsMkNBQTJDO1lBQzNDLGNBQWM7U0FDZixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDZjtDQUNGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7SUJ1Y2tldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtcbiAgRnVuY3Rpb25Db2RlLFxuICBPcmlnaW5BY2Nlc3NJZGVudGl0eSxcbiAgRnVuY3Rpb24sXG4gIERpc3RyaWJ1dGlvbixcbiAgVmlld2VyUHJvdG9jb2xQb2xpY3ksIEZ1bmN0aW9uRXZlbnRUeXBlLCBIdHRwVmVyc2lvbiwgU2VjdXJpdHlQb2xpY3lQcm90b2NvbCwgUHJpY2VDbGFzc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7T3JpZ2luR3JvdXAsIFMzT3JpZ2lufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2luc1wiO1xuaW1wb3J0IHtDZXJ0aWZpY2F0ZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7QVJlY29yZCwgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0Nsb3VkRnJvbnRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQge0J1Y2tldERlcGxveW1lbnQsIENhY2hlQ29udHJvbCwgU291cmNlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7QnVuZGxpbmdPcHRpb25zLCBEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0RvY2tlckltYWdlfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7U3RhbmRhcmRCdWNrZXR9IGZyb20gXCIuLi8uLi9hd3MtczNcIjtcblxuZXhwb3J0IGVudW0gU291cmNlVHlwZSB7XG4gIEN1c3RvbSA9IFwiQ3VzdG9tXCIsXG4gIEh1Z28gPSBcIkh1Z29cIixcbiAgTnBtRGlzdCA9IFwiTnBtRGlzdFwiLFxuICBTdGF0aWMgPSBcIlN0YXRpY1wiXG59XG5cbmV4cG9ydCBjbGFzcyBEb21haW5OYW1lIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHpvbmU6IHN0cmluZyB8IElIb3N0ZWRab25lO1xuICByZWFkb25seSBjcmVhdGVSZWNvcmQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByZWZpeDogc3RyaW5nLCB6b25lOiBzdHJpbmcgfCBJSG9zdGVkWm9uZSwgY3JlYXRlUmVjb3JkPzogYm9vbGVhbikge1xuICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIHRoaXMuem9uZSA9IHpvbmU7XG4gICAgdGhpcy5jcmVhdGVSZWNvcmQgPSBjcmVhdGVSZWNvcmRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAodGhpcy5wcmVmaXggPT0gJycgPyAnJyA6IHRoaXMucHJlZml4ICsgJy4nKSArIHRoaXMuem9uZTtcbiAgfVxuXG4gIHRvSWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnLScpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Vic2l0ZVByb3BzIHtcblxuICAvKipcbiAgICogQnVja2V0IHRvIHVzZSB0byBzdG9yZSB3ZWJzaXRlIGNvbnRlbnQuIElmIG9uZSBpcyBub3QgcHJvdmlkZWQsIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldD86IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIEJ1Y2tldCB0byB1c2UgaWYgdGhlIHByaW1hcnkgYnVja2V0IGZhaWxzLiBJZiBvbmUgaXMgbm90IHByb3ZpZGVkIGEgZmFsbGJhY2sgaXMgbm90IHNldHVwLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFsbGJhY2tCdWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIHRoZSBBQ00gQ2VydGlmaWNhdGUgdG8gdXNlIG9uIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbi4gSWYgb25lIGlzIG5vdFxuICAgKiBwcm92aWRlZCBhbmQgZG9tYWluTmFtZXMgaXMgcG9wdWxhdGVkLCBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUFybj86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIG5hbWVzIHRvIGJlIHNlcnZpY2VkLiBUaGUgZmlyc3QgZG9tYWluIG5hbWUgaW4gdGhlIGxpc3QgaXMgdHJlYXRlZCBhcyB0aGUgYXBleCBkb21haW4uXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lcz86IERvbWFpbk5hbWVbXVxuXG4gIC8qKlxuICAgKiBSZWRpcmVjdCB0cmFmZmljIHRvIHRoZSBmaXJzdCBkb21haW4gaW4gdGhlIGxpc3Qgb2YgZG9tYWluTmFtZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlZGlyZWN0VG9BcGV4RG9tYWluPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHJpY2UgY2xhc3MgZm9yIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgUHJpY2VDbGFzcy5QUklDRV9DTEFTU18xMDBcbiAgICovXG4gIHJlYWRvbmx5IHByaWNlQ2xhc3M/OiBQcmljZUNsYXNzXG5cbiAgLyoqXG4gICAqIE1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB0byBhbGxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxLFxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVByb3RvY29sVmVyc2lvbj86IFNlY3VyaXR5UG9saWN5UHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gSFRUUCB2ZXJzaW9uIHRvIGFsbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBIdHRwVmVyc2lvbi5IVFRQMV8xXG4gICAqL1xuICByZWFkb25seSBodHRwVmVyc2lvbj86IEh0dHBWZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBDYWNoZS1jb250cm9sIG1heCBhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLm1pbnV0ZXMoNjApXG4gICAqL1xuICByZWFkb25seSBtYXhBZ2U/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSB0eXBlIG9mIHRoZSB3ZWJzaXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTb3VyY2VUeXBlLlN0YXRpY1xuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlVHlwZT86IFNvdXJjZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHdlYnNpdGUgc291cmNlcyBhcmUgbG9jYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZURpcmVjdG9yeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gYnVuZGxpbmcgb3B0aW9ucyB0byB1c2UgdG8gYnVuZGxlIHdlYnNpdGUgc291cmNlcy4gVGhlIHNvdXJjZVR5cGVcbiAgICogbXVzdCBiZSBzZXQgdG8gU291cmNlVHlwZS5DdXN0b20uXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VCdW5kbGluZ09wdGlvbnM/OiBCdW5kbGluZ09wdGlvbnNcbn1cblxuZXhwb3J0IGNsYXNzIFdlYnNpdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zIGZvciBTb3VyY2VUeXBlLkh1Z28uXG4gICAqL1xuICBzdGF0aWMgcmVhZG9ubHkgSFVHT19CVU5ETElOR19PUFRJT05TOiBCdW5kbGluZ09wdGlvbnMgPSB7XG4gICAgaW1hZ2U6IERvY2tlckltYWdlLmZyb21SZWdpc3RyeShcImtsYWtlZ2cvaHVnbzpsYXRlc3QtZXh0XCIpLFxuICAgIGNvbW1hbmQ6IFtcbiAgICAgICctZCcsICcvYXNzZXQtb3V0cHV0J1xuICAgIF1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBidW5kbGluZyBvcHRpb25zIGZvciBTb3VyY2VUeXBlLk5wbURpc3QuIEl0J3MgZXhwZWN0ZWQgdGhhdCBcIm5wbSBydW4gZGlzdFwiIGNvbW1hbmRcbiAgICogd2lsbCBwbGFjZSBmaWxlcyBpbiAke0NES19CVU5ETElOR19PVVRQVVRfRElSfS4gRXhhbXBsZTogXCJuZyBidWlsZCAtLW91dHB1dC1wYXRoPS9hc3NldC1vdXRwdXRcIlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IE5QTV9ESVNUX0JVTkRMSU5HX09QVElPTlM6IEJ1bmRsaW5nT3B0aW9ucyA9IHtcbiAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwibm9kZToxNi1hbHBpbmVcIiksXG4gICAgY29tbWFuZDogW1xuICAgICAgLy8gVE9ETyBGaWd1cmUgb3V0IGhvdyB0byBjYWNoZSAubnBtY2FjaGVcbiAgICAgICdzaCcsICctYycsIFtcbiAgICAgICAgJ21rZGlyIC1wIC5ucG1jYWNoZScsXG4gICAgICAgICducG0gY2kgLS1jYWNoZSAubnBtY2FjaGUgLS1wcmVmZXItb2ZmbGluZScsXG4gICAgICAgICducG0gcnVuIGRpc3QnXG4gICAgICBdLmpvaW4oJyAmJiAnKVxuICAgIF1cbiAgfVxuXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgZmFsbGJhY2tCdWNrZXQ/OiBJQnVja2V0O1xuICByZWFkb25seSBvcmlnaW5BY2Nlc3NJZGVudGl0eTogT3JpZ2luQWNjZXNzSWRlbnRpdHk7XG4gIHJlYWRvbmx5IGFwZXhEb21haW46IHN0cmluZztcbiAgcmVhZG9ubHkgdmlld2VyUmVxdWVzdEZ1bmN0aW9uOiBGdW5jdGlvbjtcbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvblVybDogc3RyaW5nO1xuICByZWFkb25seSBhUmVjb3JkczogQVJlY29yZFtdO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBCdWNrZXREZXBsb3ltZW50O1xuICByZWFkb25seSBmYWxsYmFja0RlcGxveW1lbnQ/OiBCdWNrZXREZXBsb3ltZW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJzaXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBwcm9wcy5idWNrZXQ/P25ldyBTdGFuZGFyZEJ1Y2tldCh0aGlzLCAnQnVja2V0Jyk7XG4gICAgdGhpcy5mYWxsYmFja0J1Y2tldCA9IHByb3BzLmZhbGxiYWNrQnVja2V0O1xuXG4gICAgdGhpcy5vcmlnaW5BY2Nlc3NJZGVudGl0eSA9IG5ldyBPcmlnaW5BY2Nlc3NJZGVudGl0eSh0aGlzLCAnQWNjZXNzJyk7XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHkpO1xuICAgIGlmICh0aGlzLmZhbGxiYWNrQnVja2V0KSB7XG4gICAgICB0aGlzLmZhbGxiYWNrQnVja2V0LmdyYW50UmVhZCh0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5KTtcbiAgICB9XG5cbiAgICB0aGlzLmFwZXhEb21haW4gPSBwcm9wcz8uZG9tYWluTmFtZXM/LlswXS50b1N0cmluZygpIHx8ICcnO1xuXG4gICAgdGhpcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ1ZpZXdlclJlcXVlc3RGdW5jdGlvbicsIHtcbiAgICAgIGNvZGU6IEZ1bmN0aW9uQ29kZS5mcm9tSW5saW5lKGBcbmZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHtcbiAgdmFyIGhvc3QgPSBldmVudC5yZXF1ZXN0LmhlYWRlcnMuaG9zdC52YWx1ZTtcbiAgdmFyIHVyaSA9IGV2ZW50LnJlcXVlc3QudXJpO1xuICB2YXIgbWF0Y2hBcGV4ID0gTUFUQ0hfQVBFWDtcbiAgaWYgKG1hdGNoQXBleCAmJiBob3N0ICE9PSAnQVBFWF9ET01BSU4nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDMwMSxcbiAgICAgIHN0YXR1c0Rlc2NyaXB0aW9uOiAnUGVybWFuZW50bHkgbW92ZWQnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICBcImxvY2F0aW9uXCI6IHsgXCJ2YWx1ZVwiOiBcImh0dHBzOi8vQVBFWF9ET01BSU5cIiArIHVyaSB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh1cmkuZW5kc1dpdGgoJy8nKSkge1xuICAgIGV2ZW50LnJlcXVlc3QudXJpID0gdXJpICsgJ2luZGV4Lmh0bWwnO1xuICB9XG4gIHJldHVybiBldmVudC5yZXF1ZXN0O1xufWBcbiAgICAgICAgLnJlcGxhY2UoL0FQRVhfRE9NQUlOL2csIHRoaXMuYXBleERvbWFpbilcbiAgICAgICAgLnJlcGxhY2UoL01BVENIX0FQRVgvZywgdGhpcy5hcGV4RG9tYWluICE9PSAnJyAmJiAocHJvcHMucmVkaXJlY3RUb0FwZXhEb21haW4/P3RydWUpID8gJ3RydWUnIDogJ2ZhbHNlJykpXG4gICAgfSk7XG5cbiAgICBjb25zdCBidWNrZXRPcmlnaW4gPSBuZXcgUzNPcmlnaW4odGhpcy5idWNrZXQsIHtcbiAgICAgIG9yaWdpbkFjY2Vzc0lkZW50aXR5OiB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5XG4gICAgfSk7XG5cbiAgICBjb25zdCBmYWxsYmFja0J1Y2tldE9yaWdpbiA9IHRoaXMuZmFsbGJhY2tCdWNrZXQgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG5ldyBTM09yaWdpbih0aGlzLmZhbGxiYWNrQnVja2V0LCB7XG4gICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogdGhpcy5vcmlnaW5BY2Nlc3NJZGVudGl0eVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdE9yaWdpbiA9IGZhbGxiYWNrQnVja2V0T3JpZ2luID09PSB1bmRlZmluZWQgPyBidWNrZXRPcmlnaW4gOiBuZXcgT3JpZ2luR3JvdXAoe1xuICAgICAgcHJpbWFyeU9yaWdpbjogYnVja2V0T3JpZ2luLFxuICAgICAgZmFsbGJhY2tPcmlnaW46IGZhbGxiYWNrQnVja2V0T3JpZ2luXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvbiA9IG5ldyBEaXN0cmlidXRpb24odGhpcywgJ0Rpc3RyaWJ1dGlvbicsIHtcbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW46IGRlZmF1bHRPcmlnaW4sXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgZnVuY3Rpb25Bc3NvY2lhdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmdW5jdGlvbjogdGhpcy52aWV3ZXJSZXF1ZXN0RnVuY3Rpb24sXG4gICAgICAgICAgICBldmVudFR5cGU6IEZ1bmN0aW9uRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNUXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAgZXJyb3JSZXNwb25zZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGh0dHBTdGF0dXM6IDQwNCxcbiAgICAgICAgICByZXNwb25zZUh0dHBTdGF0dXM6IDQwNCxcbiAgICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiAnLzQwNC5odG1sJ1xuICAgICAgICB9XG4gICAgICBdLFxuICAgICAgaHR0cFZlcnNpb246IHByb3BzLmh0dHBWZXJzaW9uPz9IdHRwVmVyc2lvbi5IVFRQMV8xLFxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvbjogcHJvcHMubWluaW11bVByb3RvY29sVmVyc2lvbj8/U2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxLFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IFwiaW5kZXguaHRtbFwiLFxuICAgICAgY2VydGlmaWNhdGU6IHByb3BzPy5jZXJ0aWZpY2F0ZUFybiA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBDZXJ0aWZpY2F0ZS5mcm9tQ2VydGlmaWNhdGVBcm4odGhpcywgJ0NlcnRpZmljYXRlJywgcHJvcHMuY2VydGlmaWNhdGVBcm4pLFxuICAgICAgZG9tYWluTmFtZXM6IHByb3BzPy5kb21haW5OYW1lcz8ubWFwKChkb21haW5OYW1lKSA9PiBkb21haW5OYW1lLnRvU3RyaW5nKCkpLFxuICAgICAgZW5hYmxlSXB2NjogdHJ1ZSxcbiAgICAgIHByaWNlQ2xhc3M6IHByb3BzLnByaWNlQ2xhc3M/P1ByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfMTAwXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvblVybCA9IGBodHRwczovLyR7KHRoaXMuYXBleERvbWFpbiAhPSAnJyA/IHRoaXMuYXBleERvbWFpbiA6IHRoaXMuZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbkRvbWFpbk5hbWUpfWBcblxuICAgIHRoaXMuYVJlY29yZHMgPSBbXTtcblxuICAgIGlmIChwcm9wcz8uZG9tYWluTmFtZXMgIT0gdW5kZWZpbmVkICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGRvbWFpbk5hbWUgb2YgcHJvcHMuZG9tYWluTmFtZXMpIHtcbiAgICAgICAgaWYgKGRvbWFpbk5hbWUuY3JlYXRlUmVjb3JkPz90cnVlKSB7XG4gICAgICAgICAgbGV0IHpvbmUgPSB0eXBlb2YgZG9tYWluTmFtZS56b25lICE9PSBcInN0cmluZ1wiID8gZG9tYWluTmFtZS56b25lIDogSG9zdGVkWm9uZS5mcm9tTG9va3VwKHRoaXMsICd6b25lLScgKyBkb21haW5OYW1lLnRvSWRlbnRpZmllcigpLCB7XG4gICAgICAgICAgICBkb21haW5OYW1lOiBkb21haW5OYW1lLnpvbmVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmFSZWNvcmRzLnB1c2gobmV3IEFSZWNvcmQodGhpcywgZG9tYWluTmFtZS50b0lkZW50aWZpZXIoKSwge1xuICAgICAgICAgICAgem9uZTogem9uZSxcbiAgICAgICAgICAgIHJlY29yZE5hbWU6IGRvbWFpbk5hbWUudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQ2xvdWRGcm9udFRhcmdldCh0aGlzLmRpc3RyaWJ1dGlvbikpXG4gICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGJ1bmRsaW5nT3B0aW9uczogQnVuZGxpbmdPcHRpb25zIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkXG5cbiAgICBpZiAocHJvcHMuc291cmNlVHlwZSA9PT0gU291cmNlVHlwZS5DdXN0b20pIHtcbiAgICAgIGlmICghcHJvcHMuc291cmNlQnVuZGxpbmdPcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInNvdXJjZUJ1bmRsaW5nT3B0aW9ucyBpcyByZXF1aXJlZCBpZiBzb3VyY2UgdHlwZSBpcyBDdXN0b21cIik7XG4gICAgICB9XG4gICAgICBidW5kbGluZ09wdGlvbnMgPSBwcm9wcy5zb3VyY2VCdW5kbGluZ09wdGlvbnNcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc291cmNlVHlwZSA9PT0gU291cmNlVHlwZS5TdGF0aWMpIHtcbiAgICAgIGlmIChwcm9wcy5zb3VyY2VCdW5kbGluZ09wdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBzb3VyY2VCdW5kbGluZ09wdGlvbnMgd2l0aCBzb3VyY2UgdHlwZSBTdGF0aWNcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNvdXJjZVR5cGUgPT09IFNvdXJjZVR5cGUuSHVnbykge1xuICAgICAgYnVuZGxpbmdPcHRpb25zID0gV2Vic2l0ZS5IVUdPX0JVTkRMSU5HX09QVElPTlNcbiAgICAgIGlmIChwcm9wcy5zb3VyY2VCdW5kbGluZ09wdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBzb3VyY2VCdW5kbGluZ09wdGlvbnMgd2l0aCBzb3VyY2UgdHlwZSBIdWdvXCIpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocHJvcHMuc291cmNlVHlwZSA9PT0gU291cmNlVHlwZS5OcG1EaXN0KSB7XG4gICAgICBidW5kbGluZ09wdGlvbnMgPSBXZWJzaXRlLk5QTV9ESVNUX0JVTkRMSU5HX09QVElPTlNcbiAgICAgIGlmIChwcm9wcy5zb3VyY2VCdW5kbGluZ09wdGlvbnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHVzZSBzb3VyY2VCdW5kbGluZ09wdGlvbnMgd2l0aCBzb3VyY2UgdHlwZSBOcG1EaXN0XCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNvdXJjZSA9IFNvdXJjZS5hc3NldChwcm9wcy5zb3VyY2VEaXJlY3RvcnksIHtcbiAgICAgIGJ1bmRsaW5nOiBidW5kbGluZ09wdGlvbnNcbiAgICB9KTtcblxuICAgIHRoaXMuZGVwbG95bWVudCA9IG5ldyBCdWNrZXREZXBsb3ltZW50KHRoaXMsIFwiQXNzZXRzXCIsIHtcbiAgICAgIHNvdXJjZXM6IFtzb3VyY2VdLFxuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHRoaXMuYnVja2V0LFxuICAgICAgZGlzdHJpYnV0aW9uOiB0aGlzLmRpc3RyaWJ1dGlvbixcbiAgICAgIGNhY2hlQ29udHJvbDogW0NhY2hlQ29udHJvbC5tYXhBZ2UocHJvcHMubWF4QWdlPz9EdXJhdGlvbi5taW51dGVzKDYwKSldLFxuICAgICAgcHJ1bmU6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5mYWxsYmFja0J1Y2tldCkge1xuICAgICAgdGhpcy5mYWxsYmFja0RlcGxveW1lbnQgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBcIkZhbGxiYWNrQXNzZXRzXCIsIHtcbiAgICAgICAgc291cmNlczogW3NvdXJjZV0sXG4gICAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB0aGlzLmZhbGxiYWNrQnVja2V0LFxuICAgICAgICBjYWNoZUNvbnRyb2w6IFtDYWNoZUNvbnRyb2wubWF4QWdlKHByb3BzLm1heEFnZT8/RHVyYXRpb24ubWludXRlcyg2MCkpXSxcbiAgICAgICAgcHJ1bmU6IGZhbHNlXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuIl19
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic2l0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIndlYnNpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXFDO0FBRXJDLCtEQVVvQztBQUNwQywrRUFBeUU7QUFDekUsK0VBQStEO0FBQy9ELHlEQUF1RjtBQUN2Rix5RUFBaUU7QUFDakUscUVBQXFGO0FBQ3JGLDZDQUFrRjtBQUNsRix5Q0FBb0M7QUFFcEMsSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLCtCQUFpQixDQUFBO0lBQ2pCLDJCQUFhLENBQUE7SUFDYixpQ0FBbUIsQ0FBQTtJQUNuQiwrQkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFLckI7QUFFRCxNQUFhLFVBQVU7SUFLckIsWUFBWSxNQUFjLEVBQUUsSUFBMEIsRUFBRSxZQUFzQjtRQUM1RSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQTtJQUNsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbEUsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQWxCRCxnQ0FrQkM7QUErRUQsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUF1Q3BDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7O1FBQzNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFD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QUFDLHlCQUF5QixDQUFDO0lBQzFELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxlQUFlO0tBQ3RCO0NBQ0YsQ0FBQTtBQUVEOzs7R0FHRztBQUNhLGlDQUF5QixHQUFvQjtJQUMzRCxLQUFLLEVBQUUseUJBQVcsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUM7SUFDakQsT0FBTyxFQUFFO1FBQ1AseUNBQXlDO1FBQ3pDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDVixvQkFBb0I7WUFDcEIsMkNBQTJDO1lBQzNDLGNBQWM7U0FDZixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7S0FDZjtDQUNGLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7SUJ1Y2tldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHtcbiAgRGlzdHJpYnV0aW9uLFxuICBGdW5jdGlvbixcbiAgRnVuY3Rpb25Db2RlLFxuICBGdW5jdGlvbkV2ZW50VHlwZSxcbiAgSHR0cFZlcnNpb24sXG4gIE9yaWdpbkFjY2Vzc0lkZW50aXR5LFxuICBQcmljZUNsYXNzLFxuICBTZWN1cml0eVBvbGljeVByb3RvY29sLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7T3JpZ2luR3JvdXAsIFMzT3JpZ2lufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQtb3JpZ2luc1wiO1xuaW1wb3J0IHtDZXJ0aWZpY2F0ZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7QVJlY29yZCwgSG9zdGVkWm9uZSwgSUhvc3RlZFpvbmUsIFJlY29yZFRhcmdldH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0Nsb3VkRnJvbnRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQge0J1Y2tldERlcGxveW1lbnQsIENhY2hlQ29udHJvbCwgU291cmNlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzLWRlcGxveW1lbnRcIjtcbmltcG9ydCB7QnVuZGxpbmdPcHRpb25zLCBEb2NrZXJJbWFnZSwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3l9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtCdWNrZXR9IGZyb20gXCIuLi8uLi9hd3MtczNcIjtcblxuZXhwb3J0IGVudW0gU291cmNlVHlwZSB7XG4gIEN1c3RvbSA9IFwiQ3VzdG9tXCIsXG4gIEh1Z28gPSBcIkh1Z29cIixcbiAgTnBtRGlzdCA9IFwiTnBtRGlzdFwiLFxuICBTdGF0aWMgPSBcIlN0YXRpY1wiXG59XG5cbmV4cG9ydCBjbGFzcyBEb21haW5OYW1lIHtcbiAgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHpvbmU6IHN0cmluZyB8IElIb3N0ZWRab25lO1xuICByZWFkb25seSBjcmVhdGVSZWNvcmQ/OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByZWZpeDogc3RyaW5nLCB6b25lOiBzdHJpbmcgfCBJSG9zdGVkWm9uZSwgY3JlYXRlUmVjb3JkPzogYm9vbGVhbikge1xuICAgIHRoaXMucHJlZml4ID0gcHJlZml4O1xuICAgIHRoaXMuem9uZSA9IHpvbmU7XG4gICAgdGhpcy5jcmVhdGVSZWNvcmQgPSBjcmVhdGVSZWNvcmRcbiAgfVxuXG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAodGhpcy5wcmVmaXggPT0gXCJcIiA/IFwiXCIgOiB0aGlzLnByZWZpeCArIFwiLlwiKSArIHRoaXMuem9uZTtcbiAgfVxuXG4gIHRvSWRlbnRpZmllcigpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygpLnJlcGxhY2UoXCIuXCIsIFwiLVwiKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYnNpdGVQcm9wcyB7XG5cbiAgLyoqXG4gICAqIEJ1Y2tldCB0byB1c2UgdG8gc3RvcmUgd2Vic2l0ZSBjb250ZW50LiBJZiBvbmUgaXMgbm90IHByb3ZpZGVkLCBvbmUgd2lsbCBiZSBnZW5lcmF0ZWQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ/OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBCdWNrZXQgdG8gdXNlIGlmIHRoZSBwcmltYXJ5IGJ1Y2tldCBmYWlscy4gSWYgb25lIGlzIG5vdCBwcm92aWRlZCBhIGZhbGxiYWNrIGlzIG5vdCBzZXR1cC5cbiAgICovXG4gIHJlYWRvbmx5IGZhbGxiYWNrQnVja2V0PzogSUJ1Y2tldDtcblxuICAvKipcbiAgICogVGhlIEFSTiB0byB0aGUgQUNNIENlcnRpZmljYXRlIHRvIHVzZSBvbiB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uIElmIG9uZSBpcyBub3RcbiAgICogcHJvdmlkZWQgYW5kIGRvbWFpbk5hbWVzIGlzIHBvcHVsYXRlZCwgb25lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVBcm4/OiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lcyB0byBiZSBzZXJ2aWNlZC4gVGhlIGZpcnN0IGRvbWFpbiBuYW1lIGluIHRoZSBsaXN0IGlzIHRyZWF0ZWQgYXMgdGhlIGFwZXggZG9tYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZXM/OiBEb21haW5OYW1lW11cblxuICAvKipcbiAgICogUmVkaXJlY3QgdHJhZmZpYyB0byB0aGUgZmlyc3QgZG9tYWluIGluIHRoZSBsaXN0IG9mIGRvbWFpbk5hbWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSByZWRpcmVjdFRvQXBleERvbWFpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFByaWNlIGNsYXNzIGZvciB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IFByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfMTAwXG4gICAqL1xuICByZWFkb25seSBwcmljZUNsYXNzPzogUHJpY2VDbGFzc1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIHByb3RvY29sIHZlcnNpb24gdG8gYWxsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IFNlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMSxcbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBTZWN1cml0eVBvbGljeVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBNaW5pbXVtIEhUVFAgdmVyc2lvbiB0byBhbGxvdy5cbiAgICpcbiAgICogQGRlZmF1bHQgSHR0cFZlcnNpb24uSFRUUDFfMVxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cFZlcnNpb24/OiBIdHRwVmVyc2lvbjtcblxuICAvKipcbiAgICogQ2FjaGUtY29udHJvbCBtYXggYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5taW51dGVzKDYwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QWdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgdHlwZSBvZiB0aGUgd2Vic2l0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgU291cmNlVHlwZS5TdGF0aWNcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZVR5cGU/OiBTb3VyY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgZGlyZWN0b3J5IHdoZXJlIHRoZSB3ZWJzaXRlIHNvdXJjZXMgYXJlIGxvY2F0ZWQuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VEaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VzdG9tIGJ1bmRsaW5nIG9wdGlvbnMgdG8gdXNlIHRvIGJ1bmRsZSB3ZWJzaXRlIHNvdXJjZXMuIFRoZSBzb3VyY2VUeXBlXG4gICAqIG11c3QgYmUgc2V0IHRvIFNvdXJjZVR5cGUuQ3VzdG9tLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlQnVuZGxpbmdPcHRpb25zPzogQnVuZGxpbmdPcHRpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBXZWJzaXRlIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgYnVuZGxpbmcgb3B0aW9ucyBmb3IgU291cmNlVHlwZS5IdWdvLlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IEhVR09fQlVORExJTkdfT1BUSU9OUzogQnVuZGxpbmdPcHRpb25zID0ge1xuICAgIGltYWdlOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJrbGFrZWdnL2h1Z286bGF0ZXN0LWV4dFwiKSxcbiAgICBjb21tYW5kOiBbXG4gICAgICBcIi1kXCIsIFwiL2Fzc2V0LW91dHB1dFwiXG4gICAgXVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJ1bmRsaW5nIG9wdGlvbnMgZm9yIFNvdXJjZVR5cGUuTnBtRGlzdC4gSXRcInMgZXhwZWN0ZWQgdGhhdCBcIm5wbSBydW4gZGlzdFwiIGNvbW1hbmRcbiAgICogd2lsbCBwbGFjZSBmaWxlcyBpbiAke0NES19CVU5ETElOR19PVVRQVVRfRElSfS4gRXhhbXBsZTogXCJuZyBidWlsZCAtLW91dHB1dC1wYXRoPS9hc3NldC1vdXRwdXRcIlxuICAgKi9cbiAgc3RhdGljIHJlYWRvbmx5IE5QTV9ESVNUX0JVTkRMSU5HX09QVElPTlM6IEJ1bmRsaW5nT3B0aW9ucyA9IHtcbiAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwibm9kZToxNi1hbHBpbmVcIiksXG4gICAgY29tbWFuZDogW1xuICAgICAgLy8gVE9ETyBGaWd1cmUgb3V0IGhvdyB0byBjYWNoZSAubnBtY2FjaGVcbiAgICAgIFwic2hcIiwgXCItY1wiLCBbXG4gICAgICAgIFwibWtkaXIgLXAgLm5wbWNhY2hlXCIsXG4gICAgICAgIFwibnBtIGNpIC0tY2FjaGUgLm5wbWNhY2hlIC0tcHJlZmVyLW9mZmxpbmVcIixcbiAgICAgICAgXCJucG0gcnVuIGRpc3RcIlxuICAgICAgXS5qb2luKFwiICYmIFwiKVxuICAgIF1cbiAgfVxuXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgcmVhZG9ubHkgZmFsbGJhY2tCdWNrZXQ/OiBJQnVja2V0O1xuICByZWFkb25seSBvcmlnaW5BY2Nlc3NJZGVudGl0eTogT3JpZ2luQWNjZXNzSWRlbnRpdHk7XG4gIHJlYWRvbmx5IGFwZXhEb21haW46IHN0cmluZztcbiAgcmVhZG9ubHkgdmlld2VyUmVxdWVzdEZ1bmN0aW9uOiBGdW5jdGlvbjtcbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBEaXN0cmlidXRpb247XG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvblVybDogc3RyaW5nO1xuICByZWFkb25seSBhUmVjb3JkczogQVJlY29yZFtdO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBCdWNrZXREZXBsb3ltZW50O1xuICByZWFkb25seSBmYWxsYmFja0RlcGxveW1lbnQ/OiBCdWNrZXREZXBsb3ltZW50O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJzaXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBwcm9wcy5idWNrZXQgPz8gbmV3IEJ1Y2tldCh0aGlzLCBcIkJ1Y2tldFwiLCB7XG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZVxuICAgIH0pO1xuICAgIHRoaXMuZmFsbGJhY2tCdWNrZXQgPSBwcm9wcy5mYWxsYmFja0J1Y2tldDtcblxuICAgIHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHkgPSBuZXcgT3JpZ2luQWNjZXNzSWRlbnRpdHkodGhpcywgXCJBY2Nlc3NcIik7XG4gICAgdGhpcy5idWNrZXQuZ3JhbnRSZWFkKHRoaXMub3JpZ2luQWNjZXNzSWRlbnRpdHkpO1xuICAgIGlmICh0aGlzLmZhbGxiYWNrQnVja2V0KSB7XG4gICAgICB0aGlzLmZhbGxiYWNrQnVja2V0LmdyYW50UmVhZCh0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5KTtcbiAgICB9XG5cbiAgICB0aGlzLmFwZXhEb21haW4gPSBwcm9wcz8uZG9tYWluTmFtZXM/LlswXS50b1N0cmluZygpIHx8IFwiXCI7XG5cbiAgICB0aGlzLnZpZXdlclJlcXVlc3RGdW5jdGlvbiA9IG5ldyBGdW5jdGlvbih0aGlzLCBcIlZpZXdlclJlcXVlc3RGdW5jdGlvblwiLCB7XG4gICAgICBjb2RlOiBGdW5jdGlvbkNvZGUuZnJvbUlubGluZShgXG5mdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gIHZhciBob3N0ID0gZXZlbnQucmVxdWVzdC5oZWFkZXJzLmhvc3QudmFsdWU7XG4gIHZhciB1cmkgPSBldmVudC5yZXF1ZXN0LnVyaTtcbiAgdmFyIG1hdGNoQXBleCA9IE1BVENIX0FQRVg7XG4gIGlmIChtYXRjaEFwZXggJiYgaG9zdCAhPT0gXCJBUEVYX0RPTUFJTlwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YXR1c0NvZGU6IDMwMSxcbiAgICAgIHN0YXR1c0Rlc2NyaXB0aW9uOiBcIlBlcm1hbmVudGx5IG1vdmVkXCIsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwibG9jYXRpb25cIjogeyBcInZhbHVlXCI6IFwiaHR0cHM6Ly9BUEVYX0RPTUFJTlwiICsgdXJpIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHVyaS5lbmRzV2l0aChcIi9cIikpIHtcbiAgICBldmVudC5yZXF1ZXN0LnVyaSA9IHVyaSArIFwiaW5kZXguaHRtbFwiO1xuICB9XG4gIHJldHVybiBldmVudC5yZXF1ZXN0O1xufWBcbiAgICAgICAgLnJlcGxhY2UoL0FQRVhfRE9NQUlOL2csIHRoaXMuYXBleERvbWFpbilcbiAgICAgICAgLnJlcGxhY2UoL01BVENIX0FQRVgvZywgdGhpcy5hcGV4RG9tYWluICE9PSBcIlwiICYmIChwcm9wcy5yZWRpcmVjdFRvQXBleERvbWFpbj8/dHJ1ZSkgPyBcInRydWVcIiA6IFwiZmFsc2VcIikpXG4gICAgfSk7XG5cbiAgICBjb25zdCBidWNrZXRPcmlnaW4gPSBuZXcgUzNPcmlnaW4odGhpcy5idWNrZXQsIHtcbiAgICAgIG9yaWdpbkFjY2Vzc0lkZW50aXR5OiB0aGlzLm9yaWdpbkFjY2Vzc0lkZW50aXR5XG4gICAgfSk7XG5cbiAgICBjb25zdCBmYWxsYmFja0J1Y2tldE9yaWdpbiA9IHRoaXMuZmFsbGJhY2tCdWNrZXQgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IG5ldyBTM09yaWdpbih0aGlzLmZhbGxiYWNrQnVja2V0LCB7XG4gICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eTogdGhpcy5vcmlnaW5BY2Nlc3NJZGVudGl0eVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVmYXVsdE9yaWdpbiA9IGZhbGxiYWNrQnVja2V0T3JpZ2luID09PSB1bmRlZmluZWQgPyBidWNrZXRPcmlnaW4gOiBuZXcgT3JpZ2luR3JvdXAoe1xuICAgICAgcHJpbWFyeU9yaWdpbjogYnVja2V0T3JpZ2luLFxuICAgICAgZmFsbGJhY2tPcmlnaW46IGZhbGxiYWNrQnVja2V0T3JpZ2luXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvbiA9IG5ldyBEaXN0cmlidXRpb24odGhpcywgXCJEaXN0cmlidXRpb25cIiwge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIG9yaWdpbjogZGVmYXVsdE9yaWdpbixcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uOiB0aGlzLnZpZXdlclJlcXVlc3RGdW5jdGlvbixcbiAgICAgICAgICAgIGV2ZW50VHlwZTogRnVuY3Rpb25FdmVudFR5cGUuVklFV0VSX1JFUVVFU1RcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICBlcnJvclJlc3BvbnNlczogW1xuICAgICAgICB7XG4gICAgICAgICAgaHR0cFN0YXR1czogNDA0LFxuICAgICAgICAgIHJlc3BvbnNlSHR0cFN0YXR1czogNDA0LFxuICAgICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IFwiLzQwNC5odG1sXCJcbiAgICAgICAgfVxuICAgICAgXSxcbiAgICAgIGh0dHBWZXJzaW9uOiBwcm9wcy5odHRwVmVyc2lvbj8/SHR0cFZlcnNpb24uSFRUUDFfMSxcbiAgICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb246IHByb3BzLm1pbmltdW1Qcm90b2NvbFZlcnNpb24/P1NlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMSxcbiAgICAgIGRlZmF1bHRSb290T2JqZWN0OiBcImluZGV4Lmh0bWxcIixcbiAgICAgIGNlcnRpZmljYXRlOiBwcm9wcz8uY2VydGlmaWNhdGVBcm4gPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogQ2VydGlmaWNhdGUuZnJvbUNlcnRpZmljYXRlQXJuKHRoaXMsIFwiQ2VydGlmaWNhdGVcIiwgcHJvcHMuY2VydGlmaWNhdGVBcm4pLFxuICAgICAgZG9tYWluTmFtZXM6IHByb3BzPy5kb21haW5OYW1lcz8ubWFwKChkb21haW5OYW1lKSA9PiBkb21haW5OYW1lLnRvU3RyaW5nKCkpLFxuICAgICAgZW5hYmxlSXB2NjogdHJ1ZSxcbiAgICAgIHByaWNlQ2xhc3M6IHByb3BzLnByaWNlQ2xhc3M/P1ByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfMTAwXG4gICAgfSk7XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvblVybCA9IGBodHRwczovLyR7KHRoaXMuYXBleERvbWFpbiAhPSBcIlwiID8gdGhpcy5hcGV4RG9tYWluIDogdGhpcy5kaXN0cmlidXRpb24uZGlzdHJpYnV0aW9uRG9tYWluTmFtZSl9YFxuXG4gICAgdGhpcy5hUmVjb3JkcyA9IFtdO1xuXG4gICAgaWYgKHByb3BzPy5kb21haW5OYW1lcyAhPSB1bmRlZmluZWQgJiYgcHJvcHMuZG9tYWluTmFtZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgZG9tYWluTmFtZSBvZiBwcm9wcy5kb21haW5OYW1lcykge1xuICAgICAgICBpZiAoZG9tYWluTmFtZS5jcmVhdGVSZWNvcmQ/P3RydWUpIHtcbiAgICAgICAgICBsZXQgem9uZSA9IHR5cGVvZiBkb21haW5OYW1lLnpvbmUgIT09IFwic3RyaW5nXCIgPyBkb21haW5OYW1lLnpvbmUgOiBIb3N0ZWRab25lLmZyb21Mb29rdXAodGhpcywgXCJ6b25lLVwiICsgZG9tYWluTmFtZS50b0lkZW50aWZpZXIoKSwge1xuICAgICAgICAgICAgZG9tYWluTmFtZTogZG9tYWluTmFtZS56b25lXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hUmVjb3Jkcy5wdXNoKG5ldyBBUmVjb3JkKHRoaXMsIGRvbWFpbk5hbWUudG9JZGVudGlmaWVyKCksIHtcbiAgICAgICAgICAgIHpvbmU6IHpvbmUsXG4gICAgICAgICAgICByZWNvcmROYW1lOiBkb21haW5OYW1lLnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQodGhpcy5kaXN0cmlidXRpb24pKVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBidW5kbGluZ09wdGlvbnM6IEJ1bmRsaW5nT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuXG4gICAgaWYgKHByb3BzLnNvdXJjZVR5cGUgPT09IFNvdXJjZVR5cGUuQ3VzdG9tKSB7XG4gICAgICBpZiAoIXByb3BzLnNvdXJjZUJ1bmRsaW5nT3B0aW9ucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJzb3VyY2VCdW5kbGluZ09wdGlvbnMgaXMgcmVxdWlyZWQgaWYgc291cmNlIHR5cGUgaXMgQ3VzdG9tXCIpO1xuICAgICAgfVxuICAgICAgYnVuZGxpbmdPcHRpb25zID0gcHJvcHMuc291cmNlQnVuZGxpbmdPcHRpb25zXG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNvdXJjZVR5cGUgPT09IFNvdXJjZVR5cGUuU3RhdGljKSB7XG4gICAgICBpZiAocHJvcHMuc291cmNlQnVuZGxpbmdPcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2Ugc291cmNlQnVuZGxpbmdPcHRpb25zIHdpdGggc291cmNlIHR5cGUgU3RhdGljXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wcy5zb3VyY2VUeXBlID09PSBTb3VyY2VUeXBlLkh1Z28pIHtcbiAgICAgIGJ1bmRsaW5nT3B0aW9ucyA9IFdlYnNpdGUuSFVHT19CVU5ETElOR19PUFRJT05TXG4gICAgICBpZiAocHJvcHMuc291cmNlQnVuZGxpbmdPcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2Ugc291cmNlQnVuZGxpbmdPcHRpb25zIHdpdGggc291cmNlIHR5cGUgSHVnb1wiKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BzLnNvdXJjZVR5cGUgPT09IFNvdXJjZVR5cGUuTnBtRGlzdCkge1xuICAgICAgYnVuZGxpbmdPcHRpb25zID0gV2Vic2l0ZS5OUE1fRElTVF9CVU5ETElOR19PUFRJT05TXG4gICAgICBpZiAocHJvcHMuc291cmNlQnVuZGxpbmdPcHRpb25zKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2Ugc291cmNlQnVuZGxpbmdPcHRpb25zIHdpdGggc291cmNlIHR5cGUgTnBtRGlzdFwiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzb3VyY2UgPSBTb3VyY2UuYXNzZXQocHJvcHMuc291cmNlRGlyZWN0b3J5LCB7XG4gICAgICBidW5kbGluZzogYnVuZGxpbmdPcHRpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLmRlcGxveW1lbnQgPSBuZXcgQnVja2V0RGVwbG95bWVudCh0aGlzLCBcIkFzc2V0c1wiLCB7XG4gICAgICBzb3VyY2VzOiBbc291cmNlXSxcbiAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB0aGlzLmJ1Y2tldCxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5kaXN0cmlidXRpb24sXG4gICAgICBjYWNoZUNvbnRyb2w6IFtDYWNoZUNvbnRyb2wubWF4QWdlKHByb3BzLm1heEFnZT8/RHVyYXRpb24ubWludXRlcyg2MCkpXSxcbiAgICAgIHBydW5lOiBmYWxzZVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZmFsbGJhY2tCdWNrZXQpIHtcbiAgICAgIHRoaXMuZmFsbGJhY2tEZXBsb3ltZW50ID0gbmV3IEJ1Y2tldERlcGxveW1lbnQodGhpcywgXCJGYWxsYmFja0Fzc2V0c1wiLCB7XG4gICAgICAgIHNvdXJjZXM6IFtzb3VyY2VdLFxuICAgICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogdGhpcy5mYWxsYmFja0J1Y2tldCxcbiAgICAgICAgY2FjaGVDb250cm9sOiBbQ2FjaGVDb250cm9sLm1heEFnZShwcm9wcy5tYXhBZ2U/P0R1cmF0aW9uLm1pbnV0ZXMoNjApKV0sXG4gICAgICAgIHBydW5lOiBmYWxzZVxuICAgICAgfSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "truemark-cdk-lib",
|
|
3
|
-
"version": "0.0.34
|
|
3
|
+
"version": "0.0.34",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"scripts": {
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
|
|
50
50
|
"cdk-monitoring-constructs": "^1.10.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "4d9caa0856653081bb88ec584ae0f84930ea9bf1"
|
|
53
53
|
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Bucket, BlockPublicAccess } from "aws-cdk-lib/aws-s3";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import * as kms from "aws-cdk-lib/aws-kms";
|
|
4
|
-
import { RemovalPolicy } from "aws-cdk-lib";
|
|
5
|
-
export interface StandardBucketProps {
|
|
6
|
-
/**
|
|
7
|
-
* Key to be used for encryption. If left empty, encryption will be S3_MANAGED.
|
|
8
|
-
*/
|
|
9
|
-
readonly encryptionKey?: kms.IKey;
|
|
10
|
-
/**
|
|
11
|
-
* Removal policy for this bucket.
|
|
12
|
-
*
|
|
13
|
-
* @default RemovalPolicy.DESTROY
|
|
14
|
-
*/
|
|
15
|
-
readonly removalPolicy?: RemovalPolicy;
|
|
16
|
-
/**
|
|
17
|
-
* Whether this bucket should have versioning turned on or not.
|
|
18
|
-
*
|
|
19
|
-
* @default false
|
|
20
|
-
*/
|
|
21
|
-
readonly versioned?: boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Grants public read access to all objects in the bucket. Similar to calling bucket.grantPublicAccess()
|
|
24
|
-
*
|
|
25
|
-
* @default false
|
|
26
|
-
*/
|
|
27
|
-
readonly publicReadAccess?: boolean;
|
|
28
|
-
/**
|
|
29
|
-
* The block public access configuration of this bucket.
|
|
30
|
-
*
|
|
31
|
-
* @default BlockPublicAccess.BLOCK_ALL
|
|
32
|
-
*/
|
|
33
|
-
readonly blockPublicAccess?: BlockPublicAccess;
|
|
34
|
-
/**
|
|
35
|
-
* Physical name of this bucket.
|
|
36
|
-
*
|
|
37
|
-
* @default - Assigned by CloudFormation (recommended).
|
|
38
|
-
*/
|
|
39
|
-
readonly bucketName?: string;
|
|
40
|
-
}
|
|
41
|
-
export declare class StandardBucket extends Bucket {
|
|
42
|
-
constructor(scope: Construct, id: string, props?: StandardBucketProps);
|
|
43
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StandardBucket = void 0;
|
|
4
|
-
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
5
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
-
class StandardBucket extends aws_s3_1.Bucket {
|
|
7
|
-
constructor(scope, id, props) {
|
|
8
|
-
var _a, _b, _c, _d;
|
|
9
|
-
super(scope, id, {
|
|
10
|
-
...props,
|
|
11
|
-
encryption: (props === null || props === void 0 ? void 0 : props.encryptionKey) ? aws_s3_1.BucketEncryption.KMS : aws_s3_1.BucketEncryption.S3_MANAGED,
|
|
12
|
-
removalPolicy: (_a = props === null || props === void 0 ? void 0 : props.removalPolicy) !== null && _a !== void 0 ? _a : aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
13
|
-
autoDeleteObjects: (props === null || props === void 0 ? void 0 : props.removalPolicy) === undefined || props.removalPolicy !== aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
14
|
-
versioned: (_b = props === null || props === void 0 ? void 0 : props.versioned) !== null && _b !== void 0 ? _b : false,
|
|
15
|
-
publicReadAccess: (_c = props === null || props === void 0 ? void 0 : props.publicReadAccess) !== null && _c !== void 0 ? _c : false,
|
|
16
|
-
blockPublicAccess: (_d = props === null || props === void 0 ? void 0 : props.blockPublicAccess) !== null && _d !== void 0 ? _d : aws_s3_1.BlockPublicAccess.BLOCK_ALL,
|
|
17
|
-
});
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
exports.StandardBucket = StandardBucket;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtYnVja2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhbmRhcmQtYnVja2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtDQUErRTtBQUcvRSw2Q0FBMEM7QUE0QzFDLE1BQWEsY0FBZSxTQUFRLGVBQU07SUFFeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUEyQjs7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixVQUFVLEVBQUUsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsYUFBYSxFQUFBLENBQUMsQ0FBQSx5QkFBZ0IsQ0FBQyxHQUFHLENBQUEsQ0FBQyxDQUFBLHlCQUFnQixDQUFDLFVBQVU7WUFDakYsYUFBYSxRQUFFLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxhQUFhLG1DQUFFLDJCQUFhLENBQUMsT0FBTztZQUMxRCxpQkFBaUIsRUFBRSxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxhQUFhLE1BQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxhQUFhLEtBQUssMkJBQWEsQ0FBQyxNQUFNO1lBQ3JHLFNBQVMsUUFBRSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUyxtQ0FBRSxLQUFLO1lBQ2xDLGdCQUFnQixRQUFFLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxnQkFBZ0IsbUNBQUUsS0FBSztZQUNoRCxpQkFBaUIsUUFBRSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsaUJBQWlCLG1DQUFFLDBCQUFpQixDQUFDLFNBQVM7U0FDekUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBYkQsd0NBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0J1Y2tldCwgQnVja2V0RW5jcnlwdGlvbiwgQmxvY2tQdWJsaWNBY2Nlc3N9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMga21zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5pbXBvcnQge1JlbW92YWxQb2xpY3l9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkQnVja2V0UHJvcHMge1xuICAvKipcbiAgICogS2V5IHRvIGJlIHVzZWQgZm9yIGVuY3J5cHRpb24uIElmIGxlZnQgZW1wdHksIGVuY3J5cHRpb24gd2lsbCBiZSBTM19NQU5BR0VELlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBSZW1vdmFsIHBvbGljeSBmb3IgdGhpcyBidWNrZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBidWNrZXQgc2hvdWxkIGhhdmUgdmVyc2lvbmluZyB0dXJuZWQgb24gb3Igbm90LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgdmVyc2lvbmVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR3JhbnRzIHB1YmxpYyByZWFkIGFjY2VzcyB0byBhbGwgb2JqZWN0cyBpbiB0aGUgYnVja2V0LiBTaW1pbGFyIHRvIGNhbGxpbmcgYnVja2V0LmdyYW50UHVibGljQWNjZXNzKClcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY1JlYWRBY2Nlc3M/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgYmxvY2sgcHVibGljIGFjY2VzcyBjb25maWd1cmF0aW9uIG9mIHRoaXMgYnVja2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBCbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTExcbiAgICovXG4gIHJlYWRvbmx5IGJsb2NrUHVibGljQWNjZXNzPzogQmxvY2tQdWJsaWNBY2Nlc3NcblxuICAvKipcbiAgICogUGh5c2ljYWwgbmFtZSBvZiB0aGlzIGJ1Y2tldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBc3NpZ25lZCBieSBDbG91ZEZvcm1hdGlvbiAocmVjb21tZW5kZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0TmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN0YW5kYXJkQnVja2V0IGV4dGVuZHMgQnVja2V0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFN0YW5kYXJkQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZW5jcnlwdGlvbjogcHJvcHM/LmVuY3J5cHRpb25LZXk/QnVja2V0RW5jcnlwdGlvbi5LTVM6QnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHM/LnJlbW92YWxQb2xpY3k/P1JlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiBwcm9wcz8ucmVtb3ZhbFBvbGljeSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnJlbW92YWxQb2xpY3kgIT09IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgdmVyc2lvbmVkOiBwcm9wcz8udmVyc2lvbmVkPz9mYWxzZSxcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IHByb3BzPy5wdWJsaWNSZWFkQWNjZXNzPz9mYWxzZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBwcm9wcz8uYmxvY2tQdWJsaWNBY2Nlc3M/P0Jsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|