@cdktn/cli-core 0.22.0-pre.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/README.md +3 -0
- package/ambient.d.ts +13 -0
- package/eslint.config.mjs +82 -0
- package/jest.config.js +20 -0
- package/package.json +139 -0
- package/src/lib/cdktf-config.d.ts +16 -0
- package/src/lib/cdktf-config.d.ts.map +1 -0
- package/src/lib/cdktf-config.js +108 -0
- package/src/lib/cdktf-project-io-handler.d.ts +20 -0
- package/src/lib/cdktf-project-io-handler.d.ts.map +1 -0
- package/src/lib/cdktf-project-io-handler.js +84 -0
- package/src/lib/cdktf-project.d.ts +111 -0
- package/src/lib/cdktf-project.d.ts.map +1 -0
- package/src/lib/cdktf-project.js +371 -0
- package/src/lib/cdktf-stack.d.ts +134 -0
- package/src/lib/cdktf-stack.d.ts.map +1 -0
- package/src/lib/cdktf-stack.js +386 -0
- package/src/lib/convert.d.ts +6 -0
- package/src/lib/convert.d.ts.map +1 -0
- package/src/lib/convert.js +51 -0
- package/src/lib/dependencies/cdktf-config-manager.d.ts +12 -0
- package/src/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
- package/src/lib/dependencies/cdktf-config-manager.js +36 -0
- package/src/lib/dependencies/dependency-manager.d.ts +84 -0
- package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
- package/src/lib/dependencies/dependency-manager.js +365 -0
- package/src/lib/dependencies/package-manager.d.ts +18 -0
- package/src/lib/dependencies/package-manager.d.ts.map +1 -0
- package/src/lib/dependencies/package-manager.js +574 -0
- package/src/lib/dependencies/prebuilt-providers.d.ts +18 -0
- package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
- package/src/lib/dependencies/prebuilt-providers.js +204 -0
- package/src/lib/dependencies/registry-api.d.ts +8 -0
- package/src/lib/dependencies/registry-api.d.ts.map +1 -0
- package/src/lib/dependencies/registry-api.js +77 -0
- package/src/lib/dependencies/version-constraints.d.ts +8 -0
- package/src/lib/dependencies/version-constraints.d.ts.map +1 -0
- package/src/lib/dependencies/version-constraints.js +95 -0
- package/src/lib/error-reporting.d.ts +10 -0
- package/src/lib/error-reporting.d.ts.map +1 -0
- package/src/lib/error-reporting.js +133 -0
- package/src/lib/errors.d.ts +6 -0
- package/src/lib/errors.d.ts.map +1 -0
- package/src/lib/errors.js +10 -0
- package/src/lib/execution-logs.d.ts +3 -0
- package/src/lib/execution-logs.d.ts.map +1 -0
- package/src/lib/execution-logs.js +47 -0
- package/src/lib/get.d.ts +25 -0
- package/src/lib/get.d.ts.map +1 -0
- package/src/lib/get.js +90 -0
- package/src/lib/helpers/stack-helpers.d.ts +16 -0
- package/src/lib/helpers/stack-helpers.d.ts.map +1 -0
- package/src/lib/helpers/stack-helpers.js +155 -0
- package/src/lib/index.d.ts +15 -0
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +44 -0
- package/src/lib/init.d.ts +37 -0
- package/src/lib/init.d.ts.map +1 -0
- package/src/lib/init.js +131 -0
- package/src/lib/local-provider-constraints.d.ts +28 -0
- package/src/lib/local-provider-constraints.d.ts.map +1 -0
- package/src/lib/local-provider-constraints.js +95 -0
- package/src/lib/local-provider-versions.d.ts +12 -0
- package/src/lib/local-provider-versions.d.ts.map +1 -0
- package/src/lib/local-provider-versions.js +73 -0
- package/src/lib/models/deploy-machine.d.ts +128 -0
- package/src/lib/models/deploy-machine.d.ts.map +1 -0
- package/src/lib/models/deploy-machine.js +280 -0
- package/src/lib/models/pty-process.d.ts +29 -0
- package/src/lib/models/pty-process.d.ts.map +1 -0
- package/src/lib/models/pty-process.js +132 -0
- package/src/lib/models/schema.d.ts +2307 -0
- package/src/lib/models/schema.d.ts.map +1 -0
- package/src/lib/models/schema.js +181 -0
- package/src/lib/models/terraform-cli.d.ts +72 -0
- package/src/lib/models/terraform-cli.d.ts.map +1 -0
- package/src/lib/models/terraform-cli.js +357 -0
- package/src/lib/models/terraform.d.ts +125 -0
- package/src/lib/models/terraform.d.ts.map +1 -0
- package/src/lib/models/terraform.js +72 -0
- package/src/lib/output.d.ts +23 -0
- package/src/lib/output.d.ts.map +1 -0
- package/src/lib/output.js +211 -0
- package/src/lib/provider-add.d.ts +15 -0
- package/src/lib/provider-add.d.ts.map +1 -0
- package/src/lib/provider-add.js +30 -0
- package/src/lib/server/terraform-logs.d.ts +2 -0
- package/src/lib/server/terraform-logs.d.ts.map +1 -0
- package/src/lib/server/terraform-logs.js +19 -0
- package/src/lib/synth-stack.d.ts +29 -0
- package/src/lib/synth-stack.d.ts.map +1 -0
- package/src/lib/synth-stack.js +251 -0
- package/src/lib/synth.d.ts +7 -0
- package/src/lib/synth.d.ts.map +1 -0
- package/src/lib/synth.js +67 -0
- package/src/lib/terraform-json.d.ts +1015 -0
- package/src/lib/terraform-json.d.ts.map +1 -0
- package/src/lib/terraform-json.js +82 -0
- package/src/lib/terraform-provider-lock.d.ts +25 -0
- package/src/lib/terraform-provider-lock.d.ts.map +1 -0
- package/src/lib/terraform-provider-lock.js +95 -0
- package/src/lib/watch.d.ts +16 -0
- package/src/lib/watch.d.ts.map +1 -0
- package/src/lib/watch.js +155 -0
- package/templates/csharp/.hooks.sscaff.js +63 -0
- package/templates/csharp/MainStack.cs +15 -0
- package/templates/csharp/MyTerraformStack.csproj +13 -0
- package/templates/csharp/Program.cs +17 -0
- package/templates/csharp/TestProgram.cs +42 -0
- package/templates/csharp/cdktf.json +11 -0
- package/templates/csharp/help +42 -0
- package/templates/csharp/{{}}.gitignore +345 -0
- package/templates/go/.hooks.sscaff.js +70 -0
- package/templates/go/cdktf.json +12 -0
- package/templates/go/go.mod +8 -0
- package/templates/go/help +32 -0
- package/templates/go/main.go +22 -0
- package/templates/go/main_test.go +42 -0
- package/templates/go/{{}}.gitignore +21 -0
- package/templates/java/.hooks.sscaff.js +64 -0
- package/templates/java/build.gradle +55 -0
- package/templates/java/cdktf.json +12 -0
- package/templates/java/gradle.properties +1 -0
- package/templates/java/gradlew +248 -0
- package/templates/java/gradlew.bat +92 -0
- package/templates/java/help +35 -0
- package/templates/java/settings.gradle +5 -0
- package/templates/java/src/main/java/com/mycompany/app/Main.java +16 -0
- package/templates/java/src/main/java/com/mycompany/app/MainStack.java +14 -0
- package/templates/java/src/test/java/com/company/app/MainTest.java +38 -0
- package/templates/java/{{}}.gitignore +14 -0
- package/templates/python/.hooks.sscaff.js +59 -0
- package/templates/python/Pipfile +7 -0
- package/templates/python/cdktf.json +12 -0
- package/templates/python/help +42 -0
- package/templates/python/main-test.py +26 -0
- package/templates/python/main.py +16 -0
- package/templates/python/{{}}.gitignore +7 -0
- package/templates/python-pip/.hooks.sscaff.js +63 -0
- package/templates/python-pip/cdktf.json +12 -0
- package/templates/python-pip/help +35 -0
- package/templates/python-pip/main-test.py +23 -0
- package/templates/python-pip/main.py +16 -0
- package/templates/python-pip/{{}}.gitignore +7 -0
- package/templates/typescript/.hooks.sscaff.js +78 -0
- package/templates/typescript/__tests__/main-test.ts +89 -0
- package/templates/typescript/cdktf.json +11 -0
- package/templates/typescript/help +51 -0
- package/templates/typescript/jest.config.js +187 -0
- package/templates/typescript/main.ts +14 -0
- package/templates/typescript/package.json +22 -0
- package/templates/typescript/setup.js +2 -0
- package/templates/typescript/tsconfig.json +35 -0
- package/templates/typescript/{{}}.gitignore +11 -0
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CdktfStack = void 0;
|
|
4
|
+
const output_1 = require("./output");
|
|
5
|
+
const commons_1 = require("@cdktn/commons");
|
|
6
|
+
const terraform_logs_1 = require("./server/terraform-logs");
|
|
7
|
+
const terraform_cli_1 = require("./models/terraform-cli");
|
|
8
|
+
const dependency_manager_1 = require("./dependencies/dependency-manager");
|
|
9
|
+
const terraform_json_1 = require("./terraform-json");
|
|
10
|
+
const terraform_provider_lock_1 = require("./terraform-provider-lock");
|
|
11
|
+
const convert_1 = require("./convert");
|
|
12
|
+
async function getTerraformClient(abortSignal, stack, createTerraformLogHandler) {
|
|
13
|
+
return new terraform_cli_1.TerraformCli(abortSignal, stack, createTerraformLogHandler);
|
|
14
|
+
}
|
|
15
|
+
class CdktfStack {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
this.stopped = false;
|
|
19
|
+
this.currentState = "idle";
|
|
20
|
+
this.stack = options.stack;
|
|
21
|
+
this.parsedContent = terraform_json_1.terraformJsonSchema.parse(JSON.parse(this.stack.content));
|
|
22
|
+
}
|
|
23
|
+
get isPending() {
|
|
24
|
+
return this.currentState === "idle" && !this.stopped;
|
|
25
|
+
}
|
|
26
|
+
get isDone() {
|
|
27
|
+
return (this.currentState === "done" ||
|
|
28
|
+
this.currentState === "errored" ||
|
|
29
|
+
this.stopped);
|
|
30
|
+
}
|
|
31
|
+
get isRunning() {
|
|
32
|
+
return !this.isPending && !this.isDone;
|
|
33
|
+
}
|
|
34
|
+
updateState(update) {
|
|
35
|
+
commons_1.logger.debug(`[${this.stack.name}]: ${update.type}`);
|
|
36
|
+
this.currentState = update.type;
|
|
37
|
+
switch (update.type) {
|
|
38
|
+
case "idle":
|
|
39
|
+
case "done":
|
|
40
|
+
break;
|
|
41
|
+
case "errored":
|
|
42
|
+
this.error = update.error;
|
|
43
|
+
this.options.onUpdate(update);
|
|
44
|
+
break;
|
|
45
|
+
case "outputs fetched":
|
|
46
|
+
case "deployed":
|
|
47
|
+
commons_1.logger.debug(`Outputs: ${JSON.stringify(update.outputs)}`);
|
|
48
|
+
commons_1.logger.debug(`OutputsByConstructId: ${JSON.stringify(update.outputsByConstructId)}`);
|
|
49
|
+
this.outputs = update.outputs;
|
|
50
|
+
this.outputsByConstructId = update.outputsByConstructId;
|
|
51
|
+
this.options.onUpdate(update);
|
|
52
|
+
break;
|
|
53
|
+
default:
|
|
54
|
+
this.options.onUpdate(update);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
createTerraformLogHandler(phase, filters) {
|
|
59
|
+
commons_1.logger.debug("Creating terraform log handler", phase);
|
|
60
|
+
const onLog = this.options.onLog;
|
|
61
|
+
return (msg, isError = false) => {
|
|
62
|
+
const message = (0, terraform_logs_1.extractJsonLogIfPresent)(msg);
|
|
63
|
+
commons_1.logger.debug(`[${this.options.stack.name}](${phase}): ${msg}`);
|
|
64
|
+
const filterToApply = filters === null || filters === void 0 ? void 0 : filters.find((filter) => filter.condition(message));
|
|
65
|
+
const filteredMessage = filterToApply
|
|
66
|
+
? filterToApply.transform(message)
|
|
67
|
+
: message;
|
|
68
|
+
if (filteredMessage) {
|
|
69
|
+
commons_1.logger.debug(`Filter ${filterToApply} applied on line '${message}' with result '${filteredMessage}'`);
|
|
70
|
+
}
|
|
71
|
+
if (onLog) {
|
|
72
|
+
onLog({ message: filteredMessage, isError });
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
async terraformClient() {
|
|
77
|
+
return await getTerraformClient(this.options.abortSignal, this.options.stack, this.createTerraformLogHandler.bind(this));
|
|
78
|
+
}
|
|
79
|
+
async initalizeTerraform(noColor, skipProviderLock, migrateState) {
|
|
80
|
+
const terraform = await this.terraformClient();
|
|
81
|
+
const needsLockfileUpdate = skipProviderLock
|
|
82
|
+
? false
|
|
83
|
+
: await this.checkNeedsLockfileUpdate();
|
|
84
|
+
const needsUpgrade = await this.checkNeedsUpgrade();
|
|
85
|
+
await terraform.init({
|
|
86
|
+
needsUpgrade,
|
|
87
|
+
noColor: noColor !== null && noColor !== void 0 ? noColor : false,
|
|
88
|
+
needsLockfileUpdate,
|
|
89
|
+
migrateState: migrateState !== null && migrateState !== void 0 ? migrateState : false,
|
|
90
|
+
});
|
|
91
|
+
return terraform;
|
|
92
|
+
}
|
|
93
|
+
requiredProviders() {
|
|
94
|
+
var _a;
|
|
95
|
+
// Read required providers from the stack output
|
|
96
|
+
const requiredProviders = (_a = this.parsedContent.terraform) === null || _a === void 0 ? void 0 : _a.required_providers;
|
|
97
|
+
return Object.values(requiredProviders || {}).reduce((acc, obj) => {
|
|
98
|
+
const constraint = new dependency_manager_1.ProviderConstraint(obj.source, obj.version);
|
|
99
|
+
acc[constraint.source] = constraint;
|
|
100
|
+
return acc;
|
|
101
|
+
}, {});
|
|
102
|
+
}
|
|
103
|
+
async checkNeedsLockfileUpdate() {
|
|
104
|
+
if (this.options.migrateState) {
|
|
105
|
+
// If we're migrating state, we need to init
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
const lock = new terraform_provider_lock_1.TerraformProviderLock(this.stack.workingDirectory);
|
|
109
|
+
const lockFileExists = await lock.hasProviderLockFile();
|
|
110
|
+
if (!lockFileExists) {
|
|
111
|
+
// If we don't have a lock file, this is probably the first init
|
|
112
|
+
return true;
|
|
113
|
+
}
|
|
114
|
+
const requiredProviders = this.requiredProviders();
|
|
115
|
+
for (const provider of Object.values(requiredProviders)) {
|
|
116
|
+
const hasProvider = await lock.hasMatchingProvider(provider);
|
|
117
|
+
if (!hasProvider) {
|
|
118
|
+
// If we don't have a provider or version doesn't match, we need to init
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
async checkNeedsUpgrade() {
|
|
125
|
+
const lock = new terraform_provider_lock_1.TerraformProviderLock(this.stack.workingDirectory);
|
|
126
|
+
const allProviders = this.requiredProviders();
|
|
127
|
+
const lockedProviders = Object.values(await lock.providers());
|
|
128
|
+
// Check if any provider contained in `providers` violates constraints in `lockedProviders`
|
|
129
|
+
// Upgrade if some provider constraint not met
|
|
130
|
+
// If a provider wasn't preset in lockedProviders, that's fine; it will just get added
|
|
131
|
+
return lockedProviders.some((lockedProvider) => {
|
|
132
|
+
var _a;
|
|
133
|
+
const lockedConstraint = lockedProvider.constraints;
|
|
134
|
+
if (!lockedConstraint) {
|
|
135
|
+
// Provider lock doesn't have a constraint specified, so we can't check.
|
|
136
|
+
// This shouldn't happen
|
|
137
|
+
commons_1.logger.debug(`Provider lock doesn't have a constraint for ${lockedProvider.name}`);
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
const provider = allProviders[lockedConstraint.source];
|
|
141
|
+
if (!provider) {
|
|
142
|
+
// else no longer using this provider, so won't cause problems
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
return !lockedConstraint.matchesVersion((_a = provider.version) !== null && _a !== void 0 ? _a : ">0");
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
async run(cb) {
|
|
149
|
+
if (this.stopped) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
try {
|
|
153
|
+
this.currentWorkPromise = cb();
|
|
154
|
+
await this.currentWorkPromise;
|
|
155
|
+
this.updateState({ type: "done" });
|
|
156
|
+
}
|
|
157
|
+
catch (e) {
|
|
158
|
+
commons_1.logger.trace("Error in currentWorkPromise", e);
|
|
159
|
+
this.currentWorkPromise = undefined;
|
|
160
|
+
this.updateState({
|
|
161
|
+
type: "errored",
|
|
162
|
+
stackName: this.stack.name,
|
|
163
|
+
error: String(e),
|
|
164
|
+
});
|
|
165
|
+
throw e;
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
this.currentWorkPromise = undefined;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async diff({ refreshOnly, terraformParallelism, vars, varFiles, noColor, }) {
|
|
172
|
+
await this.run(async () => {
|
|
173
|
+
this.updateState({ type: "planning", stackName: this.stack.name });
|
|
174
|
+
const terraform = await this.terraformClient();
|
|
175
|
+
await terraform.plan({
|
|
176
|
+
destroy: false,
|
|
177
|
+
refreshOnly,
|
|
178
|
+
parallelism: terraformParallelism,
|
|
179
|
+
vars,
|
|
180
|
+
varFiles,
|
|
181
|
+
noColor,
|
|
182
|
+
});
|
|
183
|
+
this.updateState({ type: "planned", stackName: this.stack.name });
|
|
184
|
+
// Find generated file
|
|
185
|
+
const configFile = await (0, terraform_cli_1.tryReadGeneratedConfigurationFile)(this.stack.workingDirectory);
|
|
186
|
+
if (configFile) {
|
|
187
|
+
this.updateState({
|
|
188
|
+
type: "import with configuration detected",
|
|
189
|
+
stackName: this.stack.name,
|
|
190
|
+
configuration: configFile,
|
|
191
|
+
});
|
|
192
|
+
const convertedCode = await (0, convert_1.convertConfigurationFile)(configFile, this.stack.workingDirectory);
|
|
193
|
+
this.updateState({
|
|
194
|
+
type: "import with configuration converted",
|
|
195
|
+
stackName: this.stack.name,
|
|
196
|
+
configuration: convertedCode,
|
|
197
|
+
});
|
|
198
|
+
const onLog = this.options.onLog;
|
|
199
|
+
if (onLog) {
|
|
200
|
+
onLog({
|
|
201
|
+
message: `Import without configuration detected. Terraform has created configuration for it:
|
|
202
|
+
${configFile}
|
|
203
|
+
|
|
204
|
+
CDKTN has translated the code to the following:
|
|
205
|
+
|
|
206
|
+
${convertedCode}
|
|
207
|
+
|
|
208
|
+
Please review the code and make any necessary changes before adding it to your codebase.
|
|
209
|
+
Make sure to only copy the code within the construct's constructor.
|
|
210
|
+
|
|
211
|
+
NOTE: Your resource has not yet become managed by CDKTN.
|
|
212
|
+
To finish the import remove the call "generateConfigForImport", add the above code within the construct's constructor, and then append the call importFrom(<resource_id_to_import_from>) to the generated code:
|
|
213
|
+
|
|
214
|
+
new SomeResource(...).importFrom("some_id")
|
|
215
|
+
`,
|
|
216
|
+
isError: false,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
await (0, terraform_cli_1.tryRemoveGeneratedConfigurationFile)(this.stack.workingDirectory);
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
async deploy(opts) {
|
|
224
|
+
const { refreshOnly, terraformParallelism, noColor, vars, varFiles } = opts;
|
|
225
|
+
await this.run(async () => {
|
|
226
|
+
this.updateState({ type: "planning", stackName: this.stack.name });
|
|
227
|
+
const terraform = await this.terraformClient();
|
|
228
|
+
const { cancelled } = await terraform.deploy({
|
|
229
|
+
autoApprove: this.options.autoApprove,
|
|
230
|
+
refreshOnly,
|
|
231
|
+
parallelism: terraformParallelism,
|
|
232
|
+
vars,
|
|
233
|
+
varFiles,
|
|
234
|
+
noColor,
|
|
235
|
+
}, (state) => {
|
|
236
|
+
// state updates while apply runs that affect the UI
|
|
237
|
+
if (state.type === "running" && !state.cancelled) {
|
|
238
|
+
this.updateState({
|
|
239
|
+
type: "deploying",
|
|
240
|
+
stackName: this.stack.name,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
else if (state.type === "waiting for approval") {
|
|
244
|
+
this.updateState({
|
|
245
|
+
type: "waiting for stack approval",
|
|
246
|
+
stackName: this.stack.name,
|
|
247
|
+
approve: state.approve,
|
|
248
|
+
reject: () => {
|
|
249
|
+
state.reject();
|
|
250
|
+
this.updateState({
|
|
251
|
+
type: "dismissed",
|
|
252
|
+
stackName: this.stack.name,
|
|
253
|
+
});
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
else if (state.type === "waiting for sentinel override") {
|
|
258
|
+
this.updateState({
|
|
259
|
+
type: "waiting for stack sentinel override",
|
|
260
|
+
stackName: this.stack.name,
|
|
261
|
+
override: state.override,
|
|
262
|
+
reject: () => {
|
|
263
|
+
state.reject();
|
|
264
|
+
this.updateState({
|
|
265
|
+
type: "dismissed",
|
|
266
|
+
stackName: this.stack.name,
|
|
267
|
+
});
|
|
268
|
+
},
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
else if (state.type === "external approval reply") {
|
|
272
|
+
this.updateState({
|
|
273
|
+
type: "external stack approval reply",
|
|
274
|
+
stackName: this.stack.name,
|
|
275
|
+
approved: state.approved,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
else if (state.type === "external sentinel override reply") {
|
|
279
|
+
this.updateState({
|
|
280
|
+
type: "external stack sentinel override reply",
|
|
281
|
+
stackName: this.stack.name,
|
|
282
|
+
overridden: state.overridden,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
});
|
|
286
|
+
if (!cancelled) {
|
|
287
|
+
const outputs = await terraform.output();
|
|
288
|
+
const outputsByConstructId = (0, output_1.getConstructIdsForOutputs)(JSON.parse(this.stack.content), outputs);
|
|
289
|
+
this.updateState({
|
|
290
|
+
type: "deployed",
|
|
291
|
+
stackName: this.stack.name,
|
|
292
|
+
outputs,
|
|
293
|
+
outputsByConstructId,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
async destroy(opts) {
|
|
299
|
+
const { terraformParallelism, noColor, vars, varFiles } = opts;
|
|
300
|
+
await this.run(async () => {
|
|
301
|
+
this.updateState({ type: "planning", stackName: this.stack.name });
|
|
302
|
+
const terraform = await this.terraformClient();
|
|
303
|
+
const { cancelled } = await terraform.destroy({
|
|
304
|
+
autoApprove: this.options.autoApprove,
|
|
305
|
+
parallelism: terraformParallelism,
|
|
306
|
+
vars,
|
|
307
|
+
varFiles,
|
|
308
|
+
noColor,
|
|
309
|
+
}, (state) => {
|
|
310
|
+
// state updates while apply runs that affect the UI
|
|
311
|
+
if (state.type === "running" && !state.cancelled) {
|
|
312
|
+
this.updateState({
|
|
313
|
+
type: "destroying",
|
|
314
|
+
stackName: this.stack.name,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
else if (state.type === "waiting for approval") {
|
|
318
|
+
this.updateState({
|
|
319
|
+
type: "waiting for stack approval",
|
|
320
|
+
stackName: this.stack.name,
|
|
321
|
+
approve: state.approve,
|
|
322
|
+
reject: () => {
|
|
323
|
+
state.reject();
|
|
324
|
+
this.updateState({
|
|
325
|
+
type: "dismissed",
|
|
326
|
+
stackName: this.stack.name,
|
|
327
|
+
});
|
|
328
|
+
},
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
else if (state.type === "waiting for sentinel override") {
|
|
332
|
+
this.updateState({
|
|
333
|
+
type: "waiting for stack sentinel override",
|
|
334
|
+
stackName: this.stack.name,
|
|
335
|
+
override: state.override,
|
|
336
|
+
reject: () => {
|
|
337
|
+
state.reject();
|
|
338
|
+
this.updateState({
|
|
339
|
+
type: "dismissed",
|
|
340
|
+
stackName: this.stack.name,
|
|
341
|
+
});
|
|
342
|
+
},
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
else if (state.type === "external approval reply") {
|
|
346
|
+
this.updateState({
|
|
347
|
+
type: "external stack approval reply",
|
|
348
|
+
stackName: this.stack.name,
|
|
349
|
+
approved: state.approved,
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
else if (state.type === "external sentinel override reply") {
|
|
353
|
+
this.updateState({
|
|
354
|
+
type: "external stack sentinel override reply",
|
|
355
|
+
stackName: this.stack.name,
|
|
356
|
+
overridden: state.overridden,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
});
|
|
360
|
+
if (!cancelled)
|
|
361
|
+
this.updateState({
|
|
362
|
+
type: "destroyed",
|
|
363
|
+
stackName: this.stack.name,
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
async fetchOutputs() {
|
|
368
|
+
await this.run(async () => {
|
|
369
|
+
const terraform = await this.terraformClient();
|
|
370
|
+
const outputs = await terraform.output();
|
|
371
|
+
const outputsByConstructId = (0, output_1.getConstructIdsForOutputs)(JSON.parse(this.stack.content), outputs);
|
|
372
|
+
this.updateState({
|
|
373
|
+
type: "outputs fetched",
|
|
374
|
+
stackName: this.stack.name,
|
|
375
|
+
outputs,
|
|
376
|
+
outputsByConstructId,
|
|
377
|
+
});
|
|
378
|
+
});
|
|
379
|
+
return this.outputs;
|
|
380
|
+
}
|
|
381
|
+
async stop() {
|
|
382
|
+
this.stopped = true;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
exports.CdktfStack = CdktfStack;
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGt0Zi1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxxQ0FBNkU7QUFDN0UsNENBQXdDO0FBQ3hDLDREQUFrRTtBQUNsRSwwREFLZ0M7QUFDaEMsMEVBQXVFO0FBQ3ZFLHFEQUF1RTtBQUN2RSx1RUFBa0U7QUFDbEUsdUNBQXFEO0FBNEZyRCxLQUFLLFVBQVUsa0JBQWtCLENBQy9CLFdBQXdCLEVBQ3hCLEtBQXVCLEVBQ3ZCLHlCQUdpRDtJQUVqRCxPQUFPLElBQUksNEJBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLHlCQUF5QixDQUFDLENBQUM7QUFDekUsQ0FBQztBQTJCRCxNQUFhLFVBQVU7SUFVckIsWUFBbUIsT0FBMEI7UUFBMUIsWUFBTyxHQUFQLE9BQU8sQ0FBbUI7UUFOdEMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUVQLGlCQUFZLEdBQXFCLE1BQU0sQ0FBQztRQUt0RCxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxvQ0FBbUIsQ0FBQyxLQUFLLENBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDL0IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUNELElBQVcsTUFBTTtRQUNmLE9BQU8sQ0FDTCxJQUFJLENBQUMsWUFBWSxLQUFLLE1BQU07WUFDNUIsSUFBSSxDQUFDLFlBQVksS0FBSyxTQUFTO1lBQy9CLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7SUFFTyxXQUFXLENBQ2pCLE1BT29CO1FBRXBCLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLE1BQU0sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQWlDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNwQixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssTUFBTTtnQkFDVCxNQUFNO1lBRVIsS0FBSyxTQUFTO2dCQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztnQkFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07WUFFUixLQUFLLGlCQUFpQixDQUFDO1lBQ3ZCLEtBQUssVUFBVTtnQkFDYixnQkFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDM0QsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FDdkUsQ0FBQztnQkFDRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixNQUFNO1lBRVI7Z0JBQ0UsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVPLHlCQUF5QixDQUMvQixLQUFhLEVBQ2IsT0FBd0I7UUFFeEIsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQVcsRUFBRSxPQUFPLEdBQUcsS0FBSyxFQUFFLEVBQUU7WUFDdEMsTUFBTSxPQUFPLEdBQUcsSUFBQSx3Q0FBdUIsRUFBQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLE1BQU0sR0FBRyxFQUFFLENBQUMsQ0FBQztZQUUvRCxNQUFNLGFBQWEsR0FBRyxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDN0MsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FDMUIsQ0FBQztZQUNGLE1BQU0sZUFBZSxHQUFHLGFBQWE7Z0JBQ25DLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDbEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUVaLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLGdCQUFNLENBQUMsS0FBSyxDQUNWLFVBQVUsYUFBYSxxQkFBcUIsT0FBTyxrQkFBa0IsZUFBZSxHQUFHLENBQ3hGLENBQUM7WUFDSixDQUFDO1lBRUQsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDVixLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDL0MsQ0FBQztRQUNILENBQUMsQ0FBQztJQUNKLENBQUM7SUFFTyxLQUFLLENBQUMsZUFBZTtRQUMzQixPQUFPLE1BQU0sa0JBQWtCLENBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFDbEIsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDMUMsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLLENBQUMsa0JBQWtCLENBQzdCLE9BQWlCLEVBQ2pCLGdCQUEwQixFQUMxQixZQUFzQjtRQUV0QixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMvQyxNQUFNLG1CQUFtQixHQUFHLGdCQUFnQjtZQUMxQyxDQUFDLENBQUMsS0FBSztZQUNQLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQzFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDcEQsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ25CLFlBQVk7WUFDWixPQUFPLEVBQUUsT0FBTyxhQUFQLE9BQU8sY0FBUCxPQUFPLEdBQUksS0FBSztZQUN6QixtQkFBbUI7WUFDbkIsWUFBWSxFQUFFLFlBQVksYUFBWixZQUFZLGNBQVosWUFBWSxHQUFJLEtBQUs7U0FDcEMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVPLGlCQUFpQjs7UUFDdkIsZ0RBQWdEO1FBQ2hELE1BQU0saUJBQWlCLEdBQUcsTUFBQSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsMENBQUUsa0JBQWtCLENBQUM7UUFFM0UsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDbEQsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDWCxNQUFNLFVBQVUsR0FBRyxJQUFJLHVDQUFrQixDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25FLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ3BDLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxFQUNELEVBQXdDLENBQ3pDLENBQUM7SUFDSixDQUFDO0lBRU8sS0FBSyxDQUFDLHdCQUF3QjtRQUNwQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDOUIsNENBQTRDO1lBQzVDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksK0NBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFeEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLGdFQUFnRTtZQUNoRSxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRW5ELEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDeEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNqQix3RUFBd0U7Z0JBQ3hFLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxLQUFLLENBQUMsaUJBQWlCO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksK0NBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzlDLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUU5RCwyRkFBMkY7UUFDM0YsOENBQThDO1FBQzlDLHNGQUFzRjtRQUN0RixPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRTs7WUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO1lBQ3BELElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN0Qix3RUFBd0U7Z0JBQ3hFLHdCQUF3QjtnQkFDeEIsZ0JBQU0sQ0FBQyxLQUFLLENBQ1YsK0NBQStDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FDckUsQ0FBQztnQkFDRixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7WUFFRCxNQUFNLFFBQVEsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLDhEQUE4RDtnQkFDOUQsT0FBTztZQUNULENBQUM7WUFFRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLE1BQUEsUUFBUSxDQUFDLE9BQU8sbUNBQUksSUFBSSxDQUFDLENBQUM7UUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUF1QjtRQUN2QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztZQUM5QixJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxnQkFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQ2YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtnQkFDMUIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUNoQixXQUFXLEVBQ1gsb0JBQW9CLEVBQ3BCLElBQUksRUFDSixRQUFRLEVBQ1IsT0FBTyxHQU9SO1FBQ0MsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFL0MsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsS0FBSztnQkFDZCxXQUFXO2dCQUNYLFdBQVcsRUFBRSxvQkFBb0I7Z0JBQ2pDLElBQUk7Z0JBQ0osUUFBUTtnQkFDUixPQUFPO2FBQ1IsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUVsRSxzQkFBc0I7WUFDdEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLGlEQUFpQyxFQUN4RCxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUM1QixDQUFDO1lBQ0YsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNmLElBQUksRUFBRSxvQ0FBb0M7b0JBQzFDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQzFCLGFBQWEsRUFBRSxVQUFVO2lCQUMxQixDQUFDLENBQUM7Z0JBRUgsTUFBTSxhQUFhLEdBQUcsTUFBTSxJQUFBLGtDQUF3QixFQUNsRCxVQUFVLEVBQ1YsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDNUIsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDO29CQUNmLElBQUksRUFBRSxxQ0FBcUM7b0JBQzNDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQzFCLGFBQWEsRUFBRSxhQUFhO2lCQUM3QixDQUFDLENBQUM7Z0JBQ0gsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ1YsS0FBSyxDQUFDO3dCQUNKLE9BQU8sRUFBRTtFQUNuQixVQUFVOzs7O0VBSVYsYUFBYTs7Ozs7Ozs7O0NBU2Q7d0JBQ1csT0FBTyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsTUFBTSxJQUFBLG1EQUFtQyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN6RSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQU1uQjtRQUNDLE1BQU0sRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDNUUsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkUsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFFL0MsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FDMUM7Z0JBQ0UsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDckMsV0FBVztnQkFDWCxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxJQUFJO2dCQUNKLFFBQVE7Z0JBQ1IsT0FBTzthQUNSLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixvREFBb0Q7Z0JBQ3BELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQ2YsSUFBSSxFQUFFLFdBQVc7d0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7cUJBQzNCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNmLElBQUksRUFBRSw0QkFBNEI7d0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRTs0QkFDWCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQ0FDZixJQUFJLEVBQUUsV0FBVztnQ0FDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTs2QkFDM0IsQ0FBQyxDQUFDO3dCQUNMLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLCtCQUErQixFQUFFLENBQUM7b0JBQzFELElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQ2YsSUFBSSxFQUFFLHFDQUFxQzt3QkFDM0MsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTt3QkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO3dCQUN4QixNQUFNLEVBQUUsR0FBRyxFQUFFOzRCQUNYLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDZixJQUFJLENBQUMsV0FBVyxDQUFDO2dDQUNmLElBQUksRUFBRSxXQUFXO2dDQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJOzZCQUMzQixDQUFDLENBQUM7d0JBQ0wsQ0FBQztxQkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDZixJQUFJLEVBQUUsK0JBQStCO3dCQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7cUJBQ3pCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxrQ0FBa0MsRUFBRSxDQUFDO29CQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNmLElBQUksRUFBRSx3Q0FBd0M7d0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtxQkFDN0IsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxvQkFBb0IsR0FBRyxJQUFBLGtDQUF5QixFQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQzlCLE9BQU8sQ0FDUixDQUFDO2dCQUVGLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ2YsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQzFCLE9BQU87b0JBQ1Asb0JBQW9CO2lCQUNyQixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUtwQjtRQUNDLE1BQU0sRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUMvRCxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNuRSxNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxTQUFTLENBQUMsT0FBTyxDQUMzQztnQkFDRSxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXO2dCQUNyQyxXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxJQUFJO2dCQUNKLFFBQVE7Z0JBQ1IsT0FBTzthQUNSLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDUixvREFBb0Q7Z0JBQ3BELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQ2YsSUFBSSxFQUFFLFlBQVk7d0JBQ2xCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7cUJBQzNCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxzQkFBc0IsRUFBRSxDQUFDO29CQUNqRCxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNmLElBQUksRUFBRSw0QkFBNEI7d0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTzt3QkFDdEIsTUFBTSxFQUFFLEdBQUcsRUFBRTs0QkFDWCxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQztnQ0FDZixJQUFJLEVBQUUsV0FBVztnQ0FDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTs2QkFDM0IsQ0FBQyxDQUFDO3dCQUNMLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLCtCQUErQixFQUFFLENBQUM7b0JBQzFELElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQ2YsSUFBSSxFQUFFLHFDQUFxQzt3QkFDM0MsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTt3QkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO3dCQUN4QixNQUFNLEVBQUUsR0FBRyxFQUFFOzRCQUNYLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQzs0QkFDZixJQUFJLENBQUMsV0FBVyxDQUFDO2dDQUNmLElBQUksRUFBRSxXQUFXO2dDQUNqQixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJOzZCQUMzQixDQUFDLENBQUM7d0JBQ0wsQ0FBQztxQkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUsseUJBQXlCLEVBQUUsQ0FBQztvQkFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDZixJQUFJLEVBQUUsK0JBQStCO3dCQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUMxQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7cUJBQ3pCLENBQUMsQ0FBQztnQkFDTCxDQUFDO3FCQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxrQ0FBa0MsRUFBRSxDQUFDO29CQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDO3dCQUNmLElBQUksRUFBRSx3Q0FBd0M7d0JBQzlDLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7d0JBQzFCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtxQkFDN0IsQ0FBQyxDQUFDO2dCQUNMLENBQUM7WUFDSCxDQUFDLENBQ0YsQ0FBQztZQUVGLElBQUksQ0FBQyxTQUFTO2dCQUNaLElBQUksQ0FBQyxXQUFXLENBQUM7b0JBQ2YsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7aUJBQzNCLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZO1FBQ3ZCLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN4QixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUUvQyxNQUFNLE9BQU8sR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN6QyxNQUFNLG9CQUFvQixHQUFHLElBQUEsa0NBQXlCLEVBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFDOUIsT0FBTyxDQUNSLENBQUM7WUFDRixJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUNmLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLFNBQVMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUk7Z0JBQzFCLE9BQU87Z0JBQ1Asb0JBQW9CO2FBQ3JCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7Q0FDRjtBQTdkRCxnQ0E2ZEMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuL3N5bnRoLXN0YWNrXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm0gfSBmcm9tIFwiLi9tb2RlbHMvdGVycmFmb3JtXCI7XG5pbXBvcnQgeyBnZXRDb25zdHJ1Y3RJZHNGb3JPdXRwdXRzLCBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzIH0gZnJvbSBcIi4vb3V0cHV0XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IGV4dHJhY3RKc29uTG9nSWZQcmVzZW50IH0gZnJvbSBcIi4vc2VydmVyL3RlcnJhZm9ybS1sb2dzXCI7XG5pbXBvcnQge1xuICBUZXJyYWZvcm1DbGksXG4gIE91dHB1dEZpbHRlcixcbiAgdHJ5UmVhZEdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlLFxuICB0cnlSZW1vdmVHZW5lcmF0ZWRDb25maWd1cmF0aW9uRmlsZSxcbn0gZnJvbSBcIi4vbW9kZWxzL3RlcnJhZm9ybS1jbGlcIjtcbmltcG9ydCB7IFByb3ZpZGVyQ29uc3RyYWludCB9IGZyb20gXCIuL2RlcGVuZGVuY2llcy9kZXBlbmRlbmN5LW1hbmFnZXJcIjtcbmltcG9ydCB7IHRlcnJhZm9ybUpzb25TY2hlbWEsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcIi4vdGVycmFmb3JtLWpzb25cIjtcbmltcG9ydCB7IFRlcnJhZm9ybVByb3ZpZGVyTG9jayB9IGZyb20gXCIuL3RlcnJhZm9ybS1wcm92aWRlci1sb2NrXCI7XG5pbXBvcnQgeyBjb252ZXJ0Q29uZmlndXJhdGlvbkZpbGUgfSBmcm9tIFwiLi9jb252ZXJ0XCI7XG5cbmV4cG9ydCB0eXBlIFN0YWNrVXBkYXRlID1cbiAgfCB7XG4gICAgICB0eXBlOiBcInBsYW5uaW5nXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJwbGFubmVkXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJkZXBsb3lpbmdcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlcGxveSB1cGRhdGVcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgZGVwbG95T3V0cHV0OiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZGVwbG95ZWRcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgb3V0cHV0c0J5Q29uc3RydWN0SWQ6IE5lc3RlZFRlcnJhZm9ybU91dHB1dHM7XG4gICAgICBvdXRwdXRzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlc3Ryb3lpbmdcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRlc3Ryb3kgdXBkYXRlXCI7XG4gICAgICBzdGFja05hbWU6IHN0cmluZztcbiAgICAgIGRlc3Ryb3lPdXRwdXQ6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJkZXN0cm95ZWRcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcIm91dHB1dHMgZmV0Y2hlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBvdXRwdXRzQnlDb25zdHJ1Y3RJZDogTmVzdGVkVGVycmFmb3JtT3V0cHV0cztcbiAgICAgIG91dHB1dHM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiZXJyb3JlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBlcnJvcjogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICB0eXBlOiBcImRpc21pc3NlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiaW1wb3J0IHdpdGggY29uZmlndXJhdGlvbiBkZXRlY3RlZFwiO1xuICAgICAgc3RhY2tOYW1lOiBzdHJpbmc7XG4gICAgICBjb25maWd1cmF0aW9uOiBzdHJpbmc7XG4gICAgfVxuICB8IHtcbiAgICAgIHR5cGU6IFwiaW1wb3J0IHdpdGggY29uZmlndXJhdGlvbiBjb252ZXJ0ZWRcIjtcbiAgICAgIHN0YWNrTmFtZTogc3RyaW5nO1xuICAgICAgY29uZmlndXJhdGlvbjogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFN0YWNrVXNlcklucHV0VXBkYXRlID1cbiAgfCBTdGFja0FwcHJvdmFsVXBkYXRlXG4gIHwgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlO1xuXG5leHBvcnQgdHlwZSBTdGFja0FwcHJvdmFsVXBkYXRlID0ge1xuICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIGFwcHJvdmFsXCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBhcHByb3ZlOiAoKSA9PiB2b2lkO1xuICByZWplY3Q6ICgpID0+IHZvaWQ7XG59O1xuZXhwb3J0IHR5cGUgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlID0ge1xuICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCI7XG4gIHN0YWNrTmFtZTogc3RyaW5nO1xuICBvdmVycmlkZTogKCkgPT4gdm9pZDtcbiAgcmVqZWN0OiAoKSA9PiB2b2lkO1xufTtcbmV4cG9ydCB0eXBlIEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZSA9IHtcbiAgdHlwZTogXCJleHRlcm5hbCBzdGFjayBhcHByb3ZhbCByZXBseVwiO1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgYXBwcm92ZWQ6IGJvb2xlYW47IC8vIGZhbHNlID0gcmVqZWN0ZWRcbn07XG5leHBvcnQgdHlwZSBFeHRlcm5hbFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZSA9IHtcbiAgdHlwZTogXCJleHRlcm5hbCBzdGFjayBzZW50aW5lbCBvdmVycmlkZSByZXBseVwiO1xuICBzdGFja05hbWU6IHN0cmluZztcbiAgb3ZlcnJpZGRlbjogYm9vbGVhbjsgLy8gZmFsc2UgPSByZWplY3RlZFxufTtcblxuYXN5bmMgZnVuY3Rpb24gZ2V0VGVycmFmb3JtQ2xpZW50KFxuICBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWwsXG4gIHN0YWNrOiBTeW50aGVzaXplZFN0YWNrLFxuICBjcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyOiAoXG4gICAgcGhhc2U6IHN0cmluZyxcbiAgICBmaWx0ZXI/OiBPdXRwdXRGaWx0ZXJbXSxcbiAgKSA9PiAobWVzc2FnZTogc3RyaW5nLCBpc0Vycm9yPzogYm9vbGVhbikgPT4gdm9pZCxcbik6IFByb21pc2U8VGVycmFmb3JtPiB7XG4gIHJldHVybiBuZXcgVGVycmFmb3JtQ2xpKGFib3J0U2lnbmFsLCBzdGFjaywgY3JlYXRlVGVycmFmb3JtTG9nSGFuZGxlcik7XG59XG5cbnR5cGUgQ2RrdGZTdGFja09wdGlvbnMgPSB7XG4gIHN0YWNrOiBTeW50aGVzaXplZFN0YWNrO1xuICBvblVwZGF0ZTogKFxuICAgIHVwZGF0ZTpcbiAgICAgIHwgU3RhY2tVcGRhdGVcbiAgICAgIHwgU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBFeHRlcm5hbFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgICAgIHwgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlLFxuICApID0+IHZvaWQ7XG4gIG9uTG9nPzogKGxvZzogeyBtZXNzYWdlOiBzdHJpbmc7IGlzRXJyb3I6IGJvb2xlYW4gfSkgPT4gdm9pZDtcbiAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICBtaWdyYXRlU3RhdGU/OiBib29sZWFuO1xuICBhYm9ydFNpZ25hbDogQWJvcnRTaWduYWw7XG59O1xuXG50eXBlIENka3RmU3RhY2tTdGF0ZXMgPVxuICB8IFN0YWNrVXBkYXRlW1widHlwZVwiXVxuICB8IFN0YWNrQXBwcm92YWxVcGRhdGVbXCJ0eXBlXCJdXG4gIHwgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlW1widHlwZVwiXVxuICB8IEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZVtcInR5cGVcIl1cbiAgfCBFeHRlcm5hbFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZVtcInR5cGVcIl1cbiAgfCBcImlkbGVcIlxuICB8IFwiZG9uZVwiO1xuXG5leHBvcnQgY2xhc3MgQ2RrdGZTdGFjayB7XG4gIHB1YmxpYyBzdGFjazogU3ludGhlc2l6ZWRTdGFjaztcbiAgcHVibGljIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwdWJsaWMgb3V0cHV0c0J5Q29uc3RydWN0SWQ/OiBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzO1xuICBwdWJsaWMgc3RvcHBlZCA9IGZhbHNlO1xuICBwdWJsaWMgY3VycmVudFdvcmtQcm9taXNlOiBQcm9taXNlPHZvaWQ+IHwgdW5kZWZpbmVkO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFN0YXRlOiBDZGt0ZlN0YWNrU3RhdGVzID0gXCJpZGxlXCI7XG4gIHB1YmxpYyBlcnJvcj86IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJzZWRDb250ZW50OiBUZXJyYWZvcm1TdGFjaztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3B0aW9uczogQ2RrdGZTdGFja09wdGlvbnMpIHtcbiAgICB0aGlzLnN0YWNrID0gb3B0aW9ucy5zdGFjaztcbiAgICB0aGlzLnBhcnNlZENvbnRlbnQgPSB0ZXJyYWZvcm1Kc29uU2NoZW1hLnBhcnNlKFxuICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUGVuZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RhdGUgPT09IFwiaWRsZVwiICYmICF0aGlzLnN0b3BwZWQ7XG4gIH1cbiAgcHVibGljIGdldCBpc0RvbmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuY3VycmVudFN0YXRlID09PSBcImRvbmVcIiB8fFxuICAgICAgdGhpcy5jdXJyZW50U3RhdGUgPT09IFwiZXJyb3JlZFwiIHx8XG4gICAgICB0aGlzLnN0b3BwZWRcbiAgICApO1xuICB9XG4gIHB1YmxpYyBnZXQgaXNSdW5uaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc1BlbmRpbmcgJiYgIXRoaXMuaXNEb25lO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0ZShcbiAgICB1cGRhdGU6XG4gICAgICB8IFN0YWNrVXBkYXRlXG4gICAgICB8IFN0YWNrQXBwcm92YWxVcGRhdGVcbiAgICAgIHwgU3RhY2tTZW50aW5lbE92ZXJyaWRlVXBkYXRlXG4gICAgICB8IEV4dGVybmFsU3RhY2tBcHByb3ZhbFVwZGF0ZVxuICAgICAgfCBFeHRlcm5hbFN0YWNrU2VudGluZWxPdmVycmlkZVVwZGF0ZVxuICAgICAgfCB7IHR5cGU6IFwiaWRsZVwiIH1cbiAgICAgIHwgeyB0eXBlOiBcImRvbmVcIiB9LFxuICApIHtcbiAgICBsb2dnZXIuZGVidWcoYFske3RoaXMuc3RhY2submFtZX1dOiAke3VwZGF0ZS50eXBlfWApO1xuICAgICh0aGlzLmN1cnJlbnRTdGF0ZSBhcyBDZGt0ZlN0YWNrU3RhdGVzKSA9IHVwZGF0ZS50eXBlO1xuICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJpZGxlXCI6XG4gICAgICBjYXNlIFwiZG9uZVwiOlxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBcImVycm9yZWRcIjpcbiAgICAgICAgdGhpcy5lcnJvciA9IHVwZGF0ZS5lcnJvcjtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9uVXBkYXRlKHVwZGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwib3V0cHV0cyBmZXRjaGVkXCI6XG4gICAgICBjYXNlIFwiZGVwbG95ZWRcIjpcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGBPdXRwdXRzOiAke0pTT04uc3RyaW5naWZ5KHVwZGF0ZS5vdXRwdXRzKX1gKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBPdXRwdXRzQnlDb25zdHJ1Y3RJZDogJHtKU09OLnN0cmluZ2lmeSh1cGRhdGUub3V0cHV0c0J5Q29uc3RydWN0SWQpfWAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3V0cHV0cyA9IHVwZGF0ZS5vdXRwdXRzO1xuICAgICAgICB0aGlzLm91dHB1dHNCeUNvbnN0cnVjdElkID0gdXBkYXRlLm91dHB1dHNCeUNvbnN0cnVjdElkO1xuICAgICAgICB0aGlzLm9wdGlvbnMub25VcGRhdGUodXBkYXRlKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMub3B0aW9ucy5vblVwZGF0ZSh1cGRhdGUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVRlcnJhZm9ybUxvZ0hhbmRsZXIoXG4gICAgcGhhc2U6IHN0cmluZyxcbiAgICBmaWx0ZXJzPzogT3V0cHV0RmlsdGVyW10sXG4gICk6IChtZXNzYWdlOiBzdHJpbmcsIGlzRXJyb3I/OiBib29sZWFuKSA9PiB2b2lkIHtcbiAgICBsb2dnZXIuZGVidWcoXCJDcmVhdGluZyB0ZXJyYWZvcm0gbG9nIGhhbmRsZXJcIiwgcGhhc2UpO1xuXG4gICAgY29uc3Qgb25Mb2cgPSB0aGlzLm9wdGlvbnMub25Mb2c7XG4gICAgcmV0dXJuIChtc2c6IHN0cmluZywgaXNFcnJvciA9IGZhbHNlKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXh0cmFjdEpzb25Mb2dJZlByZXNlbnQobXNnKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgWyR7dGhpcy5vcHRpb25zLnN0YWNrLm5hbWV9XSgke3BoYXNlfSk6ICR7bXNnfWApO1xuXG4gICAgICBjb25zdCBmaWx0ZXJUb0FwcGx5ID0gZmlsdGVycz8uZmluZCgoZmlsdGVyKSA9PlxuICAgICAgICBmaWx0ZXIuY29uZGl0aW9uKG1lc3NhZ2UpLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IGZpbHRlcmVkTWVzc2FnZSA9IGZpbHRlclRvQXBwbHlcbiAgICAgICAgPyBmaWx0ZXJUb0FwcGx5LnRyYW5zZm9ybShtZXNzYWdlKVxuICAgICAgICA6IG1lc3NhZ2U7XG5cbiAgICAgIGlmIChmaWx0ZXJlZE1lc3NhZ2UpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBGaWx0ZXIgJHtmaWx0ZXJUb0FwcGx5fSBhcHBsaWVkIG9uIGxpbmUgJyR7bWVzc2FnZX0nIHdpdGggcmVzdWx0ICcke2ZpbHRlcmVkTWVzc2FnZX0nYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9uTG9nKSB7XG4gICAgICAgIG9uTG9nKHsgbWVzc2FnZTogZmlsdGVyZWRNZXNzYWdlLCBpc0Vycm9yIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHRlcnJhZm9ybUNsaWVudCgpIHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0VGVycmFmb3JtQ2xpZW50KFxuICAgICAgdGhpcy5vcHRpb25zLmFib3J0U2lnbmFsLFxuICAgICAgdGhpcy5vcHRpb25zLnN0YWNrLFxuICAgICAgdGhpcy5jcmVhdGVUZXJyYWZvcm1Mb2dIYW5kbGVyLmJpbmQodGhpcyksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0YWxpemVUZXJyYWZvcm0oXG4gICAgbm9Db2xvcj86IGJvb2xlYW4sXG4gICAgc2tpcFByb3ZpZGVyTG9jaz86IGJvb2xlYW4sXG4gICAgbWlncmF0ZVN0YXRlPzogYm9vbGVhbixcbiAgKSB7XG4gICAgY29uc3QgdGVycmFmb3JtID0gYXdhaXQgdGhpcy50ZXJyYWZvcm1DbGllbnQoKTtcbiAgICBjb25zdCBuZWVkc0xvY2tmaWxlVXBkYXRlID0gc2tpcFByb3ZpZGVyTG9ja1xuICAgICAgPyBmYWxzZVxuICAgICAgOiBhd2FpdCB0aGlzLmNoZWNrTmVlZHNMb2NrZmlsZVVwZGF0ZSgpO1xuICAgIGNvbnN0IG5lZWRzVXBncmFkZSA9IGF3YWl0IHRoaXMuY2hlY2tOZWVkc1VwZ3JhZGUoKTtcbiAgICBhd2FpdCB0ZXJyYWZvcm0uaW5pdCh7XG4gICAgICBuZWVkc1VwZ3JhZGUsXG4gICAgICBub0NvbG9yOiBub0NvbG9yID8/IGZhbHNlLFxuICAgICAgbmVlZHNMb2NrZmlsZVVwZGF0ZSxcbiAgICAgIG1pZ3JhdGVTdGF0ZTogbWlncmF0ZVN0YXRlID8/IGZhbHNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0ZXJyYWZvcm07XG4gIH1cblxuICBwcml2YXRlIHJlcXVpcmVkUHJvdmlkZXJzKCkge1xuICAgIC8vIFJlYWQgcmVxdWlyZWQgcHJvdmlkZXJzIGZyb20gdGhlIHN0YWNrIG91dHB1dFxuICAgIGNvbnN0IHJlcXVpcmVkUHJvdmlkZXJzID0gdGhpcy5wYXJzZWRDb250ZW50LnRlcnJhZm9ybT8ucmVxdWlyZWRfcHJvdmlkZXJzO1xuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVxdWlyZWRQcm92aWRlcnMgfHwge30pLnJlZHVjZShcbiAgICAgIChhY2MsIG9iaikgPT4ge1xuICAgICAgICBjb25zdCBjb25zdHJhaW50ID0gbmV3IFByb3ZpZGVyQ29uc3RyYWludChvYmouc291cmNlLCBvYmoudmVyc2lvbik7XG4gICAgICAgIGFjY1tjb25zdHJhaW50LnNvdXJjZV0gPSBjb25zdHJhaW50O1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIFByb3ZpZGVyQ29uc3RyYWludD4sXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tOZWVkc0xvY2tmaWxlVXBkYXRlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMubWlncmF0ZVN0YXRlKSB7XG4gICAgICAvLyBJZiB3ZSdyZSBtaWdyYXRpbmcgc3RhdGUsIHdlIG5lZWQgdG8gaW5pdFxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGxvY2sgPSBuZXcgVGVycmFmb3JtUHJvdmlkZXJMb2NrKHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgY29uc3QgbG9ja0ZpbGVFeGlzdHMgPSBhd2FpdCBsb2NrLmhhc1Byb3ZpZGVyTG9ja0ZpbGUoKTtcblxuICAgIGlmICghbG9ja0ZpbGVFeGlzdHMpIHtcbiAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsb2NrIGZpbGUsIHRoaXMgaXMgcHJvYmFibHkgdGhlIGZpcnN0IGluaXRcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVpcmVkUHJvdmlkZXJzID0gdGhpcy5yZXF1aXJlZFByb3ZpZGVycygpO1xuXG4gICAgZm9yIChjb25zdCBwcm92aWRlciBvZiBPYmplY3QudmFsdWVzKHJlcXVpcmVkUHJvdmlkZXJzKSkge1xuICAgICAgY29uc3QgaGFzUHJvdmlkZXIgPSBhd2FpdCBsb2NrLmhhc01hdGNoaW5nUHJvdmlkZXIocHJvdmlkZXIpO1xuICAgICAgaWYgKCFoYXNQcm92aWRlcikge1xuICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgcHJvdmlkZXIgb3IgdmVyc2lvbiBkb2Vzbid0IG1hdGNoLCB3ZSBuZWVkIHRvIGluaXRcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja05lZWRzVXBncmFkZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBsb2NrID0gbmV3IFRlcnJhZm9ybVByb3ZpZGVyTG9jayh0aGlzLnN0YWNrLndvcmtpbmdEaXJlY3RvcnkpO1xuICAgIGNvbnN0IGFsbFByb3ZpZGVycyA9IHRoaXMucmVxdWlyZWRQcm92aWRlcnMoKTtcbiAgICBjb25zdCBsb2NrZWRQcm92aWRlcnMgPSBPYmplY3QudmFsdWVzKGF3YWl0IGxvY2sucHJvdmlkZXJzKCkpO1xuXG4gICAgLy8gQ2hlY2sgaWYgYW55IHByb3ZpZGVyIGNvbnRhaW5lZCBpbiBgcHJvdmlkZXJzYCB2aW9sYXRlcyBjb25zdHJhaW50cyBpbiBgbG9ja2VkUHJvdmlkZXJzYFxuICAgIC8vIFVwZ3JhZGUgaWYgc29tZSBwcm92aWRlciBjb25zdHJhaW50IG5vdCBtZXRcbiAgICAvLyBJZiBhIHByb3ZpZGVyIHdhc24ndCBwcmVzZXQgaW4gbG9ja2VkUHJvdmlkZXJzLCB0aGF0J3MgZmluZTsgaXQgd2lsbCBqdXN0IGdldCBhZGRlZFxuICAgIHJldHVybiBsb2NrZWRQcm92aWRlcnMuc29tZSgobG9ja2VkUHJvdmlkZXIpID0+IHtcbiAgICAgIGNvbnN0IGxvY2tlZENvbnN0cmFpbnQgPSBsb2NrZWRQcm92aWRlci5jb25zdHJhaW50cztcbiAgICAgIGlmICghbG9ja2VkQ29uc3RyYWludCkge1xuICAgICAgICAvLyBQcm92aWRlciBsb2NrIGRvZXNuJ3QgaGF2ZSBhIGNvbnN0cmFpbnQgc3BlY2lmaWVkLCBzbyB3ZSBjYW4ndCBjaGVjay5cbiAgICAgICAgLy8gVGhpcyBzaG91bGRuJ3QgaGFwcGVuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUHJvdmlkZXIgbG9jayBkb2Vzbid0IGhhdmUgYSBjb25zdHJhaW50IGZvciAke2xvY2tlZFByb3ZpZGVyLm5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm92aWRlciA9IGFsbFByb3ZpZGVyc1tsb2NrZWRDb25zdHJhaW50LnNvdXJjZV07XG4gICAgICBpZiAoIXByb3ZpZGVyKSB7XG4gICAgICAgIC8vIGVsc2Ugbm8gbG9uZ2VyIHVzaW5nIHRoaXMgcHJvdmlkZXIsIHNvIHdvbid0IGNhdXNlIHByb2JsZW1zXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICFsb2NrZWRDb25zdHJhaW50Lm1hdGNoZXNWZXJzaW9uKHByb3ZpZGVyLnZlcnNpb24gPz8gXCI+MFwiKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcnVuKGNiOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZSA9IGNiKCk7XG4gICAgICBhd2FpdCB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZTtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoeyB0eXBlOiBcImRvbmVcIiB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIudHJhY2UoXCJFcnJvciBpbiBjdXJyZW50V29ya1Byb21pc2VcIiwgZSk7XG4gICAgICB0aGlzLmN1cnJlbnRXb3JrUHJvbWlzZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICB0eXBlOiBcImVycm9yZWRcIixcbiAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgIGVycm9yOiBTdHJpbmcoZSksXG4gICAgICB9KTtcbiAgICAgIHRocm93IGU7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuY3VycmVudFdvcmtQcm9taXNlID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkaWZmKHtcbiAgICByZWZyZXNoT25seSxcbiAgICB0ZXJyYWZvcm1QYXJhbGxlbGlzbSxcbiAgICB2YXJzLFxuICAgIHZhckZpbGVzLFxuICAgIG5vQ29sb3IsXG4gIH06IHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgdGVycmFmb3JtUGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gIH0pIHtcbiAgICBhd2FpdCB0aGlzLnJ1bihhc3luYyAoKSA9PiB7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmluZ1wiLCBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSB9KTtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG5cbiAgICAgIGF3YWl0IHRlcnJhZm9ybS5wbGFuKHtcbiAgICAgICAgZGVzdHJveTogZmFsc2UsXG4gICAgICAgIHJlZnJlc2hPbmx5LFxuICAgICAgICBwYXJhbGxlbGlzbTogdGVycmFmb3JtUGFyYWxsZWxpc20sXG4gICAgICAgIHZhcnMsXG4gICAgICAgIHZhckZpbGVzLFxuICAgICAgICBub0NvbG9yLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHsgdHlwZTogXCJwbGFubmVkXCIsIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lIH0pO1xuXG4gICAgICAvLyBGaW5kIGdlbmVyYXRlZCBmaWxlXG4gICAgICBjb25zdCBjb25maWdGaWxlID0gYXdhaXQgdHJ5UmVhZEdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKFxuICAgICAgICB0aGlzLnN0YWNrLndvcmtpbmdEaXJlY3RvcnksXG4gICAgICApO1xuICAgICAgaWYgKGNvbmZpZ0ZpbGUpIHtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGRldGVjdGVkXCIsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgY29uZmlndXJhdGlvbjogY29uZmlnRmlsZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgY29udmVydGVkQ29kZSA9IGF3YWl0IGNvbnZlcnRDb25maWd1cmF0aW9uRmlsZShcbiAgICAgICAgICBjb25maWdGaWxlLFxuICAgICAgICAgIHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJpbXBvcnQgd2l0aCBjb25maWd1cmF0aW9uIGNvbnZlcnRlZFwiLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgIGNvbmZpZ3VyYXRpb246IGNvbnZlcnRlZENvZGUsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBvbkxvZyA9IHRoaXMub3B0aW9ucy5vbkxvZztcbiAgICAgICAgaWYgKG9uTG9nKSB7XG4gICAgICAgICAgb25Mb2coe1xuICAgICAgICAgICAgbWVzc2FnZTogYEltcG9ydCB3aXRob3V0IGNvbmZpZ3VyYXRpb24gZGV0ZWN0ZWQuIFRlcnJhZm9ybSBoYXMgY3JlYXRlZCBjb25maWd1cmF0aW9uIGZvciBpdDpcbiR7Y29uZmlnRmlsZX1cblxuQ0RLVE4gaGFzIHRyYW5zbGF0ZWQgdGhlIGNvZGUgdG8gdGhlIGZvbGxvd2luZzpcblxuJHtjb252ZXJ0ZWRDb2RlfVxuXG5QbGVhc2UgcmV2aWV3IHRoZSBjb2RlIGFuZCBtYWtlIGFueSBuZWNlc3NhcnkgY2hhbmdlcyBiZWZvcmUgYWRkaW5nIGl0IHRvIHlvdXIgY29kZWJhc2UuXG5NYWtlIHN1cmUgdG8gb25seSBjb3B5IHRoZSBjb2RlIHdpdGhpbiB0aGUgY29uc3RydWN0J3MgY29uc3RydWN0b3IuXG5cbk5PVEU6IFlvdXIgcmVzb3VyY2UgaGFzIG5vdCB5ZXQgYmVjb21lIG1hbmFnZWQgYnkgQ0RLVE4uIFxuVG8gZmluaXNoIHRoZSBpbXBvcnQgcmVtb3ZlIHRoZSBjYWxsIFwiZ2VuZXJhdGVDb25maWdGb3JJbXBvcnRcIiwgYWRkIHRoZSBhYm92ZSBjb2RlIHdpdGhpbiB0aGUgY29uc3RydWN0J3MgY29uc3RydWN0b3IsIGFuZCB0aGVuIGFwcGVuZCB0aGUgY2FsbCBpbXBvcnRGcm9tKDxyZXNvdXJjZV9pZF90b19pbXBvcnRfZnJvbT4pIHRvIHRoZSBnZW5lcmF0ZWQgY29kZTogXG5cbm5ldyBTb21lUmVzb3VyY2UoLi4uKS5pbXBvcnRGcm9tKFwic29tZV9pZFwiKVxuYCxcbiAgICAgICAgICAgIGlzRXJyb3I6IGZhbHNlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRyeVJlbW92ZUdlbmVyYXRlZENvbmZpZ3VyYXRpb25GaWxlKHRoaXMuc3RhY2sud29ya2luZ0RpcmVjdG9yeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVwbG95KG9wdHM6IHtcbiAgICByZWZyZXNoT25seT86IGJvb2xlYW47XG4gICAgdGVycmFmb3JtUGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgdmFycz86IHN0cmluZ1tdO1xuICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gIH0pIHtcbiAgICBjb25zdCB7IHJlZnJlc2hPbmx5LCB0ZXJyYWZvcm1QYXJhbGxlbGlzbSwgbm9Db2xvciwgdmFycywgdmFyRmlsZXMgfSA9IG9wdHM7XG4gICAgYXdhaXQgdGhpcy5ydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IHR5cGU6IFwicGxhbm5pbmdcIiwgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUgfSk7XG4gICAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuXG4gICAgICBjb25zdCB7IGNhbmNlbGxlZCB9ID0gYXdhaXQgdGVycmFmb3JtLmRlcGxveShcbiAgICAgICAge1xuICAgICAgICAgIGF1dG9BcHByb3ZlOiB0aGlzLm9wdGlvbnMuYXV0b0FwcHJvdmUsXG4gICAgICAgICAgcmVmcmVzaE9ubHksXG4gICAgICAgICAgcGFyYWxsZWxpc206IHRlcnJhZm9ybVBhcmFsbGVsaXNtLFxuICAgICAgICAgIHZhcnMsXG4gICAgICAgICAgdmFyRmlsZXMsXG4gICAgICAgICAgbm9Db2xvcixcbiAgICAgICAgfSxcbiAgICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgICAgLy8gc3RhdGUgdXBkYXRlcyB3aGlsZSBhcHBseSBydW5zIHRoYXQgYWZmZWN0IHRoZSBVSVxuICAgICAgICAgIGlmIChzdGF0ZS50eXBlID09PSBcInJ1bm5pbmdcIiAmJiAhc3RhdGUuY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgICAgICAgdHlwZTogXCJkZXBsb3lpbmdcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3IgYXBwcm92YWxcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmU6IHN0YXRlLmFwcHJvdmUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBvdmVycmlkZTogc3RhdGUub3ZlcnJpZGUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcImV4dGVybmFsIGFwcHJvdmFsIHJlcGx5XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBhcHByb3ZlZDogc3RhdGUuYXBwcm92ZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRkZW46IHN0YXRlLm92ZXJyaWRkZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICBjb25zdCBvdXRwdXRzID0gYXdhaXQgdGVycmFmb3JtLm91dHB1dCgpO1xuICAgICAgICBjb25zdCBvdXRwdXRzQnlDb25zdHJ1Y3RJZCA9IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMoXG4gICAgICAgICAgSlNPTi5wYXJzZSh0aGlzLnN0YWNrLmNvbnRlbnQpLFxuICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJkZXBsb3llZFwiLFxuICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgIG91dHB1dHMsXG4gICAgICAgICAgb3V0cHV0c0J5Q29uc3RydWN0SWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRlc3Ryb3kob3B0czoge1xuICAgIHRlcnJhZm9ybVBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KSB7XG4gICAgY29uc3QgeyB0ZXJyYWZvcm1QYXJhbGxlbGlzbSwgbm9Db2xvciwgdmFycywgdmFyRmlsZXMgfSA9IG9wdHM7XG4gICAgYXdhaXQgdGhpcy5ydW4oYXN5bmMgKCkgPT4ge1xuICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7IHR5cGU6IFwicGxhbm5pbmdcIiwgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUgfSk7XG4gICAgICBjb25zdCB0ZXJyYWZvcm0gPSBhd2FpdCB0aGlzLnRlcnJhZm9ybUNsaWVudCgpO1xuICAgICAgY29uc3QgeyBjYW5jZWxsZWQgfSA9IGF3YWl0IHRlcnJhZm9ybS5kZXN0cm95KFxuICAgICAgICB7XG4gICAgICAgICAgYXV0b0FwcHJvdmU6IHRoaXMub3B0aW9ucy5hdXRvQXBwcm92ZSxcbiAgICAgICAgICBwYXJhbGxlbGlzbTogdGVycmFmb3JtUGFyYWxsZWxpc20sXG4gICAgICAgICAgdmFycyxcbiAgICAgICAgICB2YXJGaWxlcyxcbiAgICAgICAgICBub0NvbG9yLFxuICAgICAgICB9LFxuICAgICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgICAvLyBzdGF0ZSB1cGRhdGVzIHdoaWxlIGFwcGx5IHJ1bnMgdGhhdCBhZmZlY3QgdGhlIFVJXG4gICAgICAgICAgaWYgKHN0YXRlLnR5cGUgPT09IFwicnVubmluZ1wiICYmICFzdGF0ZS5jYW5jZWxsZWQpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImRlc3Ryb3lpbmdcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwid2FpdGluZyBmb3IgYXBwcm92YWxcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwid2FpdGluZyBmb3Igc3RhY2sgYXBwcm92YWxcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIGFwcHJvdmU6IHN0YXRlLmFwcHJvdmUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcIndhaXRpbmcgZm9yIHNlbnRpbmVsIG92ZXJyaWRlXCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcIndhaXRpbmcgZm9yIHN0YWNrIHNlbnRpbmVsIG92ZXJyaWRlXCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBvdmVycmlkZTogc3RhdGUub3ZlcnJpZGUsXG4gICAgICAgICAgICAgIHJlamVjdDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHN0YXRlLnJlamVjdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogXCJkaXNtaXNzZWRcIixcbiAgICAgICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZS50eXBlID09PSBcImV4dGVybmFsIGFwcHJvdmFsIHJlcGx5XCIpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU3RhdGUoe1xuICAgICAgICAgICAgICB0eXBlOiBcImV4dGVybmFsIHN0YWNrIGFwcHJvdmFsIHJlcGx5XCIsXG4gICAgICAgICAgICAgIHN0YWNrTmFtZTogdGhpcy5zdGFjay5uYW1lLFxuICAgICAgICAgICAgICBhcHByb3ZlZDogc3RhdGUuYXBwcm92ZWQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnR5cGUgPT09IFwiZXh0ZXJuYWwgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIikge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgICAgIHR5cGU6IFwiZXh0ZXJuYWwgc3RhY2sgc2VudGluZWwgb3ZlcnJpZGUgcmVwbHlcIixcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgICAgICAgIG92ZXJyaWRkZW46IHN0YXRlLm92ZXJyaWRkZW4sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoIWNhbmNlbGxlZClcbiAgICAgICAgdGhpcy51cGRhdGVTdGF0ZSh7XG4gICAgICAgICAgdHlwZTogXCJkZXN0cm95ZWRcIixcbiAgICAgICAgICBzdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZmV0Y2hPdXRwdXRzKCkge1xuICAgIGF3YWl0IHRoaXMucnVuKGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlcnJhZm9ybSA9IGF3YWl0IHRoaXMudGVycmFmb3JtQ2xpZW50KCk7XG5cbiAgICAgIGNvbnN0IG91dHB1dHMgPSBhd2FpdCB0ZXJyYWZvcm0ub3V0cHV0KCk7XG4gICAgICBjb25zdCBvdXRwdXRzQnlDb25zdHJ1Y3RJZCA9IGdldENvbnN0cnVjdElkc0Zvck91dHB1dHMoXG4gICAgICAgIEpTT04ucGFyc2UodGhpcy5zdGFjay5jb250ZW50KSxcbiAgICAgICAgb3V0cHV0cyxcbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZVN0YXRlKHtcbiAgICAgICAgdHlwZTogXCJvdXRwdXRzIGZldGNoZWRcIixcbiAgICAgICAgc3RhY2tOYW1lOiB0aGlzLnN0YWNrLm5hbWUsXG4gICAgICAgIG91dHB1dHMsXG4gICAgICAgIG91dHB1dHNCeUNvbnN0cnVjdElkLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5vdXRwdXRzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN0b3AoKSB7XG4gICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["convert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,qBAAqB,EAAE,MAAM,mBAqB9B"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) HashiCorp, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.convertConfigurationFile = void 0;
|
|
31
|
+
const hcl2cdk = __importStar(require("@cdktn/hcl2cdk"));
|
|
32
|
+
const cdktf_config_1 = require("./cdktf-config");
|
|
33
|
+
const provider_generator_1 = require("@cdktn/provider-generator");
|
|
34
|
+
const provider_schema_1 = require("@cdktn/provider-schema");
|
|
35
|
+
const commons_1 = require("@cdktn/commons");
|
|
36
|
+
async function convertConfigurationFile(configuration, stackWorkingDirectory) {
|
|
37
|
+
const cfg = cdktf_config_1.CdktfConfig.read(stackWorkingDirectory);
|
|
38
|
+
const targets = cfg.terraformProviders.map((constraint) => commons_1.ConstructsMakerProviderTarget.from(new provider_generator_1.TerraformProviderConstraint(constraint), commons_1.LANGUAGES[0]));
|
|
39
|
+
const { providerSchema } = await (0, provider_schema_1.readSchema)(targets);
|
|
40
|
+
if (!providerSchema) {
|
|
41
|
+
throw commons_1.Errors.Internal("Could not fetch provider schema");
|
|
42
|
+
}
|
|
43
|
+
const { all } = await hcl2cdk.convert(configuration, {
|
|
44
|
+
providerSchema,
|
|
45
|
+
language: cfg.language,
|
|
46
|
+
codeContainer: "constructs.Construct",
|
|
47
|
+
});
|
|
48
|
+
return all;
|
|
49
|
+
}
|
|
50
|
+
exports.convertConfigurationFile = convertConfigurationFile;
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCx3REFBMEM7QUFDMUMsaURBQTZDO0FBQzdDLGtFQUF3RTtBQUN4RSw0REFBb0Q7QUFDcEQsNENBSXdCO0FBRWpCLEtBQUssVUFBVSx3QkFBd0IsQ0FDNUMsYUFBcUIsRUFDckIscUJBQTZCO0lBRTdCLE1BQU0sR0FBRyxHQUFHLDBCQUFXLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDcEQsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ3hELHVDQUE2QixDQUFDLElBQUksQ0FDaEMsSUFBSSxnREFBMkIsQ0FBQyxVQUFVLENBQUMsRUFDM0MsbUJBQVMsQ0FBQyxDQUFDLENBQUMsQ0FDYixDQUNGLENBQUM7SUFDRixNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxJQUFBLDRCQUFVLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sZ0JBQU0sQ0FBQyxRQUFRLENBQUMsaUNBQWlDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUU7UUFDbkQsY0FBYztRQUNkLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUTtRQUN0QixhQUFhLEVBQUUsc0JBQXNCO0tBQ3RDLENBQUMsQ0FBQztJQUVILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQXZCRCw0REF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIGhjbDJjZGsgZnJvbSBcIkBjZGt0bi9oY2wyY2RrXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuaW1wb3J0IHsgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50IH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1nZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlYWRTY2hlbWEgfSBmcm9tIFwiQGNka3RuL3Byb3ZpZGVyLXNjaGVtYVwiO1xuaW1wb3J0IHtcbiAgRXJyb3JzLFxuICBMQU5HVUFHRVMsXG4gIENvbnN0cnVjdHNNYWtlclByb3ZpZGVyVGFyZ2V0LFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRDb25maWd1cmF0aW9uRmlsZShcbiAgY29uZmlndXJhdGlvbjogc3RyaW5nLFxuICBzdGFja1dvcmtpbmdEaXJlY3Rvcnk6IHN0cmluZyxcbikge1xuICBjb25zdCBjZmcgPSBDZGt0ZkNvbmZpZy5yZWFkKHN0YWNrV29ya2luZ0RpcmVjdG9yeSk7XG4gIGNvbnN0IHRhcmdldHMgPSBjZmcudGVycmFmb3JtUHJvdmlkZXJzLm1hcCgoY29uc3RyYWludCkgPT5cbiAgICBDb25zdHJ1Y3RzTWFrZXJQcm92aWRlclRhcmdldC5mcm9tKFxuICAgICAgbmV3IFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludChjb25zdHJhaW50KSxcbiAgICAgIExBTkdVQUdFU1swXSxcbiAgICApLFxuICApO1xuICBjb25zdCB7IHByb3ZpZGVyU2NoZW1hIH0gPSBhd2FpdCByZWFkU2NoZW1hKHRhcmdldHMpO1xuICBpZiAoIXByb3ZpZGVyU2NoZW1hKSB7XG4gICAgdGhyb3cgRXJyb3JzLkludGVybmFsKFwiQ291bGQgbm90IGZldGNoIHByb3ZpZGVyIHNjaGVtYVwiKTtcbiAgfVxuXG4gIGNvbnN0IHsgYWxsIH0gPSBhd2FpdCBoY2wyY2RrLmNvbnZlcnQoY29uZmlndXJhdGlvbiwge1xuICAgIHByb3ZpZGVyU2NoZW1hLFxuICAgIGxhbmd1YWdlOiBjZmcubGFuZ3VhZ2UsXG4gICAgY29kZUNvbnRhaW5lcjogXCJjb25zdHJ1Y3RzLkNvbnN0cnVjdFwiLFxuICB9KTtcblxuICByZXR1cm4gYWxsO1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ProviderConstraint } from "./dependency-manager";
|
|
2
|
+
/**
|
|
3
|
+
* facilitates adding provider dependencies to cdktf.json
|
|
4
|
+
*/
|
|
5
|
+
export declare class CdktfConfigManager {
|
|
6
|
+
private config;
|
|
7
|
+
hasProvider(constraint: ProviderConstraint): Promise<boolean>;
|
|
8
|
+
private setProvider;
|
|
9
|
+
addProvider(constraint: ProviderConstraint): Promise<void>;
|
|
10
|
+
updateProvider(constraint: ProviderConstraint): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cdktf-config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cdktf-config-manager.d.ts","sourceRoot":"","sources":["cdktf-config-manager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAmC;IAEpC,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;YAQ5D,WAAW;IAoBZ,WAAW,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D,cAAc,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAG3E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CdktfConfigManager = void 0;
|
|
4
|
+
// Copyright (c) HashiCorp, Inc
|
|
5
|
+
// SPDX-License-Identifier: MPL-2.0
|
|
6
|
+
const cdktf_config_1 = require("../cdktf-config");
|
|
7
|
+
const dependency_manager_1 = require("./dependency-manager");
|
|
8
|
+
/**
|
|
9
|
+
* facilitates adding provider dependencies to cdktf.json
|
|
10
|
+
*/
|
|
11
|
+
class CdktfConfigManager {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.config = cdktf_config_1.CdktfConfig.read();
|
|
14
|
+
}
|
|
15
|
+
async hasProvider(constraint) {
|
|
16
|
+
return this.config.terraformProviders.some((provider) => dependency_manager_1.ProviderConstraint.fromConfigEntry(provider).source ===
|
|
17
|
+
constraint.source);
|
|
18
|
+
}
|
|
19
|
+
async setProvider(constraint) {
|
|
20
|
+
// excluding the constraint to be added (if it already existed)
|
|
21
|
+
const currentProviders = this.config.terraformProviders.filter((provider) => dependency_manager_1.ProviderConstraint.fromConfigEntry(provider).source !==
|
|
22
|
+
constraint.source);
|
|
23
|
+
const simplifiedSource = constraint.source.replace("registry.terraform.io/", "");
|
|
24
|
+
const provider = simplifiedSource + (constraint.version ? `@${constraint.version}` : "");
|
|
25
|
+
currentProviders.push(provider);
|
|
26
|
+
this.config.writeTerraformProviders(currentProviders);
|
|
27
|
+
}
|
|
28
|
+
async addProvider(constraint) {
|
|
29
|
+
await this.setProvider(constraint);
|
|
30
|
+
}
|
|
31
|
+
async updateProvider(constraint) {
|
|
32
|
+
await this.setProvider(constraint);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.CdktfConfigManager = CdktfConfigManager;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrdGYtY29uZmlnLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjZGt0Zi1jb25maWctbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLGtEQUE4QztBQUM5Qyw2REFBMEQ7QUFFMUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUEvQjtRQUNVLFdBQU0sR0FBZ0IsMEJBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQXFDbkQsQ0FBQztJQW5DUSxLQUFLLENBQUMsV0FBVyxDQUFDLFVBQThCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ3hDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDWCx1Q0FBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTTtZQUNuRCxVQUFVLENBQUMsTUFBTSxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBOEI7UUFDdEQsK0RBQStEO1FBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQzVELENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDWCx1Q0FBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTTtZQUNuRCxVQUFVLENBQUMsTUFBTSxDQUNwQixDQUFDO1FBRUYsTUFBTSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDaEQsd0JBQXdCLEVBQ3hCLEVBQUUsQ0FDSCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQ1osZ0JBQWdCLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFMUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUE4QjtRQUNyRCxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLEtBQUssQ0FBQyxjQUFjLENBQUMsVUFBOEI7UUFDeEQsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQXRDRCxnREFzQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi4vY2RrdGYtY29uZmlnXCI7XG5pbXBvcnQgeyBQcm92aWRlckNvbnN0cmFpbnQgfSBmcm9tIFwiLi9kZXBlbmRlbmN5LW1hbmFnZXJcIjtcblxuLyoqXG4gKiBmYWNpbGl0YXRlcyBhZGRpbmcgcHJvdmlkZXIgZGVwZW5kZW5jaWVzIHRvIGNka3RmLmpzb25cbiAqL1xuZXhwb3J0IGNsYXNzIENka3RmQ29uZmlnTWFuYWdlciB7XG4gIHByaXZhdGUgY29uZmlnOiBDZGt0ZkNvbmZpZyA9IENka3RmQ29uZmlnLnJlYWQoKTtcblxuICBwdWJsaWMgYXN5bmMgaGFzUHJvdmlkZXIoY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnRlcnJhZm9ybVByb3ZpZGVycy5zb21lKFxuICAgICAgKHByb3ZpZGVyKSA9PlxuICAgICAgICBQcm92aWRlckNvbnN0cmFpbnQuZnJvbUNvbmZpZ0VudHJ5KHByb3ZpZGVyKS5zb3VyY2UgPT09XG4gICAgICAgIGNvbnN0cmFpbnQuc291cmNlLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFByb3ZpZGVyKGNvbnN0cmFpbnQ6IFByb3ZpZGVyQ29uc3RyYWludCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGV4Y2x1ZGluZyB0aGUgY29uc3RyYWludCB0byBiZSBhZGRlZCAoaWYgaXQgYWxyZWFkeSBleGlzdGVkKVxuICAgIGNvbnN0IGN1cnJlbnRQcm92aWRlcnMgPSB0aGlzLmNvbmZpZy50ZXJyYWZvcm1Qcm92aWRlcnMuZmlsdGVyKFxuICAgICAgKHByb3ZpZGVyKSA9PlxuICAgICAgICBQcm92aWRlckNvbnN0cmFpbnQuZnJvbUNvbmZpZ0VudHJ5KHByb3ZpZGVyKS5zb3VyY2UgIT09XG4gICAgICAgIGNvbnN0cmFpbnQuc291cmNlLFxuICAgICk7XG5cbiAgICBjb25zdCBzaW1wbGlmaWVkU291cmNlID0gY29uc3RyYWludC5zb3VyY2UucmVwbGFjZShcbiAgICAgIFwicmVnaXN0cnkudGVycmFmb3JtLmlvL1wiLFxuICAgICAgXCJcIixcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPVxuICAgICAgc2ltcGxpZmllZFNvdXJjZSArIChjb25zdHJhaW50LnZlcnNpb24gPyBgQCR7Y29uc3RyYWludC52ZXJzaW9ufWAgOiBcIlwiKTtcblxuICAgIGN1cnJlbnRQcm92aWRlcnMucHVzaChwcm92aWRlcik7XG4gICAgdGhpcy5jb25maWcud3JpdGVUZXJyYWZvcm1Qcm92aWRlcnMoY3VycmVudFByb3ZpZGVycyk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkUHJvdmlkZXIoY29uc3RyYWludDogUHJvdmlkZXJDb25zdHJhaW50KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5zZXRQcm92aWRlcihjb25zdHJhaW50KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVQcm92aWRlcihjb25zdHJhaW50OiBQcm92aWRlckNvbnN0cmFpbnQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLnNldFByb3ZpZGVyKGNvbnN0cmFpbnQpO1xuICB9XG59XG4iXX0=
|