@cdktn/commons 0.23.0-pre.8 → 0.24.0-pre.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/ambient.d.ts +0 -2
  2. package/build/checkpoint.d.ts.map +1 -0
  3. package/build/checkpoint.js +176 -0
  4. package/build/config.d.ts.map +1 -0
  5. package/build/config.js +267 -0
  6. package/build/config.test.d.ts.map +1 -0
  7. package/build/config.test.js +680 -0
  8. package/build/construct-maker-target.d.ts.map +1 -0
  9. package/build/construct-maker-target.js +129 -0
  10. package/build/construct-maker-target.test.d.ts.map +1 -0
  11. package/build/construct-maker-target.test.js +72 -0
  12. package/build/debug.d.ts.map +1 -0
  13. package/build/debug.js +379 -0
  14. package/build/environment.d.ts.map +1 -0
  15. package/build/environment.js +15 -0
  16. package/build/errors.d.ts.map +1 -0
  17. package/build/errors.js +75 -0
  18. package/build/gradle.d.ts.map +1 -0
  19. package/build/gradle.js +160 -0
  20. package/build/index.d.ts.map +1 -0
  21. package/{src → build}/index.js +1 -1
  22. package/build/logging.d.ts.map +1 -0
  23. package/build/logging.js +117 -0
  24. package/{src → build}/module-schema.d.ts +1 -0
  25. package/build/module-schema.d.ts.map +1 -0
  26. package/build/module-schema.js +3 -0
  27. package/build/provider-schema.d.ts.map +1 -0
  28. package/build/provider-schema.js +21 -0
  29. package/build/terraform-module.d.ts.map +1 -0
  30. package/build/terraform-module.js +23 -0
  31. package/build/terraform-module.test.d.ts.map +1 -0
  32. package/build/terraform-module.test.js +31 -0
  33. package/build/terraform.d.ts.map +1 -0
  34. package/build/terraform.js +12 -0
  35. package/build/util.d.ts.map +1 -0
  36. package/build/util.js +262 -0
  37. package/build/version.d.ts.map +1 -0
  38. package/build/version.js +11 -0
  39. package/eslint.config.mjs +1 -76
  40. package/package.json +11 -20
  41. package/src/checkpoint.d.ts.map +0 -1
  42. package/src/checkpoint.js +0 -176
  43. package/src/config.d.ts.map +0 -1
  44. package/src/config.js +0 -267
  45. package/src/config.test.d.ts.map +0 -1
  46. package/src/config.test.js +0 -680
  47. package/src/construct-maker-target.d.ts.map +0 -1
  48. package/src/construct-maker-target.js +0 -129
  49. package/src/construct-maker-target.test.d.ts.map +0 -1
  50. package/src/construct-maker-target.test.js +0 -72
  51. package/src/debug.d.ts.map +0 -1
  52. package/src/debug.js +0 -379
  53. package/src/environment.d.ts.map +0 -1
  54. package/src/environment.js +0 -15
  55. package/src/errors.d.ts.map +0 -1
  56. package/src/errors.js +0 -75
  57. package/src/gradle.d.ts.map +0 -1
  58. package/src/gradle.js +0 -160
  59. package/src/index.d.ts.map +0 -1
  60. package/src/logging.d.ts.map +0 -1
  61. package/src/logging.js +0 -117
  62. package/src/module-schema.d.ts.map +0 -1
  63. package/src/module-schema.js +0 -3
  64. package/src/provider-schema.d.ts.map +0 -1
  65. package/src/provider-schema.js +0 -21
  66. package/src/terraform-module.d.ts.map +0 -1
  67. package/src/terraform-module.js +0 -23
  68. package/src/terraform-module.test.d.ts.map +0 -1
  69. package/src/terraform-module.test.js +0 -31
  70. package/src/terraform.d.ts.map +0 -1
  71. package/src/terraform.js +0 -12
  72. package/src/util.d.ts.map +0 -1
  73. package/src/util.js +0 -262
  74. package/src/version.d.ts.map +0 -1
  75. package/src/version.js +0 -11
  76. /package/{src → build}/checkpoint.d.ts +0 -0
  77. /package/{src → build}/config.d.ts +0 -0
  78. /package/{src → build}/config.test.d.ts +0 -0
  79. /package/{src → build}/construct-maker-target.d.ts +0 -0
  80. /package/{src → build}/construct-maker-target.test.d.ts +0 -0
  81. /package/{src → build}/debug.d.ts +0 -0
  82. /package/{src → build}/environment.d.ts +0 -0
  83. /package/{src → build}/errors.d.ts +0 -0
  84. /package/{src → build}/gradle.d.ts +0 -0
  85. /package/{src → build}/index.d.ts +0 -0
  86. /package/{src → build}/logging.d.ts +0 -0
  87. /package/{src → build}/provider-schema.d.ts +0 -0
  88. /package/{src → build}/terraform-module.d.ts +0 -0
  89. /package/{src → build}/terraform-module.test.d.ts +0 -0
  90. /package/{src → build}/terraform.d.ts +0 -0
  91. /package/{src → build}/util.d.ts +0 -0
  92. /package/{src → build}/version.d.ts +0 -0
package/ambient.d.ts CHANGED
@@ -10,5 +10,3 @@ declare module 'child_process' {
10
10
  }
11
11
 
12
12
  declare module 'tunnel-agent';
