@cdktn/commons 0.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +3 -0
  2. package/ambient.d.ts +14 -0
  3. package/eslint.config.mjs +77 -0
  4. package/jest.config.js +19 -0
  5. package/package.json +76 -0
  6. package/src/checkpoint.d.ts +19 -0
  7. package/src/checkpoint.d.ts.map +1 -0
  8. package/src/checkpoint.js +176 -0
  9. package/src/config.d.ts +61 -0
  10. package/src/config.d.ts.map +1 -0
  11. package/src/config.js +267 -0
  12. package/src/config.test.d.ts +2 -0
  13. package/src/config.test.d.ts.map +1 -0
  14. package/src/config.test.js +680 -0
  15. package/src/construct-maker-target.d.ts +57 -0
  16. package/src/construct-maker-target.d.ts.map +1 -0
  17. package/src/construct-maker-target.js +129 -0
  18. package/src/construct-maker-target.test.d.ts +6 -0
  19. package/src/construct-maker-target.test.d.ts.map +1 -0
  20. package/src/construct-maker-target.test.js +72 -0
  21. package/src/debug.d.ts +13 -0
  22. package/src/debug.d.ts.map +1 -0
  23. package/src/debug.js +379 -0
  24. package/src/environment.d.ts +4 -0
  25. package/src/environment.d.ts.map +1 -0
  26. package/src/environment.js +15 -0
  27. package/src/errors.d.ts +10 -0
  28. package/src/errors.d.ts.map +1 -0
  29. package/src/errors.js +75 -0
  30. package/src/gradle.d.ts +19 -0
  31. package/src/gradle.d.ts.map +1 -0
  32. package/src/gradle.js +160 -0
  33. package/src/index.d.ts +15 -0
  34. package/src/index.d.ts.map +1 -0
  35. package/src/index.js +33 -0
  36. package/src/logging.d.ts +17 -0
  37. package/src/logging.d.ts.map +1 -0
  38. package/src/logging.js +117 -0
  39. package/src/module-schema.d.ts +17 -0
  40. package/src/module-schema.d.ts.map +1 -0
  41. package/src/module-schema.js +3 -0
  42. package/src/provider-schema.d.ts +99 -0
  43. package/src/provider-schema.d.ts.map +1 -0
  44. package/src/provider-schema.js +21 -0
  45. package/src/terraform-module.d.ts +2 -0
  46. package/src/terraform-module.d.ts.map +1 -0
  47. package/src/terraform-module.js +23 -0
  48. package/src/terraform-module.test.d.ts +6 -0
  49. package/src/terraform-module.test.d.ts.map +1 -0
  50. package/src/terraform-module.test.js +31 -0
  51. package/src/terraform.d.ts +3 -0
  52. package/src/terraform.d.ts.map +1 -0
  53. package/src/terraform.js +12 -0
  54. package/src/util.d.ts +39 -0
  55. package/src/util.d.ts.map +1 -0
  56. package/src/util.js +262 -0
  57. package/src/version.d.ts +2 -0
  58. package/src/version.d.ts.map +1 -0
  59. package/src/version.js +11 -0
