@aws-cdk/toolkit-lib 1.0.0 → 1.1.1
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/README.md +1 -1
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/bootstrap/index.d.ts +1 -1
- package/lib/actions/bootstrap/index.js +1 -1
- package/lib/actions/deploy/index.d.ts +4 -4
- package/lib/actions/deploy/index.js +1 -1
- package/lib/actions/deploy/private/deploy-options.js +1 -1
- package/lib/actions/destroy/index.d.ts +1 -1
- package/lib/actions/destroy/index.js +1 -1
- package/lib/actions/diff/index.d.ts +2 -2
- package/lib/actions/diff/index.js +1 -1
- package/lib/actions/diff/private/helpers.d.ts +2 -2
- package/lib/actions/diff/private/helpers.js +3 -3
- package/lib/actions/drift/index.d.ts +1 -1
- package/lib/actions/drift/index.js +1 -1
- package/lib/actions/refactor/index.d.ts +26 -22
- package/lib/actions/refactor/index.js +54 -1
- package/lib/actions/rollback/index.d.ts +1 -1
- package/lib/actions/rollback/index.js +1 -1
- package/lib/actions/watch/index.d.ts +26 -3
- package/lib/actions/watch/index.js +1 -1
- package/lib/actions/watch/private/helpers.d.ts +6 -4
- package/lib/actions/watch/private/helpers.js +37 -6
- package/lib/api/aws-auth/account-cache.d.ts +1 -1
- package/lib/api/aws-auth/account-cache.js +2 -2
- package/lib/api/aws-auth/awscli-compatible.d.ts +1 -1
- package/lib/api/aws-auth/awscli-compatible.js +2 -2
- package/lib/api/aws-auth/types.d.ts +1 -1
- package/lib/api/aws-auth/types.js +1 -1
- package/lib/api/bootstrap/bootstrap-props.d.ts +8 -8
- package/lib/api/bootstrap/bootstrap-props.js +1 -1
- package/lib/api/cloud-assembly/environment.d.ts +1 -1
- package/lib/api/cloud-assembly/environment.js +2 -2
- package/lib/api/cloud-assembly/private/prepare-source.js +2 -2
- package/lib/api/cloud-assembly/source-builder.d.ts +2 -2
- package/lib/api/cloud-assembly/source-builder.js +1 -1
- package/lib/api/cloudformation/template-body-parameter.d.ts +2 -2
- package/lib/api/cloudformation/template-body-parameter.js +3 -3
- package/lib/api/deployments/cfn-api.d.ts +8 -8
- package/lib/api/deployments/cfn-api.js +15 -15
- package/lib/api/deployments/deploy-stack.d.ts +3 -3
- package/lib/api/deployments/deploy-stack.js +1 -1
- package/lib/api/deployments/deployments.d.ts +3 -3
- package/lib/api/deployments/deployments.js +1 -1
- package/lib/api/drift/drift-formatter.d.ts +4 -4
- package/lib/api/drift/drift-formatter.js +5 -5
- package/lib/api/hotswap/hotswap-deployments.js +2 -2
- package/lib/api/io/private/level-priority.d.ts +2 -2
- package/lib/api/io/private/level-priority.js +3 -3
- package/lib/api/io/toolkit-action.d.ts +1 -1
- package/lib/api/io/toolkit-action.js +1 -1
- package/lib/api/logs-monitor/logs-monitor.d.ts +2 -1
- package/lib/api/logs-monitor/logs-monitor.js +5 -3
- package/lib/api/notices/filter.js +1 -1
- package/lib/api/notices/notices.d.ts +2 -2
- package/lib/api/notices/notices.js +2 -2
- package/lib/api/notices/web-data-source.d.ts +2 -2
- package/lib/api/notices/web-data-source.js +3 -3
- package/lib/api/refactoring/cloudformation.d.ts +1 -0
- package/lib/api/refactoring/cloudformation.js +1 -1
- package/lib/api/refactoring/context.d.ts +22 -0
- package/lib/api/refactoring/context.js +129 -0
- package/lib/api/refactoring/exclude.d.ts +11 -6
- package/lib/api/refactoring/exclude.js +14 -10
- package/lib/api/refactoring/index.d.ts +7 -28
- package/lib/api/refactoring/index.js +23 -146
- package/lib/api/refactoring/{execution.d.ts → stack-definitions.d.ts} +0 -4
- package/lib/api/refactoring/stack-definitions.js +451 -0
- package/lib/api/resource-import/importer.d.ts +5 -5
- package/lib/api/resource-import/importer.js +6 -6
- package/lib/api/resource-metadata/resource-metadata.d.ts +2 -2
- package/lib/api/resource-metadata/resource-metadata.js +3 -3
- package/lib/api/stack-events/stack-activity-monitor.d.ts +2 -2
- package/lib/api/stack-events/stack-activity-monitor.js +1 -1
- package/lib/api/tags/index.d.ts +1 -0
- package/lib/api/tags/index.js +18 -0
- package/lib/api/tags/private/index.d.ts +1 -0
- package/lib/api/tags/private/index.js +18 -0
- package/lib/api/{tags.d.ts → tags/private/util.d.ts} +1 -4
- package/lib/api/{tags.js → tags/private/util.js} +1 -1
- package/lib/api/tags/tags.d.ts +4 -0
- package/lib/api/tags/tags.js +3 -0
- package/lib/context-providers/cc-api-provider.js +23 -14
- package/lib/context-providers/ssm-parameters.d.ts +4 -4
- package/lib/context-providers/ssm-parameters.js +5 -5
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/types.d.ts +1 -1
- package/lib/payloads/types.js +1 -1
- package/lib/toolkit/non-interactive-io-host.d.ts +2 -2
- package/lib/toolkit/non-interactive-io-host.js +1 -1
- package/lib/toolkit/private/index.d.ts +2 -2
- package/lib/toolkit/private/index.js +3 -3
- package/lib/toolkit/toolkit-error.d.ts +16 -2
- package/lib/toolkit/toolkit-error.js +33 -9
- package/lib/toolkit/toolkit.d.ts +15 -22
- package/lib/toolkit/toolkit.js +95 -69
- package/lib/util/bool.d.ts +1 -1
- package/lib/util/bool.js +2 -2
- package/lib/util/bytes.d.ts +2 -2
- package/lib/util/bytes.js +3 -3
- package/lib/util/cloudformation.d.ts +2 -2
- package/lib/util/cloudformation.js +3 -3
- package/lib/util/format-error.d.ts +1 -1
- package/lib/util/format-error.js +6 -2
- package/lib/util/net.d.ts +1 -1
- package/lib/util/net.js +2 -2
- package/lib/util/objects.d.ts +3 -3
- package/lib/util/objects.js +4 -4
- package/lib/util/yaml-cfn.d.ts +2 -2
- package/lib/util/yaml-cfn.js +3 -3
- package/package.json +17 -17
- package/lib/api/refactoring/execution.js +0 -68
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AlwaysExclude = exports.NeverExclude = exports.UnionExcludeList = exports.InMemoryExcludeList = exports.ManifestExcludeList = void 0;
|
|
4
|
-
exports.fromManifestAndExclusionList = fromManifestAndExclusionList;
|
|
5
4
|
const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
|
|
6
|
-
class
|
|
5
|
+
class AbstractExcludeList {
|
|
6
|
+
union(other) {
|
|
7
|
+
return new UnionExcludeList([this, other]);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
class ManifestExcludeList extends AbstractExcludeList {
|
|
7
11
|
excludedLocations;
|
|
8
12
|
constructor(manifest) {
|
|
13
|
+
super();
|
|
9
14
|
this.excludedLocations = this.getExcludedLocations(manifest);
|
|
10
15
|
}
|
|
11
16
|
getExcludedLocations(asmManifest) {
|
|
@@ -34,10 +39,11 @@ class ManifestExcludeList {
|
|
|
34
39
|
}
|
|
35
40
|
}
|
|
36
41
|
exports.ManifestExcludeList = ManifestExcludeList;
|
|
37
|
-
class InMemoryExcludeList {
|
|
42
|
+
class InMemoryExcludeList extends AbstractExcludeList {
|
|
38
43
|
excludedLocations;
|
|
39
44
|
excludedPaths;
|
|
40
45
|
constructor(items) {
|
|
46
|
+
super();
|
|
41
47
|
this.excludedLocations = [];
|
|
42
48
|
this.excludedPaths = [];
|
|
43
49
|
if (items.length === 0) {
|
|
@@ -66,9 +72,10 @@ class InMemoryExcludeList {
|
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
74
|
exports.InMemoryExcludeList = InMemoryExcludeList;
|
|
69
|
-
class UnionExcludeList {
|
|
75
|
+
class UnionExcludeList extends AbstractExcludeList {
|
|
70
76
|
excludeLists;
|
|
71
77
|
constructor(excludeLists) {
|
|
78
|
+
super();
|
|
72
79
|
this.excludeLists = excludeLists;
|
|
73
80
|
}
|
|
74
81
|
isExcluded(location) {
|
|
@@ -76,19 +83,16 @@ class UnionExcludeList {
|
|
|
76
83
|
}
|
|
77
84
|
}
|
|
78
85
|
exports.UnionExcludeList = UnionExcludeList;
|
|
79
|
-
class NeverExclude {
|
|
86
|
+
class NeverExclude extends AbstractExcludeList {
|
|
80
87
|
isExcluded(_location) {
|
|
81
88
|
return false;
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
91
|
exports.NeverExclude = NeverExclude;
|
|
85
|
-
class AlwaysExclude {
|
|
92
|
+
class AlwaysExclude extends AbstractExcludeList {
|
|
86
93
|
isExcluded(_location) {
|
|
87
94
|
return true;
|
|
88
95
|
}
|
|
89
96
|
}
|
|
90
97
|
exports.AlwaysExclude = AlwaysExclude;
|
|
91
|
-
|
|
92
|
-
return new UnionExcludeList([new ManifestExcludeList(manifest), new InMemoryExcludeList(exclude ?? [])]);
|
|
93
|
-
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4Y2x1ZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNEdBLG9FQUVDO0FBN0dELDBFQUF5RjtBQVF6RixNQUFhLG1CQUFtQjtJQUNiLGlCQUFpQixDQUF3QjtJQUUxRCxZQUFZLFFBQTBCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQTZCO1FBQ3hELCtFQUErRTtRQUMvRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUN2RSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLG9DQUFZLENBQUMsd0JBQXdCLENBQzNFLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUN0RCx5RUFBeUU7aUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssaURBQXlCLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQ3pHO2dCQUNELCtDQUErQztpQkFDOUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxpREFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDcEcsTUFBTSxRQUFRLEdBQXdCO29CQUNwQyxTQUFTLEVBQUUsU0FBUztvQkFDcEIsaUJBQWlCLEVBQUUsY0FBZSxDQUFDLElBQWU7aUJBQ25ELENBQUM7Z0JBQ0YsT0FBTyxRQUFRLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7WUFDTCxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxVQUFVLENBQUMsUUFBMEI7UUFDbkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUNoQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsaUJBQWlCLEtBQUssUUFBUSxDQUFDLGlCQUFpQixDQUM1RyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkNELGtEQXVDQztBQUVELE1BQWEsbUJBQW1CO0lBQ2IsaUJBQWlCLENBQXdCO0lBQ3pDLGFBQWEsQ0FBVztJQUV6QyxZQUFZLEtBQWU7UUFDekIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUV4QixJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyw4QkFBOEIsQ0FBQztRQUVyRCxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDN0IsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQztvQkFDMUIsU0FBUyxFQUFFLFNBQVM7b0JBQ3BCLGlCQUFpQixFQUFFLFNBQVM7aUJBQzdCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQTBCO1FBQ25DLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQzNELE9BQU8sR0FBRyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxHQUFHLENBQUMsaUJBQWlCLEtBQUssUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBQzVHLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNuRixPQUFPLGdCQUFnQixJQUFJLFlBQVksQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFuQ0Qsa0RBbUNDO0FBRUQsTUFBYSxnQkFBZ0I7SUFDRTtJQUE3QixZQUE2QixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtJQUN4RCxDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQTBCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0NBQ0Y7QUFQRCw0Q0FPQztBQUVELE1BQWEsWUFBWTtJQUN2QixVQUFVLENBQUMsU0FBMkI7UUFDcEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFKRCxvQ0FJQztBQUVELE1BQWEsYUFBYTtJQUN4QixVQUFVLENBQUMsU0FBMkI7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFKRCxzQ0FJQztBQUVELFNBQWdCLDRCQUE0QixDQUFDLFFBQTBCLEVBQUUsT0FBa0I7SUFDekYsT0FBTyxJQUFJLGdCQUFnQixDQUFDLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXNzZW1ibHlNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgeyBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLCBBcnRpZmFjdFR5cGUgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUxvY2F0aW9uIGFzIENmblJlc291cmNlTG9jYXRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUxvY2F0aW9uIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjbHVkZUxpc3Qge1xuICBpc0V4Y2x1ZGVkKGxvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1hbmlmZXN0RXhjbHVkZUxpc3QgaW1wbGVtZW50cyBFeGNsdWRlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZWRMb2NhdGlvbnM6IENmblJlc291cmNlTG9jYXRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMgPSB0aGlzLmdldEV4Y2x1ZGVkTG9jYXRpb25zKG1hbmlmZXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhjbHVkZWRMb2NhdGlvbnMoYXNtTWFuaWZlc3Q6IEFzc2VtYmx5TWFuaWZlc3QpOiBDZm5SZXNvdXJjZUxvY2F0aW9uW10ge1xuICAgIC8vIEZpcnN0LCB3ZSBuZWVkIHRvIGZpbHRlciB0aGUgYXJ0aWZhY3RzIHRvIG9ubHkgaW5jbHVkZSBDbG91ZEZvcm1hdGlvbiBzdGFja3NcbiAgICBjb25zdCBzdGFja01hbmlmZXN0cyA9IE9iamVjdC5lbnRyaWVzKGFzbU1hbmlmZXN0LmFydGlmYWN0cyA/PyB7fSkuZmlsdGVyKFxuICAgICAgKFtfLCBtYW5pZmVzdF0pID0+IG1hbmlmZXN0LnR5cGUgPT09IEFydGlmYWN0VHlwZS5BV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0ssXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdDogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdID0gW107XG4gICAgZm9yIChsZXQgW3N0YWNrTmFtZSwgbWFuaWZlc3RdIG9mIHN0YWNrTWFuaWZlc3RzKSB7XG4gICAgICBjb25zdCBsb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKG1hbmlmZXN0Lm1ldGFkYXRhID8/IHt9KVxuICAgICAgICAvLyBUaGVuIHBpY2sgb25seSB0aGUgcmVzb3VyY2VzIGluIGVhY2ggc3RhY2sgbWFya2VkIHdpdGggRE9fTk9UX1JFRkFDVE9SXG4gICAgICAgIC5maWx0ZXIoKGVudHJpZXMpID0+XG4gICAgICAgICAgZW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5ET19OT1RfUkVGQUNUT1IgJiYgZW50cnkuZGF0YSA9PT0gdHJ1ZSksXG4gICAgICAgIClcbiAgICAgICAgLy8gRmluYWxseSwgZ2V0IHRoZSBsb2dpY2FsIElEIG9mIGVhY2ggcmVzb3VyY2VcbiAgICAgICAgLm1hcCgoZW50cmllcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZ2ljYWxJZEVudHJ5ID0gZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEKTtcbiAgICAgICAgICBjb25zdCBsb2NhdGlvbjogQ2ZuUmVzb3VyY2VMb2NhdGlvbiA9IHtcbiAgICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICAgICAgTG9naWNhbFJlc291cmNlSWQ6IGxvZ2ljYWxJZEVudHJ5IS5kYXRhISBhcyBzdHJpbmcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgICAgIH0pO1xuICAgICAgcmVzdWx0LnB1c2goLi4ubG9jYXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGNsdWRlZExvY2F0aW9ucy5zb21lKFxuICAgICAgKGxvYykgPT4gbG9jLlN0YWNrTmFtZSA9PT0gbG9jYXRpb24uc3RhY2suc3RhY2tOYW1lICYmIGxvYy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5NZW1vcnlFeGNsdWRlTGlzdCBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZExvY2F0aW9uczogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZW1zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMgPSBbXTtcbiAgICB0aGlzLmV4Y2x1ZGVkUGF0aHMgPSBbXTtcblxuICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvblJlZ2V4ID0gL15bQS1aYS16MC05XStcXC5bQS1aYS16MC05XSskLztcblxuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGxvY2F0aW9uUmVnZXgudGVzdChpdGVtKSkge1xuICAgICAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gaXRlbS5zcGxpdCgnLicpO1xuICAgICAgICB0aGlzLmV4Y2x1ZGVkTG9jYXRpb25zLnB1c2goe1xuICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBsb2dpY2FsSWQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leGNsdWRlZFBhdGhzLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc0V4Y2x1ZGVkKGxvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udGFpbnNMb2NhdGlvbiA9IHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMuc29tZSgobG9jKSA9PiB7XG4gICAgICByZXR1cm4gbG9jLlN0YWNrTmFtZSA9PT0gbG9jYXRpb24uc3RhY2suc3RhY2tOYW1lICYmIGxvYy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluc1BhdGggPSB0aGlzLmV4Y2x1ZGVkUGF0aHMuc29tZSgocGF0aCkgPT4gbG9jYXRpb24udG9QYXRoKCkgPT09IHBhdGgpO1xuICAgIHJldHVybiBjb250YWluc0xvY2F0aW9uIHx8IGNvbnRhaW5zUGF0aDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5pb25FeGNsdWRlTGlzdCBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBleGNsdWRlTGlzdHM6IEV4Y2x1ZGVMaXN0W10pIHtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGNsdWRlTGlzdHMuc29tZSgoZXhjbHVkZUxpc3QpID0+IGV4Y2x1ZGVMaXN0LmlzRXhjbHVkZWQobG9jYXRpb24pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmV2ZXJFeGNsdWRlIGltcGxlbWVudHMgRXhjbHVkZUxpc3Qge1xuICBpc0V4Y2x1ZGVkKF9sb2NhdGlvbjogUmVzb3VyY2VMb2NhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWx3YXlzRXhjbHVkZSBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgaXNFeGNsdWRlZChfbG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU1hbmlmZXN0QW5kRXhjbHVzaW9uTGlzdChtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCwgZXhjbHVkZT86IHN0cmluZ1tdKTogRXhjbHVkZUxpc3Qge1xuICByZXR1cm4gbmV3IFVuaW9uRXhjbHVkZUxpc3QoW25ldyBNYW5pZmVzdEV4Y2x1ZGVMaXN0KG1hbmlmZXN0KSwgbmV3IEluTWVtb3J5RXhjbHVkZUxpc3QoZXhjbHVkZSA/PyBbXSldKTtcbn1cblxuIl19
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4Y2x1ZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMEVBQXlGO0FBVXpGLE1BQWUsbUJBQW1CO0lBR2hDLEtBQUssQ0FBQyxLQUFrQjtRQUN0QixPQUFPLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFFRCxNQUFhLG1CQUFvQixTQUFRLG1CQUFtQjtJQUN6QyxpQkFBaUIsQ0FBd0I7SUFFMUQsWUFBWSxRQUEwQjtRQUNwQyxLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQTZCO1FBQ3hELCtFQUErRTtRQUMvRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUN2RSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLG9DQUFZLENBQUMsd0JBQXdCLENBQzNFLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUN0RCx5RUFBeUU7aUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssaURBQXlC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R0FBWixZQUFZLENBQWU7SUFFeEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxRQUEwQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbkYsQ0FBQztDQUNGO0FBUkQsNENBUUM7QUFFRCxNQUFhLFlBQWEsU0FBUSxtQkFBbUI7SUFDbkQsVUFBVSxDQUFDLFNBQTJCO1FBQ3BDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBSkQsb0NBSUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxtQkFBbUI7SUFDcEQsVUFBVSxDQUFDLFNBQTJCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBSkQsc0NBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFzc2VtYmx5TWFuaWZlc3QgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZSwgQXJ0aWZhY3RUeXBlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VMb2NhdGlvbiBhcyBDZm5SZXNvdXJjZUxvY2F0aW9uIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB0eXBlIHsgUmVzb3VyY2VMb2NhdGlvbiB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2x1ZGVMaXN0IHtcbiAgaXNFeGNsdWRlZChsb2NhdGlvbjogUmVzb3VyY2VMb2NhdGlvbik6IGJvb2xlYW47XG5cbiAgdW5pb24ob3RoZXI6IEV4Y2x1ZGVMaXN0KTogRXhjbHVkZUxpc3Q7XG59XG5cbmFic3RyYWN0IGNsYXNzIEFic3RyYWN0RXhjbHVkZUxpc3QgaW1wbGVtZW50cyBFeGNsdWRlTGlzdCB7XG4gIGFic3RyYWN0IGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuO1xuXG4gIHVuaW9uKG90aGVyOiBFeGNsdWRlTGlzdCk6IEV4Y2x1ZGVMaXN0IHtcbiAgICByZXR1cm4gbmV3IFVuaW9uRXhjbHVkZUxpc3QoW3RoaXMsIG90aGVyXSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1hbmlmZXN0RXhjbHVkZUxpc3QgZXh0ZW5kcyBBYnN0cmFjdEV4Y2x1ZGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZExvY2F0aW9uczogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdO1xuXG4gIGNvbnN0cnVjdG9yKG1hbmlmZXN0OiBBc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmV4Y2x1ZGVkTG9jYXRpb25zID0gdGhpcy5nZXRFeGNsdWRlZExvY2F0aW9ucyhtYW5pZmVzdCk7XG4gIH1cblxuICBwcml2YXRlIGdldEV4Y2x1ZGVkTG9jYXRpb25zKGFzbU1hbmlmZXN0OiBBc3NlbWJseU1hbmlmZXN0KTogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdIHtcbiAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBmaWx0ZXIgdGhlIGFydGlmYWN0cyB0byBvbmx5IGluY2x1ZGUgQ2xvdWRGb3JtYXRpb24gc3RhY2tzXG4gICAgY29uc3Qgc3RhY2tNYW5pZmVzdHMgPSBPYmplY3QuZW50cmllcyhhc21NYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pLmZpbHRlcihcbiAgICAgIChbXywgbWFuaWZlc3RdKSA9PiBtYW5pZmVzdC50eXBlID09PSBBcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLLFxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHQ6IENmblJlc291cmNlTG9jYXRpb25bXSA9IFtdO1xuICAgIGZvciAobGV0IFtzdGFja05hbWUsIG1hbmlmZXN0XSBvZiBzdGFja01hbmlmZXN0cykge1xuICAgICAgY29uc3QgbG9jYXRpb25zID0gT2JqZWN0LnZhbHVlcyhtYW5pZmVzdC5tZXRhZGF0YSA/PyB7fSlcbiAgICAgICAgLy8gVGhlbiBwaWNrIG9ubHkgdGhlIHJlc291cmNlcyBpbiBlYWNoIHN0YWNrIG1hcmtlZCB3aXRoIERPX05PVF9SRUZBQ1RPUlxuICAgICAgICAuZmlsdGVyKChlbnRyaWVzKSA9PlxuICAgICAgICAgIGVudHJpZXMuc29tZSgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuRE9fTk9UX1JFRkFDVE9SICYmIGVudHJ5LmRhdGEgPT09IHRydWUpLFxuICAgICAgICApXG4gICAgICAgIC8vIEZpbmFsbHksIGdldCB0aGUgbG9naWNhbCBJRCBvZiBlYWNoIHJlc291cmNlXG4gICAgICAgIC5tYXAoKGVudHJpZXMpID0+IHtcbiAgICAgICAgICBjb25zdCBsb2dpY2FsSWRFbnRyeSA9IGVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnR5cGUgPT09IEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuTE9HSUNBTF9JRCk7XG4gICAgICAgICAgY29uc3QgbG9jYXRpb246IENmblJlc291cmNlTG9jYXRpb24gPSB7XG4gICAgICAgICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICAgICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBsb2dpY2FsSWRFbnRyeSEuZGF0YSEgYXMgc3RyaW5nLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIGxvY2F0aW9uO1xuICAgICAgICB9KTtcbiAgICAgIHJlc3VsdC5wdXNoKC4uLmxvY2F0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpc0V4Y2x1ZGVkKGxvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMuc29tZShcbiAgICAgIChsb2MpID0+IGxvYy5TdGFja05hbWUgPT09IGxvY2F0aW9uLnN0YWNrLnN0YWNrTmFtZSAmJiBsb2MuTG9naWNhbFJlc291cmNlSWQgPT09IGxvY2F0aW9uLmxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluTWVtb3J5RXhjbHVkZUxpc3QgZXh0ZW5kcyBBYnN0cmFjdEV4Y2x1ZGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZExvY2F0aW9uczogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZW1zOiBzdHJpbmdbXSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5leGNsdWRlZExvY2F0aW9ucyA9IFtdO1xuICAgIHRoaXMuZXhjbHVkZWRQYXRocyA9IFtdO1xuXG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2F0aW9uUmVnZXggPSAvXltBLVphLXowLTldK1xcLltBLVphLXowLTldKyQvO1xuXG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAobG9jYXRpb25SZWdleC50ZXN0KGl0ZW0pKSB7XG4gICAgICAgIGNvbnN0IFtzdGFja05hbWUsIGxvZ2ljYWxJZF0gPSBpdGVtLnNwbGl0KCcuJyk7XG4gICAgICAgIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMucHVzaCh7XG4gICAgICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICAgICAgTG9naWNhbFJlc291cmNlSWQ6IGxvZ2ljYWxJZCxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmV4Y2x1ZGVkUGF0aHMucHVzaChpdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250YWluc0xvY2F0aW9uID0gdGhpcy5leGNsdWRlZExvY2F0aW9ucy5zb21lKChsb2MpID0+IHtcbiAgICAgIHJldHVybiBsb2MuU3RhY2tOYW1lID09PSBsb2NhdGlvbi5zdGFjay5zdGFja05hbWUgJiYgbG9jLkxvZ2ljYWxSZXNvdXJjZUlkID09PSBsb2NhdGlvbi5sb2dpY2FsUmVzb3VyY2VJZDtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbnRhaW5zUGF0aCA9IHRoaXMuZXhjbHVkZWRQYXRocy5zb21lKChwYXRoKSA9PiBsb2NhdGlvbi50b1BhdGgoKSA9PT0gcGF0aCk7XG4gICAgcmV0dXJuIGNvbnRhaW5zTG9jYXRpb24gfHwgY29udGFpbnNQYXRoO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVbmlvbkV4Y2x1ZGVMaXN0IGV4dGVuZHMgQWJzdHJhY3RFeGNsdWRlTGlzdCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZUxpc3RzOiBFeGNsdWRlTGlzdFtdKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGNsdWRlTGlzdHMuc29tZSgoZXhjbHVkZUxpc3QpID0+IGV4Y2x1ZGVMaXN0LmlzRXhjbHVkZWQobG9jYXRpb24pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmV2ZXJFeGNsdWRlIGV4dGVuZHMgQWJzdHJhY3RFeGNsdWRlTGlzdCB7XG4gIGlzRXhjbHVkZWQoX2xvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBbHdheXNFeGNsdWRlIGV4dGVuZHMgQWJzdHJhY3RFeGNsdWRlTGlzdCB7XG4gIGlzRXhjbHVkZWQoX2xvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,34 +1,13 @@
|
|
|
1
1
|
import type { TypedMapping } from '@aws-cdk/cloudformation-diff';
|
|
2
|
+
import type * as cxapi from '@aws-cdk/cx-api';
|
|
2
3
|
import type { SdkProvider } from '../aws-auth/private';
|
|
3
4
|
import type { CloudFormationStack } from './cloudformation';
|
|
4
|
-
import {
|
|
5
|
-
import { type ExcludeList } from './exclude';
|
|
5
|
+
import { ResourceMapping } from './cloudformation';
|
|
6
6
|
import type { MappingGroup } from '../../actions';
|
|
7
7
|
export * from './exclude';
|
|
8
|
-
/**
|
|
9
|
-
* Represents a set of possible movements of a resource from one location
|
|
10
|
-
* to another. In the ideal case, there is only one source and only one
|
|
11
|
-
* destination.
|
|
12
|
-
*/
|
|
13
|
-
export type ResourceMovement = [ResourceLocation[], ResourceLocation[]];
|
|
14
|
-
export declare class AmbiguityError extends Error {
|
|
15
|
-
readonly movements: ResourceMovement[];
|
|
16
|
-
constructor(movements: ResourceMovement[]);
|
|
17
|
-
paths(): [string[], string[]][];
|
|
18
|
-
}
|
|
19
8
|
export declare function usePrescribedMappings(mappingGroups: MappingGroup[], sdkProvider: SdkProvider): Promise<ResourceMapping[]>;
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
*/
|
|
26
|
-
export declare function resourceMappings(movements: ResourceMovement[], stacks?: CloudFormationStack[]): ResourceMapping[];
|
|
27
|
-
/**
|
|
28
|
-
* Compares the deployed state to the cloud assembly state, and finds all resources
|
|
29
|
-
* that were moved from one location (stack + logical ID) to another. The comparison
|
|
30
|
-
* is done per environment.
|
|
31
|
-
*/
|
|
32
|
-
export declare function findResourceMovements(stacks: CloudFormationStack[], sdkProvider: SdkProvider, exclude?: ExcludeList): Promise<ResourceMovement[]>;
|
|
33
|
-
export declare function formatTypedMappings(mappings: TypedMapping[]): string;
|
|
34
|
-
export declare function formatAmbiguousMappings(paths: [string[], string[]][]): string;
|
|
9
|
+
export declare function getDeployedStacks(sdkProvider: SdkProvider, environment: cxapi.Environment): Promise<CloudFormationStack[]>;
|
|
10
|
+
export declare function formatMappingsHeader(): string;
|
|
11
|
+
export declare function formatTypedMappings(environment: cxapi.Environment, mappings: TypedMapping[]): string;
|
|
12
|
+
export declare function formatAmbiguitySectionHeader(): string;
|
|
13
|
+
export declare function formatAmbiguousMappings(environment: cxapi.Environment, paths: [string[], string[]][]): string;
|
|
@@ -14,49 +14,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.AmbiguityError = void 0;
|
|
18
17
|
exports.usePrescribedMappings = usePrescribedMappings;
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.resourceMappings = resourceMappings;
|
|
22
|
-
exports.findResourceMovements = findResourceMovements;
|
|
18
|
+
exports.getDeployedStacks = getDeployedStacks;
|
|
19
|
+
exports.formatMappingsHeader = formatMappingsHeader;
|
|
23
20
|
exports.formatTypedMappings = formatTypedMappings;
|
|
21
|
+
exports.formatAmbiguitySectionHeader = formatAmbiguitySectionHeader;
|
|
24
22
|
exports.formatAmbiguousMappings = formatAmbiguousMappings;
|
|
25
23
|
const cloudformation_diff_1 = require("@aws-cdk/cloudformation-diff");
|
|
26
24
|
const util_1 = require("../../util");
|
|
27
25
|
const plugin_1 = require("../plugin");
|
|
28
26
|
const streams_1 = require("../streams");
|
|
29
27
|
const cloudformation_1 = require("./cloudformation");
|
|
30
|
-
const digest_1 = require("./digest");
|
|
31
|
-
const exclude_1 = require("./exclude");
|
|
32
28
|
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
33
29
|
__exportStar(require("./exclude"), exports);
|
|
34
|
-
class AmbiguityError extends Error {
|
|
35
|
-
movements;
|
|
36
|
-
constructor(movements) {
|
|
37
|
-
super('Ambiguous resource mappings');
|
|
38
|
-
this.movements = movements;
|
|
39
|
-
}
|
|
40
|
-
paths() {
|
|
41
|
-
return this.movements.map(([a, b]) => [convert(a), convert(b)]);
|
|
42
|
-
function convert(locations) {
|
|
43
|
-
return locations.map((l) => l.toPath());
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
exports.AmbiguityError = AmbiguityError;
|
|
48
|
-
function groupByKey(entries) {
|
|
49
|
-
const result = {};
|
|
50
|
-
for (const [hash, location] of entries) {
|
|
51
|
-
if (hash in result) {
|
|
52
|
-
result[hash].push(location);
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
result[hash] = [location];
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return result;
|
|
59
|
-
}
|
|
60
30
|
async function usePrescribedMappings(mappingGroups, sdkProvider) {
|
|
61
31
|
const stackGroups = [];
|
|
62
32
|
for (const group of mappingGroups) {
|
|
@@ -116,112 +86,6 @@ async function usePrescribedMappings(mappingGroups, sdkProvider) {
|
|
|
116
86
|
}, logicalId);
|
|
117
87
|
}
|
|
118
88
|
}
|
|
119
|
-
function resourceMovements(before, after) {
|
|
120
|
-
return Object.values(removeUnmovedResources(zip(groupByKey(resourceDigests(before)), groupByKey(resourceDigests(after)))));
|
|
121
|
-
}
|
|
122
|
-
function ambiguousMovements(movements) {
|
|
123
|
-
// A movement is considered ambiguous if these two conditions are met:
|
|
124
|
-
// 1. Both sides have at least one element (otherwise, it's just addition or deletion)
|
|
125
|
-
// 2. At least one side has more than one element
|
|
126
|
-
return movements
|
|
127
|
-
.filter(([pre, post]) => pre.length > 0 && post.length > 0)
|
|
128
|
-
.filter(([pre, post]) => pre.length > 1 || post.length > 1);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Converts a list of unambiguous resource movements into a list of resource mappings.
|
|
132
|
-
*
|
|
133
|
-
*/
|
|
134
|
-
function resourceMappings(movements, stacks) {
|
|
135
|
-
const stacksPredicate = stacks == null
|
|
136
|
-
? () => true
|
|
137
|
-
: (m) => {
|
|
138
|
-
// Any movement that involves one of the selected stacks (either moving from or to)
|
|
139
|
-
// is considered a candidate for refactoring.
|
|
140
|
-
const stackNames = [m.source.stack.stackName, m.destination.stack.stackName];
|
|
141
|
-
return stacks.some((stack) => stackNames.includes(stack.stackName));
|
|
142
|
-
};
|
|
143
|
-
return movements
|
|
144
|
-
.filter(([pre, post]) => pre.length === 1 && post.length === 1 && !pre[0].equalTo(post[0]))
|
|
145
|
-
.map(([pre, post]) => new cloudformation_1.ResourceMapping(pre[0], post[0]))
|
|
146
|
-
.filter(stacksPredicate);
|
|
147
|
-
}
|
|
148
|
-
function removeUnmovedResources(m) {
|
|
149
|
-
const result = {};
|
|
150
|
-
for (const [hash, [before, after]] of Object.entries(m)) {
|
|
151
|
-
const common = before.filter((b) => after.some((a) => a.equalTo(b)));
|
|
152
|
-
result[hash] = [
|
|
153
|
-
before.filter((b) => !common.some((c) => b.equalTo(c))),
|
|
154
|
-
after.filter((a) => !common.some((c) => a.equalTo(c))),
|
|
155
|
-
];
|
|
156
|
-
}
|
|
157
|
-
return result;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* For each hash, identifying a single resource, zip the two lists of locations,
|
|
161
|
-
* producing a resource movement
|
|
162
|
-
*/
|
|
163
|
-
function zip(m1, m2) {
|
|
164
|
-
const result = {};
|
|
165
|
-
for (const [hash, locations] of Object.entries(m1)) {
|
|
166
|
-
if (hash in m2) {
|
|
167
|
-
result[hash] = [locations, m2[hash]];
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
result[hash] = [locations, []];
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
for (const [hash, locations] of Object.entries(m2)) {
|
|
174
|
-
if (!(hash in m1)) {
|
|
175
|
-
result[hash] = [[], locations];
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
return result;
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Computes a list of pairs [digest, location] for each resource in the stack.
|
|
182
|
-
*/
|
|
183
|
-
function resourceDigests(stacks) {
|
|
184
|
-
// index stacks by name
|
|
185
|
-
const stacksByName = new Map();
|
|
186
|
-
for (const stack of stacks) {
|
|
187
|
-
stacksByName.set(stack.stackName, stack);
|
|
188
|
-
}
|
|
189
|
-
const digests = (0, digest_1.computeResourceDigests)(stacks);
|
|
190
|
-
return Object.entries(digests).map(([loc, digest]) => {
|
|
191
|
-
const [stackName, logicalId] = loc.split('.');
|
|
192
|
-
const location = new cloudformation_1.ResourceLocation(stacksByName.get(stackName), logicalId);
|
|
193
|
-
return [digest, location];
|
|
194
|
-
});
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Compares the deployed state to the cloud assembly state, and finds all resources
|
|
198
|
-
* that were moved from one location (stack + logical ID) to another. The comparison
|
|
199
|
-
* is done per environment.
|
|
200
|
-
*/
|
|
201
|
-
async function findResourceMovements(stacks, sdkProvider, exclude = new exclude_1.NeverExclude()) {
|
|
202
|
-
const stackGroups = new Map();
|
|
203
|
-
// Group stacks by environment
|
|
204
|
-
for (const stack of stacks) {
|
|
205
|
-
const environment = stack.environment;
|
|
206
|
-
const key = (0, digest_1.hashObject)(environment);
|
|
207
|
-
if (stackGroups.has(key)) {
|
|
208
|
-
stackGroups.get(key)[1].push(stack);
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
// The first time we see an environment, we need to fetch all stacks deployed to it.
|
|
212
|
-
const before = await getDeployedStacks(sdkProvider, environment);
|
|
213
|
-
stackGroups.set(key, [before, [stack]]);
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
const result = [];
|
|
217
|
-
for (const [_, [before, after]] of stackGroups) {
|
|
218
|
-
result.push(...resourceMovements(before, after));
|
|
219
|
-
}
|
|
220
|
-
return result.filter((mov) => {
|
|
221
|
-
const after = mov[1];
|
|
222
|
-
return after.every((l) => !exclude.isExcluded(l));
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
89
|
async function getDeployedStacks(sdkProvider, environment) {
|
|
226
90
|
const cfn = (await sdkProvider.forEnvironment(environment, plugin_1.Mode.ForReading)).sdk.cloudFormation();
|
|
227
91
|
const summaries = await cfn.paginatedListStacks({
|
|
@@ -245,14 +109,27 @@ async function getDeployedStacks(sdkProvider, environment) {
|
|
|
245
109
|
// eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
|
|
246
110
|
return Promise.all(summaries.map(normalize));
|
|
247
111
|
}
|
|
248
|
-
function
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
112
|
+
function formatMappingsHeader() {
|
|
113
|
+
return formatToStream(cloudformation_diff_1.formatMappingsHeader);
|
|
114
|
+
}
|
|
115
|
+
function formatTypedMappings(environment, mappings) {
|
|
116
|
+
return formatToStream((stream) => {
|
|
117
|
+
const env = `aws://${environment.account}/${environment.region}`;
|
|
118
|
+
(0, cloudformation_diff_1.formatTypedMappings)(stream, mappings, env);
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
function formatAmbiguitySectionHeader() {
|
|
122
|
+
return formatToStream(cloudformation_diff_1.formatAmbiguitySectionHeader);
|
|
123
|
+
}
|
|
124
|
+
function formatAmbiguousMappings(environment, paths) {
|
|
125
|
+
return formatToStream((stream) => {
|
|
126
|
+
const env = `aws://${environment.account}/${environment.region}`;
|
|
127
|
+
(0, cloudformation_diff_1.formatAmbiguousMappings)(stream, paths, env);
|
|
128
|
+
});
|
|
252
129
|
}
|
|
253
|
-
function
|
|
130
|
+
function formatToStream(cb) {
|
|
254
131
|
const stream = new streams_1.StringWriteStream();
|
|
255
|
-
(
|
|
132
|
+
cb(stream);
|
|
256
133
|
return stream.toString();
|
|
257
134
|
}
|
|
258
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQXVEQSxzREFxRkM7QUFFRCw4Q0FNQztBQUVELGdEQU9DO0FBTUQsNENBZUM7QUFrRUQsc0RBNkJDO0FBZ0NELGtEQUlDO0FBRUQsMERBSUM7QUExVEQsc0VBR3NDO0FBR3RDLHFDQUFrRDtBQUVsRCxzQ0FBaUM7QUFDakMsd0NBQStDO0FBRS9DLHFEQUFxRTtBQUNyRSxxQ0FBOEQ7QUFDOUQsdUNBQTJEO0FBRTNELCtEQUEyRDtBQUUzRCw0Q0FBMEI7QUFTMUIsTUFBYSxjQUFlLFNBQVEsS0FBSztJQUNYO0lBQTVCLFlBQTRCLFNBQTZCO1FBQ3ZELEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBRFgsY0FBUyxHQUFULFNBQVMsQ0FBb0I7SUFFekQsQ0FBQztJQUVNLEtBQUs7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEUsU0FBUyxPQUFPLENBQUMsU0FBNkI7WUFDNUMsT0FBTyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBWkQsd0NBWUM7QUFFRCxTQUFTLFVBQVUsQ0FBSSxPQUFzQjtJQUMzQyxNQUFNLE1BQU0sR0FBd0IsRUFBRSxDQUFDO0lBRXZDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNuQixN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TUFBTSxxQkFBcUIsR0FBRyxNQUFNLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVUsRUFBRSxDQUFDLENBQUM7UUFDdkYsTUFBTSxRQUFRLEdBQUcsSUFBQSwyQkFBb0IsRUFBQyxxQkFBcUIsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbEYsT0FBTztZQUNMLFdBQVc7WUFDWCxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVU7WUFDN0IsUUFBUTtTQUNULENBQUM7SUFDSixDQUFDLENBQUM7SUFFRix3RUFBd0U7SUFDeEUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMsUUFBd0I7SUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSwyQkFBaUIsRUFBRSxDQUFDO0lBQ3ZDLElBQUEseUNBQWdCLEVBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQzNCLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxLQUE2QjtJQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUFpQixFQUFFLENBQUM7SUFDdkMsSUFBQSw2Q0FBb0IsRUFBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0VHlwZWRNYXBwaW5ncyBhcyBmbXRUeXBlZE1hcHBpbmdzLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgY29tcHV0ZVJlc291cmNlRGlnZXN0cywgaGFzaE9iamVjdCB9IGZyb20gJy4vZGlnZXN0JztcbmltcG9ydCB7IHR5cGUgRXhjbHVkZUxpc3QsIE5ldmVyRXhjbHVkZSB9IGZyb20gJy4vZXhjbHVkZSc7XG5pbXBvcnQgdHlwZSB7IE1hcHBpbmdHcm91cCB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnLi4vLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcblxuZXhwb3J0ICogZnJvbSAnLi9leGNsdWRlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgc2V0IG9mIHBvc3NpYmxlIG1vdmVtZW50cyBvZiBhIHJlc291cmNlIGZyb20gb25lIGxvY2F0aW9uXG4gKiB0byBhbm90aGVyLiBJbiB0aGUgaWRlYWwgY2FzZSwgdGhlcmUgaXMgb25seSBvbmUgc291cmNlIGFuZCBvbmx5IG9uZVxuICogZGVzdGluYXRpb24uXG4gKi9cbmV4cG9ydCB0eXBlIFJlc291cmNlTW92ZW1lbnQgPSBbUmVzb3VyY2VMb2NhdGlvbltdLCBSZXNvdXJjZUxvY2F0aW9uW11dO1xuXG5leHBvcnQgY2xhc3MgQW1iaWd1aXR5RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBtb3ZlbWVudHM6IFJlc291cmNlTW92ZW1lbnRbXSkge1xuICAgIHN1cGVyKCdBbWJpZ3VvdXMgcmVzb3VyY2UgbWFwcGluZ3MnKTtcbiAgfVxuXG4gIHB1YmxpYyBwYXRocygpOiBbc3RyaW5nW10sIHN0cmluZ1tdXVtdIHtcbiAgICByZXR1cm4gdGhpcy5tb3ZlbWVudHMubWFwKChbYSwgYl0pID0+IFtjb252ZXJ0KGEpLCBjb252ZXJ0KGIpXSk7XG5cbiAgICBmdW5jdGlvbiBjb252ZXJ0KGxvY2F0aW9uczogUmVzb3VyY2VMb2NhdGlvbltdKTogc3RyaW5nW10ge1xuICAgICAgcmV0dXJuIGxvY2F0aW9ucy5tYXAoKGwpID0+IGwudG9QYXRoKCkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBncm91cEJ5S2V5PEE+KGVudHJpZXM6IFtzdHJpbmcsIEFdW10pOiBSZWNvcmQ8c3RyaW5nLCBBW10+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBBW10+ID0ge307XG5cbiAgZm9yIChjb25zdCBbaGFzaCwgbG9jYXRpb25dIG9mIGVudHJpZXMpIHtcbiAgICBpZiAoaGFzaCBpbiByZXN1bHQpIHtcbiAgICAgIHJlc3VsdFtoYXNoXS5wdXNoKGxvY2F0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0W2hhc2hdID0gW2xvY2F0aW9uXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXNlUHJlc2NyaWJlZE1hcHBpbmdzKFxuICBtYXBwaW5nR3JvdXBzOiBNYXBwaW5nR3JvdXBbXSxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuKTogUHJvbWlzZTxSZXNvdXJjZU1hcHBpbmdbXT4ge1xuICBpbnRlcmZhY2UgU3RhY2tHcm91cCBleHRlbmRzIE1hcHBpbmdHcm91cCB7XG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIH1cblxuICBjb25zdCBzdGFja0dyb3VwczogU3RhY2tHcm91cFtdID0gW107XG4gIGZvciAoY29uc3QgZ3JvdXAgb2YgbWFwcGluZ0dyb3Vwcykge1xuICAgIHN0YWNrR3JvdXBzLnB1c2goe1xuICAgICAgLi4uZ3JvdXAsXG4gICAgICBzdGFja3M6IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudE9mKGdyb3VwKSksXG4gICAgfSk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUgZGVzdGluYXRpb25zXG4gIGZvciAobGV0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgY29uc3QgZGVzdGluYXRpb25zID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBmb3IgKGNvbnN0IGRlc3RpbmF0aW9uIG9mIE9iamVjdC52YWx1ZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKGRlc3RpbmF0aW9ucy5oYXMoZGVzdGluYXRpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAgICAgYER1cGxpY2F0ZSBkZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9ucy5hZGQoZGVzdGluYXRpb24pO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc3VsdDogUmVzb3VyY2VNYXBwaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBzdGFja0dyb3Vwcykge1xuICAgIGZvciAoY29uc3QgW3NvdXJjZSwgZGVzdGluYXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKGdyb3VwLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghaW5Vc2Uoc291cmNlLCBncm91cC5zdGFja3MpKSB7XG4gICAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFNvdXJjZSByZXNvdXJjZSAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWApO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5Vc2UoZGVzdGluYXRpb24sIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRGVzdGluYXRpb24gcmVzb3VyY2UgJyR7ZGVzdGluYXRpb259JyBhbHJlYWR5IGluIHVzZSBpbiBlbnZpcm9ubWVudCAke2dyb3VwLmFjY291bnR9LyR7Z3JvdXAucmVnaW9ufWAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudmlyb25tZW50ID0gZW52aXJvbm1lbnRPZihncm91cCk7XG4gICAgICBjb25zdCBzcmMgPSBtYWtlTG9jYXRpb24oc291cmNlLCBlbnZpcm9ubWVudCwgZ3JvdXAuc3RhY2tzKTtcbiAgICAgIGNvbnN0IGRzdCA9IG1ha2VMb2NhdGlvbihkZXN0aW5hdGlvbiwgZW52aXJvbm1lbnQpO1xuICAgICAgcmVzdWx0LnB1c2gobmV3IFJlc291cmNlTWFwcGluZyhzcmMsIGRzdCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIGluVXNlKGxvY2F0aW9uOiBzdHJpbmcsIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvY2F0aW9uLnNwbGl0KCcuJyk7XG4gICAgaWYgKHN0YWNrTmFtZSA9PSBudWxsIHx8IGxvZ2ljYWxJZCA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBJbnZhbGlkIGxvY2F0aW9uICcke2xvY2F0aW9ufSdgKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5zdGFja05hbWUgPT09IHN0YWNrTmFtZSk7XG4gICAgcmV0dXJuIHN0YWNrICE9IG51bGwgJiYgc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzPy5bbG9naWNhbElkXSAhPSBudWxsO1xuICB9XG5cbiAgZnVuY3Rpb24gZW52aXJvbm1lbnRPZihncm91cDogTWFwcGluZ0dyb3VwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnQ6IGdyb3VwLmFjY291bnQsXG4gICAgICByZWdpb246IGdyb3VwLnJlZ2lvbixcbiAgICAgIG5hbWU6ICcnLFxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBtYWtlTG9jYXRpb24oXG4gICAgbG9jOiBzdHJpbmcsXG4gICAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuICAgIHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdID0gW10sXG4gICk6IFJlc291cmNlTG9jYXRpb24ge1xuICAgIGNvbnN0IFtzdGFja05hbWUsIGxvZ2ljYWxJZF0gPSBsb2Muc3BsaXQoJy4nKTtcbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcblxuICAgIHJldHVybiBuZXcgUmVzb3VyY2VMb2NhdGlvbihcbiAgICAgIHtcbiAgICAgICAgc3RhY2tOYW1lLFxuICAgICAgICBlbnZpcm9ubWVudCxcbiAgICAgICAgdGVtcGxhdGU6IHN0YWNrPy50ZW1wbGF0ZSA/PyB7fSxcbiAgICAgIH0sXG4gICAgICBsb2dpY2FsSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VNb3ZlbWVudHMoYmVmb3JlOiBDbG91ZEZvcm1hdGlvblN0YWNrW10sIGFmdGVyOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBSZXNvdXJjZU1vdmVtZW50W10ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhcbiAgICByZW1vdmVVbm1vdmVkUmVzb3VyY2VzKFxuICAgICAgemlwKGdyb3VwQnlLZXkocmVzb3VyY2VEaWdlc3RzKGJlZm9yZSkpLCBncm91cEJ5S2V5KHJlc291cmNlRGlnZXN0cyhhZnRlcikpKSxcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYW1iaWd1b3VzTW92ZW1lbnRzKG1vdmVtZW50czogUmVzb3VyY2VNb3ZlbWVudFtdKSB7XG4gIC8vIEEgbW92ZW1lbnQgaXMgY29uc2lkZXJlZCBhbWJpZ3VvdXMgaWYgdGhlc2UgdHdvIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAgLy8gIDEuIEJvdGggc2lkZXMgaGF2ZSBhdCBsZWFzdCBvbmUgZWxlbWVudCAob3RoZXJ3aXNlLCBpdCdzIGp1c3QgYWRkaXRpb24gb3IgZGVsZXRpb24pXG4gIC8vICAyLiBBdCBsZWFzdCBvbmUgc2lkZSBoYXMgbW9yZSB0aGFuIG9uZSBlbGVtZW50XG4gIHJldHVybiBtb3ZlbWVudHNcbiAgICAuZmlsdGVyKChbcHJlLCBwb3N0XSkgPT4gcHJlLmxlbmd0aCA+IDAgJiYgcG9zdC5sZW5ndGggPiAwKVxuICAgIC5maWx0ZXIoKFtwcmUsIHBvc3RdKSA9PiBwcmUubGVuZ3RoID4gMSB8fCBwb3N0Lmxlbmd0aCA+IDEpO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbGlzdCBvZiB1bmFtYmlndW91cyByZXNvdXJjZSBtb3ZlbWVudHMgaW50byBhIGxpc3Qgb2YgcmVzb3VyY2UgbWFwcGluZ3MuXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb3VyY2VNYXBwaW5ncyhtb3ZlbWVudHM6IFJlc291cmNlTW92ZW1lbnRbXSwgc3RhY2tzPzogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogUmVzb3VyY2VNYXBwaW5nW10ge1xuICBjb25zdCBzdGFja3NQcmVkaWNhdGUgPVxuICAgIHN0YWNrcyA9PSBudWxsXG4gICAgICA/ICgpID0+IHRydWVcbiAgICAgIDogKG06IFJlc291cmNlTWFwcGluZykgPT4ge1xuICAgICAgICAvLyBBbnkgbW92ZW1lbnQgdGhhdCBpbnZvbHZlcyBvbmUgb2YgdGhlIHNlbGVjdGVkIHN0YWNrcyAoZWl0aGVyIG1vdmluZyBmcm9tIG9yIHRvKVxuICAgICAgICAvLyBpcyBjb25zaWRlcmVkIGEgY2FuZGlkYXRlIGZvciByZWZhY3RvcmluZy5cbiAgICAgICAgY29uc3Qgc3RhY2tOYW1lcyA9IFttLnNvdXJjZS5zdGFjay5zdGFja05hbWUsIG0uZGVzdGluYXRpb24uc3RhY2suc3RhY2tOYW1lXTtcbiAgICAgICAgcmV0dXJuIHN0YWNrcy5zb21lKChzdGFjaykgPT4gc3RhY2tOYW1lcy5pbmNsdWRlcyhzdGFjay5zdGFja05hbWUpKTtcbiAgICAgIH07XG5cbiAgcmV0dXJuIG1vdmVtZW50c1xuICAgIC5maWx0ZXIoKFtwcmUsIHBvc3RdKSA9PiBwcmUubGVuZ3RoID09PSAxICYmIHBvc3QubGVuZ3RoID09PSAxICYmICFwcmVbMF0uZXF1YWxUbyhwb3N0WzBdKSlcbiAgICAubWFwKChbcHJlLCBwb3N0XSkgPT4gbmV3IFJlc291cmNlTWFwcGluZyhwcmVbMF0sIHBvc3RbMF0pKVxuICAgIC5maWx0ZXIoc3RhY2tzUHJlZGljYXRlKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlVW5tb3ZlZFJlc291cmNlcyhtOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmVtZW50Pik6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTW92ZW1lbnQ+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmVtZW50PiA9IHt9O1xuICBmb3IgKGNvbnN0IFtoYXNoLCBbYmVmb3JlLCBhZnRlcl1dIG9mIE9iamVjdC5lbnRyaWVzKG0pKSB7XG4gICAgY29uc3QgY29tbW9uID0gYmVmb3JlLmZpbHRlcigoYikgPT4gYWZ0ZXIuc29tZSgoYSkgPT4gYS5lcXVhbFRvKGIpKSk7XG4gICAgcmVzdWx0W2hhc2hdID0gW1xuICAgICAgYmVmb3JlLmZpbHRlcigoYikgPT4gIWNvbW1vbi5zb21lKChjKSA9PiBiLmVxdWFsVG8oYykpKSxcbiAgICAgIGFmdGVyLmZpbHRlcigoYSkgPT4gIWNvbW1vbi5zb21lKChjKSA9PiBhLmVxdWFsVG8oYykpKSxcbiAgICBdO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBGb3IgZWFjaCBoYXNoLCBpZGVudGlmeWluZyBhIHNpbmdsZSByZXNvdXJjZSwgemlwIHRoZSB0d28gbGlzdHMgb2YgbG9jYXRpb25zLFxuICogcHJvZHVjaW5nIGEgcmVzb3VyY2UgbW92ZW1lbnRcbiAqL1xuZnVuY3Rpb24gemlwKFxuICBtMTogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VMb2NhdGlvbltdPixcbiAgbTI6IFJlY29yZDxzdHJpbmcsIFJlc291cmNlTG9jYXRpb25bXT4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBSZXNvdXJjZU1vdmVtZW50PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VNb3ZlbWVudD4gPSB7fTtcblxuICBmb3IgKGNvbnN0IFtoYXNoLCBsb2NhdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKG0xKSkge1xuICAgIGlmIChoYXNoIGluIG0yKSB7XG4gICAgICByZXN1bHRbaGFzaF0gPSBbbG9jYXRpb25zLCBtMltoYXNoXV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFtoYXNoXSA9IFtsb2NhdGlvbnMsIFtdXTtcbiAgICB9XG4gIH1cblxuICBmb3IgKGNvbnN0IFtoYXNoLCBsb2NhdGlvbnNdIG9mIE9iamVjdC5lbnRyaWVzKG0yKSkge1xuICAgIGlmICghKGhhc2ggaW4gbTEpKSB7XG4gICAgICByZXN1bHRbaGFzaF0gPSBbW10sIGxvY2F0aW9uc107XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyBhIGxpc3Qgb2YgcGFpcnMgW2RpZ2VzdCwgbG9jYXRpb25dIGZvciBlYWNoIHJlc291cmNlIGluIHRoZSBzdGFjay5cbiAqL1xuZnVuY3Rpb24gcmVzb3VyY2VEaWdlc3RzKHN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdKTogW3N0cmluZywgUmVzb3VyY2VMb2NhdGlvbl1bXSB7XG4gIC8vIGluZGV4IHN0YWNrcyBieSBuYW1lXG4gIGNvbnN0IHN0YWNrc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBDbG91ZEZvcm1hdGlvblN0YWNrPigpO1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcykge1xuICAgIHN0YWNrc0J5TmFtZS5zZXQoc3RhY2suc3RhY2tOYW1lLCBzdGFjayk7XG4gIH1cblxuICBjb25zdCBkaWdlc3RzID0gY29tcHV0ZVJlc291cmNlRGlnZXN0cyhzdGFja3MpO1xuXG4gIHJldHVybiBPYmplY3QuZW50cmllcyhkaWdlc3RzKS5tYXAoKFtsb2MsIGRpZ2VzdF0pID0+IHtcbiAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jLnNwbGl0KCcuJyk7XG4gICAgY29uc3QgbG9jYXRpb246IFJlc291cmNlTG9jYXRpb24gPSBuZXcgUmVzb3VyY2VMb2NhdGlvbihzdGFja3NCeU5hbWUuZ2V0KHN0YWNrTmFtZSkhLCBsb2dpY2FsSWQpO1xuICAgIHJldHVybiBbZGlnZXN0LCBsb2NhdGlvbl07XG4gIH0pO1xufVxuXG4vKipcbiAqIENvbXBhcmVzIHRoZSBkZXBsb3llZCBzdGF0ZSB0byB0aGUgY2xvdWQgYXNzZW1ibHkgc3RhdGUsIGFuZCBmaW5kcyBhbGwgcmVzb3VyY2VzXG4gKiB0aGF0IHdlcmUgbW92ZWQgZnJvbSBvbmUgbG9jYXRpb24gKHN0YWNrICsgbG9naWNhbCBJRCkgdG8gYW5vdGhlci4gVGhlIGNvbXBhcmlzb25cbiAqIGlzIGRvbmUgcGVyIGVudmlyb25tZW50LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmluZFJlc291cmNlTW92ZW1lbnRzKFxuICBzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBleGNsdWRlOiBFeGNsdWRlTGlzdCA9IG5ldyBOZXZlckV4Y2x1ZGUoKSxcbik6IFByb21pc2U8UmVzb3VyY2VNb3ZlbWVudFtdPiB7XG4gIGNvbnN0IHN0YWNrR3JvdXBzOiBNYXA8c3RyaW5nLCBbQ2xvdWRGb3JtYXRpb25TdGFja1tdLCBDbG91ZEZvcm1hdGlvblN0YWNrW11dPiA9IG5ldyBNYXAoKTtcblxuICAvLyBHcm91cCBzdGFja3MgYnkgZW52aXJvbm1lbnRcbiAgZm9yIChjb25zdCBzdGFjayBvZiBzdGFja3MpIHtcbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHN0YWNrLmVudmlyb25tZW50O1xuICAgIGNvbnN0IGtleSA9IGhhc2hPYmplY3QoZW52aXJvbm1lbnQpO1xuICAgIGlmIChzdGFja0dyb3Vwcy5oYXMoa2V5KSkge1xuICAgICAgc3RhY2tHcm91cHMuZ2V0KGtleSkhWzFdLnB1c2goc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGUgZmlyc3QgdGltZSB3ZSBzZWUgYW4gZW52aXJvbm1lbnQsIHdlIG5lZWQgdG8gZmV0Y2ggYWxsIHN0YWNrcyBkZXBsb3llZCB0byBpdC5cbiAgICAgIGNvbnN0IGJlZm9yZSA9IGF3YWl0IGdldERlcGxveWVkU3RhY2tzKHNka1Byb3ZpZGVyLCBlbnZpcm9ubWVudCk7XG4gICAgICBzdGFja0dyb3Vwcy5zZXQoa2V5LCBbYmVmb3JlLCBbc3RhY2tdXSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZXNvdXJjZU1vdmVtZW50W10gPSBbXTtcbiAgZm9yIChjb25zdCBbXywgW2JlZm9yZSwgYWZ0ZXJdXSBvZiBzdGFja0dyb3Vwcykge1xuICAgIHJlc3VsdC5wdXNoKC4uLnJlc291cmNlTW92ZW1lbnRzKGJlZm9yZSwgYWZ0ZXIpKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQuZmlsdGVyKChtb3YpID0+IHtcbiAgICBjb25zdCBhZnRlciA9IG1vdlsxXTtcbiAgICByZXR1cm4gYWZ0ZXIuZXZlcnkoKGwpID0+ICFleGNsdWRlLmlzRXhjbHVkZWQobCkpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGVwbG95ZWRTdGFja3MoXG4gIHNka1Byb3ZpZGVyOiBTZGtQcm92aWRlcixcbiAgZW52aXJvbm1lbnQ6IGN4YXBpLkVudmlyb25tZW50LFxuKTogUHJvbWlzZTxDbG91ZEZvcm1hdGlvblN0YWNrW10+IHtcbiAgY29uc3QgY2ZuID0gKGF3YWl0IHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50KGVudmlyb25tZW50LCBNb2RlLkZvclJlYWRpbmcpKS5zZGsuY2xvdWRGb3JtYXRpb24oKTtcblxuICBjb25zdCBzdW1tYXJpZXMgPSBhd2FpdCBjZm4ucGFnaW5hdGVkTGlzdFN0YWNrcyh7XG4gICAgU3RhY2tTdGF0dXNGaWx0ZXI6IFtcbiAgICAgICdDUkVBVEVfQ09NUExFVEUnLFxuICAgICAgJ1VQREFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICAgICdJTVBPUlRfQ09NUExFVEUnLFxuICAgICAgJ1JPTExCQUNLX0NPTVBMRVRFJyxcbiAgICBdLFxuICB9KTtcblxuICBjb25zdCBub3JtYWxpemUgPSBhc3luYyAoc3VtbWFyeTogU3RhY2tTdW1tYXJ5KSA9PiB7XG4gICAgY29uc3QgdGVtcGxhdGVDb21tYW5kT3V0cHV0ID0gYXdhaXQgY2ZuLmdldFRlbXBsYXRlKHsgU3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEgfSk7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBkZXNlcmlhbGl6ZVN0cnVjdHVyZSh0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQuVGVtcGxhdGVCb2R5ID8/ICd7fScpO1xuICAgIHJldHVybiB7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIHN0YWNrTmFtZTogc3VtbWFyeS5TdGFja05hbWUhLFxuICAgICAgdGVtcGxhdGUsXG4gICAgfTtcbiAgfTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgcmV0dXJuIFByb21pc2UuYWxsKHN1bW1hcmllcy5tYXAobm9ybWFsaXplKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUeXBlZE1hcHBpbmdzKG1hcHBpbmdzOiBUeXBlZE1hcHBpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBTdHJpbmdXcml0ZVN0cmVhbSgpO1xuICBmbXRUeXBlZE1hcHBpbmdzKHN0cmVhbSwgbWFwcGluZ3MpO1xuICByZXR1cm4gc3RyZWFtLnRvU3RyaW5nKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyhwYXRoczogW3N0cmluZ1tdLCBzdHJpbmdbXV1bXSk6IHN0cmluZyB7XG4gIGNvbnN0IHN0cmVhbSA9IG5ldyBTdHJpbmdXcml0ZVN0cmVhbSgpO1xuICBmbXRBbWJpZ3VvdXNNYXBwaW5ncyhzdHJlYW0sIHBhdGhzKTtcbiAgcmV0dXJuIHN0cmVhbS50b1N0cmluZygpO1xufVxuIl19
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELG9EQUVDO0FBRUQsa0RBS0M7QUFFRCxvRUFFQztBQUVELDBEQUtDO0FBNUpELHNFQUtzQztBQUd0QyxxQ0FBa0Q7QUFFbEQsc0NBQWlDO0FBQ2pDLHdDQUErQztBQUUvQyxxREFBcUU7QUFFckUsK0RBQTJEO0FBRTNELDRDQUEwQjtBQUVuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFzQixFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxJQUFJLDRCQUFZLENBQUMsb0JBQW9CLE1BQU0sbUNBQW1DLEtBQUssQ0FBQyxPQUFPLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFDdkgsQ0FBQztZQUVELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxJQUFJLDRCQUFZLENBQ3BCLHlCQUF5QixXQUFXLG1DQUFtQyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FDdkcsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekMsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVELE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7WUFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLGdDQUFlLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztJQUVkLFNBQVMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsTUFBNkI7UUFDNUQsTUFBTSxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLDRCQUFZLENBQUMscUJBQXFCLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDNUQsT0FBTyxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hFLENBQUM7SUFFRCxTQUFTLGFBQWEsQ0FBQyxLQUFtQjtRQUN4QyxPQUFPO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixJQUFJLEVBQUUsRUFBRTtTQUNULENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxZQUFZLENBQ25CLEdBQVcsRUFDWCxXQUE4QixFQUM5QixTQUFnQyxFQUFFO1FBRWxDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDO1FBRTVELE9BQU8sSUFBSSxpQ0FBZ0IsQ0FDekI7WUFDRSxTQUFTO1lBQ1QsV0FBVztZQUNYLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUU7U0FDaEMsRUFDRCxTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxXQUF3QixFQUN4QixXQUE4QjtJQUU5QixNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sV0FBVyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQUUsYUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRWxHLE1BQU0sU0FBUyxHQUFHLE1BQU0sR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQzlDLGlCQUFpQixFQUFFO1lBQ2pCLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQixtQkFBbUI7U0FDcEI7S0FDRixDQUFDLENBQUM7SUFFSCxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsT0FBcUIsRUFBRSxFQUFFO1FBQ2hELE1BQU0scUJBQXFCLEdBQUcsTUFBTSxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE1BQU0sUUFBUSxHQUFHLElBQUEsMkJBQW9CLEVBQUMscUJBQXFCLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ2xGLE9BQU87WUFDTCxXQUFXO1lBQ1gsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFVO1lBQzdCLFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUYsd0VBQXdFO0lBQ3hFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQWdCLG9CQUFvQjtJQUNsQyxPQUFPLGNBQWMsQ0FBQywwQ0FBaUIsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxXQUE4QixFQUFFLFFBQXdCO0lBQzFGLE9BQU8sY0FBYyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7UUFDL0IsTUFBTSxHQUFHLEdBQUcsU0FBUyxXQUFXLENBQUMsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNqRSxJQUFBLHlDQUFnQixFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsNEJBQTRCO0lBQzFDLE9BQU8sY0FBYyxDQUFDLGtEQUF5QixDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLFdBQThCLEVBQUUsS0FBNkI7SUFDbkcsT0FBTyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUMvQixNQUFNLEdBQUcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pFLElBQUEsNkNBQW9CLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxFQUEyQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUFpQixFQUFFLENBQUM7SUFDdkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ1gsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0TWFwcGluZ3NIZWFkZXIgYXMgZm10TWFwcGluZ3NIZWFkZXIsXG4gIGZvcm1hdFR5cGVkTWFwcGluZ3MgYXMgZm10VHlwZWRNYXBwaW5ncyxcbiAgZm9ybWF0QW1iaWd1aXR5U2VjdGlvbkhlYWRlciBhcyBmbXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBNYXBwaW5nR3JvdXAgfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZXhjbHVkZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1c2VQcmVzY3JpYmVkTWFwcGluZ3MoXG4gIG1hcHBpbmdHcm91cHM6IE1hcHBpbmdHcm91cFtdLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4pOiBQcm9taXNlPFJlc291cmNlTWFwcGluZ1tdPiB7XG4gIGludGVyZmFjZSBTdGFja0dyb3VwIGV4dGVuZHMgTWFwcGluZ0dyb3VwIHtcbiAgICBzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrR3JvdXBzOiBTdGFja0dyb3VwW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBtYXBwaW5nR3JvdXBzKSB7XG4gICAgc3RhY2tHcm91cHMucHVzaCh7XG4gICAgICAuLi5ncm91cCxcbiAgICAgIHN0YWNrczogYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50T2YoZ3JvdXApKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBkZXN0aW5hdGlvbnNcbiAgZm9yIChsZXQgZ3JvdXAgb2Ygc3RhY2tHcm91cHMpIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgZGVzdGluYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhncm91cC5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoZGVzdGluYXRpb25zLmhhcyhkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIGRlc3RpbmF0aW9uIHJlc291cmNlICcke2Rlc3RpbmF0aW9ufScgaW4gZW52aXJvbm1lbnQgJHtncm91cC5hY2NvdW50fS8ke2dyb3VwLnJlZ2lvbn1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVzdGluYXRpb25zLmFkZChkZXN0aW5hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZXNvdXJjZU1hcHBpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgZm9yIChjb25zdCBbc291cmNlLCBkZXN0aW5hdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFpblVzZShzb3VyY2UsIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgU291cmNlIHJlc291cmNlICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblVzZShkZXN0aW5hdGlvbiwgZ3JvdXAuc3RhY2tzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgIGBEZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGFscmVhZHkgaW4gdXNlIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudE9mKGdyb3VwKTtcbiAgICAgIGNvbnN0IHNyYyA9IG1ha2VMb2NhdGlvbihzb3VyY2UsIGVudmlyb25tZW50LCBncm91cC5zdGFja3MpO1xuICAgICAgY29uc3QgZHN0ID0gbWFrZUxvY2F0aW9uKGRlc3RpbmF0aW9uLCBlbnZpcm9ubWVudCk7XG4gICAgICByZXN1bHQucHVzaChuZXcgUmVzb3VyY2VNYXBwaW5nKHNyYywgZHN0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gaW5Vc2UobG9jYXRpb246IHN0cmluZywgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jYXRpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAoc3RhY2tOYW1lID09IG51bGwgfHwgbG9naWNhbElkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEludmFsaWQgbG9jYXRpb24gJyR7bG9jYXRpb259J2ApO1xuICAgIH1cbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcbiAgICByZXR1cm4gc3RhY2sgIT0gbnVsbCAmJiBzdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Lltsb2dpY2FsSWRdICE9IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBlbnZpcm9ubWVudE9mKGdyb3VwOiBNYXBwaW5nR3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogZ3JvdXAuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogZ3JvdXAucmVnaW9uLFxuICAgICAgbmFtZTogJycsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VMb2NhdGlvbihcbiAgICBsb2M6IHN0cmluZyxcbiAgICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10gPSBbXSxcbiAgKTogUmVzb3VyY2VMb2NhdGlvbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvYy5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHN0YWNrID0gc3RhY2tzLmZpbmQoKHMpID0+IHMuc3RhY2tOYW1lID09PSBzdGFja05hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUxvY2F0aW9uKFxuICAgICAge1xuICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICB0ZW1wbGF0ZTogc3RhY2s/LnRlbXBsYXRlID8/IHt9LFxuICAgICAgfSxcbiAgICAgIGxvZ2ljYWxJZCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZXBsb3llZFN0YWNrcyhcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPENsb3VkRm9ybWF0aW9uU3RhY2tbXT4ge1xuICBjb25zdCBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIE1vZGUuRm9yUmVhZGluZykpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IHN1bW1hcmllcyA9IGF3YWl0IGNmbi5wYWdpbmF0ZWRMaXN0U3RhY2tzKHtcbiAgICBTdGFja1N0YXR1c0ZpbHRlcjogW1xuICAgICAgJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX0NPTVBMRVRFJyxcbiAgICAgICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgICAgJ0lNUE9SVF9DT01QTEVURScsXG4gICAgICAnUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgIF0sXG4gIH0pO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGFzeW5jIChzdW1tYXJ5OiBTdGFja1N1bW1hcnkpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBjZm4uZ2V0VGVtcGxhdGUoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lISB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKHRlbXBsYXRlQ29tbWFuZE91dHB1dC5UZW1wbGF0ZUJvZHkgPz8gJ3t9Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoc3VtbWFyaWVzLm1hcChub3JtYWxpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1hcHBpbmdzSGVhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShmbXRNYXBwaW5nc0hlYWRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUeXBlZE1hcHBpbmdzKGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCwgbWFwcGluZ3M6IFR5cGVkTWFwcGluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IHtcbiAgICBjb25zdCBlbnYgPSBgYXdzOi8vJHtlbnZpcm9ubWVudC5hY2NvdW50fS8ke2Vudmlyb25tZW50LnJlZ2lvbn1gO1xuICAgIGZtdFR5cGVkTWFwcGluZ3Moc3RyZWFtLCBtYXBwaW5ncywgZW52KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShmbXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFtYmlndW91c01hcHBpbmdzKGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCwgcGF0aHM6IFtzdHJpbmdbXSwgc3RyaW5nW11dW10pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oKHN0cmVhbSkgPT4ge1xuICAgIGNvbnN0IGVudiA9IGBhd3M6Ly8ke2Vudmlyb25tZW50LmFjY291bnR9LyR7ZW52aXJvbm1lbnQucmVnaW9ufWA7XG4gICAgZm10QW1iaWd1b3VzTWFwcGluZ3Moc3RyZWFtLCBwYXRocywgZW52KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRvU3RyZWFtKGNiOiAoc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pID0+IHZvaWQpOiBzdHJpbmcge1xuICBjb25zdCBzdHJlYW0gPSBuZXcgU3RyaW5nV3JpdGVTdHJlYW0oKTtcbiAgY2Ioc3RyZWFtKTtcbiAgcmV0dXJuIHN0cmVhbS50b1N0cmluZygpO1xufVxuIl19
|
|
@@ -1,7 +1,3 @@
|
|
|
1
1
|
import type { StackDefinition } from '@aws-sdk/client-cloudformation';
|
|
2
2
|
import type { CloudFormationStack, ResourceMapping } from './cloudformation';
|
|
3
|
-
/**
|
|
4
|
-
* Generates a list of stack definitions to be sent to the CloudFormation API
|
|
5
|
-
* by applying each mapping to the corresponding stack template(s).
|
|
6
|
-
*/
|
|
7
3
|
export declare function generateStackDefinitions(mappings: ResourceMapping[], deployedStacks: CloudFormationStack[], localStacks: CloudFormationStack[]): StackDefinition[];
|