13
-
14
- declare module "archiver";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../src/checkpoint.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAqCD,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAgB7B;AAuCD,wBAAgB,YAAY,CAAC,WAAW,SAAgB,GAAG,MAAM,CAEhE;AAED,wBAAgB,SAAS,IAAI,MAAM,CAWlC;AAED,wBAAsB,aAAa,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD7E"}
@@ -0,0 +1,176 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ReportRequest = exports.getUserId = exports.getProjectId = exports.sendTelemetry = void 0;
30
+ // Copyright (c) HashiCorp, Inc
31
+ // SPDX-License-Identifier: MPL-2.0
32
+ const https = __importStar(require("https"));
33
+ const url_1 = require("url");
34
+ const uuid_1 = require("uuid");
35
+ const os = __importStar(require("os"));
36
+ const ci_info_1 = __importDefault(require("ci-info"));
37
+ const logging_1 = require("./logging");
38
+ const path = __importStar(require("path"));
39
+ const fs = __importStar(require("fs-extra"));
40
+ const version_1 = require("./version");
41
+ const BASE_URL = `https://checkpoint-api.hashicorp.com/v1/`;
42
+ const VALID_STATUS_CODES = [200, 201];
43
+ const MAX_REQUEST_BODY_SIZE = 8192;
44
+ function homeDir() {
45
+ var _a;
46
+ return process.env.CDKTF_HOME
47
+ ? path.resolve(process.env.CDKTF_HOME)
48
+ : path.join(((_a = os.userInfo().homedir) !== null && _a !== void 0 ? _a : os.homedir()).trim() || "/", ".cdktf");
49
+ }
50
+ async function post(url, data) {
51
+ return new Promise((ok, ko) => {
52
+ const req = https.request((0, url_1.format)(url), {
53
+ headers: {
54
+ Accept: "application/json",
55
+ "Content-Length": data.length,
56
+ "User-Agent": "OpenConstructs/cdktn-cli",
57
+ },
58
+ method: "POST",
59
+ }, (res) => {
60
+ if (res.statusCode) {
61
+ const statusCode = res.statusCode;
62
+ if (!VALID_STATUS_CODES.includes(statusCode)) {
63
+ return ko(new Error(res.statusMessage));
64
+ }
65
+ }
66
+ const data = new Array();
67
+ res.on("data", (chunk) => data.push(chunk));
68
+ res.on("error", (err) => ko(err));
69
+ res.on("end", () => {
70
+ return ok();
71
+ });
72
+ });
73
+ req.setTimeout(1000, () => ko(new Error("request timeout")));
74
+ req.write(data);
75
+ req.end();
76
+ req.on("error", (err) => ko(err));
77
+ });
78
+ }
79
+ async function sendTelemetry(command, payload) {
80
+ const reportParams = {
81
+ command,
82
+ product: "cdktn",
83
+ version: `${version_1.DISPLAY_VERSION}`,
84
+ dateTime: new Date(),
85
+ language: payload.language,
86
+ payload,
87
+ };
88
+ try {
89
+ await ReportRequest(reportParams);
90
+ }
91
+ catch (err) {
92
+ logging_1.logger.error(`Could not send telemetry data: ${err}`);
93
+ }
94
+ }
95
+ exports.sendTelemetry = sendTelemetry;
96
+ function getId(filePath, key, forceCreation = false, explanatoryComment) {
97
+ const _uuid = (0, uuid_1.v4)(); // create a new UUID in case we don't find one
98
+ let jsonFile;
99
+ try {
100
+ jsonFile = JSON.parse(fs.readFileSync(filePath, "utf-8")); // we found the file
101
+ }
102
+ catch (_a) {
103
+ // we found no file, create one if we're forcing a creation
104
+ if (forceCreation) {
105
+ const _idFile = {}; // compose JSON id file in case we don't find one
106
+ if (explanatoryComment) {
107
+ _idFile["//"] = explanatoryComment.replace(/\n/g, " ");
108
+ }
109
+ _idFile[key] = _uuid;
110
+ fs.ensureDirSync(path.dirname(filePath));
111
+ fs.writeFileSync(filePath, JSON.stringify(_idFile, null, 2));
112
+ }
113
+ return _uuid;
114
+ }
115
+ if (jsonFile[key]) {
116
+ return jsonFile[key]; // we found an id
117
+ }
118
+ else {
119
+ // we found no id, we add it to the file for future use
120
+ fs.writeFileSync(filePath, JSON.stringify({ ...jsonFile, [key]: _uuid }, null, 2));
121
+ return _uuid;
122
+ }
123
+ }
124
+ function getProjectId(projectPath = process.cwd()) {
125
+ return getId(path.resolve(projectPath, "cdktf.json"), "projectId");
126
+ }
127
+ exports.getProjectId = getProjectId;
128
+ function getUserId() {
129
+ return getId(path.resolve(homeDir(), "config.json"), "userId", true, `This signature is a randomly generated UUID used to anonymously differentiate users in telemetry data order to inform product direction.
130
+ This signature is random, it is not based on any personally identifiable information.
131
+ To create a new signature, you can simply delete this file at any time.
132
+ See https://cdk.tf/telemetry for more
133
+ information on how to disable it.`);
134
+ }
135
+ exports.getUserId = getUserId;
136
+ async function ReportRequest(reportParams) {
137
+ // we won't report when checkpoint is disabled.
138
+ // Check at runtime (not import time) to allow tests to modify the env var
139
+ if (process.env.CHECKPOINT_DISABLE) {
140
+ return;
141
+ }
142
+ if (!reportParams.runID) {
143
+ reportParams.runID = (0, uuid_1.v4)();
144
+ }
145
+ if (!reportParams.dateTime) {
146
+ reportParams.dateTime = new Date();
147
+ }
148
+ if (!reportParams.arch) {
149
+ reportParams.arch = os.arch();
150
+ }
151
+ if (!reportParams.os) {
152
+ reportParams.os = os.platform();
153
+ }
154
+ const ci = ci_info_1.default.isCI ? ci_info_1.default.name || "unknown" : false;
155
+ if (!reportParams.userId && !ci) {
156
+ reportParams.userId = getUserId();
157
+ }
158
+ if (ci) {
159
+ reportParams.ci = ci;
160
+ }
161
+ reportParams.projectId = reportParams.projectId || getProjectId();
162
+ const postData = JSON.stringify(reportParams);
163
+ if (postData.length > MAX_REQUEST_BODY_SIZE) {
164
+ logging_1.logger.warn(`Skipped sending telemetry as the request body size was ${postData.length} bytes. The limit is ${MAX_REQUEST_BODY_SIZE} bytes`);
165
+ return;
166
+ }
167
+ try {
168
+ await post(`${BASE_URL}telemetry/${reportParams.product}`, postData);
169
+ }
170
+ catch (e) {
171
+ // Log errors writing to checkpoint
172
+ (0, logging_1.processLoggerError)(e.message);
173
+ }
174
+ }
175
+ exports.ReportRequest = ReportRequest;
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2twb2ludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGVja3BvaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyw2Q0FBK0I7QUFDL0IsNkJBQTZCO0FBQzdCLCtCQUFvQztBQUNwQyx1Q0FBeUI7QUFDekIsc0RBQTZCO0FBQzdCLHVDQUF1RDtBQUN2RCwyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLHVDQUE0QztBQUU1QyxNQUFNLFFBQVEsR0FBRywwQ0FBMEMsQ0FBQztBQUU1RCxNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXRDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDO0FBRW5DLFNBQVMsT0FBTzs7SUFDZCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtRQUMzQixDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDUCxDQUFDLE1BQUEsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxFQUNyRCxRQUFRLENBQ1QsQ0FBQztBQUNSLENBQUM7QUFpQkQsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFXLEVBQUUsSUFBWTtJQUMzQyxPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQ3ZCLElBQUEsWUFBTSxFQUFDLEdBQUcsQ0FBQyxFQUNYO1lBQ0UsT0FBTyxFQUFFO2dCQUNQLE1BQU0sRUFBRSxrQkFBa0I7Z0JBQzFCLGdCQUFn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QUFDO0lBRTlDLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsRUFBRSxDQUFDO1FBQzVDLGdCQUFNLENBQUMsSUFBSSxDQUNULDBEQUEwRCxRQUFRLENBQUMsTUFBTSx3QkFBd0IscUJBQXFCLFFBQVEsQ0FDL0gsQ0FBQztRQUNGLE9BQU87SUFDVCxDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxJQUFJLENBQUMsR0FBRyxRQUFRLGFBQWEsWUFBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1FBQ2hCLG1DQUFtQztRQUNuQyxJQUFBLDRCQUFrQixFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0FBQ0gsQ0FBQztBQWpERCxzQ0FpREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgaHR0cHMgZnJvbSBcImh0dHBzXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwidXJsXCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tIFwidXVpZFwiO1xuaW1wb3J0ICogYXMgb3MgZnJvbSBcIm9zXCI7XG5pbXBvcnQgY2lJbmZvIGZyb20gXCJjaS1pbmZvXCI7XG5pbXBvcnQgeyBsb2dnZXIsIHByb2Nlc3NMb2dnZXJFcnJvciB9IGZyb20gXCIuL2xvZ2dpbmdcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgRElTUExBWV9WRVJTSU9OIH0gZnJvbSBcIi4vdmVyc2lvblwiO1xuXG5jb25zdCBCQVNFX1VSTCA9IGBodHRwczovL2NoZWNrcG9pbnQtYXBpLmhhc2hpY29ycC5jb20vdjEvYDtcblxuY29uc3QgVkFMSURfU1RBVFVTX0NPREVTID0gWzIwMCwgMjAxXTtcblxuY29uc3QgTUFYX1JFUVVFU1RfQk9EWV9TSVpFID0gODE5MjtcblxuZnVuY3Rpb24gaG9tZURpcigpIHtcbiAgcmV0dXJuIHByb2Nlc3MuZW52LkNES1RGX0hPTUVcbiAgICA/IHBhdGgucmVzb2x2ZShwcm9jZXNzLmVudi5DREtURl9IT01FKVxuICAgIDogcGF0aC5qb2luKFxuICAgICAgICAob3MudXNlckluZm8oKS5ob21lZGlyID8/IG9zLmhvbWVkaXIoKSkudHJpbSgpIHx8IFwiL1wiLFxuICAgICAgICBcIi5jZGt0ZlwiLFxuICAgICAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYXJhbXMge1xuICBkYXRlVGltZT86IERhdGU7XG4gIGFyY2g/OiBzdHJpbmc7XG4gIG9zPzogc3RyaW5nO1xuICBwYXlsb2FkOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICBwcm9kdWN0OiBzdHJpbmc7XG4gIHJ1bklEPzogc3RyaW5nO1xuICB2ZXJzaW9uPzogc3RyaW5nO1xuICBjb21tYW5kPzogc3RyaW5nO1xuICBsYW5ndWFnZT86IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xuICBjaT86IHN0cmluZztcbiAgcHJvamVjdElkPzogc3RyaW5nO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwb3N0KHVybDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChvaywga28pID0+IHtcbiAgICBjb25zdCByZXEgPSBodHRwcy5yZXF1ZXN0KFxuICAgICAgZm9ybWF0KHVybCksXG4gICAgICB7XG4gICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICBBY2NlcHQ6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIFwiQ29udGVudC1MZW5ndGhcIjogZGF0YS5sZW5ndGgsXG4gICAgICAgICAgXCJVc2VyLUFnZW50XCI6IFwiT3BlbkNvbnN0cnVjdHMvY2RrdG4tY2xpXCIsXG4gICAgICAgIH0sXG4gICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICB9LFxuICAgICAgKHJlcykgPT4ge1xuICAgICAgICBpZiAocmVzLnN0YXR1c0NvZGUpIHtcbiAgICAgICAgICBjb25zdCBzdGF0dXNDb2RlID0gcmVzLnN0YXR1c0NvZGU7XG4gICAgICAgICAgaWYgKCFWQUxJRF9TVEFUVVNfQ09ERVMuaW5jbHVkZXMoc3RhdHVzQ29kZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBrbyhuZXcgRXJyb3IocmVzLnN0YXR1c01lc3NhZ2UpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBBcnJheTxCdWZmZXI+KCk7XG4gICAgICAgIHJlcy5vbihcImRhdGFcIiwgKGNodW5rKSA9PiBkYXRhLnB1c2goY2h1bmspKTtcbiAgICAgICAgcmVzLm9uKFwiZXJyb3JcIiwgKGVycikgPT4ga28oZXJyKSk7XG4gICAgICAgIHJlcy5vbihcImVuZFwiLCAoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIG9rKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmVxLnNldFRpbWVvdXQoMTAwMCwgKCkgPT4ga28obmV3IEVycm9yKFwicmVxdWVzdCB0aW1lb3V0XCIpKSk7XG4gICAgcmVxLndyaXRlKGRhdGEpO1xuICAgIHJlcS5lbmQoKTtcbiAgICByZXEub24oXCJlcnJvclwiLCAoZXJyKSA9PiBrbyhlcnIpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kVGVsZW1ldHJ5KFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIHBheWxvYWQ6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pIHtcbiAgY29uc3QgcmVwb3J0UGFyYW1zOiBSZXBvcnRQYXJhbXMgPSB7XG4gICAgY29tbWFuZCxcbiAgICBwcm9kdWN0OiBcImNka3RuXCIsXG4gICAgdmVyc2lvbjogYCR7RElTUExBWV9WRVJTSU9OfWAsXG4gICAgZGF0ZVRpbWU6IG5ldyBEYXRlKCksXG4gICAgbGFuZ3VhZ2U6IHBheWxvYWQubGFuZ3VhZ2UsXG4gICAgcGF5bG9hZCxcbiAgfTtcblxuICB0cnkge1xuICAgIGF3YWl0IFJlcG9ydFJlcXVlc3QocmVwb3J0UGFyYW1zKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGBDb3VsZCBub3Qgc2VuZCB0ZWxlbWV0cnkgZGF0YTogJHtlcnJ9YCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SWQoXG4gIGZpbGVQYXRoOiBzdHJpbmcsXG4gIGtleTogc3RyaW5nLFxuICBmb3JjZUNyZWF0aW9uID0gZmFsc2UsXG4gIGV4cGxhbmF0b3J5Q29tbWVudD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IF91dWlkID0gdXVpZHY0KCk7IC8vIGNyZWF0ZSBhIG5ldyBVVUlEIGluIGNhc2Ugd2UgZG9uJ3QgZmluZCBvbmVcblxuICBsZXQganNvbkZpbGU7XG4gIHRyeSB7XG4gICAganNvbkZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgXCJ1dGYtOFwiKSk7IC8vIHdlIGZvdW5kIHRoZSBmaWxlXG4gIH0gY2F0Y2gge1xuICAgIC8vIHdlIGZvdW5kIG5vIGZpbGUsIGNyZWF0ZSBvbmUgaWYgd2UncmUgZm9yY2luZyBhIGNyZWF0aW9uXG4gICAgaWYgKGZvcmNlQ3JlYXRpb24pIHtcbiAgICAgIGNvbnN0IF9pZEZpbGUgPSB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+OyAvLyBjb21wb3NlIEpTT04gaWQgZmlsZSBpbiBjYXNlIHdlIGRvbid0IGZpbmQgb25lXG4gICAgICBpZiAoZXhwbGFuYXRvcnlDb21tZW50KSB7XG4gICAgICAgIF9pZEZpbGVbXCIvL1wiXSA9IGV4cGxhbmF0b3J5Q29tbWVudC5yZXBsYWNlKC9cXG4vZywgXCIgXCIpO1xuICAgICAgfVxuICAgICAgX2lkRmlsZVtrZXldID0gX3V1aWQ7XG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkoX2lkRmlsZSwgbnVsbCwgMikpO1xuICAgIH1cbiAgICByZXR1cm4gX3V1aWQ7XG4gIH1cblxuICBpZiAoanNvbkZpbGVba2V5XSkge1xuICAgIHJldHVybiBqc29uRmlsZVtrZXldOyAvLyB3ZSBmb3VuZCBhbiBpZFxuICB9IGVsc2Uge1xuICAgIC8vIHdlIGZvdW5kIG5vIGlkLCB3ZSBhZGQgaXQgdG8gdGhlIGZpbGUgZm9yIGZ1dHVyZSB1c2VcbiAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgZmlsZVBhdGgsXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IC4uLmpzb25GaWxlLCBba2V5XTogX3V1aWQgfSwgbnVsbCwgMiksXG4gICAgKTtcbiAgICByZXR1cm4gX3V1aWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByb2plY3RJZChwcm9qZWN0UGF0aCA9IHByb2Nlc3MuY3dkKCkpOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0SWQocGF0aC5yZXNvbHZlKHByb2plY3RQYXRoLCBcImNka3RmLmpzb25cIiksIFwicHJvamVjdElkXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXNlcklkKCk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRJZChcbiAgICBwYXRoLnJlc29sdmUoaG9tZURpcigpLCBcImNvbmZpZy5qc29uXCIpLFxuICAgIFwidXNlcklkXCIsXG4gICAgdHJ1ZSxcbiAgICBgVGhpcyBzaWduYXR1cmUgaXMgYSByYW5kb21seSBnZW5lcmF0ZWQgVVVJRCB1c2VkIHRvIGFub255bW91c2x5IGRpZmZlcmVudGlhdGUgdXNlcnMgaW4gdGVsZW1ldHJ5IGRhdGEgb3JkZXIgdG8gaW5mb3JtIHByb2R1Y3QgZGlyZWN0aW9uLlxuVGhpcyBzaWduYXR1cmUgaXMgcmFuZG9tLCBpdCBpcyBub3QgYmFzZWQgb24gYW55IHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uLlxuVG8gY3JlYXRlIGEgbmV3IHNpZ25hdHVyZSwgeW91IGNhbiBzaW1wbHkgZGVsZXRlIHRoaXMgZmlsZSBhdCBhbnkgdGltZS5cblNlZSBodHRwczovL2Nkay50Zi90ZWxlbWV0cnkgZm9yIG1vcmVcbmluZm9ybWF0aW9uIG9uIGhvdyB0byBkaXNhYmxlIGl0LmAsXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBSZXBvcnRSZXF1ZXN0KHJlcG9ydFBhcmFtczogUmVwb3J0UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIHdlIHdvbid0IHJlcG9ydCB3aGVuIGNoZWNrcG9pbnQgaXMgZGlzYWJsZWQuXG4gIC8vIENoZWNrIGF0IHJ1bnRpbWUgKG5vdCBpbXBvcnQgdGltZSkgdG8gYWxsb3cgdGVzdHMgdG8gbW9kaWZ5IHRoZSBlbnYgdmFyXG4gIGlmIChwcm9jZXNzLmVudi5DSEVDS1BPSU5UX0RJU0FCTEUpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIXJlcG9ydFBhcmFtcy5ydW5JRCkge1xuICAgIHJlcG9ydFBhcmFtcy5ydW5JRCA9IHV1aWR2NCgpO1xuICB9XG5cbiAgaWYgKCFyZXBvcnRQYXJhbXMuZGF0ZVRpbWUpIHtcbiAgICByZXBvcnRQYXJhbXMuZGF0ZVRpbWUgPSBuZXcgRGF0ZSgpO1xuICB9XG5cbiAgaWYgKCFyZXBvcnRQYXJhbXMuYXJjaCkge1xuICAgIHJlcG9ydFBhcmFtcy5hcmNoID0gb3MuYXJjaCgpO1xuICB9XG5cbiAgaWYgKCFyZXBvcnRQYXJhbXMub3MpIHtcbiAgICByZXBvcnRQYXJhbXMub3MgPSBvcy5wbGF0Zm9ybSgpO1xuICB9XG5cbiAgY29uc3QgY2k6IHN0cmluZyB8IGZhbHNlID0gY2lJbmZvLmlzQ0kgPyBjaUluZm8ubmFtZSB8fCBcInVua25vd25cIiA6IGZhbHNlO1xuICBpZiAoIXJlcG9ydFBhcmFtcy51c2VySWQgJiYgIWNpKSB7XG4gICAgcmVwb3J0UGFyYW1zLnVzZXJJZCA9IGdldFVzZXJJZCgpO1xuICB9XG5cbiAgaWYgKGNpKSB7XG4gICAgcmVwb3J0UGFyYW1zLmNpID0gY2k7XG4gIH1cblxuICByZXBvcnRQYXJhbXMucHJvamVjdElkID0gcmVwb3J0UGFyYW1zLnByb2plY3RJZCB8fCBnZXRQcm9qZWN0SWQoKTtcblxuICBjb25zdCBwb3N0RGF0YSA9IEpTT04uc3RyaW5naWZ5KHJlcG9ydFBhcmFtcyk7XG5cbiAgaWYgKHBvc3REYXRhLmxlbmd0aCA+IE1BWF9SRVFVRVNUX0JPRFlfU0laRSkge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgYFNraXBwZWQgc2VuZGluZyB0ZWxlbWV0cnkgYXMgdGhlIHJlcXVlc3QgYm9keSBzaXplIHdhcyAke3Bvc3REYXRhLmxlbmd0aH0gYnl0ZXMuIFRoZSBsaW1pdCBpcyAke01BWF9SRVFVRVNUX0JPRFlfU0laRX0gYnl0ZXNgLFxuICAgICk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBwb3N0KGAke0JBU0VfVVJMfXRlbGVtZXRyeS8ke3JlcG9ydFBhcmFtcy5wcm9kdWN0fWAsIHBvc3REYXRhKTtcbiAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgLy8gTG9nIGVycm9ycyB3cml0aW5nIHRvIGNoZWNrcG9pbnRcbiAgICBwcm9jZXNzTG9nZ2VyRXJyb3IoZS5tZXNzYWdlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,oBAAY,QAAQ;IAClB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,EAAE,OAAO;CACV;AAED,eAAO,MAAM,SAAS,YAMrB,CAAC;AAKF,eAAO,MAAM,eAAe;;;CAG3B,CAAC;AAKF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAMD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,qBAAa,yBAA0B,YAAW,6BAA6B;IAC7E,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjD,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,IAAI,EAAE,6BAA6B,GAAG,MAAM;IAsBxD,IAAW,SAAS,WAEnB;IAED,IAAW,QAAQ,WAElB;IAED,OAAO,CAAC,yBAAyB;CA2GlC;AAED,qBAAa,2BAA4B,YAAW,6BAA6B;IAC/E,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjC,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,IAAI,EAAE,IAAI,CAAC,6BAA6B,EAAE,KAAK,CAAC,GAAG,MAAM;IAiBrE,OAAO,CAAC,yBAAyB;CAoBlC;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,kBAAkB,CAAC,EAAE,2BAA2B,EAAE,CAAC;IACnD,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC3C;AAED,eAAO,MAAM,WAAW,gBAAiB,MAAM,WAuB9C,CAAC;AAEF,wBAAgB,cAAc,CAC5B,UAAU,SAAwC,GACjD,MAAM,CAQR;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,cAS1C"}
@@ -0,0 +1,267 @@
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.logTimespan = exports.shouldCheckCodeMakerOutput = exports.readConfigSync = exports.parseConfig = exports.TerraformProviderConstraint = exports.TerraformModuleConstraint = exports.isLocalModule = exports.CONFIG_DEFAULTS = exports.LANGUAGES = exports.Language = void 0;
31
+ const fs = __importStar(require("fs-extra"));
32
+ const path = __importStar(require("path"));
33
+ const logging_1 = require("./logging");
34
+ const terraform_module_1 = require("./terraform-module");
35
+ const process_1 = require("process");
36
+ const codemaker_1 = require("codemaker");
37
+ var Language;
38
+ (function (Language) {
39
+ Language["TYPESCRIPT"] = "typescript";
40
+ Language["PYTHON"] = "python";
41
+ Language["CSHARP"] = "csharp";
42
+ Language["JAVA"] = "java";
43
+ Language["GO"] = "go";
44
+ })(Language || (exports.Language = Language = {}));
45
+ exports.LANGUAGES = [
46
+ Language.TYPESCRIPT,
47
+ Language.PYTHON,
48
+ Language.JAVA,
49
+ Language.CSHARP,
50
+ Language.GO,
51
+ ];
52
+ const CONTEXT_ENV = "CDKTF_CONTEXT_JSON";
53
+ const CONFIG_FILE = "cdktf.json";
54
+ exports.CONFIG_DEFAULTS = {
55
+ output: "cdktf.out",
56
+ codeMakerOutput: ".gen",
57
+ };
58
+ function isPresent(input) {
59
+ return Array.isArray(input) && input.length > 0;
60
+ }
61
+ function getLocalMatch(source) {
62
+ return source.match(/^(\.\/|\.\.\/|\.\\\\|\.\.\\\\)(.*)/);
63
+ }
64
+ function isLocalModule(source) {
65
+ return getLocalMatch(source) !== null;
66
+ }
67
+ exports.isLocalModule = isLocalModule;
68
+ class TerraformModuleConstraint {
69
+ constructor(item) {
70
+ if (typeof item === "string") {
71
+ const parsed = this.parseDependencyConstraint(item);
72
+ this.name = parsed.name;
73
+ this.source = parsed.source;
74
+ this.fqn = parsed.fqn;
75
+ this.version = parsed.version;
76
+ this.namespace = parsed.namespace;
77
+ }
78
+ else {
79
+ this.source = item.source;
80
+ this.name = item.name;
81
+ this.fqn = item.name;
82
+ this.version = item.version;
83
+ this.namespace = item.namespace;
84
+ }
85
+ const localMatch = getLocalMatch(this.source);
86
+ if (localMatch) {
87
+ this.localSourceAbsolutePath = path.join(process.cwd(), this.source);
88
+ }
89
+ }
90
+ get className() {
91
+ return (0, codemaker_1.toPascalCase)(this.name.replace(/[-/.]/g, "_"));
92
+ }
93
+ get fileName() {
94
+ return this.namespace ? `${this.namespace}/${this.name}` : this.name;
95
+ }
96
+ parseDependencyConstraint(item) {
97
+ var _a, _b, _c;
98
+ const localMatch = getLocalMatch(item);
99
+ if (localMatch) {
100
+ const fqn = localMatch[2];
101
+ const nameParts = fqn.split("/");
102
+ const name = (_a = nameParts.pop()) !== null && _a !== void 0 ? _a : fqn;
103
+ const namespace = nameParts.pop();
104
+ return {
105
+ name,
106
+ fqn,
107
+ source: item,
108
+ namespace,
109
+ };
110
+ }
111
+ const [source, version] = item.split("@");
112
+ let moduleParts = source.split("//");
113
+ if ((0, terraform_module_1.isRegistryModule)(moduleParts[0])) {
114
+ const nameParts = moduleParts[0].split("/");
115
+ const provider = nameParts.pop(); // last part is the provider
116
+ let name = (_b = nameParts.pop()) !== null && _b !== void 0 ? _b : source;
117
+ let namespace = `${nameParts.pop()}/${provider}`;
118
+ if (moduleParts.length > 1) {
119
+ const moduleNameParts = moduleParts[1].split("/");
120
+ const moduleName = moduleNameParts.pop();
121
+ namespace = `${namespace}/${name}/${moduleNameParts.join("/")}`;
122
+ name = moduleName !== null && moduleName !== void 0 ? moduleName : name;
123
+ }
124
+ return {
125
+ name,
126
+ source,
127
+ version,
128
+ namespace,
129
+ fqn: source.replace("//", "/").replace(/\./g, "-"),
130
+ };
131
+ }
132
+ let toProcess = item; // process one part at a time
133
+ // strip off any prefix
134
+ const prefixMatch = toProcess.match(/^([a-zA-Z0-9]*)::(.*)/);
135
+ if (prefixMatch) {
136
+ toProcess = prefixMatch[2];
137
+ }
138
+ // strip off any protocol
139
+ const protocolMatch = toProcess.match(/^([a-zA-Z]*):\/\/(.*)/);
140
+ if (protocolMatch) {
141
+ toProcess = protocolMatch[2];
142
+ }
143
+ // anything before last ':' won't contribute
144
+ const colonParts = toProcess.split(":");
145
+ toProcess = (_c = colonParts.pop()) !== null && _c !== void 0 ? _c : toProcess;
146
+ // strip off any port
147
+ const portMatch = toProcess.match(/^[\d]*(.*)/);
148
+ if (portMatch) {
149
+ toProcess = portMatch[1];
150
+ }
151
+ // strip off any hostname
152
+ const hostMatch = toProcess.match(/[^/]*\.[^/]*\/(.*)/);
153
+ if (hostMatch) {
154
+ toProcess = hostMatch[1];
155
+ }
156
+ // strip off any arguments
157
+ const argumentMatch = toProcess.match(/(.*)\?.*/);
158
+ if (argumentMatch) {
159
+ toProcess = argumentMatch[1];
160
+ }
161
+ // strip off any types
162
+ toProcess = toProcess.replace(/\.git|\.hg|\.zip/, "");
163
+ moduleParts = toProcess.split("//");
164
+ const nameParts = moduleParts[0].split("/");
165
+ let name = nameParts.pop();
166
+ let namespace = nameParts.pop();
167
+ if (!name) {
168
+ throw new Error(`Module name should be properly set in ${item}`);
169
+ }
170
+ if (moduleParts.length > 1) {
171
+ const moduleNameParts = moduleParts[1].split("/");
172
+ const moduleName = moduleNameParts.pop();
173
+ if (namespace) {
174
+ namespace = `${namespace}/${name}/${moduleNameParts.join("/")}`;
175
+ }
176
+ else {
177
+ namespace = `${name}/${moduleNameParts.join("/")}`;
178
+ }
179
+ name = moduleName !== null && moduleName !== void 0 ? moduleName : name;
180
+ }
181
+ return {
182
+ name,
183
+ source: item,
184
+ fqn: toProcess.replace("//", "/"),
185
+ namespace,
186
+ };
187
+ }
188
+ }
189
+ exports.TerraformModuleConstraint = TerraformModuleConstraint;
190
+ class TerraformProviderConstraint {
191
+ constructor(item) {
192
+ if (typeof item === "string") {
193
+ const parsed = this.parseDependencyConstraint(item);
194
+ this.name = parsed.name;
195
+ this.fqn = parsed.fqn;
196
+ this.source = parsed.fqn;
197
+ this.version = parsed.version;
198
+ this.namespace = parsed.namespace;
199
+ }
200
+ else {
201
+ this.name = item.name;
202
+ this.fqn = item.name;
203
+ this.version = item.version;
204
+ this.source = item.source;
205
+ this.namespace = item.namespace;
206
+ }
207
+ }
208
+ parseDependencyConstraint(item) {
209
+ const [fqn, version] = item.split("@");
210
+ const nameParts = fqn.split("/");
211
+ const name = nameParts.pop();
212
+ const namespace = nameParts.pop();
213
+ if (!name) {
214
+ throw new Error(`Provider name should be properly set in ${item}`);
215
+ }
216
+ return {
217
+ name,
218
+ source: fqn,
219
+ // Terraform doesn't support *, instead no version is specified
220
+ version: version === "*" ? undefined : version,
221
+ fqn,
222
+ namespace,
223
+ };
224
+ }
225
+ }
226
+ exports.TerraformProviderConstraint = TerraformProviderConstraint;
227
+ const parseConfig = (configJSON) => {
228
+ var _a, _b;
229
+ const config = {
230
+ ...exports.CONFIG_DEFAULTS,
231
+ ...JSON.parse(configJSON || "{}"),
232
+ };
233
+ if (isPresent(config.terraformModules)) {
234
+ config.terraformModules = (_a = config.terraformModules) === null || _a === void 0 ? void 0 : _a.map((mod) => new TerraformModuleConstraint(mod));
235
+ }
236
+ if (isPresent(config.terraformProviders)) {
237
+ config.terraformProviders = (_b = config.terraformProviders) === null || _b === void 0 ? void 0 : _b.map((provider) => new TerraformProviderConstraint(provider));
238
+ }
239
+ if (config.context) {
240
+ process_1.env[CONTEXT_ENV] = JSON.stringify(config.context);
241
+ }
242
+ return config;
243
+ };
244
+ exports.parseConfig = parseConfig;
245
+ function readConfigSync(configFile = path.join(process.cwd(), CONFIG_FILE)) {
246
+ let configFileContent;
247
+ if (fs.existsSync(configFile)) {
248
+ configFileContent = fs.readFileSync(configFile).toString();
249
+ }
250
+ return (0, exports.parseConfig)(configFileContent);
251
+ }
252
+ exports.readConfigSync = readConfigSync;
253
+ function shouldCheckCodeMakerOutput(config) {
254
+ return (isPresent(config.terraformModules) || isPresent(config.terraformProviders));
255
+ }
256
+ exports.shouldCheckCodeMakerOutput = shouldCheckCodeMakerOutput;
257
+ function logTimespan(message) {
258
+ logging_1.logger.debug(`Start timer for ${message}...`);
259
+ const start = Date.now();
260
+ return function logTimespanEnd() {
261
+ const end = Date.now();
262
+ const duration = end - start;
263
+ logging_1.logger.debug(`${message} took ${duration}ms`);
264
+ };
265
+ }
266
+ exports.logTimespan = logTimespan;
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVILDZDQUErQjtBQUMvQiwyQ0FBNkI7QUFDN0IsdUNBQW1DO0FBQ25DLHlEQUFzRDtBQUN0RCxxQ0FBOEI7QUFDOUIseUNBQXlDO0FBRXpDLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQixxQ0FBeUIsQ0FBQTtJQUN6Qiw2QkFBaUIsQ0FBQTtJQUNqQiw2QkFBaUIsQ0FBQTtJQUNqQix5QkFBYSxDQUFBO0lBQ2IscUJBQVMsQ0FBQTtBQUNYLENBQUMsRUFOVyxRQUFRLHdCQUFSLFFBQVEsUUFNbkI7QUFFWSxRQUFBLFNBQVMsR0FBRztJQUN2QixRQUFRLENBQUMsVUFBVTtJQUNuQixRQUFRLENBQUMsTUFBTTtJQUNmLFFBQVEsQ0FBQyxJQUFJO0lBQ2IsUUFBUSxDQUFDLE1BQU07SUFDZixRQUFRLENBQUMsRUFBRTtDQUNaLENBQUM7QUFFRixNQUFNLFdBQVcsR0FBRyxvQkFBb0IsQ0FBQztBQUV6QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUM7QUFDcEIsUUFBQSxlQUFlLEdBQUc7SUFDN0IsTUFBTSxFQUFFLFdBQVc7SUFDbkIsZUFBZSxFQUFFLE1BQU07Q0FDeEIsQ0FBQztBQUVGLFNBQVMsU0FBUyxDQUFDLEtBQXdCO0lBQ3pDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBU0QsU0FBUyxhQUFhLENBQUMsTUFBYztJQUNuQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLE1BQWM7SUFDMUMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUss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QUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5QixpQkFBaUIsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzdELENBQUM7SUFFRCxPQUFPLElBQUEsbUJBQVcsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFWRCx3Q0FVQztBQUVELFNBQWdCLDBCQUEwQixDQUFDLE1BQWM7SUFDdkQsT0FBTyxDQUNMLFNBQVMsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQzNFLENBQUM7QUFDSixDQUFDO0FBSkQsZ0VBSUM7QUFFRCxTQUFnQixXQUFXLENBQUMsT0FBZTtJQUN6QyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsT0FBTyxLQUFLLENBQUMsQ0FBQztJQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFekIsT0FBTyxTQUFTLGNBQWM7UUFDNUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDN0IsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLFNBQVMsUUFBUSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBVEQsa0NBU0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgaXNSZWdpc3RyeU1vZHVsZSB9IGZyb20gXCIuL3RlcnJhZm9ybS1tb2R1bGVcIjtcbmltcG9ydCB7IGVudiB9IGZyb20gXCJwcm9jZXNzXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiY29kZW1ha2VyXCI7XG5cbmV4cG9ydCBlbnVtIExhbmd1YWdlIHtcbiAgVFlQRVNDUklQVCA9IFwidHlwZXNjcmlwdFwiLFxuICBQWVRIT04gPSBcInB5dGhvblwiLFxuICBDU0hBUlAgPSBcImNzaGFycFwiLFxuICBKQVZBID0gXCJqYXZhXCIsXG4gIEdPID0gXCJnb1wiLFxufVxuXG5leHBvcnQgY29uc3QgTEFOR1VBR0VTID0gW1xuICBMYW5ndWFnZS5UWVBFU0NSSVBULFxuICBMYW5ndWFnZS5QWVRIT04sXG4gIExhbmd1YWdlLkpBVkEsXG4gIExhbmd1YWdlLkNTSEFSUCxcbiAgTGFuZ3VhZ2UuR08sXG5dO1xuXG5jb25zdCBDT05URVhUX0VOViA9IFwiQ0RLVEZfQ09OVEVYVF9KU09OXCI7XG5cbmNvbnN0IENPTkZJR19GSUxFID0gXCJjZGt0Zi5qc29uXCI7XG5leHBvcnQgY29uc3QgQ09ORklHX0RFRkFVTFRTID0ge1xuICBvdXRwdXQ6IFwiY2RrdGYub3V0XCIsXG4gIGNvZGVNYWtlck91dHB1dDogXCIuZ2VuXCIsXG59O1xuXG5mdW5jdGlvbiBpc1ByZXNlbnQoaW5wdXQ6IGFueVtdIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGlucHV0KSAmJiBpbnB1dC5sZW5ndGggPiAwO1xufVxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldExvY2FsTWF0Y2goc291cmNlOiBzdHJpbmcpOiBSZWdFeHBNYXRjaEFycmF5IHwgbnVsbCB7XG4gIHJldHVybiBzb3VyY2UubWF0Y2goL14oXFwuXFwvfFxcLlxcLlxcL3xcXC5cXFxcXFxcXHxcXC5cXC5cXFxcXFxcXCkoLiopLyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xvY2FsTW9kdWxlKHNvdXJjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiBnZXRMb2NhbE1hdGNoKHNvdXJjZSkgIT09IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50IGltcGxlbWVudHMgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNvdXJjZUFic29sdXRlUGF0aD86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbj86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihpdGVtOiBUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZURlcGVuZGVuY3lDb25zdHJhaW50KGl0ZW0pO1xuICAgICAgdGhpcy5uYW1lID0gcGFyc2VkLm5hbWU7XG4gICAgICB0aGlzLnNvdXJjZSA9IHBhcnNlZC5zb3VyY2U7XG4gICAgICB0aGlzLmZxbiA9IHBhcnNlZC5mcW47XG4gICAgICB0aGlzLnZlcnNpb24gPSBwYXJzZWQudmVyc2lvbjtcbiAgICAgIHRoaXMubmFtZXNwYWNlID0gcGFyc2VkLm5hbWVzcGFjZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3VyY2UgPSBpdGVtLnNvdXJjZTtcbiAgICAgIHRoaXMubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIHRoaXMuZnFuID0gaXRlbS5uYW1lO1xuICAgICAgdGhpcy52ZXJzaW9uID0gaXRlbS52ZXJzaW9uO1xuICAgICAgdGhpcy5uYW1lc3BhY2UgPSBpdGVtLm5hbWVzcGFjZTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbE1hdGNoID0gZ2V0TG9jYWxNYXRjaCh0aGlzLnNvdXJjZSk7XG4gICAgaWYgKGxvY2FsTWF0Y2gpIHtcbiAgICAgIHRoaXMubG9jYWxTb3VyY2VBYnNvbHV0ZVBhdGggPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgdGhpcy5zb3VyY2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgIHJldHVybiB0b1Bhc2NhbENhc2UodGhpcy5uYW1lLnJlcGxhY2UoL1stLy5dL2csIFwiX1wiKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpbGVOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLm5hbWVzcGFjZSA/IGAke3RoaXMubmFtZXNwYWNlfS8ke3RoaXMubmFtZX1gIDogdGhpcy5uYW1lO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURlcGVuZGVuY3lDb25zdHJhaW50KFxuICAgIGl0ZW06IHN0cmluZyxcbiAgKTogVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQge1xuICAgIGNvbnN0IGxvY2FsTWF0Y2ggPSBnZXRMb2NhbE1hdGNoKGl0ZW0pO1xuICAgIGlmIChsb2NhbE1hdGNoKSB7XG4gICAgICBjb25zdCBmcW4gPSBsb2NhbE1hdGNoWzJdO1xuICAgICAgY29uc3QgbmFtZVBhcnRzID0gZnFuLnNwbGl0KFwiL1wiKTtcbiAgICAgIGNvbnN0IG5hbWUgPSBuYW1lUGFydHMucG9wKCkgPz8gZnFuO1xuICAgICAgY29uc3QgbmFtZXNwYWNlID0gbmFtZVBhcnRzLnBvcCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lLFxuICAgICAgICBmcW4sXG4gICAgICAgIHNvdXJjZTogaXRlbSxcbiAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBbc291cmNlLCB2ZXJzaW9uXSA9IGl0ZW0uc3BsaXQoXCJAXCIpO1xuICAgIGxldCBtb2R1bGVQYXJ0cyA9IHNvdXJjZS5zcGxpdChcIi8vXCIpO1xuICAgIGlmIChpc1JlZ2lzdHJ5TW9kdWxlKG1vZHVsZVBhcnRzWzBdKSkge1xuICAgICAgY29uc3QgbmFtZVBhcnRzID0gbW9kdWxlUGFydHNbMF0uc3BsaXQoXCIvXCIpO1xuICAgICAgY29uc3QgcHJvdmlkZXIgPSBuYW1lUGFydHMucG9wKCk7IC8vIGxhc3QgcGFydCBpcyB0aGUgcHJvdmlkZXJcbiAgICAgIGxldCBuYW1lID0gbmFtZVBhcnRzLnBvcCgpID8/IHNvdXJjZTtcbiAgICAgIGxldCBuYW1lc3BhY2UgPSBgJHtuYW1lUGFydHMucG9wKCl9LyR7cHJvdmlkZXJ9YDtcblxuICAgICAgaWYgKG1vZHVsZVBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZVBhcnRzID0gbW9kdWxlUGFydHNbMV0uc3BsaXQoXCIvXCIpO1xuICAgICAgICBjb25zdCBtb2R1bGVOYW1lID0gbW9kdWxlTmFtZVBhcnRzLnBvcCgpO1xuICAgICAgICBuYW1lc3BhY2UgPSBgJHtuYW1lc3BhY2V9LyR7bmFtZX0vJHttb2R1bGVOYW1lUGFydHMuam9pbihcIi9cIil9YDtcbiAgICAgICAgbmFtZSA9IG1vZHVsZU5hbWUgPz8gbmFtZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc291cmNlLFxuICAgICAgICB2ZXJzaW9uLFxuICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgIGZxbjogc291cmNlLnJlcGxhY2UoXCIvL1wiLCBcIi9cIikucmVwbGFjZSgvXFwuL2csIFwiLVwiKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHRvUHJvY2VzcyA9IGl0ZW07IC8vIHByb2Nlc3Mgb25lIHBhcnQgYXQgYSB0aW1lXG5cbiAgICAvLyBzdHJpcCBvZmYgYW55IHByZWZpeFxuICAgIGNvbnN0IHByZWZpeE1hdGNoID0gdG9Qcm9jZXNzLm1hdGNoKC9eKFthLXpBLVowLTldKik6OiguKikvKTtcbiAgICBpZiAocHJlZml4TWF0Y2gpIHtcbiAgICAgIHRvUHJvY2VzcyA9IHByZWZpeE1hdGNoWzJdO1xuICAgIH1cblxuICAgIC8vIHN0cmlwIG9mZiBhbnkgcHJvdG9jb2xcbiAgICBjb25zdCBwcm90b2NvbE1hdGNoID0gdG9Qcm9jZXNzLm1hdGNoKC9eKFthLXpBLVpdKik6XFwvXFwvKC4qKS8pO1xuICAgIGlmIChwcm90b2NvbE1hdGNoKSB7XG4gICAgICB0b1Byb2Nlc3MgPSBwcm90b2NvbE1hdGNoWzJdO1xuICAgIH1cblxuICAgIC8vIGFueXRoaW5nIGJlZm9yZSBsYXN0ICc6JyB3b24ndCBjb250cmlidXRlXG4gICAgY29uc3QgY29sb25QYXJ0cyA9IHRvUHJvY2Vzcy5zcGxpdChcIjpcIik7XG4gICAgdG9Qcm9jZXNzID0gY29sb25QYXJ0cy5wb3AoKSA/PyB0b1Byb2Nlc3M7XG5cbiAgICAvLyBzdHJpcCBvZmYgYW55IHBvcnRcbiAgICBjb25zdCBwb3J0TWF0Y2ggPSB0b1Byb2Nlc3MubWF0Y2goL15bXFxkXSooLiopLyk7XG4gICAgaWYgKHBvcnRNYXRjaCkge1xuICAgICAgdG9Qcm9jZXNzID0gcG9ydE1hdGNoWzFdO1xuICAgIH1cblxuICAgIC8vIHN0cmlwIG9mZiBhbnkgaG9zdG5hbWVcbiAgICBjb25zdCBob3N0TWF0Y2ggPSB0b1Byb2Nlc3MubWF0Y2goL1teL10qXFwuW14vXSpcXC8oLiopLyk7XG4gICAgaWYgKGhvc3RNYXRjaCkge1xuICAgICAgdG9Qcm9jZXNzID0gaG9zdE1hdGNoWzFdO1xuICAgIH1cblxuICAgIC8vIHN0cmlwIG9mZiBhbnkgYXJndW1lbnRzXG4gICAgY29uc3QgYXJndW1lbnRNYXRjaCA9IHRvUHJvY2Vzcy5tYXRjaCgvKC4qKVxcPy4qLyk7XG4gICAgaWYgKGFyZ3VtZW50TWF0Y2gpIHtcbiAgICAgIHRvUHJvY2VzcyA9IGFyZ3VtZW50TWF0Y2hbMV07XG4gICAgfVxuXG4gICAgLy8gc3RyaXAgb2ZmIGFueSB0eXBlc1xuICAgIHRvUHJvY2VzcyA9IHRvUHJvY2Vzcy5yZXBsYWNlKC9cXC5naXR8XFwuaGd8XFwuemlwLywgXCJcIik7XG5cbiAgICBtb2R1bGVQYXJ0cyA9IHRvUHJvY2Vzcy5zcGxpdChcIi8vXCIpO1xuICAgIGNvbnN0IG5hbWVQYXJ0cyA9IG1vZHVsZVBhcnRzWzBdLnNwbGl0KFwiL1wiKTtcbiAgICBsZXQgbmFtZSA9IG5hbWVQYXJ0cy5wb3AoKTtcbiAgICBsZXQgbmFtZXNwYWNlID0gbmFtZVBhcnRzLnBvcCgpO1xuICAgIGlmICghbmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNb2R1bGUgbmFtZSBzaG91bGQgYmUgcHJvcGVybHkgc2V0IGluICR7aXRlbX1gKTtcbiAgICB9XG5cbiAgICBpZiAobW9kdWxlUGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgY29uc3QgbW9kdWxlTmFtZVBhcnRzID0gbW9kdWxlUGFydHNbMV0uc3BsaXQoXCIvXCIpO1xuICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWVQYXJ0cy5wb3AoKTtcbiAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgbmFtZXNwYWNlID0gYCR7bmFtZXNwYWNlfS8ke25hbWV9LyR7bW9kdWxlTmFtZVBhcnRzLmpvaW4oXCIvXCIpfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuYW1lc3BhY2UgPSBgJHtuYW1lfS8ke21vZHVsZU5hbWVQYXJ0cy5qb2luKFwiL1wiKX1gO1xuICAgICAgfVxuICAgICAgbmFtZSA9IG1vZHVsZU5hbWUgPz8gbmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIHNvdXJjZTogaXRlbSxcbiAgICAgIGZxbjogdG9Qcm9jZXNzLnJlcGxhY2UoXCIvL1wiLCBcIi9cIiksXG4gICAgICBuYW1lc3BhY2UsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50IGltcGxlbWVudHMgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgc291cmNlOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZnFuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoaXRlbTogT21pdDxUZXJyYWZvcm1EZXBlbmRlbmN5Q29uc3RyYWludCwgXCJmcW5cIj4gfCBzdHJpbmcpIHtcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VEZXBlbmRlbmN5Q29uc3RyYWludChpdGVtKTtcbiAgICAgIHRoaXMubmFtZSA9IHBhcnNlZC5uYW1lO1xuICAgICAgdGhpcy5mcW4gPSBwYXJzZWQuZnFuO1xuICAgICAgdGhpcy5zb3VyY2UgPSBwYXJzZWQuZnFuO1xuICAgICAgdGhpcy52ZXJzaW9uID0gcGFyc2VkLnZlcnNpb247XG4gICAgICB0aGlzLm5hbWVzcGFjZSA9IHBhcnNlZC5uYW1lc3BhY2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubmFtZSA9IGl0ZW0ubmFtZTtcbiAgICAgIHRoaXMuZnFuID0gaXRlbS5uYW1lO1xuICAgICAgdGhpcy52ZXJzaW9uID0gaXRlbS52ZXJzaW9uO1xuICAgICAgdGhpcy5zb3VyY2UgPSBpdGVtLnNvdXJjZTtcbiAgICAgIHRoaXMubmFtZXNwYWNlID0gaXRlbS5uYW1lc3BhY2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZURlcGVuZGVuY3lDb25zdHJhaW50KFxuICAgIGl0ZW06IHN0cmluZyxcbiAgKTogVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQge1xuICAgIGNvbnN0IFtmcW4sIHZlcnNpb25dID0gaXRlbS5zcGxpdChcIkBcIik7XG4gICAgY29uc3QgbmFtZVBhcnRzID0gZnFuLnNwbGl0KFwiL1wiKTtcbiAgICBjb25zdCBuYW1lID0gbmFtZVBhcnRzLnBvcCgpO1xuICAgIGNvbnN0IG5hbWVzcGFjZSA9IG5hbWVQYXJ0cy5wb3AoKTtcbiAgICBpZiAoIW5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZXIgbmFtZSBzaG91bGQgYmUgcHJvcGVybHkgc2V0IGluICR7aXRlbX1gKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZSxcbiAgICAgIHNvdXJjZTogZnFuLFxuICAgICAgLy8gVGVycmFmb3JtIGRvZXNuJ3Qgc3VwcG9ydCAqLCBpbnN0ZWFkIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAgICB2ZXJzaW9uOiB2ZXJzaW9uID09PSBcIipcIiA/IHVuZGVmaW5lZCA6IHZlcnNpb24sXG4gICAgICBmcW4sXG4gICAgICBuYW1lc3BhY2UsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gIHJlYWRvbmx5IGFwcD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFuZ3VhZ2U/OiBMYW5ndWFnZTtcbiAgcmVhZG9ubHkgb3V0cHV0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvZGVNYWtlck91dHB1dDogc3RyaW5nO1xuICB0ZXJyYWZvcm1Qcm92aWRlcnM/OiBUZXJyYWZvcm1Qcm92aWRlckNvbnN0cmFpbnRbXTtcbiAgdGVycmFmb3JtTW9kdWxlcz86IFRlcnJhZm9ybU1vZHVsZUNvbnN0cmFpbnRbXTtcbiAgcmVhZG9ubHkgY29udGV4dD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbmZpZyA9IChjb25maWdKU09OPzogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGNvbmZpZzogQ29uZmlnID0ge1xuICAgIC4uLkNPTkZJR19ERUZBVUxUUyxcbiAgICAuLi5KU09OLnBhcnNlKGNvbmZpZ0pTT04gfHwgXCJ7fVwiKSxcbiAgfTtcblxuICBpZiAoaXNQcmVzZW50KGNvbmZpZy50ZXJyYWZvcm1Nb2R1bGVzKSkge1xuICAgIGNvbmZpZy50ZXJyYWZvcm1Nb2R1bGVzID0gY29uZmlnLnRlcnJhZm9ybU1vZHVsZXM/Lm1hcChcbiAgICAgIChtb2QpID0+IG5ldyBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50KG1vZCksXG4gICAgKTtcbiAgfVxuXG4gIGlmIChpc1ByZXNlbnQoY29uZmlnLnRlcnJhZm9ybVByb3ZpZGVycykpIHtcbiAgICBjb25maWcudGVycmFmb3JtUHJvdmlkZXJzID0gY29uZmlnLnRlcnJhZm9ybVByb3ZpZGVycz8ubWFwKFxuICAgICAgKHByb3ZpZGVyKSA9PiBuZXcgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50KHByb3ZpZGVyKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKGNvbmZpZy5jb250ZXh0KSB7XG4gICAgZW52W0NPTlRFWFRfRU5WXSA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZy5jb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvbmZpZ1N5bmMoXG4gIGNvbmZpZ0ZpbGUgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgQ09ORklHX0ZJTEUpLFxuKTogQ29uZmlnIHtcbiAgbGV0IGNvbmZpZ0ZpbGVDb250ZW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgaWYgKGZzLmV4aXN0c1N5bmMoY29uZmlnRmlsZSkpIHtcbiAgICBjb25maWdGaWxlQ29udGVudCA9IGZzLnJlYWRGaWxlU3luYyhjb25maWdGaWxlKS50b1N0cmluZygpO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlQ29uZmlnKGNvbmZpZ0ZpbGVDb250ZW50KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZENoZWNrQ29kZU1ha2VyT3V0cHV0KGNvbmZpZzogQ29uZmlnKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgaXNQcmVzZW50KGNvbmZpZy50ZXJyYWZvcm1Nb2R1bGVzKSB8fCBpc1ByZXNlbnQoY29uZmlnLnRlcnJhZm9ybVByb3ZpZGVycylcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxvZ1RpbWVzcGFuKG1lc3NhZ2U6IHN0cmluZykge1xuICBsb2dnZXIuZGVidWcoYFN0YXJ0IHRpbWVyIGZvciAke21lc3NhZ2V9Li4uYCk7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICByZXR1cm4gZnVuY3Rpb24gbG9nVGltZXNwYW5FbmQoKSB7XG4gICAgY29uc3QgZW5kID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkdXJhdGlvbiA9IGVuZCAtIHN0YXJ0O1xuICAgIGxvZ2dlci5kZWJ1ZyhgJHttZXNzYWdlfSB0b29rICR7ZHVyYXRpb259bXNgKTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"AAOA,wBAAsB,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,iBAOpE"}