package/src/debug.js ADDED
@@ -0,0 +1,379 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.collectDebugInformation = exports.getPackageVersion = exports.getNodeVersion = exports.getGoVersion = exports.getPipenvVersion = exports.getPipVersion = exports.getPythonVersion = exports.getGradleVersion = exports.getMavenVersion = exports.getJavaVersion = exports.getDotnetVersion = exports.getLanguage = void 0;
27
+ // Copyright (c) HashiCorp, Inc
28
+ // SPDX-License-Identifier: MPL-2.0
29
+ const path = __importStar(require("path"));
30
+ const os = __importStar(require("os"));
31
+ const logging_1 = require("./logging");
32
+ const util_1 = require("./util");
33
+ const terraform_1 = require("./terraform");
34
+ const version_1 = require("./version");
35
+ const fs_extra_1 = require("fs-extra");
36
+ const gradle_1 = require("./gradle");
37
+ function getLanguage(projectPath = process.cwd()) {
38
+ try {
39
+ const cdktfJson = require(path.resolve(projectPath, "cdktf.json"));
40
+ return cdktfJson.language;
41
+ }
42
+ catch (_a) {
43
+ // We can not detect the language
44
+ logging_1.logger.debug(`Unable to detect language in ${projectPath}`);
45
+ return undefined;
46
+ }
47
+ }
48
+ exports.getLanguage = getLanguage;
49
+ async function getBinaryVersion(binary, versionCommand) {
50
+ const noOp = () => { }; // eslint-disable-line @typescript-eslint/no-empty-function
51
+ try {
52
+ const result = await (0, util_1.exec)(binary, [versionCommand], { env: process.env, stdio: [undefined, undefined, "ignore"] }, noOp, noOp);
53
+ return result.trim().replace(/\r?\n|\r/g, "");
54
+ }
55
+ catch (e) {
56
+ logging_1.logger.debug(`Failed to run ${binary} ${versionCommand}: ${e}`);
57
+ return undefined;
58
+ }
59
+ }
60
+ function getDotnetVersion() {
61
+ return getBinaryVersion("dotnet", "--version");
62
+ }
63
+ exports.getDotnetVersion = getDotnetVersion;
64
+ function getJavaVersion() {
65
+ return getBinaryVersion("java", "-version");
66
+ }
67
+ exports.getJavaVersion = getJavaVersion;
68
+ function getMavenVersion() {
69
+ return getBinaryVersion("mvn", "--version");
70
+ }
71
+ exports.getMavenVersion = getMavenVersion;
72
+ function getGradleVersion() {
73
+ return getBinaryVersion("gradle", "--version");
74
+ }
75
+ exports.getGradleVersion = getGradleVersion;
76
+ async function getPythonVersion() {
77
+ return ((await getBinaryVersion("python3", "--version")) ||
78
+ (await getBinaryVersion("python", "--version")));
79
+ }
80
+ exports.getPythonVersion = getPythonVersion;
81
+ function getPipVersion() {
82
+ return getBinaryVersion("pip", "--version");
83
+ }
84
+ exports.getPipVersion = getPipVersion;
85
+ function getPipenvVersion() {
86
+ return getBinaryVersion("pipenv", "--version");
87
+ }
88
+ exports.getPipenvVersion = getPipenvVersion;
89
+ function getGoVersion() {
90
+ return getBinaryVersion("go", "version");
91
+ }
92
+ exports.getGoVersion = getGoVersion;
93
+ function getNodeVersion() {
94
+ return getBinaryVersion("node", "--version");
95
+ }
96
+ exports.getNodeVersion = getNodeVersion;
97
+ async function getNodeModuleVersion(packageName) {
98
+ // Use the presence of the pnpm lock file as a signal that
99
+ // we should interrogate packages via pnpm instead of npm.
100
+ const usingPnpm = await (0, fs_extra_1.pathExists)("pnpm-lock.yaml");
101
+ return usingPnpm
102
+ ? getPnpmNodeModuleVersion(packageName)
103
+ : getNpmNodeModuleVersion(packageName);
104
+ }
105
+ async function getPnpmNodeModuleVersion(packageName) {
106
+ var _a, _b, _c;
107
+ let output;
108
+ try {
109
+ output = await (0, util_1.exec)("pnpm", ["list", packageName, "--json"], {
110
+ env: { ...process.env },
111
+ });
112
+ }
113
+ catch (e) {
114
+ logging_1.logger.debug(`Unable to run 'pnpm list ${packageName} --json': ${e}`);
115
+ return undefined;
116
+ }
117
+ let json;
118
+ try {
119
+ json = JSON.parse(output);
120
+ }
121
+ catch (e) {
122
+ logging_1.logger.debug(`Unable to parse output of 'pnpm list ${packageName} --json': ${e}`);
123
+ return undefined;
124
+ }
125
+ if (!json ||
126
+ !Array.isArray(json) ||
127
+ json.length === 0 ||
128
+ !((_c = (_b = (_a = json[0]) === null || _a === void 0 ? void 0 : _a.dependencies) === null || _b === void 0 ? void 0 : _b[packageName]) === null || _c === void 0 ? void 0 : _c.version)) {
129
+ logging_1.logger.debug(`Unable to find '${packageName}' in 'pnpm list ${packageName} --json': ${output}`);
130
+ return undefined;
131
+ }
132
+ return json[0].dependencies[packageName].version;
133
+ }
134
+ async function getNpmNodeModuleVersion(packageName) {
135
+ let output;
136
+ try {
137
+ output = await (0, util_1.exec)("npm", ["list", packageName, "--json"], {
138
+ env: { ...process.env },
139
+ });
140
+ }
141
+ catch (e) {
142
+ logging_1.logger.debug(`Unable to run 'npm list ${packageName} --json': ${e}`);
143
+ return undefined;
144
+ }
145
+ let json;
146
+ try {
147
+ json = JSON.parse(output);
148
+ }
149
+ catch (e) {
150
+ logging_1.logger.debug(`Unable to parse output of 'npm list ${packageName} --json': ${e}`);
151
+ return undefined;
152
+ }
153
+ if (!json.dependencies ||
154
+ !json.dependencies[packageName] ||
155
+ !json.dependencies[packageName].version) {
156
+ logging_1.logger.debug(`Unable to find '${packageName}' in 'npm list ${packageName} --json': ${output}`);
157
+ return undefined;
158
+ }
159
+ return json.dependencies[packageName].version;
160
+ }
161
+ async function getPythonPackageVersion(packageName) {
162
+ let output;
163
+ try {
164
+ output = await (0, util_1.exec)("pipenv", ["run", "pip", "show", "-qq", packageName], {
165
+ env: process.env,
166
+ });
167
+ // Running with `-qq` suppresses both missing packages and actual package
168
+ output = await (0, util_1.exec)("pipenv", ["run", "pip", "show", packageName], {
169
+ env: process.env,
170
+ });
171
+ }
172
+ catch (e) {
173
+ logging_1.logger.debug(`Unable to run 'pipenv run pip show ${packageName}': ${e}`);
174
+ }
175
+ // If we couldn't get the output using pipenv, try to get it using pip directly
176
+ if (!output) {
177
+ try {
178
+ output = await (0, util_1.exec)("pip", ["show", "-qq", packageName], {
179
+ env: process.env,
180
+ });
181
+ // Running with `-qq` suppresses both missing packages and actual package
182
+ output = await (0, util_1.exec)("pip", ["show", packageName], {
183
+ env: process.env,
184
+ });
185
+ }
186
+ catch (e) {
187
+ logging_1.logger.debug(`Unable to run 'pip show ${packageName}': ${e}`);
188
+ }
189
+ }
190
+ if (!output) {
191
+ return undefined;
192
+ }
193
+ const versionInfo = output
194
+ .split(/\r\n|\r|\n/)
195
+ .find((line) => line.startsWith("Version:"));
196
+ if (!versionInfo) {
197
+ logging_1.logger.debug(`Unable to find version in output of 'pipenv run pip show ${packageName}' / 'pip show ${packageName}': ${output}`);
198
+ return undefined;
199
+ }
200
+ const version = versionInfo.split(":")[1].trim();
201
+ return version;
202
+ }
203
+ // Once https://github.com/NuGet/Home/issues/7752 gets resolved we can also try with --json
204
+ async function getCSharpPackageVersion(packageName) {
205
+ const translationMap = {
206
+ jsii: "Amazon.JSII.Runtime",
207
+ constructs: "Constructs",
208
+ cdktf: "HashiCorp.Cdktf",
209
+ cdktn: "Io.Cdktn",
210
+ };
211
+ const cSharpPackageName = translationMap[packageName] || packageName;
212
+ let output;
213
+ try {
214
+ output = await (0, util_1.exec)("dotnet", ["list", "package", "--include-transitive"], {
215
+ env: process.env,
216
+ });
217
+ }
218
+ catch (e) {
219
+ logging_1.logger.debug(`Unable to run 'dotnet list package --include-transitive': ${e}`);
220
+ return undefined;
221
+ }
222
+ const versionLine = output
223
+ .split(/\r\n|\r|\n/)
224
+ .find((line) => line.includes(`> ${cSharpPackageName}`));
225
+ if (!versionLine) {
226
+ logging_1.logger.debug(`Unable to find version for '${cSharpPackageName}' in output of 'dotnet list package --include-transitive': ${output}`);
227
+ return undefined;
228
+ }
229
+ // A line might look like this:
230
+ // Transitive Package Resolved
231
+ // > Amazon.JSII.Runtime 1.17.1
232
+ // Therefore we reverse split by whitespace and reverse
233
+ // so that the first thing we find is the version number
234
+ return versionLine
235
+ .split(" ")
236
+ .reverse()
237
+ .find((part) => part !== "");
238
+ }
239
+ async function getGoPackageVersion(packageName) {
240
+ var _a;
241
+ const translationMap = {
242
+ jsii: "jsii-runtime-go",
243
+ cdktf: "github.com/hashicorp/terraform-cdk-go",
244
+ cdktn: "github.com/open-constructs/cdk-terrain-go",
245
+ };
246
+ const goPackageName = translationMap[packageName] || packageName;
247
+ let output;
248
+ try {
249
+ output = await (0, util_1.exec)("go", ["list", "-m", "all"], {
250
+ env: process.env,
251
+ });
252
+ }
253
+ catch (e) {
254
+ logging_1.logger.debug(`Unable to run 'go list -m all': ${e}`);
255
+ return undefined;
256
+ }
257
+ let versionLine = output
258
+ .split(/\r\n|\r|\n/)
259
+ .find((line) => line.includes(goPackageName));
260
+ if (!versionLine) {
261
+ logging_1.logger.debug(`Unable to find version for '${goPackageName}' in output of 'go list -m all': ${output}`);
262
+ return undefined;
263
+ }
264
+ // We are dealing with a local version
265
+ if (versionLine.includes("=>")) {
266
+ logging_1.logger.debug(`Found local version for '${goPackageName}': ${versionLine}`);
267
+ versionLine = versionLine.split("=>")[0].trim();
268
+ }
269
+ return (_a = versionLine.split(" ").pop()) === null || _a === void 0 ? void 0 : _a.replace("v", "");
270
+ }
271
+ async function getMavenPackageVersion(packageName) {
272
+ const translationMap = {
273
+ jsii: "jsii-runtime",
274
+ };
275
+ const javaPackageName = translationMap[packageName] || packageName;
276
+ let output;
277
+ try {
278
+ output = await (0, util_1.exec)("mvn", ["dependency:list"], {
279
+ env: process.env,
280
+ });
281
+ }
282
+ catch (e) {
283
+ logging_1.logger.debug(`Unable to run 'mvn dependency:list': ${e}`);
284
+ return undefined;
285
+ }
286
+ const resolutionPart = output.split("The following files have been resolved")[1];
287
+ if (!resolutionPart) {
288
+ logging_1.logger.debug(`Unable to find resolution passage in output of 'mvn dependency:list': ${output}`);
289
+ return undefined;
290
+ }
291
+ // We need to search for the package name AND a colon to not match a line like
292
+ // [INFO] com.hashicorp:cdktf-provider-aws:jar:9.0.9:compile
293
+ // when looking for the cdktf package (see Github issue #1994)
294
+ const versionLine = resolutionPart
295
+ .split(/\r\n|\r|\n/)
296
+ .find((line) => line.includes(`${javaPackageName}:`));
297
+ if (!versionLine) {
298
+ logging_1.logger.debug(`Unable to find version for '${javaPackageName}' in output of 'mvn dependency:list': ${output}`);
299
+ return undefined;
300
+ }
301
+ // Example line: [INFO] com.hashicorp:cdktf:jar:0.0.0:compile
302
+ const versionStartDelimiter = `${javaPackageName}:jar:`;
303
+ const versionStart = versionLine.indexOf(versionStartDelimiter) + versionStartDelimiter.length;
304
+ const versionEndDelemiter = ":compile";
305
+ const versionEnd = versionLine.indexOf(versionEndDelemiter);
306
+ return versionLine.substring(versionStart, versionEnd);
307
+ }
308
+ async function getJavaPackageVersion(packageName) {
309
+ if ((0, gradle_1.isGradleProject)("./")) {
310
+ return (0, gradle_1.getGradlePackageVersion)(packageName);
311
+ }
312
+ return getMavenPackageVersion(packageName);
313
+ }
314
+ async function getPackageVersion(language, packageName) {
315
+ const noOp = async () => undefined; // eslint-disable-line @typescript-eslint/no-empty-function
316
+ const getLibraryVersionMap = {
317
+ typescript: getNodeModuleVersion,
318
+ python: getPythonPackageVersion,
319
+ go: getGoPackageVersion,
320
+ csharp: getCSharpPackageVersion,
321
+ java: getJavaPackageVersion,
322
+ };
323
+ const libVersion = await (getLibraryVersionMap[language] || noOp)(packageName);
324
+ return libVersion !== null && libVersion !== void 0 ? libVersion : undefined;
325
+ }
326
+ exports.getPackageVersion = getPackageVersion;
327
+ async function collectDebugInformation() {
328
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
329
+ const debugOutput = {};
330
+ const language = getLanguage();
331
+ debugOutput["language"] = language !== null && language !== void 0 ? language : null;
332
+ debugOutput["cdktn-cli"] = version_1.DISPLAY_VERSION;
333
+ const node = getNodeVersion();
334
+ debugOutput["node"] = (_a = (await node)) !== null && _a !== void 0 ? _a : null;
335
+ if (language) {
336
+ const cdktn = getPackageVersion(language, "cdktn");
337
+ const cdktf = getPackageVersion(language, "cdktf");
338
+ const constructs = getPackageVersion(language, "constructs");
339
+ const jsii = getPackageVersion(language, "jsii");
340
+ debugOutput["cdktn"] = (_b = (await cdktn)) !== null && _b !== void 0 ? _b : null;
341
+ debugOutput["cdktf"] = (_c = (await cdktf)) !== null && _c !== void 0 ? _c : null;
342
+ debugOutput["constructs"] = (_d = (await constructs)) !== null && _d !== void 0 ? _d : null;
343
+ debugOutput["jsii"] = (_e = (await jsii)) !== null && _e !== void 0 ? _e : null;
344
+ }
345
+ debugOutput["terraform"] = await terraform_1.terraformVersion;
346
+ debugOutput["arch"] = os.arch();
347
+ debugOutput["os"] = `${os.platform()} ${os.release()}`;
348
+ switch (language) {
349
+ case "python":
350
+ {
351
+ const python = getPythonVersion();
352
+ const pip = getPipVersion();
353
+ const pipenv = getPipenvVersion();
354
+ debugOutput["python"] = (_f = (await python)) !== null && _f !== void 0 ? _f : null;
355
+ debugOutput["pip"] = (_g = (await pip)) !== null && _g !== void 0 ? _g : null;
356
+ debugOutput["pipenv"] = (_h = (await pipenv)) !== null && _h !== void 0 ? _h : null;
357
+ }
358
+ break;
359
+ case "java":
360
+ {
361
+ const java = getJavaVersion();
362
+ const maven = getMavenVersion();
363
+ const gradle = getGradleVersion();
364
+ debugOutput["java"] = (_j = (await java)) !== null && _j !== void 0 ? _j : null;
365
+ debugOutput["maven"] = (_k = (await maven)) !== null && _k !== void 0 ? _k : null;
366
+ debugOutput["gradle"] = (_l = (await gradle)) !== null && _l !== void 0 ? _l : null;
367
+ }
368
+ break;
369
+ case "csharp":
370
+ debugOutput["dotnet"] = (_m = (await getDotnetVersion())) !== null && _m !== void 0 ? _m : null;
371
+ break;
372
+ case "go":
373
+ debugOutput["go"] = (_o = (await getGoVersion())) !== null && _o !== void 0 ? _o : null;
374
+ break;
375
+ }
376
+ return debugOutput;
377
+ }
378
+ exports.collectDebugInformation = collectDebugInformation;
379
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkZWJ1Zy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQTZCO0FBQzdCLHVDQUF5QjtBQUN6Qix1Q0FBbUM7QUFDbkMsaUNBQThCO0FBQzlCLDJDQUErQztBQUMvQyx1Q0FBNEM7QUFDNUMsdUNBQXNDO0FBQ3RDLHFDQUFvRTtBQUVwRSxTQUFnQixXQUFXLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFDckQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7UUFDbkUsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFDO0lBQzVCLENBQUM7SUFBQyxXQUFNLENBQUM7UUFDUCxpQ0FBaUM7UUFDakMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFURCxrQ0FTQztBQUVELEtBQUssVUFBVSxnQkFBZ0IsQ0FDN0IsTUFBYyxFQUNkLGNBQXNCO0lBRXRCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDLDJEQUEyRDtJQUNsRixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsV0FBSSxFQUN2QixNQUFNLEVBQ04sQ0FBQyxjQUFjLENBQUMsRUFDaEIsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQzdELElBQUksRUFDSixJQUFJLENBQ0wsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDLElB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RyxlQUFlLEVBQUUsQ0FBQztnQkFDaEMsTUFBTSxNQUFNLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztnQkFDbEMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQUEsQ0FBQyxNQUFNLElBQUksQ0FBQyxtQ0FBSSxJQUFJLENBQUM7Z0JBQzNDLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFBLENBQUMsTUFBTSxLQUFLLENBQUMsbUNBQUksSUFBSSxDQUFDO2dCQUM3QyxXQUFXLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBQSxDQUFDLE1BQU0sTUFBTSxDQUFDLG1DQUFJLElBQUksQ0FBQztZQUNqRCxDQUFDO1lBQ0QsTUFBTTtRQUNSLEtBQUssUUFBUTtZQUNYLFdBQVcsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFBLENBQUMsTUFBTSxnQkFBZ0IsRUFBRSxDQUFDLG1DQUFJLElBQUksQ0FBQztZQUMzRCxNQUFNO1FBQ1IsS0FBSyxJQUFJO1lBQ1AsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQUEsQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLG1DQUFJLElBQUksQ0FBQztZQUNuRCxNQUFNO0lBQ1YsQ0FBQztJQUVELE9BQU8sV0FBVyxDQUFDO0FBQ3JCLENBQUM7QUF0REQsMERBc0RDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIG9zIGZyb20gXCJvc1wiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IHRlcnJhZm9ybVZlcnNpb24gfSBmcm9tIFwiLi90ZXJyYWZvcm1cIjtcbmltcG9ydCB7IERJU1BMQVlfVkVSU0lPTiB9IGZyb20gXCIuL3ZlcnNpb25cIjtcbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7IGdldEdyYWRsZVBhY2thZ2VWZXJzaW9uLCBpc0dyYWRsZVByb2plY3QgfSBmcm9tIFwiLi9ncmFkbGVcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmd1YWdlKHByb2plY3RQYXRoID0gcHJvY2Vzcy5jd2QoKSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHRyeSB7XG4gICAgY29uc3QgY2RrdGZKc29uID0gcmVxdWlyZShwYXRoLnJlc29sdmUocHJvamVjdFBhdGgsIFwiY2RrdGYuanNvblwiKSk7XG4gICAgcmV0dXJuIGNka3RmSnNvbi5sYW5ndWFnZTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gV2UgY2FuIG5vdCBkZXRlY3QgdGhlIGxhbmd1YWdlXG4gICAgbG9nZ2VyLmRlYnVnKGBVbmFibGUgdG8gZGV0ZWN0IGxhbmd1YWdlIGluICR7cHJvamVjdFBhdGh9YCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRCaW5hcnlWZXJzaW9uKFxuICBiaW5hcnk6IHN0cmluZyxcbiAgdmVyc2lvbkNvbW1hbmQ6IHN0cmluZyxcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IG5vT3AgPSAoKSA9PiB7fTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleGVjKFxuICAgICAgYmluYXJ5LFxuICAgICAgW3ZlcnNpb25Db21tYW5kXSxcbiAgICAgIHsgZW52OiBwcm9jZXNzLmVudiwgc3RkaW86IFt1bmRlZmluZWQsIHVuZGVmaW5lZCwgXCJpZ25vcmVcIl0gfSxcbiAgICAgIG5vT3AsXG4gICAgICBub09wLFxuICAgICk7XG4gICAgcmV0dXJuIHJlc3VsdC50cmltKCkucmVwbGFjZSgvXFxyP1xcbnxcXHIvZywgXCJcIik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYEZhaWxlZCB0byBydW4gJHtiaW5hcnl9ICR7dmVyc2lvbkNvbW1hbmR9OiAke2V9YCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RG90bmV0VmVyc2lvbigpIHtcbiAgcmV0dXJuIGdldEJpbmFyeVZlcnNpb24oXCJkb3RuZXRcIiwgXCItLXZlcnNpb25cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRKYXZhVmVyc2lvbigpIHtcbiAgcmV0dXJuIGdldEJpbmFyeVZlcnNpb24oXCJqYXZhXCIsIFwiLXZlcnNpb25cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF2ZW5WZXJzaW9uKCkge1xuICByZXR1cm4gZ2V0QmluYXJ5VmVyc2lvbihcIm12blwiLCBcIi0tdmVyc2lvblwiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEdyYWRsZVZlcnNpb24oKSB7XG4gIHJldHVybiBnZXRCaW5hcnlWZXJzaW9uKFwiZ3JhZGxlXCIsIFwiLS12ZXJzaW9uXCIpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHl0aG9uVmVyc2lvbigpIHtcbiAgcmV0dXJuIChcbiAgICAoYXdhaXQgZ2V0QmluYXJ5VmVyc2lvbihcInB5dGhvbjNcIiwgXCItLXZlcnNpb25cIikpIHx8XG4gICAgKGF3YWl0IGdldEJpbmFyeVZlcnNpb24oXCJweXRob25cIiwgXCItLXZlcnNpb25cIikpXG4gICk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlwVmVyc2lvbigpIHtcbiAgcmV0dXJuIGdldEJpbmFyeVZlcnNpb24oXCJwaXBcIiwgXCItLXZlcnNpb25cIik7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGlwZW52VmVyc2lvbigpIHtcbiAgcmV0dXJuIGdldEJpbmFyeVZlcnNpb24oXCJwaXBlbnZcIiwgXCItLXZlcnNpb25cIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRHb1ZlcnNpb24oKSB7XG4gIHJldHVybiBnZXRCaW5hcnlWZXJzaW9uKFwiZ29cIiwgXCJ2ZXJzaW9uXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm9kZVZlcnNpb24oKSB7XG4gIHJldHVybiBnZXRCaW5hcnlWZXJzaW9uKFwibm9kZVwiLCBcIi0tdmVyc2lvblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0Tm9kZU1vZHVsZVZlcnNpb24oXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAvLyBVc2UgdGhlIHByZXNlbmNlIG9mIHRoZSBwbnBtIGxvY2sgZmlsZSBhcyBhIHNpZ25hbCB0aGF0XG4gIC8vIHdlIHNob3VsZCBpbnRlcnJvZ2F0ZSBwYWNrYWdlcyB2aWEgcG5wbSBpbnN0ZWFkIG9mIG5wbS5cbiAgY29uc3QgdXNpbmdQbnBtID0gYXdhaXQgcGF0aEV4aXN0cyhcInBucG0tbG9jay55YW1sXCIpO1xuXG4gIHJldHVybiB1c2luZ1BucG1cbiAgICA/IGdldFBucG1Ob2RlTW9kdWxlVmVyc2lvbihwYWNrYWdlTmFtZSlcbiAgICA6IGdldE5wbU5vZGVNb2R1bGVWZXJzaW9uKHBhY2thZ2VOYW1lKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0UG5wbU5vZGVNb2R1bGVWZXJzaW9uKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgbGV0IG91dHB1dDtcblxuICB0cnkge1xuICAgIG91dHB1dCA9IGF3YWl0IGV4ZWMoXCJwbnBtXCIsIFtcImxpc3RcIiwgcGFja2FnZU5hbWUsIFwiLS1qc29uXCJdLCB7XG4gICAgICBlbnY6IHsgLi4ucHJvY2Vzcy5lbnYgfSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgVW5hYmxlIHRvIHJ1biAncG5wbSBsaXN0ICR7cGFja2FnZU5hbWV9IC0tanNvbic6ICR7ZX1gKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IGpzb247XG4gIHRyeSB7XG4gICAganNvbiA9IEpTT04ucGFyc2Uob3V0cHV0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBVbmFibGUgdG8gcGFyc2Ugb3V0cHV0IG9mICdwbnBtIGxpc3QgJHtwYWNrYWdlTmFtZX0gLS1qc29uJzogJHtlfWAsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKFxuICAgICFqc29uIHx8XG4gICAgIUFycmF5LmlzQXJyYXkoanNvbikgfHxcbiAgICBqc29uLmxlbmd0aCA9PT0gMCB8fFxuICAgICFqc29uWzBdPy5kZXBlbmRlbmNpZXM/LltwYWNrYWdlTmFtZV0/LnZlcnNpb25cbiAgKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFVuYWJsZSB0byBmaW5kICcke3BhY2thZ2VOYW1lfScgaW4gJ3BucG0gbGlzdCAke3BhY2thZ2VOYW1lfSAtLWpzb24nOiAke291dHB1dH1gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBqc29uWzBdLmRlcGVuZGVuY2llc1twYWNrYWdlTmFtZV0udmVyc2lvbjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TnBtTm9kZU1vZHVsZVZlcnNpb24oXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBsZXQgb3V0cHV0O1xuXG4gIHRyeSB7XG4gICAgb3V0cHV0ID0gYXdhaXQgZXhlYyhcIm5wbVwiLCBbXCJsaXN0XCIsIHBhY2thZ2VOYW1lLCBcIi0tanNvblwiXSwge1xuICAgICAgZW52OiB7IC4uLnByb2Nlc3MuZW52IH0sXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFVuYWJsZSB0byBydW4gJ25wbSBsaXN0ICR7cGFja2FnZU5hbWV9IC0tanNvbic6ICR7ZX1gKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgbGV0IGpzb247XG4gIHRyeSB7XG4gICAganNvbiA9IEpTT04ucGFyc2Uob3V0cHV0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBVbmFibGUgdG8gcGFyc2Ugb3V0cHV0IG9mICducG0gbGlzdCAke3BhY2thZ2VOYW1lfSAtLWpzb24nOiAke2V9YCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoXG4gICAgIWpzb24uZGVwZW5kZW5jaWVzIHx8XG4gICAgIWpzb24uZGVwZW5kZW5jaWVzW3BhY2thZ2VOYW1lXSB8fFxuICAgICFqc29uLmRlcGVuZGVuY2llc1twYWNrYWdlTmFtZV0udmVyc2lvblxuICApIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgJyR7cGFja2FnZU5hbWV9JyBpbiAnbnBtIGxpc3QgJHtwYWNrYWdlTmFtZX0gLS1qc29uJzogJHtvdXRwdXR9YCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ganNvbi5kZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdLnZlcnNpb247XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFB5dGhvblBhY2thZ2VWZXJzaW9uKFxuICBwYWNrYWdlTmFtZTogc3RyaW5nLFxuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgbGV0IG91dHB1dDtcbiAgdHJ5IHtcbiAgICBvdXRwdXQgPSBhd2FpdCBleGVjKFwicGlwZW52XCIsIFtcInJ1blwiLCBcInBpcFwiLCBcInNob3dcIiwgXCItcXFcIiwgcGFja2FnZU5hbWVdLCB7XG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIH0pO1xuXG4gICAgLy8gUnVubmluZyB3aXRoIGAtcXFgIHN1cHByZXNzZXMgYm90aCBtaXNzaW5nIHBhY2thZ2VzIGFuZCBhY3R1YWwgcGFja2FnZVxuICAgIG91dHB1dCA9IGF3YWl0IGV4ZWMoXCJwaXBlbnZcIiwgW1wicnVuXCIsIFwicGlwXCIsIFwic2hvd1wiLCBwYWNrYWdlTmFtZV0sIHtcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZGVidWcoYFVuYWJsZSB0byBydW4gJ3BpcGVudiBydW4gcGlwIHNob3cgJHtwYWNrYWdlTmFtZX0nOiAke2V9YCk7XG4gIH1cblxuICAvLyBJZiB3ZSBjb3VsZG4ndCBnZXQgdGhlIG91dHB1dCB1c2luZyBwaXBlbnYsIHRyeSB0byBnZXQgaXQgdXNpbmcgcGlwIGRpcmVjdGx5XG4gIGlmICghb3V0cHV0KSB7XG4gICAgdHJ5IHtcbiAgICAgIG91dHB1dCA9IGF3YWl0IGV4ZWMoXCJwaXBcIiwgW1wic2hvd1wiLCBcIi1xcVwiLCBwYWNrYWdlTmFtZV0sIHtcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgIH0pO1xuXG4gICAgICAvLyBSdW5uaW5nIHdpdGggYC1xcWAgc3VwcHJlc3NlcyBib3RoIG1pc3NpbmcgcGFja2FnZXMgYW5kIGFjdHVhbCBwYWNrYWdlXG4gICAgICBvdXRwdXQgPSBhd2FpdCBleGVjKFwicGlwXCIsIFtcInNob3dcIiwgcGFja2FnZU5hbWVdLCB7XG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYFVuYWJsZSB0byBydW4gJ3BpcCBzaG93ICR7cGFja2FnZU5hbWV9JzogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGlmICghb3V0cHV0KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHZlcnNpb25JbmZvID0gb3V0cHV0XG4gICAgLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pXG4gICAgLmZpbmQoKGxpbmUpID0+IGxpbmUuc3RhcnRzV2l0aChcIlZlcnNpb246XCIpKTtcblxuICBpZiAoIXZlcnNpb25JbmZvKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHZlcnNpb24gaW4gb3V0cHV0IG9mICdwaXBlbnYgcnVuIHBpcCBzaG93ICR7cGFja2FnZU5hbWV9JyAvICdwaXAgc2hvdyAke3BhY2thZ2VOYW1lfSc6ICR7b3V0cHV0fWAsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvbiA9IHZlcnNpb25JbmZvLnNwbGl0KFwiOlwiKVsxXS50cmltKCk7XG4gIHJldHVybiB2ZXJzaW9uO1xufVxuXG4vLyBPbmNlIGh0dHBzOi8vZ2l0aHViLmNvbS9OdUdldC9Ib21lL2lzc3Vlcy83NzUyIGdldHMgcmVzb2x2ZWQgd2UgY2FuIGFsc28gdHJ5IHdpdGggLS1qc29uXG5hc3luYyBmdW5jdGlvbiBnZXRDU2hhcnBQYWNrYWdlVmVyc2lvbihwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGpzaWk6IFwiQW1hem9uLkpTSUkuUnVudGltZVwiLFxuICAgIGNvbnN0cnVjdHM6IFwiQ29uc3RydWN0c1wiLFxuICAgIGNka3RmOiBcIkhhc2hpQ29ycC5DZGt0ZlwiLFxuICAgIGNka3RuOiBcIklvLkNka3RuXCIsXG4gIH07XG4gIGNvbnN0IGNTaGFycFBhY2thZ2VOYW1lID0gdHJhbnNsYXRpb25NYXBbcGFja2FnZU5hbWVdIHx8IHBhY2thZ2VOYW1lO1xuXG4gIGxldCBvdXRwdXQ7XG4gIHRyeSB7XG4gICAgb3V0cHV0ID0gYXdhaXQgZXhlYyhcImRvdG5ldFwiLCBbXCJsaXN0XCIsIFwicGFja2FnZVwiLCBcIi0taW5jbHVkZS10cmFuc2l0aXZlXCJdLCB7XG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFVuYWJsZSB0byBydW4gJ2RvdG5ldCBsaXN0IHBhY2thZ2UgLS1pbmNsdWRlLXRyYW5zaXRpdmUnOiAke2V9YCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCB2ZXJzaW9uTGluZSA9IG91dHB1dFxuICAgIC5zcGxpdCgvXFxyXFxufFxccnxcXG4vKVxuICAgIC5maW5kKChsaW5lKSA9PiBsaW5lLmluY2x1ZGVzKGA+ICR7Y1NoYXJwUGFja2FnZU5hbWV9YCkpO1xuXG4gIGlmICghdmVyc2lvbkxpbmUpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgdmVyc2lvbiBmb3IgJyR7Y1NoYXJwUGFja2FnZU5hbWV9JyBpbiBvdXRwdXQgb2YgJ2RvdG5ldCBsaXN0IHBhY2thZ2UgLS1pbmNsdWRlLXRyYW5zaXRpdmUnOiAke291dHB1dH1gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEEgbGluZSBtaWdodCBsb29rIGxpa2UgdGhpczpcbiAgLy8gICBUcmFuc2l0aXZlIFBhY2thZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb2x2ZWRcbiAgLy8gICA+IEFtYXpvbi5KU0lJLlJ1bnRpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4xNy4xXG4gIC8vIFRoZXJlZm9yZSB3ZSByZXZlcnNlIHNwbGl0IGJ5IHdoaXRlc3BhY2UgYW5kIHJldmVyc2VcbiAgLy8gc28gdGhhdCB0aGUgZmlyc3QgdGhpbmcgd2UgZmluZCBpcyB0aGUgdmVyc2lvbiBudW1iZXJcbiAgcmV0dXJuIHZlcnNpb25MaW5lXG4gICAgLnNwbGl0KFwiIFwiKVxuICAgIC5yZXZlcnNlKClcbiAgICAuZmluZCgocGFydCkgPT4gcGFydCAhPT0gXCJcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEdvUGFja2FnZVZlcnNpb24ocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBjb25zdCB0cmFuc2xhdGlvbk1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICBqc2lpOiBcImpzaWktcnVudGltZS1nb1wiLFxuICAgIGNka3RmOiBcImdpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGstZ29cIixcbiAgICBjZGt0bjogXCJnaXRodWIuY29tL29wZW4tY29uc3RydWN0cy9jZGstdGVycmFpbi1nb1wiLFxuICB9O1xuICBjb25zdCBnb1BhY2thZ2VOYW1lID0gdHJhbnNsYXRpb25NYXBbcGFja2FnZU5hbWVdIHx8IHBhY2thZ2VOYW1lO1xuXG4gIGxldCBvdXRwdXQ7XG4gIHRyeSB7XG4gICAgb3V0cHV0ID0gYXdhaXQgZXhlYyhcImdvXCIsIFtcImxpc3RcIiwgXCItbVwiLCBcImFsbFwiXSwge1xuICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgVW5hYmxlIHRvIHJ1biAnZ28gbGlzdCAtbSBhbGwnOiAke2V9YCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGxldCB2ZXJzaW9uTGluZSA9IG91dHB1dFxuICAgIC5zcGxpdCgvXFxyXFxufFxccnxcXG4vKVxuICAgIC5maW5kKChsaW5lKSA9PiBsaW5lLmluY2x1ZGVzKGdvUGFja2FnZU5hbWUpKTtcblxuICBpZiAoIXZlcnNpb25MaW5lKSB7XG4gICAgbG9nZ2VyLmRlYnVnKFxuICAgICAgYFVuYWJsZSB0byBmaW5kIHZlcnNpb24gZm9yICcke2dvUGFja2FnZU5hbWV9JyBpbiBvdXRwdXQgb2YgJ2dvIGxpc3QgLW0gYWxsJzogJHtvdXRwdXR9YCxcbiAgICApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBXZSBhcmUgZGVhbGluZyB3aXRoIGEgbG9jYWwgdmVyc2lvblxuICBpZiAodmVyc2lvbkxpbmUuaW5jbHVkZXMoXCI9PlwiKSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgRm91bmQgbG9jYWwgdmVyc2lvbiBmb3IgJyR7Z29QYWNrYWdlTmFtZX0nOiAke3ZlcnNpb25MaW5lfWApO1xuICAgIHZlcnNpb25MaW5lID0gdmVyc2lvbkxpbmUuc3BsaXQoXCI9PlwiKVswXS50cmltKCk7XG4gIH1cblxuICByZXR1cm4gdmVyc2lvbkxpbmUuc3BsaXQoXCIgXCIpLnBvcCgpPy5yZXBsYWNlKFwidlwiLCBcIlwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWF2ZW5QYWNrYWdlVmVyc2lvbihwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIGpzaWk6IFwianNpaS1ydW50aW1lXCIsXG4gIH07XG4gIGNvbnN0IGphdmFQYWNrYWdlTmFtZSA9IHRyYW5zbGF0aW9uTWFwW3BhY2thZ2VOYW1lXSB8fCBwYWNrYWdlTmFtZTtcblxuICBsZXQgb3V0cHV0O1xuICB0cnkge1xuICAgIG91dHB1dCA9IGF3YWl0IGV4ZWMoXCJtdm5cIiwgW1wiZGVwZW5kZW5jeTpsaXN0XCJdLCB7XG4gICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBVbmFibGUgdG8gcnVuICdtdm4gZGVwZW5kZW5jeTpsaXN0JzogJHtlfWApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCByZXNvbHV0aW9uUGFydCA9IG91dHB1dC5zcGxpdChcbiAgICBcIlRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBiZWVuIHJlc29sdmVkXCIsXG4gIClbMV07XG4gIGlmICghcmVzb2x1dGlvblBhcnQpIHtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgcmVzb2x1dGlvbiBwYXNzYWdlIGluIG91dHB1dCBvZiAnbXZuIGRlcGVuZGVuY3k6bGlzdCc6ICR7b3V0cHV0fWAsXG4gICAgKTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLy8gV2UgbmVlZCB0byBzZWFyY2ggZm9yIHRoZSBwYWNrYWdlIG5hbWUgQU5EIGEgY29sb24gdG8gbm90IG1hdGNoIGEgbGluZSBsaWtlXG4gIC8vIFtJTkZPXSAgICBjb20uaGFzaGljb3JwOmNka3RmLXByb3ZpZGVyLWF3czpqYXI6OS4wLjk6Y29tcGlsZVxuICAvLyB3aGVuIGxvb2tpbmcgZm9yIHRoZSBjZGt0ZiBwYWNrYWdlIChzZWUgR2l0aHViIGlzc3VlICMxOTk0KVxuICBjb25zdCB2ZXJzaW9uTGluZSA9IHJlc29sdXRpb25QYXJ0XG4gICAgLnNwbGl0KC9cXHJcXG58XFxyfFxcbi8pXG4gICAgLmZpbmQoKGxpbmUpID0+IGxpbmUuaW5jbHVkZXMoYCR7amF2YVBhY2thZ2VOYW1lfTpgKSk7XG5cbiAgaWYgKCF2ZXJzaW9uTGluZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBVbmFibGUgdG8gZmluZCB2ZXJzaW9uIGZvciAnJHtqYXZhUGFja2FnZU5hbWV9JyBpbiBvdXRwdXQgb2YgJ212biBkZXBlbmRlbmN5Omxpc3QnOiAke291dHB1dH1gLFxuICAgICk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEV4YW1wbGUgbGluZTogW0lORk9dICAgIGNvbS5oYXNoaWNvcnA6Y2RrdGY6amFyOjAuMC4wOmNvbXBpbGVcbiAgY29uc3QgdmVyc2lvblN0YXJ0RGVsaW1pdGVyID0gYCR7amF2YVBhY2thZ2VOYW1lfTpqYXI6YDtcbiAgY29uc3QgdmVyc2lvblN0YXJ0ID1cbiAgICB2ZXJzaW9uTGluZS5pbmRleE9mKHZlcnNpb25TdGFydERlbGltaXRlcikgKyB2ZXJzaW9uU3RhcnREZWxpbWl0ZXIubGVuZ3RoO1xuICBjb25zdCB2ZXJzaW9uRW5kRGVsZW1pdGVyID0gXCI6Y29tcGlsZVwiO1xuICBjb25zdCB2ZXJzaW9uRW5kID0gdmVyc2lvbkxpbmUuaW5kZXhPZih2ZXJzaW9uRW5kRGVsZW1pdGVyKTtcbiAgcmV0dXJuIHZlcnNpb25MaW5lLnN1YnN0cmluZyh2ZXJzaW9uU3RhcnQsIHZlcnNpb25FbmQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRKYXZhUGFja2FnZVZlcnNpb24ocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBpZiAoaXNHcmFkbGVQcm9qZWN0KFwiLi9cIikpIHtcbiAgICByZXR1cm4gZ2V0R3JhZGxlUGFja2FnZVZlcnNpb24ocGFja2FnZU5hbWUpO1xuICB9XG5cbiAgcmV0dXJuIGdldE1hdmVuUGFja2FnZVZlcnNpb24ocGFja2FnZU5hbWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UGFja2FnZVZlcnNpb24oXG4gIGxhbmd1YWdlOiBzdHJpbmcsXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4pOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBub09wID0gYXN5bmMgKCkgPT4gdW5kZWZpbmVkOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBjb25zdCBnZXRMaWJyYXJ5VmVyc2lvbk1hcDogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICAobmFtZTogc3RyaW5nKSA9PiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD5cbiAgPiA9IHtcbiAgICB0eXBlc2NyaXB0OiBnZXROb2RlTW9kdWxlVmVyc2lvbixcbiAgICBweXRob246IGdldFB5dGhvblBhY2thZ2VWZXJzaW9uLFxuICAgIGdvOiBnZXRHb1BhY2thZ2VWZXJzaW9uLFxuICAgIGNzaGFycDogZ2V0Q1NoYXJwUGFja2FnZVZlcnNpb24sXG4gICAgamF2YTogZ2V0SmF2YVBhY2thZ2VWZXJzaW9uLFxuICB9O1xuXG4gIGNvbnN0IGxpYlZlcnNpb24gPSBhd2FpdCAoZ2V0TGlicmFyeVZlcnNpb25NYXBbbGFuZ3VhZ2VdIHx8IG5vT3ApKFxuICAgIHBhY2thZ2VOYW1lLFxuICApO1xuICByZXR1cm4gbGliVmVyc2lvbiA/PyB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb2xsZWN0RGVidWdJbmZvcm1hdGlvbigpIHtcbiAgY29uc3QgZGVidWdPdXRwdXQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IG51bGw+ID0ge307XG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoKTtcbiAgZGVidWdPdXRwdXRbXCJsYW5ndWFnZVwiXSA9IGxhbmd1YWdlID8/IG51bGw7XG4gIGRlYnVnT3V0cHV0W1wiY2RrdG4tY2xpXCJdID0gRElTUExBWV9WRVJTSU9OO1xuXG4gIGNvbnN0IG5vZGUgPSBnZXROb2RlVmVyc2lvbigpO1xuXG4gIGRlYnVnT3V0cHV0W1wibm9kZVwiXSA9IChhd2FpdCBub2RlKSA/PyBudWxsO1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICBjb25zdCBjZGt0biA9IGdldFBhY2thZ2VWZXJzaW9uKGxhbmd1YWdlLCBcImNka3RuXCIpO1xuICAgIGNvbnN0IGNka3RmID0gZ2V0UGFja2FnZVZlcnNpb24obGFuZ3VhZ2UsIFwiY2RrdGZcIik7XG4gICAgY29uc3QgY29uc3RydWN0cyA9IGdldFBhY2thZ2VWZXJzaW9uKGxhbmd1YWdlLCBcImNvbnN0cnVjdHNcIik7XG4gICAgY29uc3QganNpaSA9IGdldFBhY2thZ2VWZXJzaW9uKGxhbmd1YWdlLCBcImpzaWlcIik7XG5cbiAgICBkZWJ1Z091dHB1dFtcImNka3RuXCJdID0gKGF3YWl0IGNka3RuKSA/PyBudWxsO1xuICAgIGRlYnVnT3V0cHV0W1wiY2RrdGZcIl0gPSAoYXdhaXQgY2RrdGYpID8/IG51bGw7XG4gICAgZGVidWdPdXRwdXRbXCJjb25zdHJ1Y3RzXCJdID0gKGF3YWl0IGNvbnN0cnVjdHMpID8/IG51bGw7XG4gICAgZGVidWdPdXRwdXRbXCJqc2lpXCJdID0gKGF3YWl0IGpzaWkpID8/IG51bGw7XG4gIH1cbiAgZGVidWdPdXRwdXRbXCJ0ZXJyYWZvcm1cIl0gPSBhd2FpdCB0ZXJyYWZvcm1WZXJzaW9uO1xuICBkZWJ1Z091dHB1dFtcImFyY2hcIl0gPSBvcy5hcmNoKCk7XG4gIGRlYnVnT3V0cHV0W1wib3NcIl0gPSBgJHtvcy5wbGF0Zm9ybSgpfSAke29zLnJlbGVhc2UoKX1gO1xuXG4gIHN3aXRjaCAobGFuZ3VhZ2UpIHtcbiAgICBjYXNlIFwicHl0aG9uXCI6XG4gICAgICB7XG4gICAgICAgIGNvbnN0IHB5dGhvbiA9IGdldFB5dGhvblZlcnNpb24oKTtcbiAgICAgICAgY29uc3QgcGlwID0gZ2V0UGlwVmVyc2lvbigpO1xuICAgICAgICBjb25zdCBwaXBlbnYgPSBnZXRQaXBlbnZWZXJzaW9uKCk7XG4gICAgICAgIGRlYnVnT3V0cHV0W1wicHl0aG9uXCJdID0gKGF3YWl0IHB5dGhvbikgPz8gbnVsbDtcbiAgICAgICAgZGVidWdPdXRwdXRbXCJwaXBcIl0gPSAoYXdhaXQgcGlwKSA/PyBudWxsO1xuICAgICAgICBkZWJ1Z091dHB1dFtcInBpcGVudlwiXSA9IChhd2FpdCBwaXBlbnYpID8/IG51bGw7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiamF2YVwiOlxuICAgICAge1xuICAgICAgICBjb25zdCBqYXZhID0gZ2V0SmF2YVZlcnNpb24oKTtcbiAgICAgICAgY29uc3QgbWF2ZW4gPSBnZXRNYXZlblZlcnNpb24oKTtcbiAgICAgICAgY29uc3QgZ3JhZGxlID0gZ2V0R3JhZGxlVmVyc2lvbigpO1xuICAgICAgICBkZWJ1Z091dHB1dFtcImphdmFcIl0gPSAoYXdhaXQgamF2YSkgPz8gbnVsbDtcbiAgICAgICAgZGVidWdPdXRwdXRbXCJtYXZlblwiXSA9IChhd2FpdCBtYXZlbikgPz8gbnVsbDtcbiAgICAgICAgZGVidWdPdXRwdXRbXCJncmFkbGVcIl0gPSAoYXdhaXQgZ3JhZGxlKSA/PyBudWxsO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNzaGFycFwiOlxuICAgICAgZGVidWdPdXRwdXRbXCJkb3RuZXRcIl0gPSAoYXdhaXQgZ2V0RG90bmV0VmVyc2lvbigpKSA/PyBudWxsO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImdvXCI6XG4gICAgICBkZWJ1Z091dHB1dFtcImdvXCJdID0gKGF3YWl0IGdldEdvVmVyc2lvbigpKSA/PyBudWxsO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICByZXR1cm4gZGVidWdPdXRwdXQ7XG59XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export declare const DISABLE_VERSION_CHECK: boolean;
2
+ export declare const CHECKPOINT_DISABLE: boolean;
3
+ export declare const CDKTF_DISABLE_PLUGIN_CACHE_ENV: boolean;
4
+ //# sourceMappingURL=environment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["environment.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,qBAAqB,SAEjC,CAAC;AAGF,eAAO,MAAM,kBAAkB,SAA0C,CAAC;AAE1E,eAAO,MAAM,8BAA8B,SAE1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ // Copyright (c) HashiCorp, Inc
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ // All switches based on environment variables in one place
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CDKTF_DISABLE_PLUGIN_CACHE_ENV = exports.CHECKPOINT_DISABLE = exports.DISABLE_VERSION_CHECK = void 0;
7
+ function envVarToBoolean(envVar) {
8
+ return envVar === "true" || envVar === "1";
9
+ }
10
+ exports.DISABLE_VERSION_CHECK = envVarToBoolean(process.env.DISABLE_VERSION_CHECK);
11
+ // This is a Terraform global environment variable, so we can't use the same logic as the other env vars
12
+ // https://www.terraform.io/cli/commands#upgrade-and-security-bulletin-checks
13
+ exports.CHECKPOINT_DISABLE = Boolean(process.env.CHECKPOINT_DISABLE);
14
+ exports.CDKTF_DISABLE_PLUGIN_CACHE_ENV = envVarToBoolean(process.env.CDKTF_DISABLE_PLUGIN_CACHE_ENV);
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywyREFBMkQ7OztBQUUzRCxTQUFTLGVBQWUsQ0FBQyxNQUEwQjtJQUNqRCxPQUFPLE1BQU0sS0FBSyxNQUFNLElBQUksTUFBTSxLQUFLLEdBQUcsQ0FBQztBQUM3QyxDQUFDO0FBRVksUUFBQSxxQkFBcUIsR0FBRyxlQUFlLENBQ2xELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQ2xDLENBQUM7QUFDRix3R0FBd0c7QUFDeEcsNkVBQTZFO0FBQ2hFLFFBQUEsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUU3RCxRQUFBLDhCQUE4QixHQUFHLGVBQWUsQ0FDM0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FDM0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyBBbGwgc3dpdGNoZXMgYmFzZWQgb24gZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIG9uZSBwbGFjZVxuXG5mdW5jdGlvbiBlbnZWYXJUb0Jvb2xlYW4oZW52VmFyOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIGVudlZhciA9PT0gXCJ0cnVlXCIgfHwgZW52VmFyID09PSBcIjFcIjtcbn1cblxuZXhwb3J0IGNvbnN0IERJU0FCTEVfVkVSU0lPTl9DSEVDSyA9IGVudlZhclRvQm9vbGVhbihcbiAgcHJvY2Vzcy5lbnYuRElTQUJMRV9WRVJTSU9OX0NIRUNLLFxuKTtcbi8vIFRoaXMgaXMgYSBUZXJyYWZvcm0gZ2xvYmFsIGVudmlyb25tZW50IHZhcmlhYmxlLCBzbyB3ZSBjYW4ndCB1c2UgdGhlIHNhbWUgbG9naWMgYXMgdGhlIG90aGVyIGVudiB2YXJzXG4vLyBodHRwczovL3d3dy50ZXJyYWZvcm0uaW8vY2xpL2NvbW1hbmRzI3VwZ3JhZGUtYW5kLXNlY3VyaXR5LWJ1bGxldGluLWNoZWNrc1xuZXhwb3J0IGNvbnN0IENIRUNLUE9JTlRfRElTQUJMRSA9IEJvb2xlYW4ocHJvY2Vzcy5lbnYuQ0hFQ0tQT0lOVF9ESVNBQkxFKTtcblxuZXhwb3J0IGNvbnN0IENES1RGX0RJU0FCTEVfUExVR0lOX0NBQ0hFX0VOViA9IGVudlZhclRvQm9vbGVhbihcbiAgcHJvY2Vzcy5lbnYuQ0RLVEZfRElTQUJMRV9QTFVHSU5fQ0FDSEVfRU5WLFxuKTtcbiJdfQ==
@@ -0,0 +1,10 @@
1
+ type ErrorType = "Internal" | "External" | "Usage";
2
+ export declare function IsErrorType(error: any, type: ErrorType): boolean;
3
+ export declare const Errors: {
4
+ Internal: (message: string, originalError?: Error, context?: Record<string, any>) => any;
5
+ Usage: (message: string, originalError?: Error, context?: Record<string, any>) => any;
6
+ External: (message: string, originalError?: Error, context?: Record<string, any>) => any;
7
+ setScope(scope: string): void;
8
+ };
9
+ export {};
10
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"AAmBA,KAAK,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AACnD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAEhE;AAsBD,eAAO,MAAM,MAAM;wBAlBN,MAAM,kBACA,KAAK,YACV,OAAO,MAAM,EAAE,GAAG,CAAC;qBAFpB,MAAM,kBACA,KAAK,YACV,OAAO,MAAM,EAAE,GAAG,CAAC;wBAFpB,MAAM,kBACA,KAAK,YACV,OAAO,MAAM,EAAE,GAAG,CAAC;oBAyBf,MAAM;CAIvB,CAAC"}
package/src/errors.js ADDED
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.Errors = exports.IsErrorType = void 0;
27
+ // Copyright (c) HashiCorp, Inc
28
+ // SPDX-License-Identifier: MPL-2.0
29
+ const checkpoint_1 = require("./checkpoint");
30
+ const version_1 = require("./version");
31
+ const Sentry = __importStar(require("@sentry/node"));
32
+ // Errors that will emit telemetry events
33
+ async function report(command, payload) {
34
+ const reportParams = {
35
+ command,
36
+ product: "cdktn",
37
+ version: `${version_1.DISPLAY_VERSION}`,
38
+ dateTime: new Date(),
39
+ payload,
40
+ };
41
+ await (0, checkpoint_1.ReportRequest)(reportParams);
42
+ }
43
+ function IsErrorType(error, type) {
44
+ return error && error.__type === type;
45
+ }
46
+ exports.IsErrorType = IsErrorType;
47
+ function reportPrefixedError(type, command) {
48
+ return (message, originalError = new Error(), context) => {
49
+ report(command, { ...context, message, type });
50
+ const err = new Error(`${type} Error: ${message}`);
51
+ Object.entries(context || {}).forEach(([key, value]) => {
52
+ err[key] = value;
53
+ });
54
+ err.__type = type;
55
+ err.stack = originalError.stack;
56
+ return err;
57
+ };
58
+ }
59
+ // The CLI only deals with one command at a time, so we can just use the same
60
+ // scope for all errors and set it once during initialization.
61
+ let errorScope = "unknown";
62
+ exports.Errors = {
63
+ // Error within our control
64
+ Internal: reportPrefixedError("Internal", errorScope),
65
+ // Error in the usage
66
+ Usage: reportPrefixedError("Usage", errorScope),
67
+ // Error outside of our control (e.g. terraform failed)
68
+ External: reportPrefixedError("External", errorScope),
69
+ // Set the scope for all errors
70
+ setScope(scope) {
71
+ errorScope = scope;
72
+ Sentry.configureScope((s) => s.setTransactionName(scope));
73
+ },
74
+ };
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw2Q0FBMkQ7QUFDM0QsdUNBQTRDO0FBQzVDLHFEQUF1QztBQUV2Qyx5Q0FBeUM7QUFDekMsS0FBSyxVQUFVLE1BQU0sQ0FBQyxPQUFlLEVBQUUsT0FBNEI7SUFDakUsTUFBTSxZQUFZLEdBQWlCO1FBQ2pDLE9BQU87UUFDUCxPQUFPLEVBQUUsT0FBTztRQUNoQixPQUFPLEVBQUUsR0FBRyx5QkFBZSxFQUFFO1FBQzdCLFFBQVEsRUFBRSxJQUFJLElBQUksRUFBRTtRQUNwQixPQUFPO0tBQ1IsQ0FBQztJQUVGLE1BQU0sSUFBQSwwQkFBYSxFQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFHRCxTQUFnQixXQUFXLENBQUMsS0FBVSxFQUFFLElBQWU7SUFDckQsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7QUFDeEMsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBUyxtQkFBbUIsQ0FBQyxJQUFlLEVBQUUsT0FBZTtJQUMzRCxPQUFPLENBQ0wsT0FBZSxFQUNmLGdCQUF1QixJQUFJLEtBQUssRUFBRSxFQUNsQyxPQUE2QixFQUM3QixFQUFFO1FBQ0YsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sR0FBRyxHQUFRLElBQUksS0FBSyxDQUFDLEdBQUcsSUFBSSxXQUFXLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNyRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbEIsR0FBRyxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELDZFQUE2RTtBQUM3RSw4REFBOEQ7QUFDOUQsSUFBSSxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQ2QsUUFBQSxNQUFNLEdBQUc7SUFDcEIsMkJBQTJCO0lBQzNCLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDO0lBQ3JELHFCQUFxQjtJQUNyQixLQUFLLEVBQUUsbUJBQW1CLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQztJQUMvQyx1REFBdUQ7SUFDdkQsUUFBUSxFQUFFLG1CQUFtQixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUM7SUFFckQsK0JBQStCO0lBQy9CLFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgUmVwb3J0UGFyYW1zLCBSZXBvcnRSZXF1ZXN0IH0gZnJvbSBcIi4vY2hlY2twb2ludFwiO1xuaW1wb3J0IHsgRElTUExBWV9WRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvblwiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L25vZGVcIjtcblxuLy8gRXJyb3JzIHRoYXQgd2lsbCBlbWl0IHRlbGVtZXRyeSBldmVudHNcbmFzeW5jIGZ1bmN0aW9uIHJlcG9ydChjb21tYW5kOiBzdHJpbmcsIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgY29uc3QgcmVwb3J0UGFyYW1zOiBSZXBvcnRQYXJhbXMgPSB7XG4gICAgY29tbWFuZCxcbiAgICBwcm9kdWN0OiBcImNka3RuXCIsXG4gICAgdmVyc2lvbjogYCR7RElTUExBWV9WRVJTSU9OfWAsXG4gICAgZGF0ZVRpbWU6IG5ldyBEYXRlKCksXG4gICAgcGF5bG9hZCxcbiAgfTtcblxuICBhd2FpdCBSZXBvcnRSZXF1ZXN0KHJlcG9ydFBhcmFtcyk7XG59XG5cbnR5cGUgRXJyb3JUeXBlID0gXCJJbnRlcm5hbFwiIHwgXCJFeHRlcm5hbFwiIHwgXCJVc2FnZVwiO1xuZXhwb3J0IGZ1bmN0aW9uIElzRXJyb3JUeXBlKGVycm9yOiBhbnksIHR5cGU6IEVycm9yVHlwZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gZXJyb3IgJiYgZXJyb3IuX190eXBlID09PSB0eXBlO1xufVxuXG5mdW5jdGlvbiByZXBvcnRQcmVmaXhlZEVycm9yKHR5cGU6IEVycm9yVHlwZSwgY29tbWFuZDogc3RyaW5nKSB7XG4gIHJldHVybiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIG9yaWdpbmFsRXJyb3I6IEVycm9yID0gbmV3IEVycm9yKCksXG4gICAgY29udGV4dD86IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICkgPT4ge1xuICAgIHJlcG9ydChjb21tYW5kLCB7IC4uLmNvbnRleHQsIG1lc3NhZ2UsIHR5cGUgfSk7XG4gICAgY29uc3QgZXJyOiBhbnkgPSBuZXcgRXJyb3IoYCR7dHlwZX0gRXJyb3I6ICR7bWVzc2FnZX1gKTtcbiAgICBPYmplY3QuZW50cmllcyhjb250ZXh0IHx8IHt9KS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGVycltrZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgZXJyLl9fdHlwZSA9IHR5cGU7XG4gICAgZXJyLnN0YWNrID0gb3JpZ2luYWxFcnJvci5zdGFjaztcbiAgICByZXR1cm4gZXJyO1xuICB9O1xufVxuXG4vLyBUaGUgQ0xJIG9ubHkgZGVhbHMgd2l0aCBvbmUgY29tbWFuZCBhdCBhIHRpbWUsIHNvIHdlIGNhbiBqdXN0IHVzZSB0aGUgc2FtZVxuLy8gc2NvcGUgZm9yIGFsbCBlcnJvcnMgYW5kIHNldCBpdCBvbmNlIGR1cmluZyBpbml0aWFsaXphdGlvbi5cbmxldCBlcnJvclNjb3BlID0gXCJ1bmtub3duXCI7XG5leHBvcnQgY29uc3QgRXJyb3JzID0ge1xuICAvLyBFcnJvciB3aXRoaW4gb3VyIGNvbnRyb2xcbiAgSW50ZXJuYWw6IHJlcG9ydFByZWZpeGVkRXJyb3IoXCJJbnRlcm5hbFwiLCBlcnJvclNjb3BlKSxcbiAgLy8gRXJyb3IgaW4gdGhlIHVzYWdlXG4gIFVzYWdlOiByZXBvcnRQcmVmaXhlZEVycm9yKFwiVXNhZ2VcIiwgZXJyb3JTY29wZSksXG4gIC8vIEVycm9yIG91dHNpZGUgb2Ygb3VyIGNvbnRyb2wgKGUuZy4gdGVycmFmb3JtIGZhaWxlZClcbiAgRXh0ZXJuYWw6IHJlcG9ydFByZWZpeGVkRXJyb3IoXCJFeHRlcm5hbFwiLCBlcnJvclNjb3BlKSxcblxuICAvLyBTZXQgdGhlIHNjb3BlIGZvciBhbGwgZXJyb3JzXG4gIHNldFNjb3BlKHNjb3BlOiBzdHJpbmcpIHtcbiAgICBlcnJvclNjb3BlID0gc2NvcGU7XG4gICAgU2VudHJ5LmNvbmZpZ3VyZVNjb3BlKChzKSA9PiBzLnNldFRyYW5zYWN0aW9uTmFtZShzY29wZSkpO1xuICB9LFxufTtcbiJdfQ==
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ export declare function isGradleProject(workingDirectory: string): boolean;
6
+ export declare function getGradleDependencies(): Promise<string[] | undefined>;
7
+ export type DependencyInformation = {
8
+ group: string;
9
+ name: string;
10
+ version: string;
11
+ };
12
+ export declare function getDependencyInformationFromLine(line: string): DependencyInformation | undefined;
13
+ export declare function getGradlePackageVersion(packageName: string): Promise<string | undefined>;
14
+ export declare function getGradlePackageVersionFromBuild(packageName: string): Promise<{
15
+ group: string;
16
+ name: string;
17
+ version: string;
18
+ } | undefined>;
19
+ //# sourceMappingURL=gradle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradle.d.ts","sourceRoot":"","sources":["gradle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,wBAAgB,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAUjE;AAED,wBAAsB,qBAAqB,kCAqD1C;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,GACX,qBAAqB,GAAG,SAAS,CAuBnC;AAWD,wBAAsB,uBAAuB,CAAC,WAAW,EAAE,MAAM,+BAiChE;AAED,wBAAsB,gCAAgC,CAAC,WAAW,EAAE,MAAM;;;;eAqDzE"}