@aws-cdk/toolkit-lib 1.1.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/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/drift/index.d.ts +1 -1
- package/lib/actions/drift/index.js +1 -1
- package/lib/actions/refactor/index.d.ts +1 -1
- package/lib/actions/refactor/index.js +1 -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 +3 -3
- package/lib/actions/watch/index.js +1 -1
- 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/source-builder.d.ts +2 -2
- package/lib/api/cloud-assembly/source-builder.js +1 -1
- 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/logs-monitor/logs-monitor.d.ts +1 -1
- package/lib/api/logs-monitor/logs-monitor.js +1 -1
- package/lib/api/notices/filter.js +1 -1
- package/lib/api/notices/notices.d.ts +1 -1
- package/lib/api/notices/notices.js +1 -1
- 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/{execution.d.ts → stack-definitions.d.ts} +0 -4
- package/lib/api/refactoring/stack-definitions.js +451 -0
- 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/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/toolkit.d.ts +1 -1
- package/lib/toolkit/toolkit.js +3 -3
- package/package.json +8 -8
- package/lib/api/refactoring/execution.js +0 -68
package/package.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"organization": true
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@aws-cdk/aws-service-spec": "^0.1.
|
|
37
|
+
"@aws-cdk/aws-service-spec": "^0.1.80",
|
|
38
38
|
"@aws-cdk/cli-plugin-contract": "2.181.0",
|
|
39
39
|
"@cdklabs/eslint-plugin": "^1.3.2",
|
|
40
40
|
"@jest/environment": "^29.7.0",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"@types/split2": "^4.2.3",
|
|
51
51
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
52
52
|
"@typescript-eslint/parser": "^8",
|
|
53
|
-
"aws-cdk-lib": "^2.
|
|
53
|
+
"aws-cdk-lib": "^2.200.1",
|
|
54
54
|
"aws-sdk-client-mock": "^4.1.0",
|
|
55
55
|
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
56
56
|
"commit-and-tag-version": "^12",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"eslint-config-prettier": "^10.1.5",
|
|
60
60
|
"eslint-import-resolver-typescript": "^3.10.1",
|
|
61
61
|
"eslint-plugin-import": "^2.31.0",
|
|
62
|
-
"eslint-plugin-jest": "^28.
|
|
62
|
+
"eslint-plugin-jest": "^28.13.0",
|
|
63
63
|
"eslint-plugin-jsdoc": "^50.7.1",
|
|
64
64
|
"eslint-plugin-prettier": "^5.4.1",
|
|
65
65
|
"fast-check": "^4.1.1",
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
"@aws-cdk/cli-plugin-contract": "^2"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@aws-cdk/cloud-assembly-schema": ">=44.
|
|
81
|
+
"@aws-cdk/cloud-assembly-schema": ">=44.4.0",
|
|
82
82
|
"@aws-cdk/cloudformation-diff": "^2",
|
|
83
83
|
"@aws-cdk/cx-api": "^2",
|
|
84
84
|
"@aws-sdk/client-appsync": "^3",
|
|
@@ -102,19 +102,19 @@
|
|
|
102
102
|
"@aws-sdk/credential-providers": "^3",
|
|
103
103
|
"@aws-sdk/ec2-metadata-service": "^3",
|
|
104
104
|
"@aws-sdk/lib-storage": "^3",
|
|
105
|
-
"@smithy/middleware-endpoint": "^4.1.
|
|
105
|
+
"@smithy/middleware-endpoint": "^4.1.11",
|
|
106
106
|
"@smithy/property-provider": "^4.0.4",
|
|
107
107
|
"@smithy/shared-ini-file-loader": "^4.0.4",
|
|
108
108
|
"@smithy/util-retry": "^4.0.5",
|
|
109
109
|
"@smithy/util-waiter": "^4.0.5",
|
|
110
110
|
"archiver": "^7.0.1",
|
|
111
111
|
"cdk-assets": "^3",
|
|
112
|
-
"cdk-from-cfn": "^0.
|
|
112
|
+
"cdk-from-cfn": "^0.220.0",
|
|
113
113
|
"chalk": "^4",
|
|
114
114
|
"chokidar": "^3",
|
|
115
115
|
"fs-extra": "^9",
|
|
116
116
|
"glob": "^11.0.2",
|
|
117
|
-
"minimatch": "
|
|
117
|
+
"minimatch": "10.0.1",
|
|
118
118
|
"p-limit": "^3",
|
|
119
119
|
"semver": "^7.7.2",
|
|
120
120
|
"split2": "^4.2.0",
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
"publishConfig": {
|
|
136
136
|
"access": "public"
|
|
137
137
|
},
|
|
138
|
-
"version": "1.1.
|
|
138
|
+
"version": "1.1.1",
|
|
139
139
|
"types": "lib/index.d.ts",
|
|
140
140
|
"exports": {
|
|
141
141
|
".": {
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateStackDefinitions = generateStackDefinitions;
|
|
4
|
-
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
5
|
-
/**
|
|
6
|
-
* Generates a list of stack definitions to be sent to the CloudFormation API
|
|
7
|
-
* by applying each mapping to the corresponding stack template(s).
|
|
8
|
-
*/
|
|
9
|
-
function generateStackDefinitions(mappings, deployedStacks, localStacks) {
|
|
10
|
-
const localTemplates = Object.fromEntries(localStacks.map((s) => [s.stackName, JSON.parse(JSON.stringify(s.template))]));
|
|
11
|
-
const deployedTemplates = Object.fromEntries(deployedStacks.map((s) => [s.stackName, JSON.parse(JSON.stringify(s.template))]));
|
|
12
|
-
// First, remove from the local templates any resources that are not in the deployed templates
|
|
13
|
-
iterate(localTemplates, (stackName, logicalResourceId) => {
|
|
14
|
-
const location = searchLocation(stackName, logicalResourceId, 'destination', 'source');
|
|
15
|
-
const deployedResource = deployedStacks.find((s) => s.stackName === location.stackName)?.template
|
|
16
|
-
.Resources?.[location.logicalResourceId];
|
|
17
|
-
if (deployedResource == null) {
|
|
18
|
-
delete localTemplates[stackName].Resources?.[logicalResourceId];
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
// Now do the opposite: add to the local templates any resources that are in the deployed templates
|
|
22
|
-
iterate(deployedTemplates, (stackName, logicalResourceId, deployedResource) => {
|
|
23
|
-
const location = searchLocation(stackName, logicalResourceId, 'source', 'destination');
|
|
24
|
-
const resources = Object
|
|
25
|
-
.entries(localTemplates)
|
|
26
|
-
.find(([name, _]) => name === location.stackName)?.[1].Resources;
|
|
27
|
-
const localResource = resources?.[location.logicalResourceId];
|
|
28
|
-
if (localResource == null) {
|
|
29
|
-
if (localTemplates[stackName]?.Resources) {
|
|
30
|
-
localTemplates[stackName].Resources[logicalResourceId] = deployedResource;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
// This is temporary, until CloudFormation supports CDK construct path updates in the refactor API
|
|
35
|
-
if (localResource.Metadata != null) {
|
|
36
|
-
localResource.Metadata['aws:cdk:path'] = deployedResource.Metadata?.['aws:cdk:path'];
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
function searchLocation(stackName, logicalResourceId, from, to) {
|
|
41
|
-
const mapping = mappings.find((m) => m[from].stack.stackName === stackName && m[from].logicalResourceId === logicalResourceId);
|
|
42
|
-
return mapping != null
|
|
43
|
-
? { stackName: mapping[to].stack.stackName, logicalResourceId: mapping[to].logicalResourceId }
|
|
44
|
-
: { stackName, logicalResourceId };
|
|
45
|
-
}
|
|
46
|
-
function iterate(templates, cb) {
|
|
47
|
-
Object.entries(templates).forEach(([stackName, template]) => {
|
|
48
|
-
Object.entries(template.Resources ?? {}).forEach(([logicalResourceId, resource]) => {
|
|
49
|
-
cb(stackName, logicalResourceId, resource);
|
|
50
|
-
});
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
for (const [stackName, template] of Object.entries(localTemplates)) {
|
|
54
|
-
if (Object.keys(template.Resources ?? {}).length === 0) {
|
|
55
|
-
throw new toolkit_error_1.ToolkitError(`Stack ${stackName} has no resources after refactor. You must add a resource to this stack. This resource can be a simple one, like a waitCondition resource type.`);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return Object.entries(localTemplates)
|
|
59
|
-
.filter(([stackName, _]) => mappings.some((m) => {
|
|
60
|
-
// Only send templates for stacks that are part of the mappings
|
|
61
|
-
return m.source.stack.stackName === stackName || m.destination.stack.stackName === stackName;
|
|
62
|
-
}))
|
|
63
|
-
.map(([stackName, template]) => ({
|
|
64
|
-
StackName: stackName,
|
|
65
|
-
TemplateBody: JSON.stringify(template),
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsNERBb0ZDO0FBMUZELCtEQUEyRDtBQUUzRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FDdEMsUUFBMkIsRUFDM0IsY0FBcUMsRUFDckMsV0FBa0M7SUFFbEMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDdkMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQTJCLENBQUMsQ0FBQyxDQUN4RyxDQUFDO0lBQ0YsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUMxQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBMkIsQ0FBQyxDQUFDLENBQzNHLENBQUM7SUFFRiw4RkFBOEY7SUFDOUYsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUFFO1FBQ3ZELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRXZGLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBUTthQUM5RixTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENB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Q25FLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksNEJBQVksQ0FDcEIsU0FBUyxTQUFTLGlKQUFpSixDQUNwSyxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1NBQ2xDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDekIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ2xCLCtEQUErRDtRQUMvRCxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQztJQUMvRixDQUFDLENBQUMsQ0FDSDtTQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztLQUN2QyxDQUFDLENBQUMsQ0FBQztBQUNSLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0YWNrRGVmaW5pdGlvbiB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7XG4gIENsb3VkRm9ybWF0aW9uUmVzb3VyY2UsXG4gIENsb3VkRm9ybWF0aW9uU3RhY2ssXG4gIENsb3VkRm9ybWF0aW9uVGVtcGxhdGUsXG4gIFJlc291cmNlTWFwcGluZyxcbn0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGxpc3Qgb2Ygc3RhY2sgZGVmaW5pdGlvbnMgdG8gYmUgc2VudCB0byB0aGUgQ2xvdWRGb3JtYXRpb24gQVBJXG4gKiBieSBhcHBseWluZyBlYWNoIG1hcHBpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc3RhY2sgdGVtcGxhdGUocykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVN0YWNrRGVmaW5pdGlvbnMoXG4gIG1hcHBpbmdzOiBSZXNvdXJjZU1hcHBpbmdbXSxcbiAgZGVwbG95ZWRTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSxcbiAgbG9jYWxTdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXSxcbik6IFN0YWNrRGVmaW5pdGlvbltdIHtcbiAgY29uc3QgbG9jYWxUZW1wbGF0ZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgbG9jYWxTdGFja3MubWFwKChzKSA9PiBbcy5zdGFja05hbWUsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocy50ZW1wbGF0ZSkpIGFzIENsb3VkRm9ybWF0aW9uVGVtcGxhdGVdKSxcbiAgKTtcbiAgY29uc3QgZGVwbG95ZWRUZW1wbGF0ZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgZGVwbG95ZWRTdGFja3MubWFwKChzKSA9PiBbcy5zdGFja05hbWUsIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocy50ZW1wbGF0ZSkpIGFzIENsb3VkRm9ybWF0aW9uVGVtcGxhdGVdKSxcbiAgKTtcblxuICAvLyBGaXJzdCwgcmVtb3ZlIGZyb20gdGhlIGxvY2FsIHRlbXBsYXRlcyBhbnkgcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBpbiB0aGUgZGVwbG95ZWQgdGVtcGxhdGVzXG4gIGl0ZXJhdGUobG9jYWxUZW1wbGF0ZXMsIChzdGFja05hbWUsIGxvZ2ljYWxSZXNvdXJjZUlkKSA9PiB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBzZWFyY2hMb2NhdGlvbihzdGFja05hbWUsIGxvZ2ljYWxSZXNvdXJjZUlkLCAnZGVzdGluYXRpb24nLCAnc291cmNlJyk7XG5cbiAgICBjb25zdCBkZXBsb3llZFJlc291cmNlID0gZGVwbG95ZWRTdGFja3MuZmluZCgocykgPT4gcy5zdGFja05hbWUgPT09IGxvY2F0aW9uLnN0YWNrTmFtZSk/LnRlbXBsYXRlXG4gICAgICAuUmVzb3VyY2VzPy5bbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWRdO1xuXG4gICAgaWYgKGRlcGxveWVkUmVzb3VyY2UgPT0gbnVsbCkge1xuICAgICAgZGVsZXRlIGxvY2FsVGVtcGxhdGVzW3N0YWNrTmFtZV0uUmVzb3VyY2VzPy5bbG9naWNhbFJlc291cmNlSWRdO1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gTm93IGRvIHRoZSBvcHBvc2l0ZTogYWRkIHRvIHRoZSBsb2NhbCB0ZW1wbGF0ZXMgYW55IHJlc291cmNlcyB0aGF0IGFyZSBpbiB0aGUgZGVwbG95ZWQgdGVtcGxhdGVzXG4gIGl0ZXJhdGUoZGVwbG95ZWRUZW1wbGF0ZXMsIChzdGFja05hbWUsIGxvZ2ljYWxSZXNvdXJjZUlkLCBkZXBsb3llZFJlc291cmNlKSA9PiB7XG4gICAgY29uc3QgbG9jYXRpb24gPSBzZWFyY2hMb2NhdGlvbihzdGFja05hbWUsIGxvZ2ljYWxSZXNvdXJjZUlkLCAnc291cmNlJywgJ2Rlc3RpbmF0aW9uJyk7XG5cbiAgICBjb25zdCByZXNvdXJjZXMgPSBPYmplY3RcbiAgICAgIC5lbnRyaWVzKGxvY2FsVGVtcGxhdGVzKVxuICAgICAgLmZpbmQoKFtuYW1lLCBfXSkgPT4gbmFtZSA9PT0gbG9jYXRpb24uc3RhY2tOYW1lKT8uWzFdLlJlc291cmNlcztcbiAgICBjb25zdCBsb2NhbFJlc291cmNlID0gcmVzb3VyY2VzPy5bbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWRdO1xuXG4gICAgaWYgKGxvY2FsUmVzb3VyY2UgPT0gbnVsbCkge1xuICAgICAgaWYgKGxvY2FsVGVtcGxhdGVzW3N0YWNrTmFtZV0/LlJlc291cmNlcykge1xuICAgICAgICBsb2NhbFRlbXBsYXRlc1tzdGFja05hbWVdLlJlc291cmNlc1tsb2dpY2FsUmVzb3VyY2VJZF0gPSBkZXBsb3llZFJlc291cmNlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyeSwgdW50aWwgQ2xvdWRGb3JtYXRpb24gc3VwcG9ydHMgQ0RLIGNvbnN0cnVjdCBwYXRoIHVwZGF0ZXMgaW4gdGhlIHJlZmFjdG9yIEFQSVxuICAgICAgaWYgKGxvY2FsUmVzb3VyY2UuTWV0YWRhdGEgIT0gbnVsbCkge1xuICAgICAgICBsb2NhbFJlc291cmNlLk1ldGFkYXRhWydhd3M6Y2RrOnBhdGgnXSA9IGRlcGxveWVkUmVzb3VyY2UuTWV0YWRhdGE/LlsnYXdzOmNkazpwYXRoJ107XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBmdW5jdGlvbiBzZWFyY2hMb2NhdGlvbihzdGFja05hbWU6IHN0cmluZywgbG9naWNhbFJlc291cmNlSWQ6IHN0cmluZywgZnJvbTogJ3NvdXJjZScgfCAnZGVzdGluYXRpb24nLCB0bzogJ3NvdXJjZScgfCAnZGVzdGluYXRpb24nKSB7XG4gICAgY29uc3QgbWFwcGluZyA9IG1hcHBpbmdzLmZpbmQoXG4gICAgICAobSkgPT4gbVtmcm9tXS5zdGFjay5zdGFja05hbWUgPT09IHN0YWNrTmFtZSAmJiBtW2Zyb21dLmxvZ2ljYWxSZXNvdXJjZUlkID09PSBsb2dpY2FsUmVzb3VyY2VJZCxcbiAgICApO1xuICAgIHJldHVybiBtYXBwaW5nICE9IG51bGxcbiAgICAgID8geyBzdGFja05hbWU6IG1hcHBpbmdbdG9dLnN0YWNrLnN0YWNrTmFtZSwgbG9naWNhbFJlc291cmNlSWQ6IG1hcHBpbmdbdG9dLmxvZ2ljYWxSZXNvdXJjZUlkIH1cbiAgICAgIDogeyBzdGFja05hbWUsIGxvZ2ljYWxSZXNvdXJjZUlkIH07XG4gIH1cblxuICBmdW5jdGlvbiBpdGVyYXRlKFxuICAgIHRlbXBsYXRlczogUmVjb3JkPHN0cmluZywgQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZT4sXG4gICAgY2I6IChzdGFja05hbWU6IHN0cmluZywgbG9naWNhbFJlc291cmNlSWQ6IHN0cmluZywgcmVzb3VyY2U6IENsb3VkRm9ybWF0aW9uUmVzb3VyY2UpID0+IHZvaWQsXG4gICkge1xuICAgIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcykuZm9yRWFjaCgoW3N0YWNrTmFtZSwgdGVtcGxhdGVdKSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyh0ZW1wbGF0ZS5SZXNvdXJjZXMgPz8ge30pLmZvckVhY2goKFtsb2dpY2FsUmVzb3VyY2VJZCwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICAgIGNiKHN0YWNrTmFtZSwgbG9naWNhbFJlc291cmNlSWQsIHJlc291cmNlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZm9yIChjb25zdCBbc3RhY2tOYW1lLCB0ZW1wbGF0ZV0gb2YgT2JqZWN0LmVudHJpZXMobG9jYWxUZW1wbGF0ZXMpKSB7XG4gICAgaWYgKE9iamVjdC5rZXlzKHRlbXBsYXRlLlJlc291cmNlcyA/PyB7fSkubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICBgU3RhY2sgJHtzdGFja05hbWV9IGhhcyBubyByZXNvdXJjZXMgYWZ0ZXIgcmVmYWN0b3IuIFlvdSBtdXN0IGFkZCBhIHJlc291cmNlIHRvIHRoaXMgc3RhY2suIFRoaXMgcmVzb3VyY2UgY2FuIGJlIGEgc2ltcGxlIG9uZSwgbGlrZSBhIHdhaXRDb25kaXRpb24gcmVzb3VyY2UgdHlwZS5gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmVudHJpZXMobG9jYWxUZW1wbGF0ZXMpXG4gICAgLmZpbHRlcigoW3N0YWNrTmFtZSwgX10pID0+XG4gICAgICBtYXBwaW5ncy5zb21lKChtKSA9PiB7XG4gICAgICAgIC8vIE9ubHkgc2VuZCB0ZW1wbGF0ZXMgZm9yIHN0YWNrcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBtYXBwaW5nc1xuICAgICAgICByZXR1cm4gbS5zb3VyY2Uuc3RhY2suc3RhY2tOYW1lID09PSBzdGFja05hbWUgfHwgbS5kZXN0aW5hdGlvbi5zdGFjay5zdGFja05hbWUgPT09IHN0YWNrTmFtZTtcbiAgICAgIH0pLFxuICAgIClcbiAgICAubWFwKChbc3RhY2tOYW1lLCB0ZW1wbGF0ZV0pID0+ICh7XG4gICAgICBTdGFja05hbWU6IHN0YWNrTmFtZSxcbiAgICAgIFRlbXBsYXRlQm9keTogSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpLFxuICAgIH0pKTtcbn1cbiJdfQ==
|