@aligent/cdk-aspects 0.5.7 → 0.6.2
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/CHANGELOG.md +24 -0
- package/lib/microservice-checks.d.ts +1 -0
- package/lib/microservice-checks.js +23 -1
- package/lib/resource-prefix.d.ts +11 -1
- package/lib/resource-prefix.js +25 -8
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @aligent/cdk-aspects
|
|
2
2
|
|
|
3
|
+
## 0.6.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1688](https://github.com/aligent/cdk-constructs/pull/1688) [`5fc3de2`](https://github.com/aligent/cdk-constructs/commit/5fc3de2da74962c1e11a57a375fb11c71406d5c8) Thanks [@dependabot](https://github.com/apps/dependabot)! - chore(deps): bump the aws group across 1 directory with 10 updates
|
|
8
|
+
|
|
9
|
+
- [#1692](https://github.com/aligent/cdk-constructs/pull/1692) [`baac665`](https://github.com/aligent/cdk-constructs/commit/baac665095aed5e548e465374d7b84a00f84cecc) Thanks [@dependabot](https://github.com/apps/dependabot)! - chore(deps): bump the other-dependencies group across 1 directory with 2 updates
|
|
10
|
+
|
|
11
|
+
## 0.6.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#1685](https://github.com/aligent/cdk-constructs/pull/1685) [`4a4b1aa`](https://github.com/aligent/cdk-constructs/commit/4a4b1aa137e371e7448cefc2de3de416f4bb0284) Thanks [@kai-nguyen-aligent](https://github.com/kai-nguyen-aligent)! - Skip prefixing AWS-reserved log group names (e.g. `/aws/lambda/...`, `/aws/apigateway/...`). Previously, the `ResourcePrefixAspect` would incorrectly rename these log groups, causing deployment failures since AWS reserves the `/aws/` prefix for its own services. Also fixed base name resolution to check both PascalCase and camelCase CFN property keys.
|
|
16
|
+
|
|
17
|
+
## 0.6.0
|
|
18
|
+
|
|
19
|
+
### Minor Changes
|
|
20
|
+
|
|
21
|
+
- [#1680](https://github.com/aligent/cdk-constructs/pull/1680) [`727dc22`](https://github.com/aligent/cdk-constructs/commit/727dc22827da803bf8948ebd61b33894750e0092) Thanks [@toddhainsworth](https://github.com/toddhainsworth)! - `MicroserviceChecks` now skips CDK-managed singleton resources (BucketDeployment custom handler, `LogRetention`, `Custom::S3AutoDeleteObjects`, and `cr.Provider` framework lambdas). These nodes have framework-owned runtime config that consumers cannot tune, so surfacing memory size, timeout, tracing, and log retention nags on them is noise. Consumers no longer need bespoke suppression aspects for these resources.
|
|
22
|
+
|
|
23
|
+
### Patch Changes
|
|
24
|
+
|
|
25
|
+
- [#1678](https://github.com/aligent/cdk-constructs/pull/1678) [`50e4458`](https://github.com/aligent/cdk-constructs/commit/50e445871adb3cb6a8c0d98783a5b5fb09e13898) Thanks [@aikido-autofix](https://github.com/apps/aikido-autofix)! - [Aikido] Fix security issue in fast-uri via minor version upgrade from 3.1.0 to 3.1.2
|
|
26
|
+
|
|
3
27
|
## 0.5.7
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
|
@@ -3,6 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MicroserviceChecks = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const cdk_nag_1 = require("cdk-nag");
|
|
6
|
+
/**
|
|
7
|
+
* Path fragments identifying CDK-managed singleton resources that consumers
|
|
8
|
+
* cannot configure. These nodes are skipped during rule evaluation because
|
|
9
|
+
* surfacing nags on memory size, timeout, tracing, or log retention for
|
|
10
|
+
* resources owned by the CDK framework is noise.
|
|
11
|
+
*/
|
|
12
|
+
const CDK_MANAGED_PATH_FRAGMENTS = [
|
|
13
|
+
// aws-s3-deployment.BucketDeployment custom resource handler
|
|
14
|
+
"Custom::CDKBucketDeployment",
|
|
15
|
+
// Deprecated CDK log retention custom resource
|
|
16
|
+
"LogRetention",
|
|
17
|
+
// Bucket(autoDeleteObjects: true)
|
|
18
|
+
"Custom::S3AutoDeleteObjects",
|
|
19
|
+
// cr.Provider framework on-event / is-complete handler
|
|
20
|
+
"AWS679f53fac002430cb0da5b7982bd2287",
|
|
21
|
+
];
|
|
6
22
|
/**
|
|
7
23
|
* Microservice Checks are a compilation of rules to validate infrastructure-as-code template
|
|
8
24
|
* against recommended practices using the cdk-nag library.
|
|
@@ -20,6 +36,8 @@ class MicroserviceChecks extends cdk_nag_1.NagPack {
|
|
|
20
36
|
this.packName = "Microservices";
|
|
21
37
|
}
|
|
22
38
|
visit(node) {
|
|
39
|
+
if (this.isCdkManagedSingleton(node))
|
|
40
|
+
return;
|
|
23
41
|
if (node instanceof aws_cdk_lib_1.CfnResource) {
|
|
24
42
|
this.applyRule({
|
|
25
43
|
info: "The Lambda function does not have an explicit memory value configured.",
|
|
@@ -51,6 +69,10 @@ class MicroserviceChecks extends cdk_nag_1.NagPack {
|
|
|
51
69
|
});
|
|
52
70
|
}
|
|
53
71
|
}
|
|
72
|
+
isCdkManagedSingleton(node) {
|
|
73
|
+
const path = node.node.path;
|
|
74
|
+
return CDK_MANAGED_PATH_FRAGMENTS.some(fragment => path.includes(fragment));
|
|
75
|
+
}
|
|
54
76
|
}
|
|
55
77
|
exports.MicroserviceChecks = MicroserviceChecks;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWljcm9zZXJ2aWNlLWNoZWNrcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pY3Jvc2VydmljZS1jaGVja3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTBDO0FBQzFDLHFDQUE2RTtBQUc3RTs7Ozs7R0FLRztBQUNILE1BQU0sMEJBQTBCLEdBQUc7SUFDakMsNkRBQTZEO0lBQzdELDZCQUE2QjtJQUM3QiwrQ0FBK0M7SUFDL0MsY0FBYztJQUNkLGtDQUFrQztJQUNsQyw2QkFBNkI7SUFDN0IsdURBQXVEO0lBQ3ZELHFDQUFxQztDQUN0QyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsaUJBQU87SUFDN0MsWUFBWSxLQUFvQjtRQUM5QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQWdCO1FBQzNCLElBQUksSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztZQUFFLE9BQU87UUFFN0MsSUFBSSxJQUFJLFlBQVkseUJBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLHdFQUF3RTtnQkFDOUUsV0FBVyxFQUNULGdiQUFnYjtnQkFDbGIsS0FBSyxFQUFFLHlCQUFlLENBQUMsS0FBSztnQkFDNUIsSUFBSSxFQUFFLGVBQUssQ0FBQyxNQUFNLENBQUMsdUJBQXVCO2dCQUMxQyxJQUFJLEVBQUUsSUFBSTthQUNYLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLHdFQUF3RTtnQkFDOUUsV0FBVyxFQUNULHFqQkFBcWpCO2dCQUN2akIsS0FBSyxFQUFFLHlCQUFlLENBQUMsS0FBSztnQkFDNUIsSUFBSSxFQUFFLGVBQUssQ0FBQyxNQUFNLENBQUMsb0JBQW9CO2dCQUN2QyxJQUFJLEVBQUUsSUFBSTthQUNYLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLGtFQUFrRTtnQkFDeEUsV0FBVyxFQUNULGtKQUFrSjtnQkFDcEosS0FBSyxFQUFFLHlCQUFlLENBQUMsS0FBSztnQkFDNUIsSUFBSSxFQUFFLGVBQUssQ0FBQyxNQUFNLENBQUMsYUFBYTtnQkFDaEMsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNiLElBQUksRUFBRSw4RUFBOEU7Z0JBQ3BGLFdBQVcsRUFDVCwwU0FBMFM7Z0JBQzVTLEtBQUssRUFBRSx5QkFBZSxDQUFDLEtBQUs7Z0JBQzVCLElBQUksRUFBRSxlQUFLLENBQUMsVUFBVSxDQUFDLGlDQUFpQztnQkFDeEQsSUFBSSxFQUFFLElBQUk7YUFDWCxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLElBQWdCO1FBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLE9BQU8sMEJBQTBCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDRjtBQWpERCxnREFpREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgTmFnTWVzc2FnZUxldmVsLCBOYWdQYWNrLCBydWxlcywgdHlwZSBOYWdQYWNrUHJvcHMgfSBmcm9tIFwiY2RrLW5hZ1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBQYXRoIGZyYWdtZW50cyBpZGVudGlmeWluZyBDREstbWFuYWdlZCBzaW5nbGV0b24gcmVzb3VyY2VzIHRoYXQgY29uc3VtZXJzXG4gKiBjYW5ub3QgY29uZmlndXJlLiBUaGVzZSBub2RlcyBhcmUgc2tpcHBlZCBkdXJpbmcgcnVsZSBldmFsdWF0aW9uIGJlY2F1c2VcbiAqIHN1cmZhY2luZyBuYWdzIG9uIG1lbW9yeSBzaXplLCB0aW1lb3V0LCB0cmFjaW5nLCBvciBsb2cgcmV0ZW50aW9uIGZvclxuICogcmVzb3VyY2VzIG93bmVkIGJ5IHRoZSBDREsgZnJhbWV3b3JrIGlzIG5vaXNlLlxuICovXG5jb25zdCBDREtfTUFOQUdFRF9QQVRIX0ZSQUdNRU5UUyA9IFtcbiAgLy8gYXdzLXMzLWRlcGxveW1lbnQuQnVja2V0RGVwbG95bWVudCBjdXN0b20gcmVzb3VyY2UgaGFuZGxlclxuICBcIkN1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudFwiLFxuICAvLyBEZXByZWNhdGVkIENESyBsb2cgcmV0ZW50aW9uIGN1c3RvbSByZXNvdXJjZVxuICBcIkxvZ1JldGVudGlvblwiLFxuICAvLyBCdWNrZXQoYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUpXG4gIFwiQ3VzdG9tOjpTM0F1dG9EZWxldGVPYmplY3RzXCIsXG4gIC8vIGNyLlByb3ZpZGVyIGZyYW1ld29yayBvbi1ldmVudCAvIGlzLWNvbXBsZXRlIGhhbmRsZXJcbiAgXCJBV1M2NzlmNTNmYWMwMDI0MzBjYjBkYTViNzk4MmJkMjI4N1wiLFxuXTtcblxuLyoqXG4gKiBNaWNyb3NlcnZpY2UgQ2hlY2tzIGFyZSBhIGNvbXBpbGF0aW9uIG9mIHJ1bGVzIHRvIHZhbGlkYXRlIGluZnJhc3RydWN0dXJlLWFzLWNvZGUgdGVtcGxhdGVcbiAqIGFnYWluc3QgcmVjb21tZW5kZWQgcHJhY3RpY2VzIHVzaW5nIHRoZSBjZGstbmFnIGxpYnJhcnkuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vY2RrLXBhdHRlcm5zL2Nkay1uYWcvXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IGFwcCA9IG5ldyBBcHAoKTtcbiAqIGNvbnN0IHN0YWNrID0gbmV3IFN0YWNrKGFwcCwgJ015U3RhY2snKTtcbiAqIEFzcGVjdHMub2Yoc3RhY2spLmFkZChuZXcgTWljcm9zZXJ2aWNlc0NoZWNrcygpKTtcbiAqL1xuZXhwb3J0IGNsYXNzIE1pY3Jvc2VydmljZUNoZWNrcyBleHRlbmRzIE5hZ1BhY2sge1xuICBjb25zdHJ1Y3Rvcihwcm9wcz86IE5hZ1BhY2tQcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnBhY2tOYW1lID0gXCJNaWNyb3NlcnZpY2VzXCI7XG4gIH1cblxuICBwdWJsaWMgdmlzaXQobm9kZTogSUNvbnN0cnVjdCkge1xuICAgIGlmICh0aGlzLmlzQ2RrTWFuYWdlZFNpbmdsZXRvbihub2RlKSkgcmV0dXJuO1xuXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5SZXNvdXJjZSkge1xuICAgICAgdGhpcy5hcHBseVJ1bGUoe1xuICAgICAgICBpbmZvOiBcIlRoZSBMYW1iZGEgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhbiBleHBsaWNpdCBtZW1vcnkgdmFsdWUgY29uZmlndXJlZC5cIixcbiAgICAgICAgZXhwbGFuYXRpb246XG4gICAgICAgICAgXCJMYW1iZGEgYWxsb2NhdGVzIENQVSBwb3dlciBpbiBwcm9wb3J0aW9uIHRvIHRoZSBhbW91bnQgb2YgbWVtb3J5IGNvbmZpZ3VyZWQuIEJ5IGRlZmF1bHQsIHlvdXIgZnVuY3Rpb25zIGhhdmUgMTI4IE1CIG9mIG1lbW9yeSBhbGxvY2F0ZWQuIFlvdSBjYW4gaW5jcmVhc2UgdGhhdCB2YWx1ZSB1cCB0byAxMCBHQi4gV2l0aCBtb3JlIENQVSByZXNvdXJjZXMsIHlvdXIgTGFtYmRhIGZ1bmN0aW9uJ3MgZHVyYXRpb24gbWlnaHQgZGVjcmVhc2UuICBZb3UgY2FuIHVzZSB0b29scyBzdWNoIGFzIEFXUyBMYW1iZGEgUG93ZXIgVHVuaW5nIHRvIHRlc3QgeW91ciBmdW5jdGlvbiBhdCBkaWZmZXJlbnQgbWVtb3J5IHNldHRpbmdzIHRvIGZpbmQgdGhlIG9uZSB0aGF0IG1hdGNoZXMgeW91ciBjb3N0IGFuZCBwZXJmb3JtYW5jZSByZXF1aXJlbWVudHMgdGhlIGJlc3QuXCIsXG4gICAgICAgIGxldmVsOiBOYWdNZXNzYWdlTGV2ZWwuRVJST1IsXG4gICAgICAgIHJ1bGU6IHJ1bGVzLmxhbWJkYS5MYW1iZGFEZWZhdWx0TWVtb3J5U2l6ZSxcbiAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hcHBseVJ1bGUoe1xuICAgICAgICBpbmZvOiBcIlRoZSBMYW1iZGEgZnVuY3Rpb24gZG9lcyBub3QgaGF2ZSBhbiBleHBsaWNpdGx5IGRlZmluZWQgdGltZW91dCB2YWx1ZS5cIixcbiAgICAgICAgZXhwbGFuYXRpb246XG4gICAgICAgICAgXCJMYW1iZGEgZnVuY3Rpb25zIGhhdmUgYSBkZWZhdWx0IHRpbWVvdXQgb2YgMyBzZWNvbmRzLiBJZiB5b3VyIHRpbWVvdXQgdmFsdWUgaXMgdG9vIHNob3J0LCBMYW1iZGEgbWlnaHQgdGVybWluYXRlIGludm9jYXRpb25zIHByZW1hdHVyZWx5LiBPbiB0aGUgb3RoZXIgc2lkZSwgc2V0dGluZyB0aGUgdGltZW91dCBtdWNoIGhpZ2hlciB0aGFuIHRoZSBhdmVyYWdlIGV4ZWN1dGlvbiBtYXkgY2F1c2UgZnVuY3Rpb25zIHRvIGV4ZWN1dGUgZm9yIGxvbmdlciB1cG9uIGNvZGUgbWFsZnVuY3Rpb24sIHJlc3VsdGluZyBpbiBoaWdoZXIgY29zdHMgYW5kIHBvc3NpYmx5IHJlYWNoaW5nIGNvbmN1cnJlbmN5IGxpbWl0cyBkZXBlbmRpbmcgb24gaG93IHN1Y2ggZnVuY3Rpb25zIGFyZSBpbnZva2VkLiBZb3UgY2FuIGFsc28gdXNlIEFXUyBMYW1iZGEgUG93ZXIgVHVuaW5nIHRvIHRlc3QgeW91ciBmdW5jdGlvbiBhdCBkaWZmZXJlbnQgdGltZW91dCBzZXR0aW5ncyB0byBmaW5kIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHlvdXIgY29zdCBhbmQgcGVyZm9ybWFuY2UgcmVxdWlyZW1lbnRzIHRoZSBiZXN0LlwiLFxuICAgICAgICBsZXZlbDogTmFnTWVzc2FnZUxldmVsLkVSUk9SLFxuICAgICAgICBydWxlOiBydWxlcy5sYW1iZGEuTGFtYmRhRGVmYXVsdFRpbWVvdXQsXG4gICAgICAgIG5vZGU6IG5vZGUsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYXBwbHlSdWxlKHtcbiAgICAgICAgaW5mbzogXCJUaGUgTGFtYmRhIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgdHJhY2luZyBzZXQgdG8gVHJhY2luZy5BQ1RJVkUuXCIsXG4gICAgICAgIGV4cGxhbmF0aW9uOlxuICAgICAgICAgIFwiV2hlbiBhIExhbWJkYSBmdW5jdGlvbiBoYXMgQUNUSVZFIHRyYWNpbmcsIExhbWJkYSBhdXRvbWF0aWNhbGx5IHNhbXBsZXMgaW52b2NhdGlvbiByZXF1ZXN0cywgYmFzZWQgb24gdGhlIHNhbXBsaW5nIGFsZ29yaXRobSBzcGVjaWZpZWQgYnkgWC1SYXkuXCIsXG4gICAgICAgIGxldmVsOiBOYWdNZXNzYWdlTGV2ZWwuRVJST1IsXG4gICAgICAgIHJ1bGU6IHJ1bGVzLmxhbWJkYS5MYW1iZGFUcmFjaW5nLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmFwcGx5UnVsZSh7XG4gICAgICAgIGluZm86IFwiVGhlIENsb3VkV2F0Y2ggTG9nIEdyb3VwIGRvZXMgbm90IGhhdmUgYW4gZXhwbGljaXQgcmV0ZW50aW9uIHBvbGljeSBkZWZpbmVkLlwiLFxuICAgICAgICBleHBsYW5hdGlvbjpcbiAgICAgICAgICBcIkJ5IGRlZmF1bHQsIGxvZ3MgYXJlIGtlcHQgaW5kZWZpbml0ZWx5IGFuZCBuZXZlciBleHBpcmUuIFlvdSBjYW4gYWRqdXN0IHRoZSByZXRlbnRpb24gcG9saWN5IGZvciBlYWNoIGxvZyBncm91cCwga2VlcGluZyB0aGUgaW5kZWZpbml0ZSByZXRlbnRpb24sIG9yIGNob29zaW5nIGEgcmV0ZW50aW9uIHBlcmlvZCBiZXR3ZWVuIG9uZSBkYXkgYW5kIDEwIHllYXJzLiBGb3IgTGFtYmRhIGZ1bmN0aW9ucywgdGhpcyBhcHBsaWVzIHRvIHRoZWlyIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBDbG91ZFdhdGNoIExvZyBHcm91cHMuXCIsXG4gICAgICAgIGxldmVsOiBOYWdNZXNzYWdlTGV2ZWwuRVJST1IsXG4gICAgICAgIHJ1bGU6IHJ1bGVzLmNsb3Vkd2F0Y2guQ2xvdWRXYXRjaExvZ0dyb3VwUmV0ZW50aW9uUGVyaW9kLFxuICAgICAgICBub2RlOiBub2RlLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0Nka01hbmFnZWRTaW5nbGV0b24obm9kZTogSUNvbnN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhdGggPSBub2RlLm5vZGUucGF0aDtcbiAgICByZXR1cm4gQ0RLX01BTkFHRURfUEFUSF9GUkFHTUVOVFMuc29tZShmcmFnbWVudCA9PiBwYXRoLmluY2x1ZGVzKGZyYWdtZW50KSk7XG4gIH1cbn1cbiJdfQ==
|
package/lib/resource-prefix.d.ts
CHANGED
|
@@ -49,8 +49,18 @@ export declare class ResourcePrefixAspect implements IAspect {
|
|
|
49
49
|
private readonly exclude;
|
|
50
50
|
constructor(props: ResourcePrefixAspectProps);
|
|
51
51
|
visit(node: IConstruct): void;
|
|
52
|
+
/**
|
|
53
|
+
* Determines whether a resource should be skipped from prefixing based on
|
|
54
|
+
* resource-type-specific rules (e.g., AWS-reserved naming conventions).
|
|
55
|
+
*/
|
|
56
|
+
private shouldSkipResource;
|
|
52
57
|
private isAlreadyPrefixed;
|
|
53
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Resolves the base name for a resource by checking explicitly set CFN properties
|
|
60
|
+
* first, then falling back to deriving a name from the logical ID.
|
|
61
|
+
* CDK stores L1 properties in camelCase internally, so both casings are checked.
|
|
62
|
+
*/
|
|
63
|
+
private resolveBaseName;
|
|
54
64
|
/**
|
|
55
65
|
* Builds the prefixed name, handling special cases for specific resource types.
|
|
56
66
|
*
|
package/lib/resource-prefix.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ResourcePrefixAspect = void 0;
|
|
4
|
-
const crypto_1 = require("crypto");
|
|
5
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
6
|
/**
|
|
7
7
|
* Maps CloudFormation resource types to their name property and AWS length limits.
|
|
8
8
|
* Sources: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html
|
|
@@ -101,11 +101,10 @@ class ResourcePrefixAspect {
|
|
|
101
101
|
}
|
|
102
102
|
const { cfnName, maxLength } = config;
|
|
103
103
|
const cfnProperties = (_b = (_a = node._cfnProperties) !== null && _a !== void 0 ? _a : node.cfnProperties) !== null && _b !== void 0 ? _b : {};
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const baseName = existingName !== null && existingName !== void 0 ? existingName : this.deriveNameFromLogicalId(node);
|
|
104
|
+
const baseName = this.resolveBaseName(node, cfnName, cfnProperties);
|
|
105
|
+
if (this.shouldSkipResource(resourceType, baseName)) {
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
109
108
|
if (this.isAlreadyPrefixed(baseName)) {
|
|
110
109
|
return;
|
|
111
110
|
}
|
|
@@ -118,10 +117,28 @@ class ResourcePrefixAspect {
|
|
|
118
117
|
return;
|
|
119
118
|
node.addPropertyOverride(cfnName, finalName);
|
|
120
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* Determines whether a resource should be skipped from prefixing based on
|
|
122
|
+
* resource-type-specific rules (e.g., AWS-reserved naming conventions).
|
|
123
|
+
*/
|
|
124
|
+
shouldSkipResource(cfnResourceType, baseName) {
|
|
125
|
+
return (cfnResourceType === "AWS::Logs::LogGroup" && baseName.startsWith("/aws/"));
|
|
126
|
+
}
|
|
121
127
|
isAlreadyPrefixed(name) {
|
|
122
128
|
return (name.startsWith(`${this.prefix}-`) || name.startsWith(`/${this.prefix}/`));
|
|
123
129
|
}
|
|
124
|
-
|
|
130
|
+
/**
|
|
131
|
+
* Resolves the base name for a resource by checking explicitly set CFN properties
|
|
132
|
+
* first, then falling back to deriving a name from the logical ID.
|
|
133
|
+
* CDK stores L1 properties in camelCase internally, so both casings are checked.
|
|
134
|
+
*/
|
|
135
|
+
resolveBaseName(node, cfnName, cfnProperties) {
|
|
136
|
+
var _a;
|
|
137
|
+
const camelCfnName = cfnName.charAt(0).toLowerCase() + cfnName.slice(1);
|
|
138
|
+
const rawName = (_a = cfnProperties[cfnName]) !== null && _a !== void 0 ? _a : cfnProperties[camelCfnName];
|
|
139
|
+
if (typeof rawName === "string") {
|
|
140
|
+
return rawName;
|
|
141
|
+
}
|
|
125
142
|
const logicalId = aws_cdk_lib_1.Stack.of(node).getLogicalId(node);
|
|
126
143
|
return logicalId
|
|
127
144
|
.replace(/[^a-zA-Z0-9]+/g, "-") // non-alphanumeric → dash
|
|
@@ -199,4 +216,4 @@ class ResourcePrefixAspect {
|
|
|
199
216
|
}
|
|
200
217
|
}
|
|
201
218
|
exports.ResourcePrefixAspect = ResourcePrefixAspect;
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVzb3VyY2UtcHJlZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFvQztBQUNwQyw2Q0FBdUU7QUFnQ3ZFOzs7R0FHRztBQUNILE1BQU0sZUFBZSxHQUF1QztJQUMxRCxVQUFVO0lBQ1YsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFFbkUsVUFBVTtJQUNWLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzNELHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ2hFLDRCQUE0QixFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBRXRFLFlBQVk7SUFDWixpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMxRCxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtJQUUzRCwyQkFBMkI7SUFDM0IsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkQseUJBQXlCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDN0Qsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsa0NBQWtDLEVBQUU7UUFDbEMsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixTQUFT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Ozs7T0FHRztJQUNLLG9CQUFvQixDQUMxQixJQUFZLEVBQ1osZUFBdUIsRUFDdkIsSUFBZ0I7UUFFaEIsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXJCLElBQUksZUFBZSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDMUMsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hDLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FDM0IsMENBQTBDLElBQUksZ0NBQWdDO29CQUM1RSxzQ0FBc0MsQ0FDekMsQ0FBQztnQkFDRixRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIseUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUMzQiwwQ0FBMEMsSUFBSSwwQkFBMEI7b0JBQ3RFLCtEQUErRCxDQUNsRSxDQUFDO2dCQUNGLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFoTEQsb0RBZ0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCB7IEFubm90YXRpb25zLCBDZm5SZXNvdXJjZSwgSUFzcGVjdCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbnRlcmZhY2UgUmVzb3VyY2VOYW1lQ29uZmlnIHtcbiAgLyoqIFRoZSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSByZXNvdXJjZSdzIHBoeXNpY2FsIG5hbWUgKi9cbiAgY2ZuTmFtZTogc3RyaW5nO1xuICAvKiogTWF4aW11bSBhbGxvd2VkIGNoYXJhY3RlciBsZW5ndGggZm9yIHRoaXMgcmVzb3VyY2UgdHlwZSAqL1xuICBtYXhMZW5ndGg6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBFeHRlbnNpb24gdHlwZSB0byBhY2Nlc3MgaW50ZXJuYWwgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyBvbiBDZm5SZXNvdXJjZS5cbiAqXG4gKiBDREsgZG9lcyBub3QgcHJvdmlkZSBhIHB1YmxpYyBBUEkgdG8gcmVhZCByYXcgQ2xvdWRGb3JtYXRpb24gcHJvcGVydGllcyB0aGF0IGhhdmVcbiAqIGJlZW4gc2V0IG9uIGEgQ2ZuUmVzb3VyY2UuIFRoZSBwcm9wZXJ0aWVzIGBfY2ZuUHJvcGVydGllc2AgYW5kIGBjZm5Qcm9wZXJ0aWVzYCBhcmVcbiAqIHByb3RlY3RlZCBhbmQgb25seSBhY2Nlc3NpYmxlIHdpdGhpbiB0aGUgQ2ZuUmVzb3VyY2UgY2xhc3MgaGllcmFyY2h5LlxuICpcbiAqIFdlIGludmVzdGlnYXRlZCB1c2luZyBDREsncyBwdWJsaWMgQVBJcywgYnV0IHRoZXJlIGlzIG5vIHB1YmxpYyBtZXRob2QgdG8gcmV0cmlldmVcbiAqIHRoZSByYXcgcHJvcGVydHkgdmFsdWVzIHRoYXQgaGF2ZSBiZWVuIHNldCAoZS5nLiwgdmlhIGNvbnN0cnVjdG9yIHByb3BzIG9yIGFkZFByb3BlcnR5T3ZlcnJpZGUpLlxuICogVGhlIG9ubHkgcHVibGljIEFQSXMgYXJlIGZvciB3cml0aW5nIChhZGRQcm9wZXJ0eU92ZXJyaWRlLCBhZGRQcm9wZXJ0eURlbGV0aW9uT3ZlcnJpZGUpIG9yXG4gKiBnZXR0aW5nIGF0dHJpYnV0ZSByZWZlcmVuY2VzIChnZXRBdHQpLCBub3QgZm9yIHJlYWRpbmcgbGl0ZXJhbCBwcm9wZXJ0eSB2YWx1ZXMuXG4gKlxuICogVGhpcyB0eXBlIGFzc2VydGlvbiBpcyBzYWZlIGJlY2F1c2U6XG4gKiAtIFdlIG9ubHkgcmVhZCB0aGVzZSBwcm9wZXJ0aWVzLCBuZXZlciBtb2RpZnkgdGhlbVxuICogLSBXZSBuZWVkIHRvIGNoZWNrIGlmIGEgdXNlciBleHBsaWNpdGx5IHNldCBhIG5hbWUgcHJvcGVydHkgYmVmb3JlIGFwcGx5aW5nIG91ciBwcmVmaXhcbiAqIC0gVGhlIHByb3BlcnRpZXMgZXhpc3QgYXQgcnVudGltZSBhbmQgYXJlIHBhcnQgb2YgQ0RLJ3MgaW50ZXJuYWwgaW1wbGVtZW50YXRpb25cbiAqL1xudHlwZSBDZm5SZXNvdXJjZVdpdGhQcm9wcyA9IENmblJlc291cmNlICYge1xuICByZWFkb25seSBfY2ZuUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICByZWFkb25seSBjZm5Qcm9wZXJ0aWVzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG4vKipcbiAqIE1hcHMgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZXMgdG8gdGhlaXIgbmFtZSBwcm9wZXJ0eSBhbmQgQVdTIGxlbmd0aCBsaW1pdHMuXG4gKiBTb3VyY2VzOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtdGVtcGxhdGUtcmVzb3VyY2UtdHlwZS1yZWYuaHRtbFxuICovXG5jb25zdCBSRVNPVVJDRV9DT05GSUc6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTmFtZUNvbmZpZz4gPSB7XG4gIC8vIENvbXB1dGVcbiAgXCJBV1M6OkxhbWJkYTo6RnVuY3Rpb25cIjogeyBjZm5OYW1lOiBcIkZ1bmN0aW9uTmFtZVwiLCBtYXhMZW5ndGg6IDY0IH0sXG5cbiAgLy8gU3RvcmFnZVxuICBcIkFXUzo6UzM6OkJ1Y2tldFwiOiB7IGNmbk5hbWU6IFwiQnVja2V0TmFtZVwiLCBtYXhMZW5ndGg6IDYzIH0sXG4gIFwiQVdTOjpEeW5hbW9EQjo6VGFibGVcIjogeyBjZm5OYW1lOiBcIlRhYmxlTmFtZVwiLCBtYXhMZW5ndGg6IDI1NSB9LFxuICBcIkFXUzo6RHluYW1vREI6Okdsb2JhbFRhYmxlXCI6IHsgY2ZuTmFtZTogXCJUYWJsZU5hbWVcIiwgbWF4TGVuZ3RoOiAyNTUgfSxcblxuICAvLyBNZXNzYWdpbmdcbiAgXCJBV1M6OlNRUzo6UXVldWVcIjogeyBjZm5OYW1lOiBcIlF1ZXVlTmFtZVwiLCBtYXhMZW5ndGg6IDgwIH0sXG4gIFwiQVdTOjpTTlM6OlRvcGljXCI6IHsgY2ZuTmFtZTogXCJUb3BpY05hbWVcIiwgbWF4TGVuZ3RoOiAyNTYgfSxcblxuICAvLyBFdmVudGluZyAmIE9yY2hlc3RyYXRpb25cbiAgXCJBV1M6OkV2ZW50czo6RXZlbnRCdXNcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiAyNTYgfSxcbiAgXCJBV1M6OkV2ZW50czo6UnVsZVwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDY0IH0sXG4gIFwiQVdTOjpFdmVudHM6OkNvbm5lY3Rpb25cIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuICBcIkFXUzo6UGlwZXM6OlBpcGVcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuICBcIkFXUzo6U3RlcEZ1bmN0aW9uczo6U3RhdGVNYWNoaW5lXCI6IHtcbiAgICBjZm5OYW1lOiBcIlN0YXRlTWFjaGluZU5hbWVcIixcbiAgICBtYXhMZW5ndGg6IDgwLFxuICB9LFxuICBcIkFXUzo6U3RlcEZ1bmN0aW9uczo6QWN0aXZpdHlcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA4MCB9LFxuICBcIkFXUzo6U2NoZWR1bGVyOjpTY2hlZHVsZVwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDY0IH0sXG4gIFwiQVdTOjpTY2hlZHVsZXI6OlNjaGVkdWxlR3JvdXBcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuXG4gIC8vIEFQSVxuICBcIkFXUzo6QXBpR2F0ZXdheTo6UmVzdEFwaVwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDEyOCB9LFxuICBcIkFXUzo6QXBpR2F0ZXdheTo6VXNhZ2VQbGFuXCI6IHsgY2ZuTmFtZTogXCJVc2FnZVBsYW5OYW1lXCIsIG1heExlbmd0aDogMTI4IH0sXG4gIFwiQVdTOjpBcGlHYXRld2F5OjpBcGlLZXlcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiAxMjggfSxcbiAgXCJBV1M6OkFwaUdhdGV3YXlWMjo6QXBpXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogMTI4IH0sXG4gIFwiQVdTOjpBcGlHYXRld2F5VjI6OkF1dGhvcml6ZXJcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiAxMjggfSxcblxuICAvLyBTZWNyZXRzICYgQ29uZmlnXG4gIFwiQVdTOjpTZWNyZXRzTWFuYWdlcjo6U2VjcmV0XCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogNTEyIH0sXG4gIFwiQVdTOjpTU006OlBhcmFtZXRlclwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDIwNDggfSxcbiAgXCJBV1M6OkFwcENvbmZpZzo6QXBwbGljYXRpb25cIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuICBcIkFXUzo6QXBwQ29uZmlnOjpFbnZpcm9ubWVudFwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDY0IH0sXG5cbiAgLy8gTm90aWZpY2F0aW9uc1xuICBcIkFXUzo6Tm90aWZpY2F0aW9uczo6Tm90aWZpY2F0aW9uQ29uZmlndXJhdGlvblwiOiB7XG4gICAgY2ZuTmFtZTogXCJOYW1lXCIsXG4gICAgbWF4TGVuZ3RoOiA2NCxcbiAgfSxcblxuICAvLyBPYnNlcnZhYmlsaXR5XG4gIFwiQVdTOjpMb2dzOjpMb2dHcm91cFwiOiB7IGNmbk5hbWU6IFwiTG9nR3JvdXBOYW1lXCIsIG1heExlbmd0aDogNTEyIH0sXG4gIFwiQVdTOjpDbG91ZFdhdGNoOjpBbGFybVwiOiB7IGNmbk5hbWU6IFwiQWxhcm1OYW1lXCIsIG1heExlbmd0aDogMjU1IH0sXG5cbiAgLy8gSUFNXG4gIFwiQVdTOjpJQU06OlJvbGVcIjogeyBjZm5OYW1lOiBcIlJvbGVOYW1lXCIsIG1heExlbmd0aDogNjQgfSxcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VQcmVmaXhBc3BlY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcHJlZml4IHRvIGFwcGx5IHRvIGFsbCByZXNvdXJjZSBuYW1lcy5cbiAgICogZS5nLiAnbXlhcHAtcHJvZCcg4oaSICdteWFwcC1wcm9kLW9yZGVycydcbiAgICovXG4gIHByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSB0eXBlcyB0byBza2lwIGVudGlyZWx5LlxuICAgKiBlLmcuIFsnQVdTOjpJQU06OlJvbGUnXSB0byBsZWF2ZSBJQU0gcm9sZSBuYW1lcyB1bnRvdWNoZWQuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICBleGNsdWRlPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ0RLIEFzcGVjdCB0aGF0IGF1dG9tYXRpY2FsbHkgcHJlZml4ZXMgcGh5c2ljYWwgcmVzb3VyY2UgbmFtZXMgYWNyb3NzIEFXUyByZXNvdXJjZXMuXG4gKlxuICogQHJlbWFya3NcbiAqICoqQ3JpdGljYWwgSW1wbGVtZW50YXRpb24gTm90ZXM6KipcbiAqXG4gKiAxLiAqKlN0YWdlIFN5bnRoZXNpcyBCb3VuZGFyaWVzKio6XG4gKiAgICAtIENESyBgU3RhZ2VgIGNvbnN0cnVjdHMgY3JlYXRlIHN5bnRoZXNpcyBib3VuZGFyaWVzIHRoYXQgcHJldmVudCBBcHAtbGV2ZWwgYXNwZWN0c1xuICogICAgICBmcm9tIHRyYXZlcnNpbmcgaW50byB0aGVtXG4gKiAgICAtIFRoaXMgYXNwZWN0IE1VU1QgYmUgYXBwbGllZCB0byBlYWNoIFN0YWdlIGluZGl2aWR1YWxseSwgbm90IHRvIHRoZSBBcHBcbiAqICAgIC0gRXhhbXBsZTogYEFzcGVjdHMub2Yoc3RhZ2UpLmFkZChuZXcgUmVzb3VyY2VQcmVmaXhBc3BlY3Qoey4uLn0pKWBcbiAqXG4gKiAyLiAqKlByb3BlcnR5IE5hbWUgQ2FzaW5nKio6XG4gKiAgICAtIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgdXNlIFBhc2NhbENhc2UgKGUuZy4sIGBGdW5jdGlvbk5hbWVgLCBgQnVja2V0TmFtZWApXG4gKiAgICAtIFVzaW5nIGNhbWVsQ2FzZSAoZS5nLiwgYGZ1bmN0aW9uTmFtZWApIHdpbGwgY2F1c2UgZXJyb3JzIHdpdGggdmVyc2lvbmluZyBhc3BlY3RzXG4gKiAgICAtIFdoZW4gdXNpbmcgYGFkZFByb3BlcnR5T3ZlcnJpZGUoKWAsIGFsd2F5cyB1c2UgdGhlIGV4YWN0IENsb3VkRm9ybWF0aW9uIHByb3BlcnR5IG5hbWVcbiAqXG4gKiAzLiAqKkFzcGVjdCBQcmlvcml0eSB3aXRoIFZlcnNpb25pbmcqKjpcbiAqICAgIC0gV2hlbiBjb21iaW5pbmcgd2l0aCBMYW1iZGFBbmRTdGVwRnVuY3Rpb25WZXJzaW9uaW5nQXNwZWN0LCBhcHBseSB0aGlzIGFzcGVjdCBCRUZPUkUgdmVyc2lvbmluZ1xuICogICAgLSBVc2UgQ0RLJ3MgcHJpb3JpdHkgc3lzdGVtOiBgQXNwZWN0cy5vZihzdGFnZSkuYWRkKHByZWZpeEFzcGVjdCwgeyBwcmlvcml0eTogMTAwIH0pYFxuICogICAgLSBUaGVuOiBgQXNwZWN0cy5vZihzdGFnZSkuYWRkKHZlcnNpb25pbmdBc3BlY3QsIHsgcHJpb3JpdHk6IDIwMCB9KWBcbiAqICAgIC0gTG93ZXIgcHJpb3JpdHkgbnVtYmVycyBydW4gZmlyc3RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ29ycmVjdCB1c2FnZSB3aXRoIHN0YWdpbmdcbiAqIGNvbnN0IHN0YWdlID0gbmV3IEFwcGxpY2F0aW9uU3RhZ2UoYXBwLCAncHJvZCcpO1xuICogQXNwZWN0cy5vZihzdGFnZSkuYWRkKG5ldyBSZXNvdXJjZVByZWZpeEFzcGVjdCh7IHByZWZpeDogJ215YXBwJyB9KSwgeyBwcmlvcml0eTogMTAwIH0pO1xuICogQXNwZWN0cy5vZihzdGFnZSkuYWRkKG5ldyBMYW1iZGFBbmRTdGVwRnVuY3Rpb25WZXJzaW9uaW5nQXNwZWN0KCksIHsgcHJpb3JpdHk6IDIwMCB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQcmVmaXhBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBwcmVmaXg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlOiBTZXQ8c3RyaW5nPjtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogUmVzb3VyY2VQcmVmaXhBc3BlY3RQcm9wcykge1xuICAgIGlmICghcHJvcHMucHJlZml4IHx8ICEvXlthLXowLTktXSskLy50ZXN0KHByb3BzLnByZWZpeCkpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBSZXNvdXJjZVByZWZpeEFzcGVjdDogcHJlZml4IG11c3QgY29udGFpbiBvbmx5IGxvd2VyY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaHlwaGVucywgZ290IFwiJHtwcm9wcy5wcmVmaXh9XCJgXG4gICAgICApO1xuXG4gICAgdGhpcy5wcmVmaXggPSBwcm9wcy5wcmVmaXg7XG4gICAgdGhpcy5leGNsdWRlID0gbmV3IFNldChwcm9wcy5leGNsdWRlID8/IFtdKTtcbiAgfVxuXG4gIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICBpZiAoIShub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpKSByZXR1cm47XG5cbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBub2RlLmNmblJlc291cmNlVHlwZTtcbiAgICBjb25zdCBjb25maWcgPSBSRVNPVVJDRV9DT05GSUdbcmVzb3VyY2VUeXBlXTtcblxuICAgIGlmICghY29uZmlnIHx8IHRoaXMuZXhjbHVkZS5oYXMocmVzb3VyY2VUeXBlKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY2ZuTmFtZSwgbWF4TGVuZ3RoIH0gPSBjb25maWc7XG4gICAgY29uc3QgY2ZuUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPVxuICAgICAgKG5vZGUgYXMgQ2ZuUmVzb3VyY2VXaXRoUHJvcHMpLl9jZm5Qcm9wZXJ0aWVzID8/XG4gICAgICAobm9kZSBhcyBDZm5SZXNvdXJjZVdpdGhQcm9wcykuY2ZuUHJvcGVydGllcyA/P1xuICAgICAge307XG5cbiAgICAvLyBHZXQgYW55IGV4cGxpY2l0bHkgc2V0IG5hbWUsIG9yIGRlcml2ZSBvbmUgZnJvbSB0aGUgbG9naWNhbCBJRFxuICAgIGNvbnN0IGV4aXN0aW5nTmFtZSA9XG4gICAgICB0eXBlb2YgY2ZuUHJvcGVydGllc1tjZm5OYW1lXSA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGNmblByb3BlcnRpZXNbY2ZuTmFtZV1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgYmFzZU5hbWUgPSBleGlzdGluZ05hbWUgPz8gdGhpcy5kZXJpdmVOYW1lRnJvbUxvZ2ljYWxJZChub2RlKTtcblxuICAgIGlmICh0aGlzLmlzQWxyZWFkeVByZWZpeGVkKGJhc2VOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuYnVpbGRQcmVmaXhlZE5hbWUoXG4gICAgICBiYXNlTmFtZSxcbiAgICAgIHJlc291cmNlVHlwZSxcbiAgICAgIGNmblByb3BlcnRpZXNcbiAgICApO1xuXG4gICAgLy8gVHJ1bmNhdGlvbiBhcHBsaWVzIHRvIGFsbCBvdmVyZmxvd3Mg4oCUIGluY2x1ZGluZyB1c2VyLXNldCBuYW1lcyDigJQgYmVjYXVzZSBMM1xuICAgIC8vIGNvbnN0cnVjdHMgY2FuIGdlbmVyYXRlIG5hbWVzIHRoZSB1c2VyIGhhcyBubyBkaXJlY3QgY29udHJvbCBvdmVyLlxuICAgIGNvbnN0IGZpbmFsTmFtZSA9IHRoaXMudHJ1bmNhdGVUb0ZpdChwcmVmaXhlZE5hbWUsIG1heExlbmd0aCwgbm9kZSk7XG5cbiAgICBjb25zdCBoYXNFcnJvciA9IHRoaXMudmFsaWRhdGVSZXNvdXJjZU5hbWUoZmluYWxOYW1lLCByZXNvdXJjZVR5cGUsIG5vZGUpO1xuXG4gICAgaWYgKGhhc0Vycm9yKSByZXR1cm47XG5cbiAgICBub2RlLmFkZFByb3BlcnR5T3ZlcnJpZGUoY2ZuTmFtZSwgZmluYWxOYW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbHJlYWR5UHJlZml4ZWQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIG5hbWUuc3RhcnRzV2l0aChgJHt0aGlzLnByZWZpeH0tYCkgfHwgbmFtZS5zdGFydHNXaXRoKGAvJHt0aGlzLnByZWZpeH0vYClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXJpdmVOYW1lRnJvbUxvZ2ljYWxJZChub2RlOiBDZm5SZXNvdXJjZSkge1xuICAgIGNvbnN0IGxvZ2ljYWxJZCA9IFN0YWNrLm9mKG5vZGUpLmdldExvZ2ljYWxJZChub2RlKTtcbiAgICByZXR1cm4gbG9naWNhbElkXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIi1cIikgLy8gbm9uLWFscGhhbnVtZXJpYyDihpIgZGFzaFxuICAgICAgLnJlcGxhY2UoL14tK3wtKyQvZywgXCJcIik7IC8vIHRyaW0gbGVhZGluZy90cmFpbGluZyBkYXNoZXNcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgdGhlIHByZWZpeGVkIG5hbWUsIGhhbmRsaW5nIHNwZWNpYWwgY2FzZXMgZm9yIHNwZWNpZmljIHJlc291cmNlIHR5cGVzLlxuICAgKlxuICAgKiBAcGFyYW0gYmFzZU5hbWUgLSBUaGUgYmFzZSByZXNvdXJjZSBuYW1lICh3aXRob3V0IHByZWZpeClcbiAgICogQHBhcmFtIGNmblJlc291cmNlVHlwZSAtIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSB0eXBlXG4gICAqIEBwYXJhbSBjZm5Qcm9wZXJ0aWVzIC0gVGhlIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgVGhlIGZpbmFsIHByZWZpeGVkIG5hbWUgd2l0aCBhbnkgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGFwcGxpZWRcbiAgICovXG4gIHByaXZhdGUgYnVpbGRQcmVmaXhlZE5hbWUoXG4gICAgYmFzZU5hbWU6IHN0cmluZyxcbiAgICBjZm5SZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBjZm5Qcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApOiBzdHJpbmcge1xuICAgIC8vIFNwZWNpYWwgY2FzZTogRklGTyBxdWV1ZXMgbXVzdCBlbmQgd2l0aCAuZmlmbyBzdWZmaXhcbiAgICBpZiAoXG4gICAgICBjZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpTUVM6OlF1ZXVlXCIgJiZcbiAgICAgIGNmblByb3BlcnRpZXMuZmlmb1F1ZXVlID09PSB0cnVlICYmXG4gICAgICAhYmFzZU5hbWUuZW5kc1dpdGgoXCIuZmlmb1wiKVxuICAgICkge1xuICAgICAgcmV0dXJuIGAke3RoaXMucHJlZml4fS0ke2Jhc2VOYW1lfS5maWZvYDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IEZJRk8gdG9waWNzIG11c3QgZW5kIHdpdGggLmZpZm8gc3VmZml4XG4gICAgaWYgKFxuICAgICAgY2ZuUmVzb3VyY2VUeXBlID09PSBcIkFXUzo6U05TOjpUb3BpY1wiICYmXG4gICAgICBjZm5Qcm9wZXJ0aWVzLmZpZm9Ub3BpYyA9PT0gdHJ1ZSAmJlxuICAgICAgIWJhc2VOYW1lLmVuZHNXaXRoKFwiLmZpZm9cIilcbiAgICApIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnByZWZpeH0tJHtiYXNlTmFtZX0uZmlmb2A7XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBTU00gcGFyYW1ldGVyIG5hbWVzIHVzZSBwYXRoLXN0eWxlIHByZWZpeFxuICAgIGlmIChjZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpTU006OlBhcmFtZXRlclwiKSB7XG4gICAgICByZXR1cm4gYC8ke3RoaXMucHJlZml4fS8ke2Jhc2VOYW1lfWA7XG4gICAgfVxuXG4gICAgLy8gU3BlY2lhbCBjYXNlOiBTMyBidWNrZXQgbmFtZSBiZSBsb3dlcmNhc2Ugb25seVxuICAgIGlmIChjZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpTMzo6QnVja2V0XCIpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnByZWZpeH0tJHtiYXNlTmFtZX1gLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdDogc2ltcGxlIHByZWZpeFxuICAgIHJldHVybiBgJHt0aGlzLnByZWZpeH0tJHtiYXNlTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFRydW5jYXRlcyBhIHByZWZpeGVkIG5hbWUgdG8gZml0IHdpdGhpbiBtYXhMZW5ndGggYnkgaGFzaGluZyB0aGUgb3JpZ2luYWxcbiAgICogZm9yIHVuaXF1ZW5lc3MuIEVtaXRzIGEgQ0RLIHdhcm5pbmcgd2hlbiB0cnVuY2F0aW9uIG9jY3Vycy5cbiAgICovXG4gIHByaXZhdGUgdHJ1bmNhdGVUb0ZpdChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgbWF4TGVuZ3RoOiBudW1iZXIsXG4gICAgbm9kZTogSUNvbnN0cnVjdFxuICApOiBzdHJpbmcge1xuICAgIGlmIChuYW1lLmxlbmd0aCA8PSBtYXhMZW5ndGgpIHJldHVybiBuYW1lO1xuXG4gICAgY29uc3QgaGFzaCA9IGNyZWF0ZUhhc2goXCJzaGEyNTZcIikudXBkYXRlKG5hbWUpLmRpZ2VzdChcImhleFwiKS5zbGljZSgwLCA4KTtcblxuICAgIC8vIFByZXNlcnZlIC5maWZvIHN1ZmZpeCDigJQgQVdTIHJlcXVpcmVzIGl0IGF0IHRoZSBlbmQgb2YgRklGTyByZXNvdXJjZSBuYW1lc1xuICAgIGNvbnN0IHN1ZmZpeCA9IG5hbWUuZW5kc1dpdGgoXCIuZmlmb1wiKSA/IFwiLmZpZm9cIiA6IFwiXCI7XG4gICAgY29uc3QgbmFtZVdpdGhvdXRTdWZmaXggPSBzdWZmaXggPyBuYW1lLnNsaWNlKDAsIC1zdWZmaXgubGVuZ3RoKSA6IG5hbWU7XG5cbiAgICAvLyAxIGFjY291bnRzIGZvciB0aGUgZGFzaCBzZXBhcmF0b3IgYmVmb3JlIHRoZSBoYXNoXG4gICAgY29uc3QgYnVkZ2V0ID0gbWF4TGVuZ3RoIC0gaGFzaC5sZW5ndGggLSAxIC0gc3VmZml4Lmxlbmd0aDtcbiAgICBjb25zdCB0cnVuY2F0ZWQgPSBuYW1lV2l0aG91dFN1ZmZpeC5zbGljZSgwLCBidWRnZXQpICsgXCItXCIgKyBoYXNoICsgc3VmZml4O1xuXG4gICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkV2FybmluZyhcbiAgICAgIGBbUmVzb3VyY2VQcmVmaXhBc3BlY3RdIFwiJHtuYW1lfVwiICgke25hbWUubGVuZ3RofSBjaGFycykgZXhjZWVkcyB0aGUgbWF4aW11bSBhbGxvd2VkIGxlbmd0aCBvZiAke21heExlbmd0aH0uIGAgK1xuICAgICAgICBgTmFtZSBoYXMgYmVlbiB0cnVuY2F0ZWQgdG8gXCIke3RydW5jYXRlZH1cIi4gU2hvcnRlbiB0aGUgcmVzb3VyY2UgYmFzZSBuYW1lIG9yIHlvdXIgcHJlZml4IChcIiR7dGhpcy5wcmVmaXh9XCIpIHRvIGF2b2lkIHRydW5jYXRpb24uYFxuICAgICk7XG5cbiAgICByZXR1cm4gdHJ1bmNhdGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyByZXNvdXJjZS1zcGVjaWZpYyBzdHJ1Y3R1cmFsIG5hbWluZyByZXF1aXJlbWVudHMgdGhhdCBBV1MgZW5mb3JjZXMuXG4gICAqIExlbmd0aCB2aW9sYXRpb25zIGFyZSBoYW5kbGVkIHVwc3RyZWFtIGJ5IHRydW5jYXRlVG9GaXQuXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlUmVzb3VyY2VOYW1lKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBjZm5SZXNvdXJjZVR5cGU6IHN0cmluZyxcbiAgICBub2RlOiBJQ29uc3RydWN0XG4gICk6IGJvb2xlYW4ge1xuICAgIGxldCBoYXNFcnJvciA9IGZhbHNlO1xuXG4gICAgaWYgKGNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OlMzOjpCdWNrZXRcIikge1xuICAgICAgaWYgKG5hbWUgIT09IG5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihcbiAgICAgICAgICBgW1Jlc291cmNlUHJlZml4QXNwZWN0XSBTMyBidWNrZXQgbmFtZSBcIiR7bmFtZX1cIiBjb250YWlucyB1cHBlcmNhc2UgbGV0dGVycy4gYCArXG4gICAgICAgICAgICBgQnVja2V0IG5hbWVzIG11c3QgYmUgbG93ZXJjYXNlIG9ubHkuYFxuICAgICAgICApO1xuICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lLmluY2x1ZGVzKFwiX1wiKSkge1xuICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihcbiAgICAgICAgICBgW1Jlc291cmNlUHJlZml4QXNwZWN0XSBTMyBidWNrZXQgbmFtZSBcIiR7bmFtZX1cIiBjb250YWlucyB1bmRlcnNjb3Jlcy4gYCArXG4gICAgICAgICAgICBgQnVja2V0IG5hbWVzIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzLiBVc2UgaHlwaGVucyBpbnN0ZWFkLmBcbiAgICAgICAgKTtcbiAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBoYXNFcnJvcjtcbiAgfVxufVxuIl19
|
|
219
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcHJlZml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicmVzb3VyY2UtcHJlZml4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1RTtBQUV2RSxtQ0FBb0M7QUErQnBDOzs7R0FHRztBQUNILE1BQU0sZUFBZSxHQUF1QztJQUMxRCxVQUFVO0lBQ1YsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFFbkUsVUFBVTtJQUNWLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQzNELHNCQUFzQixFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBQ2hFLDRCQUE0QixFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFO0lBRXRFLFlBQVk7SUFDWixpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMxRCxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRTtJQUUzRCwyQkFBMkI7SUFDM0IsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7SUFDNUQsbUJBQW1CLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdkQseUJBQXlCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDN0Qsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsa0NBQWtDLEVBQUU7UUFDbEMsT0FBTyxFQUFFLGtCQUFrQjtRQUMzQixTQUFT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QUNGO0FBeE1ELG9EQXdNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFubm90YXRpb25zLCBDZm5SZXNvdXJjZSwgSUFzcGVjdCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gXCJjcnlwdG9cIjtcblxuaW50ZXJmYWNlIFJlc291cmNlTmFtZUNvbmZpZyB7XG4gIC8qKiBUaGUgQ2xvdWRGb3JtYXRpb24gcHJvcGVydHkgdGhhdCBob2xkcyB0aGUgcmVzb3VyY2UncyBwaHlzaWNhbCBuYW1lICovXG4gIGNmbk5hbWU6IHN0cmluZztcbiAgLyoqIE1heGltdW0gYWxsb3dlZCBjaGFyYWN0ZXIgbGVuZ3RoIGZvciB0aGlzIHJlc291cmNlIHR5cGUgKi9cbiAgbWF4TGVuZ3RoOiBudW1iZXI7XG59XG5cbi8qKlxuICogRXh0ZW5zaW9uIHR5cGUgdG8gYWNjZXNzIGludGVybmFsIENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgb24gQ2ZuUmVzb3VyY2UuXG4gKlxuICogQ0RLIGRvZXMgbm90IHByb3ZpZGUgYSBwdWJsaWMgQVBJIHRvIHJlYWQgcmF3IENsb3VkRm9ybWF0aW9uIHByb3BlcnRpZXMgdGhhdCBoYXZlXG4gKiBiZWVuIHNldCBvbiBhIENmblJlc291cmNlLiBUaGUgcHJvcGVydGllcyBgX2NmblByb3BlcnRpZXNgIGFuZCBgY2ZuUHJvcGVydGllc2AgYXJlXG4gKiBwcm90ZWN0ZWQgYW5kIG9ubHkgYWNjZXNzaWJsZSB3aXRoaW4gdGhlIENmblJlc291cmNlIGNsYXNzIGhpZXJhcmNoeS5cbiAqXG4gKiBXZSBpbnZlc3RpZ2F0ZWQgdXNpbmcgQ0RLJ3MgcHVibGljIEFQSXMsIGJ1dCB0aGVyZSBpcyBubyBwdWJsaWMgbWV0aG9kIHRvIHJldHJpZXZlXG4gKiB0aGUgcmF3IHByb3BlcnR5IHZhbHVlcyB0aGF0IGhhdmUgYmVlbiBzZXQgKGUuZy4sIHZpYSBjb25zdHJ1Y3RvciBwcm9wcyBvciBhZGRQcm9wZXJ0eU92ZXJyaWRlKS5cbiAqIFRoZSBvbmx5IHB1YmxpYyBBUElzIGFyZSBmb3Igd3JpdGluZyAoYWRkUHJvcGVydHlPdmVycmlkZSwgYWRkUHJvcGVydHlEZWxldGlvbk92ZXJyaWRlKSBvclxuICogZ2V0dGluZyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyAoZ2V0QXR0KSwgbm90IGZvciByZWFkaW5nIGxpdGVyYWwgcHJvcGVydHkgdmFsdWVzLlxuICpcbiAqIFRoaXMgdHlwZSBhc3NlcnRpb24gaXMgc2FmZSBiZWNhdXNlOlxuICogLSBXZSBvbmx5IHJlYWQgdGhlc2UgcHJvcGVydGllcywgbmV2ZXIgbW9kaWZ5IHRoZW1cbiAqIC0gV2UgbmVlZCB0byBjaGVjayBpZiBhIHVzZXIgZXhwbGljaXRseSBzZXQgYSBuYW1lIHByb3BlcnR5IGJlZm9yZSBhcHBseWluZyBvdXIgcHJlZml4XG4gKiAtIFRoZSBwcm9wZXJ0aWVzIGV4aXN0IGF0IHJ1bnRpbWUgYW5kIGFyZSBwYXJ0IG9mIENESydzIGludGVybmFsIGltcGxlbWVudGF0aW9uXG4gKi9cbnR5cGUgQ2ZuUmVzb3VyY2VXaXRoUHJvcHMgPSBDZm5SZXNvdXJjZSAmIHtcbiAgcmVhZG9ubHkgX2NmblByb3BlcnRpZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcmVhZG9ubHkgY2ZuUHJvcGVydGllcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufTtcblxuLyoqXG4gKiBNYXBzIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVzIHRvIHRoZWlyIG5hbWUgcHJvcGVydHkgYW5kIEFXUyBsZW5ndGggbGltaXRzLlxuICogU291cmNlczogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXRlbXBsYXRlLXJlc291cmNlLXR5cGUtcmVmLmh0bWxcbiAqL1xuY29uc3QgUkVTT1VSQ0VfQ09ORklHOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU5hbWVDb25maWc+ID0ge1xuICAvLyBDb21wdXRlXG4gIFwiQVdTOjpMYW1iZGE6OkZ1bmN0aW9uXCI6IHsgY2ZuTmFtZTogXCJGdW5jdGlvbk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuXG4gIC8vIFN0b3JhZ2VcbiAgXCJBV1M6OlMzOjpCdWNrZXRcIjogeyBjZm5OYW1lOiBcIkJ1Y2tldE5hbWVcIiwgbWF4TGVuZ3RoOiA2MyB9LFxuICBcIkFXUzo6RHluYW1vREI6OlRhYmxlXCI6IHsgY2ZuTmFtZTogXCJUYWJsZU5hbWVcIiwgbWF4TGVuZ3RoOiAyNTUgfSxcbiAgXCJBV1M6OkR5bmFtb0RCOjpHbG9iYWxUYWJsZVwiOiB7IGNmbk5hbWU6IFwiVGFibGVOYW1lXCIsIG1heExlbmd0aDogMjU1IH0sXG5cbiAgLy8gTWVzc2FnaW5nXG4gIFwiQVdTOjpTUVM6OlF1ZXVlXCI6IHsgY2ZuTmFtZTogXCJRdWV1ZU5hbWVcIiwgbWF4TGVuZ3RoOiA4MCB9LFxuICBcIkFXUzo6U05TOjpUb3BpY1wiOiB7IGNmbk5hbWU6IFwiVG9waWNOYW1lXCIsIG1heExlbmd0aDogMjU2IH0sXG5cbiAgLy8gRXZlbnRpbmcgJiBPcmNoZXN0cmF0aW9uXG4gIFwiQVdTOjpFdmVudHM6OkV2ZW50QnVzXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogMjU2IH0sXG4gIFwiQVdTOjpFdmVudHM6OlJ1bGVcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuICBcIkFXUzo6RXZlbnRzOjpDb25uZWN0aW9uXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogNjQgfSxcbiAgXCJBV1M6OlBpcGVzOjpQaXBlXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogNjQgfSxcbiAgXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZVwiOiB7XG4gICAgY2ZuTmFtZTogXCJTdGF0ZU1hY2hpbmVOYW1lXCIsXG4gICAgbWF4TGVuZ3RoOiA4MCxcbiAgfSxcbiAgXCJBV1M6OlN0ZXBGdW5jdGlvbnM6OkFjdGl2aXR5XCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogODAgfSxcbiAgXCJBV1M6OlNjaGVkdWxlcjo6U2NoZWR1bGVcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuICBcIkFXUzo6U2NoZWR1bGVyOjpTY2hlZHVsZUdyb3VwXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogNjQgfSxcblxuICAvLyBBUElcbiAgXCJBV1M6OkFwaUdhdGV3YXk6OlJlc3RBcGlcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiAxMjggfSxcbiAgXCJBV1M6OkFwaUdhdGV3YXk6OlVzYWdlUGxhblwiOiB7IGNmbk5hbWU6IFwiVXNhZ2VQbGFuTmFtZVwiLCBtYXhMZW5ndGg6IDEyOCB9LFxuICBcIkFXUzo6QXBpR2F0ZXdheTo6QXBpS2V5XCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogMTI4IH0sXG4gIFwiQVdTOjpBcGlHYXRld2F5VjI6OkFwaVwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDEyOCB9LFxuICBcIkFXUzo6QXBpR2F0ZXdheVYyOjpBdXRob3JpemVyXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogMTI4IH0sXG5cbiAgLy8gU2VjcmV0cyAmIENvbmZpZ1xuICBcIkFXUzo6U2VjcmV0c01hbmFnZXI6OlNlY3JldFwiOiB7IGNmbk5hbWU6IFwiTmFtZVwiLCBtYXhMZW5ndGg6IDUxMiB9LFxuICBcIkFXUzo6U1NNOjpQYXJhbWV0ZXJcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiAyMDQ4IH0sXG4gIFwiQVdTOjpBcHBDb25maWc6OkFwcGxpY2F0aW9uXCI6IHsgY2ZuTmFtZTogXCJOYW1lXCIsIG1heExlbmd0aDogNjQgfSxcbiAgXCJBV1M6OkFwcENvbmZpZzo6RW52aXJvbm1lbnRcIjogeyBjZm5OYW1lOiBcIk5hbWVcIiwgbWF4TGVuZ3RoOiA2NCB9LFxuXG4gIC8vIE5vdGlmaWNhdGlvbnNcbiAgXCJBV1M6Ok5vdGlmaWNhdGlvbnM6Ok5vdGlmaWNhdGlvbkNvbmZpZ3VyYXRpb25cIjoge1xuICAgIGNmbk5hbWU6IFwiTmFtZVwiLFxuICAgIG1heExlbmd0aDogNjQsXG4gIH0sXG5cbiAgLy8gT2JzZXJ2YWJpbGl0eVxuICBcIkFXUzo6TG9nczo6TG9nR3JvdXBcIjogeyBjZm5OYW1lOiBcIkxvZ0dyb3VwTmFtZVwiLCBtYXhMZW5ndGg6IDUxMiB9LFxuICBcIkFXUzo6Q2xvdWRXYXRjaDo6QWxhcm1cIjogeyBjZm5OYW1lOiBcIkFsYXJtTmFtZVwiLCBtYXhMZW5ndGg6IDI1NSB9LFxuXG4gIC8vIElBTVxuICBcIkFXUzo6SUFNOjpSb2xlXCI6IHsgY2ZuTmFtZTogXCJSb2xlTmFtZVwiLCBtYXhMZW5ndGg6IDY0IH0sXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUHJlZml4QXNwZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHByZWZpeCB0byBhcHBseSB0byBhbGwgcmVzb3VyY2UgbmFtZXMuXG4gICAqIGUuZy4gJ215YXBwLXByb2QnIOKGkiAnbXlhcHAtcHJvZC1vcmRlcnMnXG4gICAqL1xuICBwcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogUmVzb3VyY2UgdHlwZXMgdG8gc2tpcCBlbnRpcmVseS5cbiAgICogZS5nLiBbJ0FXUzo6SUFNOjpSb2xlJ10gdG8gbGVhdmUgSUFNIHJvbGUgbmFtZXMgdW50b3VjaGVkLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgZXhjbHVkZT86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENESyBBc3BlY3QgdGhhdCBhdXRvbWF0aWNhbGx5IHByZWZpeGVzIHBoeXNpY2FsIHJlc291cmNlIG5hbWVzIGFjcm9zcyBBV1MgcmVzb3VyY2VzLlxuICpcbiAqIEByZW1hcmtzXG4gKiAqKkNyaXRpY2FsIEltcGxlbWVudGF0aW9uIE5vdGVzOioqXG4gKlxuICogMS4gKipTdGFnZSBTeW50aGVzaXMgQm91bmRhcmllcyoqOlxuICogICAgLSBDREsgYFN0YWdlYCBjb25zdHJ1Y3RzIGNyZWF0ZSBzeW50aGVzaXMgYm91bmRhcmllcyB0aGF0IHByZXZlbnQgQXBwLWxldmVsIGFzcGVjdHNcbiAqICAgICAgZnJvbSB0cmF2ZXJzaW5nIGludG8gdGhlbVxuICogICAgLSBUaGlzIGFzcGVjdCBNVVNUIGJlIGFwcGxpZWQgdG8gZWFjaCBTdGFnZSBpbmRpdmlkdWFsbHksIG5vdCB0byB0aGUgQXBwXG4gKiAgICAtIEV4YW1wbGU6IGBBc3BlY3RzLm9mKHN0YWdlKS5hZGQobmV3IFJlc291cmNlUHJlZml4QXNwZWN0KHsuLi59KSlgXG4gKlxuICogMi4gKipQcm9wZXJ0eSBOYW1lIENhc2luZyoqOlxuICogICAgLSBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0aWVzIHVzZSBQYXNjYWxDYXNlIChlLmcuLCBgRnVuY3Rpb25OYW1lYCwgYEJ1Y2tldE5hbWVgKVxuICogICAgLSBVc2luZyBjYW1lbENhc2UgKGUuZy4sIGBmdW5jdGlvbk5hbWVgKSB3aWxsIGNhdXNlIGVycm9ycyB3aXRoIHZlcnNpb25pbmcgYXNwZWN0c1xuICogICAgLSBXaGVuIHVzaW5nIGBhZGRQcm9wZXJ0eU92ZXJyaWRlKClgLCBhbHdheXMgdXNlIHRoZSBleGFjdCBDbG91ZEZvcm1hdGlvbiBwcm9wZXJ0eSBuYW1lXG4gKlxuICogMy4gKipBc3BlY3QgUHJpb3JpdHkgd2l0aCBWZXJzaW9uaW5nKio6XG4gKiAgICAtIFdoZW4gY29tYmluaW5nIHdpdGggTGFtYmRhQW5kU3RlcEZ1bmN0aW9uVmVyc2lvbmluZ0FzcGVjdCwgYXBwbHkgdGhpcyBhc3BlY3QgQkVGT1JFIHZlcnNpb25pbmdcbiAqICAgIC0gVXNlIENESydzIHByaW9yaXR5IHN5c3RlbTogYEFzcGVjdHMub2Yoc3RhZ2UpLmFkZChwcmVmaXhBc3BlY3QsIHsgcHJpb3JpdHk6IDEwMCB9KWBcbiAqICAgIC0gVGhlbjogYEFzcGVjdHMub2Yoc3RhZ2UpLmFkZCh2ZXJzaW9uaW5nQXNwZWN0LCB7IHByaW9yaXR5OiAyMDAgfSlgXG4gKiAgICAtIExvd2VyIHByaW9yaXR5IG51bWJlcnMgcnVuIGZpcnN0XG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENvcnJlY3QgdXNhZ2Ugd2l0aCBzdGFnaW5nXG4gKiBjb25zdCBzdGFnZSA9IG5ldyBBcHBsaWNhdGlvblN0YWdlKGFwcCwgJ3Byb2QnKTtcbiAqIEFzcGVjdHMub2Yoc3RhZ2UpLmFkZChuZXcgUmVzb3VyY2VQcmVmaXhBc3BlY3QoeyBwcmVmaXg6ICdteWFwcCcgfSksIHsgcHJpb3JpdHk6IDEwMCB9KTtcbiAqIEFzcGVjdHMub2Yoc3RhZ2UpLmFkZChuZXcgTGFtYmRhQW5kU3RlcEZ1bmN0aW9uVmVyc2lvbmluZ0FzcGVjdCgpLCB7IHByaW9yaXR5OiAyMDAgfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlUHJlZml4QXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZTogU2V0PHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IFJlc291cmNlUHJlZml4QXNwZWN0UHJvcHMpIHtcbiAgICBpZiAoIXByb3BzLnByZWZpeCB8fCAhL15bYS16MC05LV0rJC8udGVzdChwcm9wcy5wcmVmaXgpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUmVzb3VyY2VQcmVmaXhBc3BlY3Q6IHByZWZpeCBtdXN0IGNvbnRhaW4gb25seSBsb3dlcmNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGh5cGhlbnMsIGdvdCBcIiR7cHJvcHMucHJlZml4fVwiYFxuICAgICAgKTtcblxuICAgIHRoaXMucHJlZml4ID0gcHJvcHMucHJlZml4O1xuICAgIHRoaXMuZXhjbHVkZSA9IG5ldyBTZXQocHJvcHMuZXhjbHVkZSA/PyBbXSk7XG4gIH1cblxuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgaWYgKCEobm9kZSBpbnN0YW5jZW9mIENmblJlc291cmNlKSkgcmV0dXJuO1xuXG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gbm9kZS5jZm5SZXNvdXJjZVR5cGU7XG4gICAgY29uc3QgY29uZmlnID0gUkVTT1VSQ0VfQ09ORklHW3Jlc291cmNlVHlwZV07XG5cbiAgICBpZiAoIWNvbmZpZyB8fCB0aGlzLmV4Y2x1ZGUuaGFzKHJlc291cmNlVHlwZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGNmbk5hbWUsIG1heExlbmd0aCB9ID0gY29uZmlnO1xuICAgIGNvbnN0IGNmblByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID1cbiAgICAgIChub2RlIGFzIENmblJlc291cmNlV2l0aFByb3BzKS5fY2ZuUHJvcGVydGllcyA/P1xuICAgICAgKG5vZGUgYXMgQ2ZuUmVzb3VyY2VXaXRoUHJvcHMpLmNmblByb3BlcnRpZXMgPz9cbiAgICAgIHt9O1xuXG4gICAgY29uc3QgYmFzZU5hbWUgPSB0aGlzLnJlc29sdmVCYXNlTmFtZShub2RlLCBjZm5OYW1lLCBjZm5Qcm9wZXJ0aWVzKTtcblxuICAgIGlmICh0aGlzLnNob3VsZFNraXBSZXNvdXJjZShyZXNvdXJjZVR5cGUsIGJhc2VOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQWxyZWFkeVByZWZpeGVkKGJhc2VOYW1lKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkTmFtZSA9IHRoaXMuYnVpbGRQcmVmaXhlZE5hbWUoXG4gICAgICBiYXNlTmFtZSxcbiAgICAgIHJlc291cmNlVHlwZSxcbiAgICAgIGNmblByb3BlcnRpZXNcbiAgICApO1xuXG4gICAgLy8gVHJ1bmNhdGlvbiBhcHBsaWVzIHRvIGFsbCBvdmVyZmxvd3Mg4oCUIGluY2x1ZGluZyB1c2VyLXNldCBuYW1lcyDigJQgYmVjYXVzZSBMM1xuICAgIC8vIGNvbnN0cnVjdHMgY2FuIGdlbmVyYXRlIG5hbWVzIHRoZSB1c2VyIGhhcyBubyBkaXJlY3QgY29udHJvbCBvdmVyLlxuICAgIGNvbnN0IGZpbmFsTmFtZSA9IHRoaXMudHJ1bmNhdGVUb0ZpdChwcmVmaXhlZE5hbWUsIG1heExlbmd0aCwgbm9kZSk7XG5cbiAgICBjb25zdCBoYXNFcnJvciA9IHRoaXMudmFsaWRhdGVSZXNvdXJjZU5hbWUoZmluYWxOYW1lLCByZXNvdXJjZVR5cGUsIG5vZGUpO1xuXG4gICAgaWYgKGhhc0Vycm9yKSByZXR1cm47XG5cbiAgICBub2RlLmFkZFByb3BlcnR5T3ZlcnJpZGUoY2ZuTmFtZSwgZmluYWxOYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSByZXNvdXJjZSBzaG91bGQgYmUgc2tpcHBlZCBmcm9tIHByZWZpeGluZyBiYXNlZCBvblxuICAgKiByZXNvdXJjZS10eXBlLXNwZWNpZmljIHJ1bGVzIChlLmcuLCBBV1MtcmVzZXJ2ZWQgbmFtaW5nIGNvbnZlbnRpb25zKS5cbiAgICovXG4gIHByaXZhdGUgc2hvdWxkU2tpcFJlc291cmNlKGNmblJlc291cmNlVHlwZTogc3RyaW5nLCBiYXNlTmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OkxvZ3M6OkxvZ0dyb3VwXCIgJiYgYmFzZU5hbWUuc3RhcnRzV2l0aChcIi9hd3MvXCIpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNBbHJlYWR5UHJlZml4ZWQobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIG5hbWUuc3RhcnRzV2l0aChgJHt0aGlzLnByZWZpeH0tYCkgfHwgbmFtZS5zdGFydHNXaXRoKGAvJHt0aGlzLnByZWZpeH0vYClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIHRoZSBiYXNlIG5hbWUgZm9yIGEgcmVzb3VyY2UgYnkgY2hlY2tpbmcgZXhwbGljaXRseSBzZXQgQ0ZOIHByb3BlcnRpZXNcbiAgICogZmlyc3QsIHRoZW4gZmFsbGluZyBiYWNrIHRvIGRlcml2aW5nIGEgbmFtZSBmcm9tIHRoZSBsb2dpY2FsIElELlxuICAgKiBDREsgc3RvcmVzIEwxIHByb3BlcnRpZXMgaW4gY2FtZWxDYXNlIGludGVybmFsbHksIHNvIGJvdGggY2FzaW5ncyBhcmUgY2hlY2tlZC5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUJhc2VOYW1lKFxuICAgIG5vZGU6IENmblJlc291cmNlLFxuICAgIGNmbk5hbWU6IHN0cmluZyxcbiAgICBjZm5Qcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApIHtcbiAgICBjb25zdCBjYW1lbENmbk5hbWUgPSBjZm5OYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgY2ZuTmFtZS5zbGljZSgxKTtcbiAgICBjb25zdCByYXdOYW1lID0gY2ZuUHJvcGVydGllc1tjZm5OYW1lXSA/PyBjZm5Qcm9wZXJ0aWVzW2NhbWVsQ2ZuTmFtZV07XG4gICAgaWYgKHR5cGVvZiByYXdOYW1lID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gcmF3TmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dpY2FsSWQgPSBTdGFjay5vZihub2RlKS5nZXRMb2dpY2FsSWQobm9kZSk7XG4gICAgcmV0dXJuIGxvZ2ljYWxJZFxuICAgICAgLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCItXCIpIC8vIG5vbi1hbHBoYW51bWVyaWMg4oaSIGRhc2hcbiAgICAgIC5yZXBsYWNlKC9eLSt8LSskL2csIFwiXCIpOyAvLyB0cmltIGxlYWRpbmcvdHJhaWxpbmcgZGFzaGVzXG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIHRoZSBwcmVmaXhlZCBuYW1lLCBoYW5kbGluZyBzcGVjaWFsIGNhc2VzIGZvciBzcGVjaWZpYyByZXNvdXJjZSB0eXBlcy5cbiAgICpcbiAgICogQHBhcmFtIGJhc2VOYW1lIC0gVGhlIGJhc2UgcmVzb3VyY2UgbmFtZSAod2l0aG91dCBwcmVmaXgpXG4gICAqIEBwYXJhbSBjZm5SZXNvdXJjZVR5cGUgLSBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZVxuICAgKiBAcGFyYW0gY2ZuUHJvcGVydGllcyAtIFRoZSBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAqIEByZXR1cm5zIFRoZSBmaW5hbCBwcmVmaXhlZCBuYW1lIHdpdGggYW55IHNwZWNpYWwgY2FzZSBoYW5kbGluZyBhcHBsaWVkXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkUHJlZml4ZWROYW1lKFxuICAgIGJhc2VOYW1lOiBzdHJpbmcsXG4gICAgY2ZuUmVzb3VyY2VUeXBlOiBzdHJpbmcsXG4gICAgY2ZuUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBGSUZPIHF1ZXVlcyBtdXN0IGVuZCB3aXRoIC5maWZvIHN1ZmZpeFxuICAgIGlmIChcbiAgICAgIGNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OlNRUzo6UXVldWVcIiAmJlxuICAgICAgY2ZuUHJvcGVydGllcy5maWZvUXVldWUgPT09IHRydWUgJiZcbiAgICAgICFiYXNlTmFtZS5lbmRzV2l0aChcIi5maWZvXCIpXG4gICAgKSB7XG4gICAgICByZXR1cm4gYCR7dGhpcy5wcmVmaXh9LSR7YmFzZU5hbWV9LmZpZm9gO1xuICAgIH1cblxuICAgIC8vIFNwZWNpYWwgY2FzZTogRklGTyB0b3BpY3MgbXVzdCBlbmQgd2l0aCAuZmlmbyBzdWZmaXhcbiAgICBpZiAoXG4gICAgICBjZm5SZXNvdXJjZVR5cGUgPT09IFwiQVdTOjpTTlM6OlRvcGljXCIgJiZcbiAgICAgIGNmblByb3BlcnRpZXMuZmlmb1RvcGljID09PSB0cnVlICYmXG4gICAgICAhYmFzZU5hbWUuZW5kc1dpdGgoXCIuZmlmb1wiKVxuICAgICkge1xuICAgICAgcmV0dXJuIGAke3RoaXMucHJlZml4fS0ke2Jhc2VOYW1lfS5maWZvYDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IFNTTSBwYXJhbWV0ZXIgbmFtZXMgdXNlIHBhdGgtc3R5bGUgcHJlZml4XG4gICAgaWYgKGNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OlNTTTo6UGFyYW1ldGVyXCIpIHtcbiAgICAgIHJldHVybiBgLyR7dGhpcy5wcmVmaXh9LyR7YmFzZU5hbWV9YDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IFMzIGJ1Y2tldCBuYW1lIGJlIGxvd2VyY2FzZSBvbmx5XG4gICAgaWYgKGNmblJlc291cmNlVHlwZSA9PT0gXCJBV1M6OlMzOjpCdWNrZXRcIikge1xuICAgICAgcmV0dXJuIGAke3RoaXMucHJlZml4fS0ke2Jhc2VOYW1lfWAudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICAvLyBEZWZhdWx0OiBzaW1wbGUgcHJlZml4XG4gICAgcmV0dXJuIGAke3RoaXMucHJlZml4fS0ke2Jhc2VOYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogVHJ1bmNhdGVzIGEgcHJlZml4ZWQgbmFtZSB0byBmaXQgd2l0aGluIG1heExlbmd0aCBieSBoYXNoaW5nIHRoZSBvcmlnaW5hbFxuICAgKiBmb3IgdW5pcXVlbmVzcy4gRW1pdHMgYSBDREsgd2FybmluZyB3aGVuIHRydW5jYXRpb24gb2NjdXJzLlxuICAgKi9cbiAgcHJpdmF0ZSB0cnVuY2F0ZVRvRml0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBtYXhMZW5ndGg6IG51bWJlcixcbiAgICBub2RlOiBJQ29uc3RydWN0XG4gICk6IHN0cmluZyB7XG4gICAgaWYgKG5hbWUubGVuZ3RoIDw9IG1heExlbmd0aCkgcmV0dXJuIG5hbWU7XG5cbiAgICBjb25zdCBoYXNoID0gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUobmFtZSkuZGlnZXN0KFwiaGV4XCIpLnNsaWNlKDAsIDgpO1xuXG4gICAgLy8gUHJlc2VydmUgLmZpZm8gc3VmZml4IOKAlCBBV1MgcmVxdWlyZXMgaXQgYXQgdGhlIGVuZCBvZiBGSUZPIHJlc291cmNlIG5hbWVzXG4gICAgY29uc3Qgc3VmZml4ID0gbmFtZS5lbmRzV2l0aChcIi5maWZvXCIpID8gXCIuZmlmb1wiIDogXCJcIjtcbiAgICBjb25zdCBuYW1lV2l0aG91dFN1ZmZpeCA9IHN1ZmZpeCA/IG5hbWUuc2xpY2UoMCwgLXN1ZmZpeC5sZW5ndGgpIDogbmFtZTtcblxuICAgIC8vIDEgYWNjb3VudHMgZm9yIHRoZSBkYXNoIHNlcGFyYXRvciBiZWZvcmUgdGhlIGhhc2hcbiAgICBjb25zdCBidWRnZXQgPSBtYXhMZW5ndGggLSBoYXNoLmxlbmd0aCAtIDEgLSBzdWZmaXgubGVuZ3RoO1xuICAgIGNvbnN0IHRydW5jYXRlZCA9IG5hbWVXaXRob3V0U3VmZml4LnNsaWNlKDAsIGJ1ZGdldCkgKyBcIi1cIiArIGhhc2ggKyBzdWZmaXg7XG5cbiAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRXYXJuaW5nKFxuICAgICAgYFtSZXNvdXJjZVByZWZpeEFzcGVjdF0gXCIke25hbWV9XCIgKCR7bmFtZS5sZW5ndGh9IGNoYXJzKSBleGNlZWRzIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mICR7bWF4TGVuZ3RofS4gYCArXG4gICAgICAgIGBOYW1lIGhhcyBiZWVuIHRydW5jYXRlZCB0byBcIiR7dHJ1bmNhdGVkfVwiLiBTaG9ydGVuIHRoZSByZXNvdXJjZSBiYXNlIG5hbWUgb3IgeW91ciBwcmVmaXggKFwiJHt0aGlzLnByZWZpeH1cIikgdG8gYXZvaWQgdHJ1bmNhdGlvbi5gXG4gICAgKTtcblxuICAgIHJldHVybiB0cnVuY2F0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHJlc291cmNlLXNwZWNpZmljIHN0cnVjdHVyYWwgbmFtaW5nIHJlcXVpcmVtZW50cyB0aGF0IEFXUyBlbmZvcmNlcy5cbiAgICogTGVuZ3RoIHZpb2xhdGlvbnMgYXJlIGhhbmRsZWQgdXBzdHJlYW0gYnkgdHJ1bmNhdGVUb0ZpdC5cbiAgICovXG4gIHByaXZhdGUgdmFsaWRhdGVSZXNvdXJjZU5hbWUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGNmblJlc291cmNlVHlwZTogc3RyaW5nLFxuICAgIG5vZGU6IElDb25zdHJ1Y3RcbiAgKTogYm9vbGVhbiB7XG4gICAgbGV0IGhhc0Vycm9yID0gZmFsc2U7XG5cbiAgICBpZiAoY2ZuUmVzb3VyY2VUeXBlID09PSBcIkFXUzo6UzM6OkJ1Y2tldFwiKSB7XG4gICAgICBpZiAobmFtZSAhPT0gbmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKG5vZGUpLmFkZEVycm9yKFxuICAgICAgICAgIGBbUmVzb3VyY2VQcmVmaXhBc3BlY3RdIFMzIGJ1Y2tldCBuYW1lIFwiJHtuYW1lfVwiIGNvbnRhaW5zIHVwcGVyY2FzZSBsZXR0ZXJzLiBgICtcbiAgICAgICAgICAgIGBCdWNrZXQgbmFtZXMgbXVzdCBiZSBsb3dlcmNhc2Ugb25seS5gXG4gICAgICAgICk7XG4gICAgICAgIGhhc0Vycm9yID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUuaW5jbHVkZXMoXCJfXCIpKSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKG5vZGUpLmFkZEVycm9yKFxuICAgICAgICAgIGBbUmVzb3VyY2VQcmVmaXhBc3BlY3RdIFMzIGJ1Y2tldCBuYW1lIFwiJHtuYW1lfVwiIGNvbnRhaW5zIHVuZGVyc2NvcmVzLiBgICtcbiAgICAgICAgICAgIGBCdWNrZXQgbmFtZXMgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMuIFVzZSBoeXBoZW5zIGluc3RlYWQuYFxuICAgICAgICApO1xuICAgICAgICBoYXNFcnJvciA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhc0Vycm9yO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aligent/cdk-aspects",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Collection of CDK Asppects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@types/jest": "^29.5.10",
|
|
23
|
-
"@types/node": "^
|
|
24
|
-
"aws-cdk": "^2.
|
|
23
|
+
"@types/node": "^24.12.4",
|
|
24
|
+
"aws-cdk": "^2.1124.1",
|
|
25
25
|
"jest": "^29.7.0",
|
|
26
26
|
"ts-jest": "^29.4.9",
|
|
27
27
|
"ts-node": "^10.9.1",
|
|
28
28
|
"typescript": "^5.3.2"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
|
-
"aws-cdk-lib": "^2.
|
|
31
|
+
"aws-cdk-lib": "^2.257.0",
|
|
32
32
|
"constructs": "^10.5.0",
|
|
33
33
|
"esbuild": "^0.28.0",
|
|
34
34
|
"source-map-support": "^0.5.21"
|