@mavogel/awscdk-rootmail 0.0.336 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.codegraph/.gitignore +5 -0
- package/.jsii +460 -8
- package/CLAUDE.md +1 -1
- package/README.md +6 -1
- package/docs/plans/2026-08-09-bump-mvc-projen-cdk-nag-v3.md +199 -0
- package/integ-tests/integ.rootmail-custom-santa.ts +2 -2
- package/integ-tests/integ.rootmail-filter-subject.ts +2 -2
- package/integ-tests/integ.rootmail.ts +2 -2
- package/lib/hosted-zone-dkim-propagation.js +46 -15
- package/lib/hosted-zone-dkim-verification-records.js +47 -12
- package/lib/rootmail-autowire-dns.js +47 -15
- package/lib/rootmail.js +13 -16
- package/lib/ses-receipt-ruleset-activation.js +53 -15
- package/lib/ses-receive.js +12 -12
- package/node_modules/cdk-nag/.jsii +6331 -2945
- package/node_modules/cdk-nag/.jsii.tabl.json +1 -1
- package/node_modules/cdk-nag/API.md +490 -1778
- package/node_modules/cdk-nag/MIGRATION.md +239 -0
- package/node_modules/cdk-nag/README.md +88 -513
- package/node_modules/cdk-nag/lib/index.d.ts +0 -3
- package/node_modules/cdk-nag/lib/index.js +1 -4
- package/node_modules/cdk-nag/lib/nag-logger.d.ts +5 -145
- package/node_modules/cdk-nag/lib/nag-logger.js +4 -199
- package/node_modules/cdk-nag/lib/nag-pack.d.ts +57 -44
- package/node_modules/cdk-nag/lib/nag-pack.js +140 -114
- package/node_modules/cdk-nag/lib/nag-rules.d.ts +0 -2
- package/node_modules/cdk-nag/lib/nag-rules.js +3 -5
- package/node_modules/cdk-nag/lib/packs/aws-solutions.d.ts +4 -15
- package/node_modules/cdk-nag/lib/packs/aws-solutions.js +21 -40
- package/node_modules/cdk-nag/lib/packs/hipaa-security.d.ts +4 -2
- package/node_modules/cdk-nag/lib/packs/hipaa-security.js +31 -37
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.d.ts +4 -2
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r4.js +29 -35
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.d.ts +4 -2
- package/node_modules/cdk-nag/lib/packs/nist-800-53-r5.js +30 -36
- package/node_modules/cdk-nag/lib/packs/pci-dss-321.d.ts +4 -2
- package/node_modules/cdk-nag/lib/packs/pci-dss-321.js +29 -35
- package/node_modules/cdk-nag/lib/packs/serverless.d.ts +4 -2
- package/node_modules/cdk-nag/lib/packs/serverless.js +14 -20
- package/node_modules/cdk-nag/lib/rules/ec2/EC2IMDSv2Enabled.js +5 -1
- package/node_modules/cdk-nag/package.json +5 -5
- package/package.json +16 -17
- package/node_modules/cdk-nag/lib/ignore-suppression-conditions.d.ts +0 -59
- package/node_modules/cdk-nag/lib/ignore-suppression-conditions.js +0 -97
- package/node_modules/cdk-nag/lib/models/nag-suppression.d.ts +0 -30
- package/node_modules/cdk-nag/lib/models/nag-suppression.js +0 -7
- package/node_modules/cdk-nag/lib/nag-suppressions.d.ts +0 -30
- package/node_modules/cdk-nag/lib/nag-suppressions.js +0 -96
- package/node_modules/cdk-nag/lib/utils/nag-suppression-helper.d.ts +0 -20
- package/node_modules/cdk-nag/lib/utils/nag-suppression-helper.js +0 -119
|
@@ -1,42 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
2
|
+
var _a, _b;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.NagPack = void 0;
|
|
4
|
+
exports.WriteNagSuppressionsToCloudFormationAspect = exports.NagPack = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
/*
|
|
7
7
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
8
|
SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
*/
|
|
10
10
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
|
-
const ignore_suppression_conditions_1 = require("./ignore-suppression-conditions");
|
|
12
|
-
const nag_logger_1 = require("./nag-logger");
|
|
13
11
|
const nag_rules_1 = require("./nag-rules");
|
|
14
|
-
const nag_suppression_helper_1 = require("./utils/nag-suppression-helper");
|
|
15
12
|
/**
|
|
16
|
-
* Base class for all rule packs.
|
|
13
|
+
* Base class for all rule packs. Implements IPolicyValidationPlugin so that
|
|
14
|
+
* packs are registered via `Validations.of(app).addPlugins(new MyPack(app))`
|
|
15
|
+
* instead of `Aspects.of(app).add(...)`.
|
|
17
16
|
*/
|
|
18
17
|
class NagPack {
|
|
19
|
-
constructor(props) {
|
|
20
|
-
this.loggers = new Array();
|
|
18
|
+
constructor(scope, props) {
|
|
21
19
|
this.packName = '';
|
|
22
|
-
this.
|
|
23
|
-
this.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}));
|
|
27
|
-
if (props?.reports ?? true) {
|
|
28
|
-
const formats = props?.reportFormats
|
|
29
|
-
? props.reportFormats
|
|
30
|
-
: [nag_logger_1.NagReportFormat.CSV];
|
|
31
|
-
this.loggers.push(new nag_logger_1.NagReportLogger({ formats }));
|
|
32
|
-
}
|
|
33
|
-
if (props?.additionalLoggers) {
|
|
34
|
-
this.loggers.push(...props.additionalLoggers);
|
|
20
|
+
this.violations = [];
|
|
21
|
+
this.verbose = props?.verbose ?? false;
|
|
22
|
+
if (scope && props?.writeSuppressionsToCloudFormation) {
|
|
23
|
+
aws_cdk_lib_1.Aspects.of(scope).add(new WriteNagSuppressionsToCloudFormationAspect());
|
|
35
24
|
}
|
|
36
25
|
}
|
|
37
26
|
get readPackName() {
|
|
38
27
|
return this.packName;
|
|
39
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Entry point called by the CDK validation framework.
|
|
31
|
+
* Requires `appConstruct` to be present on the context (CDK core change).
|
|
32
|
+
* For testing or direct invocation, use `validateScope(scope)`.
|
|
33
|
+
*/
|
|
34
|
+
validate(context) {
|
|
35
|
+
const nagContext = context;
|
|
36
|
+
if (!nagContext.appConstruct) {
|
|
37
|
+
throw new Error('NagPack requires a construct tree on the validation context. ' +
|
|
38
|
+
'Use validateScope(scope) for direct invocation or ensure your CDK version provides appConstruct on IPolicyValidationContext.');
|
|
39
|
+
}
|
|
40
|
+
return this.validateScope(nagContext.appConstruct);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Validate a construct tree directly. This is the primary entry point
|
|
44
|
+
* for testing and for CDK versions that do not yet provide `appConstruct` on
|
|
45
|
+
* `IPolicyValidationContext`.
|
|
46
|
+
*/
|
|
47
|
+
validateScope(scope) {
|
|
48
|
+
this.violations = [];
|
|
49
|
+
this.walkTree(scope);
|
|
50
|
+
return {
|
|
51
|
+
success: this.violations.length === 0,
|
|
52
|
+
violations: this.violations,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Recursively walk the construct tree and invoke checkResource on each CfnResource.
|
|
57
|
+
*/
|
|
58
|
+
walkTree(node) {
|
|
59
|
+
if (aws_cdk_lib_1.CfnResource.isCfnResource(node)) {
|
|
60
|
+
this.checkResource(node);
|
|
61
|
+
}
|
|
62
|
+
for (const child of node.node.children) {
|
|
63
|
+
this.walkTree(child);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
40
66
|
/**
|
|
41
67
|
* Create a rule to be used in the NagPack.
|
|
42
68
|
* @param params The @IApplyRule interface with rule details.
|
|
@@ -45,120 +71,120 @@ class NagPack {
|
|
|
45
71
|
if (this.packName === '') {
|
|
46
72
|
throw Error('The NagPack does not have a pack name, therefore the rule could not be applied. Set a packName in the NagPack constructor.');
|
|
47
73
|
}
|
|
48
|
-
const allSuppressions = nag_suppression_helper_1.NagSuppressionHelper.getSuppressions(params.node);
|
|
49
74
|
const ruleSuffix = params.ruleSuffixOverride
|
|
50
75
|
? params.ruleSuffixOverride
|
|
51
76
|
: params.rule.name;
|
|
52
77
|
const ruleId = `${this.packName}-${ruleSuffix}`;
|
|
53
|
-
const base = {
|
|
54
|
-
nagPackName: this.packName,
|
|
55
|
-
resource: params.node,
|
|
56
|
-
ruleId: ruleId,
|
|
57
|
-
ruleOriginalName: params.rule.name,
|
|
58
|
-
ruleInfo: params.info,
|
|
59
|
-
ruleExplanation: params.explanation,
|
|
60
|
-
ruleLevel: params.level,
|
|
61
|
-
};
|
|
62
78
|
try {
|
|
63
|
-
const
|
|
64
|
-
if (
|
|
65
|
-
this.
|
|
79
|
+
const result = params.rule(params.node);
|
|
80
|
+
if (result === nag_rules_1.NagRuleCompliance.NON_COMPLIANT) {
|
|
81
|
+
if (!this.isAcknowledged(params.node, ruleId)) {
|
|
82
|
+
this.addViolation(ruleId, params);
|
|
83
|
+
}
|
|
66
84
|
}
|
|
67
|
-
else if (
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.loggers.forEach((t) => t.onSuppressed({
|
|
73
|
-
...base,
|
|
74
|
-
suppressionReason,
|
|
75
|
-
findingId,
|
|
76
|
-
}));
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.loggers.forEach((t) => t.onNonCompliance({
|
|
80
|
-
...base,
|
|
81
|
-
findingId,
|
|
82
|
-
}));
|
|
85
|
+
else if (Array.isArray(result)) {
|
|
86
|
+
for (const finding of result) {
|
|
87
|
+
const findingRuleId = `${ruleId}[${finding}]`;
|
|
88
|
+
if (!this.isAcknowledged(params.node, findingRuleId)) {
|
|
89
|
+
this.addViolation(findingRuleId, params);
|
|
83
90
|
}
|
|
84
91
|
}
|
|
85
92
|
}
|
|
86
|
-
else if (ruleCompliance === nag_rules_1.NagRuleCompliance.NOT_APPLICABLE) {
|
|
87
|
-
this.loggers.forEach((t) => t.onNotApplicable({
|
|
88
|
-
...base,
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
93
|
}
|
|
92
94
|
catch (error) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
this.loggers.forEach((t) => t.onSuppressedError({
|
|
96
|
-
...base,
|
|
97
|
-
errorMessage: error.message,
|
|
98
|
-
errorSuppressionReason: reason,
|
|
99
|
-
}));
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
this.loggers.forEach((t) => t.onError({
|
|
103
|
-
...base,
|
|
104
|
-
errorMessage: error.message,
|
|
105
|
-
}));
|
|
95
|
+
if (!this.isAcknowledged(params.node, ruleId)) {
|
|
96
|
+
this.addViolation(ruleId, params, error.message);
|
|
106
97
|
}
|
|
107
98
|
}
|
|
108
99
|
}
|
|
109
100
|
/**
|
|
110
|
-
*
|
|
111
|
-
* @param suppressions The suppressions listed in the cdk-nag metadata.
|
|
112
|
-
* @param ruleId The id of the rule to ignore.
|
|
113
|
-
* @param resource The resource being evaluated.
|
|
114
|
-
* @param findingId The id of the finding that is being checked.
|
|
115
|
-
* @param validationFailure Whether the rule is being checked due to a validation failure.
|
|
116
|
-
* @returns The reason the rule was ignored, or an empty string.
|
|
101
|
+
* Add a violation to the internal violations array, grouping by ruleName.
|
|
117
102
|
*/
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
103
|
+
addViolation(ruleName, params, errorMessage) {
|
|
104
|
+
const description = errorMessage
|
|
105
|
+
? `Rule threw an error during validation. ${this.verbose
|
|
106
|
+
? errorMessage
|
|
107
|
+
: 'This is generally caused by a parameter referencing an intrinsic function.'}`
|
|
108
|
+
: this.verbose
|
|
109
|
+
? `${params.info} ${params.explanation}`
|
|
110
|
+
: params.info;
|
|
111
|
+
const resource = {
|
|
112
|
+
constructPath: params.node.node.path,
|
|
113
|
+
locations: ['Properties'],
|
|
114
|
+
};
|
|
115
|
+
const existing = this.violations.find((v) => v.ruleName === ruleName);
|
|
116
|
+
if (existing) {
|
|
117
|
+
existing.violatingResources.push(resource);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
this.violations.push({
|
|
121
|
+
ruleName,
|
|
122
|
+
description,
|
|
123
|
+
severity: params.level === nag_rules_1.NagMessageLevel.ERROR ? 'error' : 'warning',
|
|
124
|
+
violatingResources: [resource],
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Check whether a specific rule has been acknowledged on the given resource
|
|
130
|
+
* or any of its ancestor constructs via the CDK Validations
|
|
131
|
+
* acknowledged-rules metadata mechanism.
|
|
132
|
+
*/
|
|
133
|
+
isAcknowledged(resource, ruleId) {
|
|
134
|
+
const metadataKey = aws_cdk_lib_1.Validations.ACKNOWLEDGED_RULES_METADATA_KEY;
|
|
135
|
+
let current = resource;
|
|
136
|
+
while (current) {
|
|
137
|
+
for (const entry of current.node.metadata) {
|
|
138
|
+
if (entry.type === metadataKey && entry.data) {
|
|
139
|
+
const ids = Object.keys(entry.data).map(
|
|
140
|
+
// aws-cdk-lib <2.262.1 wrote 'annotation::', >=2.262.1 writes 'Annotation::'
|
|
141
|
+
(k) => k.replace(/^annotation::/i, ''));
|
|
142
|
+
if (ids.includes(ruleId))
|
|
143
|
+
return true;
|
|
143
144
|
}
|
|
144
145
|
}
|
|
146
|
+
current = current.node.scope;
|
|
145
147
|
}
|
|
146
|
-
return
|
|
148
|
+
return false;
|
|
147
149
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
}
|
|
151
|
+
exports.NagPack = NagPack;
|
|
152
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
153
|
+
NagPack[_a] = { fqn: "cdk-nag.NagPack", version: "3.0.2" };
|
|
154
|
+
/**
|
|
155
|
+
* An IAspect that reads acknowledged rules from construct metadata and writes
|
|
156
|
+
* them into the CfnResource's CloudFormation Metadata for audit trail
|
|
157
|
+
* persistence in the synthesized template. Preserves the v2 `cdk_nag`
|
|
158
|
+
* metadata format.
|
|
159
|
+
*/
|
|
160
|
+
class WriteNagSuppressionsToCloudFormationAspect {
|
|
161
|
+
visit(node) {
|
|
162
|
+
if (!aws_cdk_lib_1.CfnResource.isCfnResource(node))
|
|
163
|
+
return;
|
|
164
|
+
const metadataKey = aws_cdk_lib_1.Validations.ACKNOWLEDGED_RULES_METADATA_KEY;
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
const rules = [];
|
|
167
|
+
let current = node;
|
|
168
|
+
while (current) {
|
|
169
|
+
for (const entry of current.node.metadata) {
|
|
170
|
+
if (entry.type === metadataKey && entry.data) {
|
|
171
|
+
for (const [qualifiedId, reason] of Object.entries(entry.data)) {
|
|
172
|
+
const id = qualifiedId.replace(/^annotation::/i, '');
|
|
173
|
+
if (!seen.has(id)) {
|
|
174
|
+
seen.add(id);
|
|
175
|
+
rules.push({ id, reason });
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
current = current.node.scope;
|
|
155
181
|
}
|
|
156
|
-
|
|
157
|
-
|
|
182
|
+
if (rules.length > 0) {
|
|
183
|
+
node.addMetadata('cdk_nag', { rules_to_suppress: rules });
|
|
158
184
|
}
|
|
159
185
|
}
|
|
160
186
|
}
|
|
161
|
-
exports.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFnLXBhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmFnLXBhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0VBR0U7QUFDRiw2Q0FBZ0U7QUFFaEUsbUZBSXlDO0FBRXpDLDZDQU1zQjtBQUN0QiwyQ0FNcUI7QUFDckIsMkVBQXNFO0FBd0V0RTs7R0FFRztBQUNILE1BQXNCLE9BQU87SUFNM0IsWUFBWSxLQUFvQjtRQUx0QixZQUFPLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztRQUNsQyxhQUFRLEdBQUcsRUFBRSxDQUFDO1FBS3RCLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLEVBQUUsMEJBQTBCLENBQUM7UUFDckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2YsSUFBSSw2QkFBZ0IsQ0FBQztZQUNuQixPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU87WUFDdkIsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVO1NBQzlCLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxLQUFLLEVBQUUsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzNCLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxhQUFhO2dCQUNsQyxDQUFDLENBQUMsS0FBSyxDQUFDLGFBQWE7Z0JBQ3JCLENBQUMsQ0FBQyxDQUFDLDRCQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSw0QkFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFDRCxJQUFJLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEQsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLFlBQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsUUFB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VSxDQUFDO1FBQ3BCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7O0FBck1ILDBCQXNNQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4qL1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMsIENmblJlc291cmNlLCBJQXNwZWN0IH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtcbiAgSU5hZ1N1cHByZXNzaW9uSWdub3JlLFxuICBTdXBwcmVzc2lvbklnbm9yZU5ldmVyLFxuICBTdXBwcmVzc2lvbklnbm9yZU9yLFxufSBmcm9tICcuL2lnbm9yZS1zdXBwcmVzc2lvbi1jb25kaXRpb25zJztcbmltcG9ydCB7IE5hZ1BhY2tTdXBwcmVzc2lvbiB9IGZyb20gJy4vbW9kZWxzL25hZy1zdXBwcmVzc2lvbic7XG5pbXBvcnQge1xuICBBbm5vdGF0aW9uTG9nZ2VyLFxuICBJTmFnTG9nZ2VyLFxuICBOYWdMb2dnZXJCYXNlRGF0YSxcbiAgTmFnUmVwb3J0Rm9ybWF0LFxuICBOYWdSZXBvcnRMb2dnZXIsXG59IGZyb20gJy4vbmFnLWxvZ2dlcic7XG5pbXBvcnQge1xuICBOYWdNZXNzYWdlTGV2ZWwsXG4gIE5hZ1J1bGVDb21wbGlhbmNlLFxuICBOYWdSdWxlRmluZGluZ3MsXG4gIE5hZ1J1bGVSZXN1bHQsXG4gIFZBTElEQVRJT05fRkFJTFVSRV9JRCxcbn0gZnJvbSAnLi9uYWctcnVsZXMnO1xuaW1wb3J0IHsgTmFnU3VwcHJlc3Npb25IZWxwZXIgfSBmcm9tICcuL3V0aWxzL25hZy1zdXBwcmVzc2lvbi1oZWxwZXInO1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgY3JlYXRpbmcgYSBOYWdQYWNrLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hZ1BhY2tQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIG9yIG5vdCB0byBlbmFibGUgZXh0ZW5kZWQgZXhwbGFuYXRvcnkgZGVzY3JpcHRpb25zIG9uIHdhcm5pbmcsIGVycm9yLCBhbmQgbG9nZ2VkIGlnbm9yZSBtZXNzYWdlcyAoZGVmYXVsdDogZmFsc2UpLlxuICAgKi9cbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGxvZyBzdXBwcmVzc2VkIHJ1bGUgdmlvbGF0aW9ucyBhcyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqL1xuICByZWFkb25seSBsb2dJZ25vcmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdG8gZ2VuZXJhdGUgY29tcGxpYW5jZSByZXBvcnRzIGZvciBhcHBsaWVkIFN0YWNrcyBpbiB0aGUgQXBwJ3Mgb3V0cHV0IGRpcmVjdG9yeSAoZGVmYXVsdDogdHJ1ZSkuXG4gICAqL1xuICByZWFkb25seSByZXBvcnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgcmVwb3J0cyBhcmUgZW5hYmxlZCwgdGhlIG91dHB1dCBmb3JtYXRzIG9mIGNvbXBsaWFuY2UgcmVwb3J0cyBpbiB0aGUgQXBwJ3Mgb3V0cHV0IGRpcmVjdG9yeSAoZGVmYXVsdDogb25seSBDU1YpLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0Rm9ybWF0cz86IE5hZ1JlcG9ydEZvcm1hdFtdO1xuXG4gIC8qKlxuICAgKiBDb25kaXRpb25hbGx5IHByZXZlbnQgcnVsZXMgZnJvbSBiZWluZyBzdXBwcmVzc2VkIChkZWZhdWx0OiBubyB1c2VyIHByb3ZpZGVkIGNvbmRpdGlvbikuXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc2lvbklnbm9yZUNvbmRpdGlvbj86IElOYWdTdXBwcmVzc2lvbklnbm9yZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBOYWdMb2dnZXJzIGZvciBsb2dnaW5nIHJ1bGUgdmFsaWRhdGlvbiBvdXRwdXRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbExvZ2dlcnM/OiBJTmFnTG9nZ2VyW107XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBKU0lJIGludGVyb3BlcmFiaWxpdHkgZm9yIHBhc3NpbmcgcGFyYW1ldGVycyBhbmQgdGhlIFJ1bGUgQ2FsbGJhY2sgdG8gQGFwcGx5UnVsZSBtZXRob2QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFwcGx5UnVsZSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBmb3IgdGhlIHN1ZmZpeCBvZiB0aGUgUnVsZSBJRCBmb3IgdGhpcyBydWxlXG4gICAqL1xuICBydWxlU3VmZml4T3ZlcnJpZGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaHkgdGhlIHJ1bGUgd2FzIHRyaWdnZXJlZC5cbiAgICovXG4gIGluZm86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoeSB0aGUgcnVsZSBleGlzdHMuXG4gICAqL1xuICBleHBsYW5hdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFubm90YXRpb25zIG1lc3NhZ2UgbGV2ZWwgdG8gYXBwbHkgdG8gdGhlIHJ1bGUgaWYgdHJpZ2dlcmVkLlxuICAgKi9cbiAgbGV2ZWw6IE5hZ01lc3NhZ2VMZXZlbDtcbiAgLyoqXG4gICAqIEEgY29uZGl0aW9uIGluIHdoaWNoIGEgc3VwcHJlc3Npb24gc2hvdWxkIGJlIGlnbm9yZWQuXG4gICAqL1xuICBpZ25vcmVTdXBwcmVzc2lvbkNvbmRpdGlvbj86IElOYWdTdXBwcmVzc2lvbklnbm9yZTtcbiAgLyoqXG4gICAqIFRoZSBDZm5SZXNvdXJjZSB0byBjaGVja1xuICAgKi9cbiAgbm9kZTogQ2ZuUmVzb3VyY2U7XG4gIC8qKlxuICAgKiBUaGUgY2FsbGJhY2sgdG8gdGhlIHJ1bGUuXG4gICAqIEBwYXJhbSBub2RlIFRoZSBDZm5SZXNvdXJjZSB0byBjaGVjay5cbiAgICovXG4gIHJ1bGUobm9kZTogQ2ZuUmVzb3VyY2UpOiBOYWdSdWxlUmVzdWx0O1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBydWxlIHBhY2tzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmFnUGFjayBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICBwcm90ZWN0ZWQgbG9nZ2VycyA9IG5ldyBBcnJheTxJTmFnTG9nZ2VyPigpO1xuICBwcm90ZWN0ZWQgcGFja05hbWUgPSAnJztcbiAgcHJvdGVjdGVkIHVzZXJHbG9iYWxTdXBwcmVzc2lvbklnbm9yZT86IElOYWdTdXBwcmVzc2lvbklnbm9yZTtcbiAgcHJvdGVjdGVkIHBhY2tHbG9iYWxTdXBwcmVzc2lvbklnbm9yZT86IElOYWdTdXBwcmVzc2lvbklnbm9yZTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IE5hZ1BhY2tQcm9wcykge1xuICAgIHRoaXMudXNlckdsb2JhbFN1cHByZXNzaW9uSWdub3JlID0gcHJvcHM/LnN1cHByZXNzaW9uSWdub3JlQ29uZGl0aW9uO1xuICAgIHRoaXMubG9nZ2Vycy5wdXNoKFxuICAgICAgbmV3IEFubm90YXRpb25Mb2dnZXIoe1xuICAgICAgICB2ZXJib3NlOiBwcm9wcz8udmVyYm9zZSxcbiAgICAgICAgbG9nSWdub3JlczogcHJvcHM/LmxvZ0lnbm9yZXMsXG4gICAgICB9KVxuICAgICk7XG4gICAgaWYgKHByb3BzPy5yZXBvcnRzID8/IHRydWUpIHtcbiAgICAgIGNvbnN0IGZvcm1hdHMgPSBwcm9wcz8ucmVwb3J0Rm9ybWF0c1xuICAgICAgICA/IHByb3BzLnJlcG9ydEZvcm1hdHNcbiAgICAgICAgOiBbTmFnUmVwb3J0Rm9ybWF0LkNTVl07XG4gICAgICB0aGlzLmxvZ2dlcnMucHVzaChuZXcgTmFnUmVwb3J0TG9nZ2VyKHsgZm9ybWF0cyB9KSk7XG4gICAgfVxuICAgIGlmIChwcm9wcz8uYWRkaXRpb25hbExvZ2dlcnMpIHtcbiAgICAgIHRoaXMubG9nZ2Vycy5wdXNoKC4uLnByb3BzLmFkZGl0aW9uYWxMb2dnZXJzKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlYWRQYWNrTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhY2tOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbCBhc3BlY3RzIGNhbiB2aXNpdCBhbiBJQ29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBydWxlIHRvIGJlIHVzZWQgaW4gdGhlIE5hZ1BhY2suXG4gICAqIEBwYXJhbSBwYXJhbXMgVGhlIEBJQXBwbHlSdWxlIGludGVyZmFjZSB3aXRoIHJ1bGUgZGV0YWlscy5cbiAgICovXG4gIHByb3RlY3RlZCBhcHBseVJ1bGUocGFyYW1zOiBJQXBwbHlSdWxlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFja05hbWUgPT09ICcnKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ1RoZSBOYWdQYWNrIGRvZXMgbm90IGhhdmUgYSBwYWNrIG5hbWUsIHRoZXJlZm9yZSB0aGUgcnVsZSBjb3VsZCBub3QgYmUgYXBwbGllZC4gU2V0IGEgcGFja05hbWUgaW4gdGhlIE5hZ1BhY2sgY29uc3RydWN0b3IuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgYWxsU3VwcHJlc3Npb25zID0gTmFnU3VwcHJlc3Npb25IZWxwZXIuZ2V0U3VwcHJlc3Npb25zKHBhcmFtcy5ub2RlKTtcbiAgICBjb25zdCBydWxlU3VmZml4ID0gcGFyYW1zLnJ1bGVTdWZmaXhPdmVycmlkZVxuICAgICAgPyBwYXJhbXMucnVsZVN1ZmZpeE92ZXJyaWRlXG4gICAgICA6IHBhcmFtcy5ydWxlLm5hbWU7XG4gICAgY29uc3QgcnVsZUlkID0gYCR7dGhpcy5wYWNrTmFtZX0tJHtydWxlU3VmZml4fWA7XG4gICAgY29uc3QgYmFzZTogTmFnTG9nZ2VyQmFzZURhdGEgPSB7XG4gICAgICBuYWdQYWNrTmFtZTogdGhpcy5wYWNrTmFtZSxcbiAgICAgIHJlc291cmNlOiBwYXJhbXMubm9kZSxcbiAgICAgIHJ1bGVJZDogcnVsZUlkLFxuICAgICAgcnVsZU9yaWdpbmFsTmFtZTogcGFyYW1zLnJ1bGUubmFtZSxcbiAgICAgIHJ1bGVJbmZvOiBwYXJhbXMuaW5mbyxcbiAgICAgIHJ1bGVFeHBsYW5hdGlvbjogcGFyYW1zLmV4cGxhbmF0aW9uLFxuICAgICAgcnVsZUxldmVsOiBwYXJhbXMubGV2ZWwsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcnVsZUNvbXBsaWFuY2UgPSBwYXJhbXMucnVsZShwYXJhbXMubm9kZSk7XG4gICAgICBpZiAocnVsZUNvbXBsaWFuY2UgPT09IE5hZ1J1bGVDb21wbGlhbmNlLkNPTVBMSUFOVCkge1xuICAgICAgICB0aGlzLmxvZ2dlcnMuZm9yRWFjaCgodCkgPT4gdC5vbkNvbXBsaWFuY2UoYmFzZSkpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTm9uQ29tcGxpYW50KHJ1bGVDb21wbGlhbmNlKSkge1xuICAgICAgICBjb25zdCBmaW5kaW5ncyA9IHRoaXMuYXNGaW5kaW5ncyhydWxlQ29tcGxpYW5jZSk7XG4gICAgICAgIGZvciAoY29uc3QgZmluZGluZ0lkIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgY29uc3Qgc3VwcHJlc3Npb25SZWFzb24gPSB0aGlzLmlnbm9yZVJ1bGUoXG4gICAgICAgICAgICBhbGxTdXBwcmVzc2lvbnMsXG4gICAgICAgICAgICBydWxlSWQsXG4gICAgICAgICAgICBmaW5kaW5nSWQsXG4gICAgICAgICAgICBwYXJhbXMubm9kZSxcbiAgICAgICAgICAgIHBhcmFtcy5sZXZlbCxcbiAgICAgICAgICAgIHBhcmFtcy5pZ25vcmVTdXBwcmVzc2lvbkNvbmRpdGlvblxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKHN1cHByZXNzaW9uUmVhc29uKSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlcnMuZm9yRWFjaCgodCkgPT5cbiAgICAgICAgICAgICAgdC5vblN1cHByZXNzZWQoe1xuICAgICAgICAgICAgICAgIC4uLmJhc2UsXG4gICAgICAgICAgICAgICAgc3VwcHJlc3Npb25SZWFzb24sXG4gICAgICAgICAgICAgICAgZmluZGluZ0lkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJzLmZvckVhY2goKHQpID0+XG4gICAgICAgICAgICAgIHQub25Ob25Db21wbGlhbmNlKHtcbiAgICAgICAgICAgICAgICAuLi5iYXNlLFxuICAgICAgICAgICAgICAgIGZpbmRpbmdJZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJ1bGVDb21wbGlhbmNlID09PSBOYWdSdWxlQ29tcGxpYW5jZS5OT1RfQVBQTElDQUJMRSkge1xuICAgICAgICB0aGlzLmxvZ2dlcnMuZm9yRWFjaCgodCkgPT5cbiAgICAgICAgICB0Lm9uTm90QXBwbGljYWJsZSh7XG4gICAgICAgICAgICAuLi5iYXNlLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnN0IHJlYXNvbiA9IHRoaXMuaWdub3JlUnVsZShcbiAgICAgICAgYWxsU3VwcHJlc3Npb25zLFxuICAgICAgICBydWxlSWQsXG4gICAgICAgICcnLFxuICAgICAgICBwYXJhbXMubm9kZSxcbiAgICAgICAgcGFyYW1zLmxldmVsLFxuICAgICAgICBwYXJhbXMuaWdub3JlU3VwcHJlc3Npb25Db25kaXRpb24sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICBpZiAocmVhc29uKSB7XG4gICAgICAgIHRoaXMubG9nZ2Vycy5mb3JFYWNoKCh0KSA9PlxuICAgICAgICAgIHQub25TdXBwcmVzc2VkRXJyb3Ioe1xuICAgICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgICAgICAgZXJyb3JTdXBwcmVzc2lvblJlYXNvbjogcmVhc29uLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZ2dlcnMuZm9yRWFjaCgodCkgPT5cbiAgICAgICAgICB0Lm9uRXJyb3Ioe1xuICAgICAgICAgICAgLi4uYmFzZSxcbiAgICAgICAgICAgIGVycm9yTWVzc2FnZTogKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyBydWxlIHNob3VsZCBiZSBpZ25vcmVkLlxuICAgKiBAcGFyYW0gc3VwcHJlc3Npb25zIFRoZSBzdXBwcmVzc2lvbnMgbGlzdGVkIGluIHRoZSBjZGstbmFnIG1ldGFkYXRhLlxuICAgKiBAcGFyYW0gcnVsZUlkIFRoZSBpZCBvZiB0aGUgcnVsZSB0byBpZ25vcmUuXG4gICAqIEBwYXJhbSByZXNvdXJjZSBUaGUgcmVzb3VyY2UgYmVpbmcgZXZhbHVhdGVkLlxuICAgKiBAcGFyYW0gZmluZGluZ0lkIFRoZSBpZCBvZiB0aGUgZmluZGluZyB0aGF0IGlzIGJlaW5nIGNoZWNrZWQuXG4gICAqIEBwYXJhbSB2YWxpZGF0aW9uRmFpbHVyZSBXaGV0aGVyIHRoZSBydWxlIGlzIGJlaW5nIGNoZWNrZWQgZHVlIHRvIGEgdmFsaWRhdGlvbiBmYWlsdXJlLlxuICAgKiBAcmV0dXJucyBUaGUgcmVhc29uIHRoZSBydWxlIHdhcyBpZ25vcmVkLCBvciBhbiBlbXB0eSBzdHJpbmcuXG4gICAqL1xuICBwcm90ZWN0ZWQgaWdub3JlUnVsZShcbiAgICBzdXBwcmVzc2lvbnM6IE5hZ1BhY2tTdXBwcmVzc2lvbltdLFxuICAgIHJ1bGVJZDogc3RyaW5nLFxuICAgIGZpbmRpbmdJZDogc3RyaW5nLFxuICAgIHJlc291cmNlOiBDZm5SZXNvdXJjZSxcbiAgICBsZXZlbDogTmFnTWVzc2FnZUxldmVsLFxuICAgIGlnbm9yZVN1cHByZXNzaW9uQ29uZGl0aW9uPzogSU5hZ1N1cHByZXNzaW9uSWdub3JlLFxuICAgIHZhbGlkYXRpb25GYWlsdXJlOiBib29sZWFuID0gZmFsc2VcbiAgKTogc3RyaW5nIHtcbiAgICBmb3IgKGxldCBzdXBwcmVzc2lvbiBvZiBzdXBwcmVzc2lvbnMpIHtcbiAgICAgIGlmIChcbiAgICAgICAgTmFnU3VwcHJlc3Npb25IZWxwZXIuZG9lc0FwcGx5KHN1cHByZXNzaW9uLCBydWxlSWQsIGZpbmRpbmdJZCkgfHxcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBtYXJrZWQgYXMgYW4gZXhjZXB0aW9uLCBhbHNvIGNoZWNrIGZvciBhIHN1cHByZXNzaW9uIG9uIFZBTElEQVRJT05fRkFJTFVSRV9JRFxuICAgICAgICAodmFsaWRhdGlvbkZhaWx1cmUgJiZcbiAgICAgICAgICBOYWdTdXBwcmVzc2lvbkhlbHBlci5kb2VzQXBwbHkoXG4gICAgICAgICAgICBzdXBwcmVzc2lvbixcbiAgICAgICAgICAgIFZBTElEQVRJT05fRkFJTFVSRV9JRCxcbiAgICAgICAgICAgIHJ1bGVJZFxuICAgICAgICAgICkpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgaWdub3JlTWVzc2FnZSA9IG5ldyBTdXBwcmVzc2lvbklnbm9yZU9yKFxuICAgICAgICAgIHRoaXMudXNlckdsb2JhbFN1cHByZXNzaW9uSWdub3JlID8/IG5ldyBTdXBwcmVzc2lvbklnbm9yZU5ldmVyKCksXG4gICAgICAgICAgdGhpcy5wYWNrR2xvYmFsU3VwcHJlc3Npb25JZ25vcmUgPz8gbmV3IFN1cHByZXNzaW9uSWdub3JlTmV2ZXIoKSxcbiAgICAgICAgICBpZ25vcmVTdXBwcmVzc2lvbkNvbmRpdGlvbiA/PyBuZXcgU3VwcHJlc3Npb25JZ25vcmVOZXZlcigpXG4gICAgICAgICkuY3JlYXRlTWVzc2FnZSh7XG4gICAgICAgICAgcmVzb3VyY2UsXG4gICAgICAgICAgcmVhc29uOiBzdXBwcmVzc2lvbi5yZWFzb24sXG4gICAgICAgICAgcnVsZUlkLFxuICAgICAgICAgIGZpbmRpbmdJZCxcbiAgICAgICAgICBydWxlTGV2ZWw6IGxldmVsLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlnbm9yZU1lc3NhZ2UpIHtcbiAgICAgICAgICBsZXQgaWQgPSBmaW5kaW5nSWQgPyBgJHtydWxlSWR9WyR7ZmluZGluZ0lkfV1gIDogYCR7cnVsZUlkfWA7XG4gICAgICAgICAgQW5ub3RhdGlvbnMub2YocmVzb3VyY2UpLmFkZEluZm8oXG4gICAgICAgICAgICBgVGhlIHN1cHByZXNzaW9uIGZvciAke2lkfSB3YXMgaWdub3JlZCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb24ocykuXFxuXFx0JHtpZ25vcmVNZXNzYWdlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICghc3VwcHJlc3Npb24uYXBwbGllc1RvKSB7XG4gICAgICAgICAgICAvLyB0aGUgcnVsZSBpcyBub3QgZ3JhbnVsYXIgc28gaXQgYWx3YXlzIGFwcGxpZXNcbiAgICAgICAgICAgIHJldHVybiBzdXBwcmVzc2lvbi5yZWFzb247XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBgWyR7ZmluZGluZ0lkfV0gJHtzdXBwcmVzc2lvbi5yZWFzb259YDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vbkNvbXBsaWFudChydWxlUmVzdWx0OiBOYWdSdWxlUmVzdWx0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHJ1bGVSZXN1bHQgPT09IE5hZ1J1bGVDb21wbGlhbmNlLk5PTl9DT01QTElBTlQgfHxcbiAgICAgIEFycmF5LmlzQXJyYXkocnVsZVJlc3VsdClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBhc0ZpbmRpbmdzKHJ1bGVSZXN1bHQ6IE5hZ1J1bGVSZXN1bHQpOiBOYWdSdWxlRmluZGluZ3Mge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJ1bGVSZXN1bHQpKSB7XG4gICAgICByZXR1cm4gcnVsZVJlc3VsdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFsnJ107XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
187
|
+
exports.WriteNagSuppressionsToCloudFormationAspect = WriteNagSuppressionsToCloudFormationAspect;
|
|
188
|
+
_b = JSII_RTTI_SYMBOL_1;
|
|
189
|
+
WriteNagSuppressionsToCloudFormationAspect[_b] = { fqn: "cdk-nag.WriteNagSuppressionsToCloudFormationAspect", version: "3.0.2" };
|
|
190
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFnLXBhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbmFnLXBhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0VBR0U7QUFDRiw2Q0FVcUI7QUFFckIsMkNBQWdGO0FBMERoRjs7OztHQUlHO0FBQ0gsTUFBc0IsT0FBTztJQVEzQixZQUFZLEtBQWtCLEVBQUUsS0FBb0I7UUFKMUMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNoQixlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUl6QyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDO1FBQ3ZDLElBQUksS0FBSyxJQUFJLEtBQUssRUFBRSxpQ0FBaUMsRUFBRSxDQUFDO1lBQ3RELHFCQUFPLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLDBDQUEwQyxFQUFFLENBQUMsQ0FBQztRQUMxRSxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQ2IsT0FBaUM7UUFFakMsTUFBTSxVQUFVLEdBQUcsT0FBZ0MsQ0FBQztRQUNwRCxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStEO2dCQUM3RCw4SEFBOEgsQ0FDakksQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksYUFBYSxDQUFDLEtBQWlCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckIsT0FBTztZQUNMLE9BQU8sRUFBRSxJ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QkFDYixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7d0JBQzdCLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixDQUFDO1FBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM1RCxDQUFDO0lBQ0gsQ0FBQzs7QUE1QkgsZ0dBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiovXG5pbXBvcnQge1xuICBBc3BlY3RzLFxuICBDZm5SZXNvdXJjZSxcbiAgSUFzcGVjdCxcbiAgSVBvbGljeVZhbGlkYXRpb25QbHVnaW4sXG4gIElQb2xpY3lWYWxpZGF0aW9uQ29udGV4dCxcbiAgUG9saWN5VmFsaWRhdGlvblBsdWdpblJlcG9ydCxcbiAgUG9saWN5VmlvbGF0aW9uLFxuICBQb2xpY3lWaW9sYXRpbmdSZXNvdXJjZSxcbiAgVmFsaWRhdGlvbnMsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IE5hZ01lc3NhZ2VMZXZlbCwgTmFnUnVsZUNvbXBsaWFuY2UsIE5hZ1J1bGVSZXN1bHQgfSBmcm9tICcuL25hZy1ydWxlcyc7XG5cbi8qKlxuICogRXh0ZW5kZWQgdmFsaWRhdGlvbiBjb250ZXh0IHRoYXQgaW5jbHVkZXMgdGhlIGNvbnN0cnVjdCB0cmVlLlxuICogUmVxdWlyZXMgQ0RLIGNvcmUgY2hhbmdlIHRvIHBvcHVsYXRlIGBhcHBDb25zdHJ1Y3RgIGR1cmluZyBwbHVnaW4gdmFsaWRhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmFnVmFsaWRhdGlvbkNvbnRleHQgZXh0ZW5kcyBJUG9saWN5VmFsaWRhdGlvbkNvbnRleHQge1xuICByZWFkb25seSBhcHBDb25zdHJ1Y3Q6IElDb25zdHJ1Y3Q7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIGZvciBjcmVhdGluZyBhIE5hZ1BhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmFnUGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgb3Igbm90IHRvIGVuYWJsZSBleHRlbmRlZCBleHBsYW5hdG9yeSBkZXNjcmlwdGlvbnMgb24gd2FybmluZywgZXJyb3IsIGFuZCBsb2dnZWQgaWdub3JlIG1lc3NhZ2VzIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqL1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byB3cml0ZSBhY2tub3dsZWRnZWQgcnVsZXMgaW50byBDZm5SZXNvdXJjZSBDbG91ZEZvcm1hdGlvblxuICAgKiBNZXRhZGF0YSBhcyBgY2RrX25hZzogeyBydWxlc190b19zdXBwcmVzczogWy4uLl0gfWAgZm9yIGJhY2t3YXJkc1xuICAgKiBjb21wYXRpYmlsaXR5IHdpdGggdjIgYXVkaXQgdHJhaWwgdG9vbGluZyAoZGVmYXVsdDogZmFsc2UpLlxuICAgKi9cbiAgcmVhZG9ubHkgd3JpdGVTdXBwcmVzc2lvbnNUb0Nsb3VkRm9ybWF0aW9uPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIEpTSUkgaW50ZXJvcGVyYWJpbGl0eSBmb3IgcGFzc2luZyBwYXJhbWV0ZXJzIGFuZCB0aGUgUnVsZSBDYWxsYmFjayB0byBAYXBwbHlSdWxlIG1ldGhvZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQXBwbHlSdWxlIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIGZvciB0aGUgc3VmZml4IG9mIHRoZSBSdWxlIElEIGZvciB0aGlzIHJ1bGVcbiAgICovXG4gIHJ1bGVTdWZmaXhPdmVycmlkZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFdoeSB0aGUgcnVsZSB3YXMgdHJpZ2dlcmVkLlxuICAgKi9cbiAgaW5mbzogc3RyaW5nO1xuICAvKipcbiAgICogV2h5IHRoZSBydWxlIGV4aXN0cy5cbiAgICovXG4gIGV4cGxhbmF0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYW5ub3RhdGlvbnMgbWVzc2FnZSBsZXZlbCB0byBhcHBseSB0byB0aGUgcnVsZSBpZiB0cmlnZ2VyZWQuXG4gICAqL1xuICBsZXZlbDogTmFnTWVzc2FnZUxldmVsO1xuICAvKipcbiAgICogVGhlIENmblJlc291cmNlIHRvIGNoZWNrXG4gICAqL1xuICBub2RlOiBDZm5SZXNvdXJjZTtcbiAgLyoqXG4gICAqIFRoZSBjYWxsYmFjayB0byB0aGUgcnVsZS5cbiAgICogQHBhcmFtIG5vZGUgVGhlIENmblJlc291cmNlIHRvIGNoZWNrLlxuICAgKi9cbiAgcnVsZShub2RlOiBDZm5SZXNvdXJjZSk6IE5hZ1J1bGVSZXN1bHQ7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgYWxsIHJ1bGUgcGFja3MuIEltcGxlbWVudHMgSVBvbGljeVZhbGlkYXRpb25QbHVnaW4gc28gdGhhdFxuICogcGFja3MgYXJlIHJlZ2lzdGVyZWQgdmlhIGBWYWxpZGF0aW9ucy5vZihhcHApLmFkZFBsdWdpbnMobmV3IE15UGFjayhhcHApKWBcbiAqIGluc3RlYWQgb2YgYEFzcGVjdHMub2YoYXBwKS5hZGQoLi4uKWAuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOYWdQYWNrIGltcGxlbWVudHMgSVBvbGljeVZhbGlkYXRpb25QbHVnaW4ge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJ1bGVJZHM/OiBzdHJpbmdbXTtcbiAgcHJvdGVjdGVkIHBhY2tOYW1lID0gJyc7XG4gIHByaXZhdGUgdmlvbGF0aW9uczogUG9saWN5VmlvbGF0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSB2ZXJib3NlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlPzogSUNvbnN0cnVjdCwgcHJvcHM/OiBOYWdQYWNrUHJvcHMpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSBwcm9wcz8udmVyYm9zZSA/PyBmYWxzZTtcbiAgICBpZiAoc2NvcGUgJiYgcHJvcHM/LndyaXRlU3VwcHJlc3Npb25zVG9DbG91ZEZvcm1hdGlvbikge1xuICAgICAgQXNwZWN0cy5vZihzY29wZSkuYWRkKG5ldyBXcml0ZU5hZ1N1cHByZXNzaW9uc1RvQ2xvdWRGb3JtYXRpb25Bc3BlY3QoKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCByZWFkUGFja05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wYWNrTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRyeSBwb2ludCBjYWxsZWQgYnkgdGhlIENESyB2YWxpZGF0aW9uIGZyYW1ld29yay5cbiAgICogUmVxdWlyZXMgYGFwcENvbnN0cnVjdGAgdG8gYmUgcHJlc2VudCBvbiB0aGUgY29udGV4dCAoQ0RLIGNvcmUgY2hhbmdlKS5cbiAgICogRm9yIHRlc3Rpbmcgb3IgZGlyZWN0IGludm9jYXRpb24sIHVzZSBgdmFsaWRhdGVTY29wZShzY29wZSlgLlxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlKFxuICAgIGNvbnRleHQ6IElQb2xpY3lWYWxpZGF0aW9uQ29udGV4dFxuICApOiBQb2xpY3lWYWxpZGF0aW9uUGx1Z2luUmVwb3J0IHtcbiAgICBjb25zdCBuYWdDb250ZXh0ID0gY29udGV4dCBhcyBJTmFnVmFsaWRhdGlvbkNvbnRleHQ7XG4gICAgaWYgKCFuYWdDb250ZXh0LmFwcENvbnN0cnVjdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnTmFnUGFjayByZXF1aXJlcyBhIGNvbnN0cnVjdCB0cmVlIG9uIHRoZSB2YWxpZGF0aW9uIGNvbnRleHQuICcgK1xuICAgICAgICAgICdVc2UgdmFsaWRhdGVTY29wZShzY29wZSkgZm9yIGRpcmVjdCBpbnZvY2F0aW9uIG9yIGVuc3VyZSB5b3VyIENESyB2ZXJzaW9uIHByb3ZpZGVzIGFwcENvbnN0cnVjdCBvbiBJUG9saWN5VmFsaWRhdGlvbkNvbnRleHQuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsaWRhdGVTY29wZShuYWdDb250ZXh0LmFwcENvbnN0cnVjdCk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYSBjb25zdHJ1Y3QgdHJlZSBkaXJlY3RseS4gVGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludFxuICAgKiBmb3IgdGVzdGluZyBhbmQgZm9yIENESyB2ZXJzaW9ucyB0aGF0IGRvIG5vdCB5ZXQgcHJvdmlkZSBgYXBwQ29uc3RydWN0YCBvblxuICAgKiBgSVBvbGljeVZhbGlkYXRpb25Db250ZXh0YC5cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZVNjb3BlKHNjb3BlOiBJQ29uc3RydWN0KTogUG9saWN5VmFsaWRhdGlvblBsdWdpblJlcG9ydCB7XG4gICAgdGhpcy52aW9sYXRpb25zID0gW107XG4gICAgdGhpcy53YWxrVHJlZShzY29wZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRoaXMudmlvbGF0aW9ucy5sZW5ndGggPT09IDAsXG4gICAgICB2aW9sYXRpb25zOiB0aGlzLnZpb2xhdGlvbnMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSB3YWxrIHRoZSBjb25zdHJ1Y3QgdHJlZSBhbmQgaW52b2tlIGNoZWNrUmVzb3VyY2Ugb24gZWFjaCBDZm5SZXNvdXJjZS5cbiAgICovXG4gIHByaXZhdGUgd2Fsa1RyZWUobm9kZTogSUNvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChDZm5SZXNvdXJjZS5pc0NmblJlc291cmNlKG5vZGUpKSB7XG4gICAgICB0aGlzLmNoZWNrUmVzb3VyY2Uobm9kZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5ub2RlLmNoaWxkcmVuKSB7XG4gICAgICB0aGlzLndhbGtUcmVlKGNoaWxkKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3ViY2xhc3NlcyBpbXBsZW1lbnQgdGhpcyB0byBhcHBseSBydWxlcyB0byBlYWNoIENmblJlc291cmNlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNoZWNrUmVzb3VyY2Uobm9kZTogQ2ZuUmVzb3VyY2UpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBydWxlIHRvIGJlIHVzZWQgaW4gdGhlIE5hZ1BhY2suXG4gICAqIEBwYXJhbSBwYXJhbXMgVGhlIEBJQXBwbHlSdWxlIGludGVyZmFjZSB3aXRoIHJ1bGUgZGV0YWlscy5cbiAgICovXG4gIHByb3RlY3RlZCBhcHBseVJ1bGUocGFyYW1zOiBJQXBwbHlSdWxlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGFja05hbWUgPT09ICcnKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ1RoZSBOYWdQYWNrIGRvZXMgbm90IGhhdmUgYSBwYWNrIG5hbWUsIHRoZXJlZm9yZSB0aGUgcnVsZSBjb3VsZCBub3QgYmUgYXBwbGllZC4gU2V0IGEgcGFja05hbWUgaW4gdGhlIE5hZ1BhY2sgY29uc3RydWN0b3IuJ1xuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgcnVsZVN1ZmZpeCA9IHBhcmFtcy5ydWxlU3VmZml4T3ZlcnJpZGVcbiAgICAgID8gcGFyYW1zLnJ1bGVTdWZmaXhPdmVycmlkZVxuICAgICAgOiBwYXJhbXMucnVsZS5uYW1lO1xuICAgIGNvbnN0IHJ1bGVJZCA9IGAke3RoaXMucGFja05hbWV9LSR7cnVsZVN1ZmZpeH1gO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHBhcmFtcy5ydWxlKHBhcmFtcy5ub2RlKTtcbiAgICAgIGlmIChyZXN1bHQgPT09IE5hZ1J1bGVDb21wbGlhbmNlLk5PTl9DT01QTElBTlQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQWNrbm93bGVkZ2VkKHBhcmFtcy5ub2RlLCBydWxlSWQpKSB7XG4gICAgICAgICAgdGhpcy5hZGRWaW9sYXRpb24ocnVsZUlkLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgICBmb3IgKGNvbnN0IGZpbmRpbmcgb2YgcmVzdWx0KSB7XG4gICAgICAgICAgY29uc3QgZmluZGluZ1J1bGVJZCA9IGAke3J1bGVJZH1bJHtmaW5kaW5nfV1gO1xuICAgICAgICAgIGlmICghdGhpcy5pc0Fja25vd2xlZGdlZChwYXJhbXMubm9kZSwgZmluZGluZ1J1bGVJZCkpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkVmlvbGF0aW9uKGZpbmRpbmdSdWxlSWQsIHBhcmFtcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghdGhpcy5pc0Fja25vd2xlZGdlZChwYXJhbXMubm9kZSwgcnVsZUlkKSkge1xuICAgICAgICB0aGlzLmFkZFZpb2xhdGlvbihydWxlSWQsIHBhcmFtcywgKGVycm9yIGFzIEVycm9yKS5tZXNzYWdlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdmlvbGF0aW9uIHRvIHRoZSBpbnRlcm5hbCB2aW9sYXRpb25zIGFycmF5LCBncm91cGluZyBieSBydWxlTmFtZS5cbiAgICovXG4gIHByaXZhdGUgYWRkVmlvbGF0aW9uKFxuICAgIHJ1bGVOYW1lOiBzdHJpbmcsXG4gICAgcGFyYW1zOiBJQXBwbHlSdWxlLFxuICAgIGVycm9yTWVzc2FnZT86IHN0cmluZ1xuICApOiB2b2lkIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGVycm9yTWVzc2FnZVxuICAgICAgPyBgUnVsZSB0aHJldyBhbiBlcnJvciBkdXJpbmcgdmFsaWRhdGlvbi4gJHtcbiAgICAgICAgICB0aGlzLnZlcmJvc2VcbiAgICAgICAgICAgID8gZXJyb3JNZXNzYWdlXG4gICAgICAgICAgICA6ICdUaGlzIGlzIGdlbmVyYWxseSBjYXVzZWQgYnkgYSBwYXJhbWV0ZXIgcmVmZXJlbmNpbmcgYW4gaW50cmluc2ljIGZ1bmN0aW9uLidcbiAgICAgICAgfWBcbiAgICAgIDogdGhpcy52ZXJib3NlXG4gICAgICA/IGAke3BhcmFtcy5pbmZvfSAke3BhcmFtcy5leHBsYW5hdGlvbn1gXG4gICAgICA6IHBhcmFtcy5pbmZvO1xuXG4gICAgY29uc3QgcmVzb3VyY2U6IFBvbGljeVZpb2xhdGluZ1Jlc291cmNlID0ge1xuICAgICAgY29uc3RydWN0UGF0aDogcGFyYW1zLm5vZGUubm9kZS5wYXRoLFxuICAgICAgbG9jYXRpb25zOiBbJ1Byb3BlcnRpZXMnXSxcbiAgICB9O1xuXG4gICAgY29uc3QgZXhpc3RpbmcgPSB0aGlzLnZpb2xhdGlvbnMuZmluZCgodikgPT4gdi5ydWxlTmFtZSA9PT0gcnVsZU5hbWUpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgZXhpc3RpbmcudmlvbGF0aW5nUmVzb3VyY2VzLnB1c2gocmVzb3VyY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZpb2xhdGlvbnMucHVzaCh7XG4gICAgICAgIHJ1bGVOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgc2V2ZXJpdHk6IHBhcmFtcy5sZXZlbCA9PT0gTmFnTWVzc2FnZUxldmVsLkVSUk9SID8gJ2Vycm9yJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgdmlvbGF0aW5nUmVzb3VyY2VzOiBbcmVzb3VyY2VdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHdoZXRoZXIgYSBzcGVjaWZpYyBydWxlIGhhcyBiZWVuIGFja25vd2xlZGdlZCBvbiB0aGUgZ2l2ZW4gcmVzb3VyY2VcbiAgICogb3IgYW55IG9mIGl0cyBhbmNlc3RvciBjb25zdHJ1Y3RzIHZpYSB0aGUgQ0RLIFZhbGlkYXRpb25zXG4gICAqIGFja25vd2xlZGdlZC1ydWxlcyBtZXRhZGF0YSBtZWNoYW5pc20uXG4gICAqL1xuICBwcml2YXRlIGlzQWNrbm93bGVkZ2VkKHJlc291cmNlOiBDZm5SZXNvdXJjZSwgcnVsZUlkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBtZXRhZGF0YUtleSA9IFZhbGlkYXRpb25zLkFDS05PV0xFREdFRF9SVUxFU19NRVRBREFUQV9LRVk7XG4gICAgbGV0IGN1cnJlbnQ6IElDb25zdHJ1Y3QgfCB1bmRlZmluZWQgPSByZXNvdXJjZTtcbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBjdXJyZW50Lm5vZGUubWV0YWRhdGEpIHtcbiAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IG1ldGFkYXRhS2V5ICYmIGVudHJ5LmRhdGEpIHtcbiAgICAgICAgICBjb25zdCBpZHMgPSBPYmplY3Qua2V5cyhlbnRyeS5kYXRhIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pLm1hcChcbiAgICAgICAgICAgIC8vIGF3cy1jZGstbGliIDwyLjI2Mi4xIHdyb3RlICdhbm5vdGF0aW9uOjonLCA+PTIuMjYyLjEgd3JpdGVzICdBbm5vdGF0aW9uOjonXG4gICAgICAgICAgICAoaykgPT4gay5yZXBsYWNlKC9eYW5ub3RhdGlvbjo6L2ksICcnKVxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGlkcy5pbmNsdWRlcyhydWxlSWQpKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubm9kZS5zY29wZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogQW4gSUFzcGVjdCB0aGF0IHJlYWRzIGFja25vd2xlZGdlZCBydWxlcyBmcm9tIGNvbnN0cnVjdCBtZXRhZGF0YSBhbmQgd3JpdGVzXG4gKiB0aGVtIGludG8gdGhlIENmblJlc291cmNlJ3MgQ2xvdWRGb3JtYXRpb24gTWV0YWRhdGEgZm9yIGF1ZGl0IHRyYWlsXG4gKiBwZXJzaXN0ZW5jZSBpbiB0aGUgc3ludGhlc2l6ZWQgdGVtcGxhdGUuIFByZXNlcnZlcyB0aGUgdjIgYGNka19uYWdgXG4gKiBtZXRhZGF0YSBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBXcml0ZU5hZ1N1cHByZXNzaW9uc1RvQ2xvdWRGb3JtYXRpb25Bc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoIUNmblJlc291cmNlLmlzQ2ZuUmVzb3VyY2Uobm9kZSkpIHJldHVybjtcbiAgICBjb25zdCBtZXRhZGF0YUtleSA9IFZhbGlkYXRpb25zLkFDS05PV0xFREdFRF9SVUxFU19NRVRBREFUQV9LRVk7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHJ1bGVzOiB7IGlkOiBzdHJpbmc7IHJlYXNvbjogc3RyaW5nIH1bXSA9IFtdO1xuXG4gICAgbGV0IGN1cnJlbnQ6IElDb25zdHJ1Y3QgfCB1bmRlZmluZWQgPSBub2RlO1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGN1cnJlbnQubm9kZS5tZXRhZGF0YSkge1xuICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gbWV0YWRhdGFLZXkgJiYgZW50cnkuZGF0YSkge1xuICAgICAgICAgIGZvciAoY29uc3QgW3F1YWxpZmllZElkLCByZWFzb25dIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgZW50cnkuZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgKSkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBxdWFsaWZpZWRJZC5yZXBsYWNlKC9eYW5ub3RhdGlvbjo6L2ksICcnKTtcbiAgICAgICAgICAgIGlmICghc2Vlbi5oYXMoaWQpKSB7XG4gICAgICAgICAgICAgIHNlZW4uYWRkKGlkKTtcbiAgICAgICAgICAgICAgcnVsZXMucHVzaCh7IGlkLCByZWFzb24gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5ub2RlLnNjb3BlO1xuICAgIH1cblxuICAgIGlmIChydWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBub2RlLmFkZE1ldGFkYXRhKCdjZGtfbmFnJywgeyBydWxlc190b19zdXBwcmVzczogcnVsZXMgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { CfnResource } from 'aws-cdk-lib';
|
|
2
|
-
export declare const VALIDATION_FAILURE_ID = "CdkNagValidationFailure";
|
|
3
2
|
/**
|
|
4
3
|
* The severity level of the rule.
|
|
5
4
|
*/
|
|
@@ -20,7 +19,6 @@ export declare enum NagRuleCompliance {
|
|
|
20
19
|
* Additional states a rule can be in post compliance validation
|
|
21
20
|
*/
|
|
22
21
|
export declare enum NagRulePostValidationStates {
|
|
23
|
-
SUPPRESSED = "Suppressed",
|
|
24
22
|
UNKNOWN = "UNKNOWN"
|
|
25
23
|
}
|
|
26
24
|
/**
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.NagRules = exports.NagRulePostValidationStates = exports.NagRuleCompliance = exports.NagMessageLevel =
|
|
4
|
+
exports.NagRules = exports.NagRulePostValidationStates = exports.NagRuleCompliance = exports.NagMessageLevel = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
/*
|
|
7
7
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
8
8
|
SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
*/
|
|
10
10
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
|
-
exports.VALIDATION_FAILURE_ID = 'CdkNagValidationFailure';
|
|
12
11
|
/**
|
|
13
12
|
* The severity level of the rule.
|
|
14
13
|
*/
|
|
@@ -32,7 +31,6 @@ var NagRuleCompliance;
|
|
|
32
31
|
*/
|
|
33
32
|
var NagRulePostValidationStates;
|
|
34
33
|
(function (NagRulePostValidationStates) {
|
|
35
|
-
NagRulePostValidationStates["SUPPRESSED"] = "Suppressed";
|
|
36
34
|
NagRulePostValidationStates["UNKNOWN"] = "UNKNOWN";
|
|
37
35
|
})(NagRulePostValidationStates || (exports.NagRulePostValidationStates = NagRulePostValidationStates = {}));
|
|
38
36
|
/**
|
|
@@ -89,5 +87,5 @@ class NagRules {
|
|
|
89
87
|
}
|
|
90
88
|
exports.NagRules = NagRules;
|
|
91
89
|
_a = JSII_RTTI_SYMBOL_1;
|
|
92
|
-
NagRules[_a] = { fqn: "cdk-nag.NagRules", version: "
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
NagRules[_a] = { fqn: "cdk-nag.NagRules", version: "3.0.2" };
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFnLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL25hZy1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7RUFHRTtBQUNGLDZDQUFpRDtBQUVqRDs7R0FFRztBQUNILElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN6QixtQ0FBZ0IsQ0FBQTtJQUNoQixrQ0FBZSxDQUFBO0lBQ2YsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxlQUFlLCtCQUFmLGVBQWUsUUFJMUI7QUFFRDs7R0FFRztBQUNILElBQVksaUJBSVg7QUFKRCxXQUFZLGlCQUFpQjtJQUMzQiw0Q0FBdUIsQ0FBQTtJQUN2QixvREFBK0IsQ0FBQTtJQUMvQiwyQ0FBc0IsQ0FBQTtBQUN4QixDQUFDLEVBSlcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFJNUI7QUFFRDs7R0FFRztBQUNILElBQVksMkJBRVg7QUFGRCxXQUFZLDJCQUEyQjtJQUNyQyxrREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFFdEM7QUFpQkQ7O0dBRUc7QUFDSCxNQUFhLFFBQVE7SUFDbkI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQWlCLEVBQUUsU0FBYztRQUN6RCxNQUFNLGFBQWEsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsSUFBSSxhQUFhLEtBQUssTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxLQUFLLENBQ1QsdURBQXVELElBQUksQ0FBQyxTQUFTLENBQ25FLGFBQWEsQ0FDZCwrQ0FBK0MsQ0FDakQsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxhQUFhLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFpQixFQUFFLFNBQWM7UUFDcEUsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsNEJBQTRCLENBQUMsSUFBaUIsRUFBRSxTQUFjO1FBQ25FLE1BQU0sYUFBYSxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RCxNQUFNLEdBQUcsR0FBRyxhQUFhLEVBQUUsR0FBRyxDQUFDO1FBQy9CLE1BQU0sTUFBTSxHQUFHLGFBQWEsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFDRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDOztBQW5ESCw0QkFvREMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cbmltcG9ydCB7IENmblJlc291cmNlLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiBUaGUgc2V2ZXJpdHkgbGV2ZWwgb2YgdGhlIHJ1bGUuXG4gKi9cbmV4cG9ydCBlbnVtIE5hZ01lc3NhZ2VMZXZlbCB7XG4gIFdBUk4gPSAnV2FybmluZycsXG4gIEVSUk9SID0gJ0Vycm9yJyxcbiAgSU5GTyA9ICdJbmZvJyxcbn1cblxuLyoqXG4gKiBUaGUgY29tcGxpYW5jZSBsZXZlbCBvZiBhIHJlc291cmNlIGluIHJlbGF0aW9uIHRvIGEgcnVsZS5cbiAqL1xuZXhwb3J0IGVudW0gTmFnUnVsZUNvbXBsaWFuY2Uge1xuICBDT01QTElBTlQgPSAnQ29tcGxpYW50JyxcbiAgTk9OX0NPTVBMSUFOVCA9ICdOb24tQ29tcGxpYW50JyxcbiAgTk9UX0FQUExJQ0FCTEUgPSAnTi9BJyxcbn1cblxuLyoqXG4gKiBBZGRpdGlvbmFsIHN0YXRlcyBhIHJ1bGUgY2FuIGJlIGluIHBvc3QgY29tcGxpYW5jZSB2YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBlbnVtIE5hZ1J1bGVQb3N0VmFsaWRhdGlvblN0YXRlcyB7XG4gIFVOS05PV04gPSAnVU5LTk9XTicsXG59XG5cbi8qKlxuICogQWxsIHN0YXRlcyBhIHJ1bGUgY2FuIGJlIGluIHBvc3QgY29tcGxpYW5jZSB2YWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE5hZ1J1bGVTdGF0ZXMgPSBOYWdSdWxlQ29tcGxpYW5jZSB8IE5hZ1J1bGVQb3N0VmFsaWRhdGlvblN0YXRlcztcblxuZXhwb3J0IHR5cGUgTmFnUnVsZUZpbmRpbmcgPSBzdHJpbmc7XG5cbmV4cG9ydCB0eXBlIE5hZ1J1bGVGaW5kaW5ncyA9IE5hZ1J1bGVGaW5kaW5nW107XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBhIHJ1bGUgY2hlY2suIENhbiBlaXRoZXIgYmUgYE5hZ1J1bGVDb21wbGlhbmNlYFxuICogb3IgYW4gYXJyYXkgb2YgaW5kaXZpZHVhbCBmaW5kaW5nc1xuICovXG5leHBvcnQgdHlwZSBOYWdSdWxlUmVzdWx0ID0gTmFnUnVsZUNvbXBsaWFuY2UgfCBOYWdSdWxlRmluZGluZ3M7XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIHdpdGggbWV0aG9kcyBmb3IgcnVsZSBjcmVhdGlvblxuICovXG5leHBvcnQgY2xhc3MgTmFnUnVsZXMge1xuICAvKipcbiAgICogVXNlIGluIGNhc2VzIHdoZXJlIGEgcHJpbWl0aXZlIHZhbHVlIG11c3QgYmUga25vd24gdG8gcGFzcyBhIHJ1bGUuXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvR2xvc3NhcnkvUHJpbWl0aXZlXG4gICAqIEBwYXJhbSBub2RlIFRoZSBDZm5SZXNvdXJjZSB0byBjaGVjay5cbiAgICogQHBhcmFtIHBhcmFtZXRlciBUaGUgdmFsdWUgdG8gYXR0ZW1wdCB0byByZXNvbHZlLlxuICAgKiBAcmV0dXJucyBSZXR1cm4gYSB2YWx1ZSBpZiByZXNvbHZlcyB0byBhIHByaW1pdGl2ZSBkYXRhIHR5cGUsIG90aGVyd2lzZSB0aHJvdyBhbiBlcnJvci5cbiAgICovXG4gIHN0YXRpYyByZXNvbHZlSWZQcmltaXRpdmUobm9kZTogQ2ZuUmVzb3VyY2UsIHBhcmFtZXRlcjogYW55KTogYW55IHtcbiAgICBjb25zdCByZXNvbHZlZFZhbHVlID0gU3RhY2sub2Yobm9kZSkucmVzb2x2ZShwYXJhbWV0ZXIpO1xuICAgIGlmIChyZXNvbHZlZFZhbHVlID09PSBPYmplY3QocmVzb2x2ZWRWYWx1ZSkpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgVGhlIHBhcmFtZXRlciByZXNvbHZlZCB0byB0byBhIG5vbi1wcmltaXRpdmUgdmFsdWUgXCIke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHJlc29sdmVkVmFsdWVcbiAgICAgICAgKX1cIiwgdGhlcmVmb3JlIHRoZSBydWxlIGNvdWxkIG5vdCBiZSB2YWxpZGF0ZWQuYFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHJlc29sdmVkVmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIFVzZSByZXNvbHZlUmVzb3VyY2VGcm9tSW50cmluc2ljIGluc3RlYWRcbiAgICpcbiAgICogVXNlIGluIGNhc2VzIHdoZXJlIGEgdG9rZW4gcmVzb2x2ZXMgdG8gYW4gaW50cmluc2ljIGZ1bmN0aW9uIGFuZCB0aGUgcmVmZXJlbmNlZCByZXNvdXJjZSBtdXN0IGJlIGtub3duIHRvIHBhc3MgYSBydWxlLlxuICAgKiBAcGFyYW0gbm9kZSBUaGUgQ2ZuUmVzb3VyY2UgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXIgVGhlIHZhbHVlIHRvIGF0dGVtcHQgdG8gcmVzb2x2ZS5cbiAgICogQHJldHVybnMgUmV0dXJuIHRoZSBMb2dpY2FsIHJlc291cmNlIElkIGlmIHJlc29sdmVzIHRvIGEgaW50cmluc2ljIGZ1bmN0aW9uLCBvdGhlcndpc2UgdGhlIHJlc29sdmVkIHByb3ZpZGVkIHZhbHVlLlxuICAgKi9cbiAgc3RhdGljIHJlc29sdmVSZXNvdXJjZUZyb21JbnN0cmluc2ljKG5vZGU6IENmblJlc291cmNlLCBwYXJhbWV0ZXI6IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVJlc291cmNlRnJvbUludHJpbnNpYyhub2RlLCBwYXJhbWV0ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIFVzZSBpbiBjYXNlcyB3aGVyZSBhIHRva2VuIHJlc29sdmVzIHRvIGFuIGludHJpbnNpYyBmdW5jdGlvbiBhbmQgdGhlIHJlZmVyZW5jZWQgcmVzb3VyY2UgbXVzdCBiZSBrbm93biB0byBwYXNzIGEgcnVsZS5cbiAgICogQHBhcmFtIG5vZGUgVGhlIENmblJlc291cmNlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gcGFyYW1ldGVyIFRoZSB2YWx1ZSB0byBhdHRlbXB0IHRvIHJlc29sdmUuXG4gICAqIEByZXR1cm5zIFJldHVybiB0aGUgTG9naWNhbCByZXNvdXJjZSBJZCBpZiByZXNvbHZlcyB0byBhIGludHJpbnNpYyBmdW5jdGlvbiwgb3RoZXJ3aXNlIHRoZSByZXNvbHZlZCBwcm92aWRlZCB2YWx1ZS5cbiAgICovXG4gIHN0YXRpYyByZXNvbHZlUmVzb3VyY2VGcm9tSW50cmluc2ljKG5vZGU6IENmblJlc291cmNlLCBwYXJhbWV0ZXI6IGFueSk6IGFueSB7XG4gICAgY29uc3QgcmVzb2x2ZWRWYWx1ZSA9IFN0YWNrLm9mKG5vZGUpLnJlc29sdmUocGFyYW1ldGVyKTtcbiAgICBjb25zdCByZWYgPSByZXNvbHZlZFZhbHVlPy5SZWY7XG4gICAgY29uc3QgZ2V0QXR0ID0gcmVzb2x2ZWRWYWx1ZT8uWydGbjo6R2V0QXR0J107XG4gICAgaWYgKHJlZiAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiByZWY7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGdldEF0dCkgJiYgZ2V0QXR0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBnZXRBdHRbMF07XG4gICAgfVxuICAgIHJldHVybiByZXNvbHZlZFZhbHVlO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
1
2
|
import { IConstruct } from 'constructs';
|
|
2
3
|
import { NagPack, NagPackProps } from '../nag-pack';
|
|
3
4
|
/**
|
|
@@ -5,84 +6,72 @@ import { NagPack, NagPackProps } from '../nag-pack';
|
|
|
5
6
|
*
|
|
6
7
|
*/
|
|
7
8
|
export declare class AwsSolutionsChecks extends NagPack {
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
readonly name = "AwsSolutions";
|
|
10
|
+
constructor(scope?: IConstruct, props?: NagPackProps);
|
|
11
|
+
protected checkResource(node: CfnResource): void;
|
|
10
12
|
/**
|
|
11
13
|
* Check Compute Services
|
|
12
14
|
* @param node the CfnResource to check
|
|
13
|
-
* @param ignores list of ignores for the resource
|
|
14
15
|
*/
|
|
15
16
|
private checkCompute;
|
|
16
17
|
/**
|
|
17
18
|
* Check Storage Services
|
|
18
19
|
* @param node the CfnResource to check
|
|
19
|
-
* @param ignores list of ignores for the resource
|
|
20
20
|
*/
|
|
21
21
|
private checkStorage;
|
|
22
22
|
/**
|
|
23
23
|
* Check Database Services
|
|
24
24
|
* @param node the CfnResource to check
|
|
25
|
-
* @param ignores list of ignores for the resource
|
|
26
25
|
*/
|
|
27
26
|
private checkDatabases;
|
|
28
27
|
/**
|
|
29
28
|
* Check Network and Delivery Services
|
|
30
29
|
* @param node the CfnResource to check
|
|
31
|
-
* @param ignores list of ignores for the resource
|
|
32
30
|
*/
|
|
33
31
|
private checkNetworkDelivery;
|
|
34
32
|
/**
|
|
35
33
|
* Check Management and Governance Services
|
|
36
34
|
* @param node the CfnResource to check
|
|
37
|
-
* @param ignores list of ignores for the resource
|
|
38
35
|
*/
|
|
39
36
|
private checkManagementGovernance;
|
|
40
37
|
/**
|
|
41
38
|
* Check Machine Learning Services
|
|
42
39
|
* @param node the CfnResource to check
|
|
43
|
-
* @param ignores list of ignores for the resource
|
|
44
40
|
*/
|
|
45
41
|
private checkMachineLearning;
|
|
46
42
|
/**
|
|
47
43
|
* Check Analytics Services
|
|
48
44
|
* @param node the CfnResource to check
|
|
49
|
-
* @param ignores list of ignores for the resource
|
|
50
45
|
*/
|
|
51
46
|
private checkAnalytics;
|
|
52
47
|
/**
|
|
53
48
|
* Check Security and Compliance Services
|
|
54
49
|
* @param node the CfnResource to check
|
|
55
|
-
* @param ignores list of ignores for the resource
|
|
56
50
|
*/
|
|
57
51
|
private checkSecurityCompliance;
|
|
58
52
|
/**
|
|
59
53
|
* Check Serverless Services
|
|
60
54
|
* @param node the CfnResource to check
|
|
61
|
-
* @param ignores list of ignores for the resource
|
|
62
55
|
*/
|
|
63
56
|
private checkServerless;
|
|
64
57
|
/**
|
|
65
58
|
* Check Application Integration Services
|
|
66
59
|
* @param node the CfnResource to check
|
|
67
|
-
* @param ignores list of ignores for the resource
|
|
68
60
|
*/
|
|
69
61
|
private checkApplicationIntegration;
|
|
70
62
|
/**
|
|
71
63
|
* Check Media Services
|
|
72
64
|
* @param node the CfnResource to check
|
|
73
|
-
* @param ignores list of ignores for the resource
|
|
74
65
|
*/
|
|
75
66
|
private checkMediaServices;
|
|
76
67
|
/**
|
|
77
68
|
* Check Developer Tools Services
|
|
78
69
|
* @param node the CfnResource to check
|
|
79
|
-
* @param ignores list of ignores for the resource
|
|
80
70
|
*/
|
|
81
71
|
private checkDeveloperTools;
|
|
82
72
|
/**
|
|
83
73
|
* Check Lambda Services
|
|
84
74
|
* @param node the CfnResource to check
|
|
85
|
-
* @param ignores list of ignores for the resource
|
|
86
75
|
*/
|
|
87
76
|
private checkLambda;
|
|
88
77
|
}
|