@cdktn/cli-core 0.22.0-pre.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/README.md +3 -0
  2. package/ambient.d.ts +13 -0
  3. package/eslint.config.mjs +82 -0
  4. package/jest.config.js +20 -0
  5. package/package.json +139 -0
  6. package/src/lib/cdktf-config.d.ts +16 -0
  7. package/src/lib/cdktf-config.d.ts.map +1 -0
  8. package/src/lib/cdktf-config.js +108 -0
  9. package/src/lib/cdktf-project-io-handler.d.ts +20 -0
  10. package/src/lib/cdktf-project-io-handler.d.ts.map +1 -0
  11. package/src/lib/cdktf-project-io-handler.js +84 -0
  12. package/src/lib/cdktf-project.d.ts +111 -0
  13. package/src/lib/cdktf-project.d.ts.map +1 -0
  14. package/src/lib/cdktf-project.js +371 -0
  15. package/src/lib/cdktf-stack.d.ts +134 -0
  16. package/src/lib/cdktf-stack.d.ts.map +1 -0
  17. package/src/lib/cdktf-stack.js +386 -0
  18. package/src/lib/convert.d.ts +6 -0
  19. package/src/lib/convert.d.ts.map +1 -0
  20. package/src/lib/convert.js +51 -0
  21. package/src/lib/dependencies/cdktf-config-manager.d.ts +12 -0
  22. package/src/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
  23. package/src/lib/dependencies/cdktf-config-manager.js +36 -0
  24. package/src/lib/dependencies/dependency-manager.d.ts +84 -0
  25. package/src/lib/dependencies/dependency-manager.d.ts.map +1 -0
  26. package/src/lib/dependencies/dependency-manager.js +365 -0
  27. package/src/lib/dependencies/package-manager.d.ts +18 -0
  28. package/src/lib/dependencies/package-manager.d.ts.map +1 -0
  29. package/src/lib/dependencies/package-manager.js +574 -0
  30. package/src/lib/dependencies/prebuilt-providers.d.ts +18 -0
  31. package/src/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  32. package/src/lib/dependencies/prebuilt-providers.js +204 -0
  33. package/src/lib/dependencies/registry-api.d.ts +8 -0
  34. package/src/lib/dependencies/registry-api.d.ts.map +1 -0
  35. package/src/lib/dependencies/registry-api.js +77 -0
  36. package/src/lib/dependencies/version-constraints.d.ts +8 -0
  37. package/src/lib/dependencies/version-constraints.d.ts.map +1 -0
  38. package/src/lib/dependencies/version-constraints.js +95 -0
  39. package/src/lib/error-reporting.d.ts +10 -0
  40. package/src/lib/error-reporting.d.ts.map +1 -0
  41. package/src/lib/error-reporting.js +133 -0
  42. package/src/lib/errors.d.ts +6 -0
  43. package/src/lib/errors.d.ts.map +1 -0
  44. package/src/lib/errors.js +10 -0
  45. package/src/lib/execution-logs.d.ts +3 -0
  46. package/src/lib/execution-logs.d.ts.map +1 -0
  47. package/src/lib/execution-logs.js +47 -0
  48. package/src/lib/get.d.ts +25 -0
  49. package/src/lib/get.d.ts.map +1 -0
  50. package/src/lib/get.js +90 -0
  51. package/src/lib/helpers/stack-helpers.d.ts +16 -0
  52. package/src/lib/helpers/stack-helpers.d.ts.map +1 -0
  53. package/src/lib/helpers/stack-helpers.js +155 -0
  54. package/src/lib/index.d.ts +15 -0
  55. package/src/lib/index.d.ts.map +1 -0
  56. package/src/lib/index.js +44 -0
  57. package/src/lib/init.d.ts +37 -0
  58. package/src/lib/init.d.ts.map +1 -0
  59. package/src/lib/init.js +131 -0
  60. package/src/lib/local-provider-constraints.d.ts +28 -0
  61. package/src/lib/local-provider-constraints.d.ts.map +1 -0
  62. package/src/lib/local-provider-constraints.js +95 -0
  63. package/src/lib/local-provider-versions.d.ts +12 -0
  64. package/src/lib/local-provider-versions.d.ts.map +1 -0
  65. package/src/lib/local-provider-versions.js +73 -0
  66. package/src/lib/models/deploy-machine.d.ts +128 -0
  67. package/src/lib/models/deploy-machine.d.ts.map +1 -0
  68. package/src/lib/models/deploy-machine.js +280 -0
  69. package/src/lib/models/pty-process.d.ts +29 -0
  70. package/src/lib/models/pty-process.d.ts.map +1 -0
  71. package/src/lib/models/pty-process.js +132 -0
  72. package/src/lib/models/schema.d.ts +2307 -0
  73. package/src/lib/models/schema.d.ts.map +1 -0
  74. package/src/lib/models/schema.js +181 -0
  75. package/src/lib/models/terraform-cli.d.ts +72 -0
  76. package/src/lib/models/terraform-cli.d.ts.map +1 -0
  77. package/src/lib/models/terraform-cli.js +357 -0
  78. package/src/lib/models/terraform.d.ts +125 -0
  79. package/src/lib/models/terraform.d.ts.map +1 -0
  80. package/src/lib/models/terraform.js +72 -0
  81. package/src/lib/output.d.ts +23 -0
  82. package/src/lib/output.d.ts.map +1 -0
  83. package/src/lib/output.js +211 -0
  84. package/src/lib/provider-add.d.ts +15 -0
  85. package/src/lib/provider-add.d.ts.map +1 -0
  86. package/src/lib/provider-add.js +30 -0
  87. package/src/lib/server/terraform-logs.d.ts +2 -0
  88. package/src/lib/server/terraform-logs.d.ts.map +1 -0
  89. package/src/lib/server/terraform-logs.js +19 -0
  90. package/src/lib/synth-stack.d.ts +29 -0
  91. package/src/lib/synth-stack.d.ts.map +1 -0
  92. package/src/lib/synth-stack.js +251 -0
  93. package/src/lib/synth.d.ts +7 -0
  94. package/src/lib/synth.d.ts.map +1 -0
  95. package/src/lib/synth.js +67 -0
  96. package/src/lib/terraform-json.d.ts +1015 -0
  97. package/src/lib/terraform-json.d.ts.map +1 -0
  98. package/src/lib/terraform-json.js +82 -0
  99. package/src/lib/terraform-provider-lock.d.ts +25 -0
  100. package/src/lib/terraform-provider-lock.d.ts.map +1 -0
  101. package/src/lib/terraform-provider-lock.js +95 -0
  102. package/src/lib/watch.d.ts +16 -0
  103. package/src/lib/watch.d.ts.map +1 -0
  104. package/src/lib/watch.js +155 -0
  105. package/templates/csharp/.hooks.sscaff.js +63 -0
  106. package/templates/csharp/MainStack.cs +15 -0
  107. package/templates/csharp/MyTerraformStack.csproj +13 -0
  108. package/templates/csharp/Program.cs +17 -0
  109. package/templates/csharp/TestProgram.cs +42 -0
  110. package/templates/csharp/cdktf.json +11 -0
  111. package/templates/csharp/help +42 -0
  112. package/templates/csharp/{{}}.gitignore +345 -0
  113. package/templates/go/.hooks.sscaff.js +70 -0
  114. package/templates/go/cdktf.json +12 -0
  115. package/templates/go/go.mod +8 -0
  116. package/templates/go/help +32 -0
  117. package/templates/go/main.go +22 -0
  118. package/templates/go/main_test.go +42 -0
  119. package/templates/go/{{}}.gitignore +21 -0
  120. package/templates/java/.hooks.sscaff.js +64 -0
  121. package/templates/java/build.gradle +55 -0
  122. package/templates/java/cdktf.json +12 -0
  123. package/templates/java/gradle.properties +1 -0
  124. package/templates/java/gradlew +248 -0
  125. package/templates/java/gradlew.bat +92 -0
  126. package/templates/java/help +35 -0
  127. package/templates/java/settings.gradle +5 -0
  128. package/templates/java/src/main/java/com/mycompany/app/Main.java +16 -0
  129. package/templates/java/src/main/java/com/mycompany/app/MainStack.java +14 -0
  130. package/templates/java/src/test/java/com/company/app/MainTest.java +38 -0
  131. package/templates/java/{{}}.gitignore +14 -0
  132. package/templates/python/.hooks.sscaff.js +59 -0
  133. package/templates/python/Pipfile +7 -0
  134. package/templates/python/cdktf.json +12 -0
  135. package/templates/python/help +42 -0
  136. package/templates/python/main-test.py +26 -0
  137. package/templates/python/main.py +16 -0
  138. package/templates/python/{{}}.gitignore +7 -0
  139. package/templates/python-pip/.hooks.sscaff.js +63 -0
  140. package/templates/python-pip/cdktf.json +12 -0
  141. package/templates/python-pip/help +35 -0
  142. package/templates/python-pip/main-test.py +23 -0
  143. package/templates/python-pip/main.py +16 -0
  144. package/templates/python-pip/{{}}.gitignore +7 -0
  145. package/templates/typescript/.hooks.sscaff.js +78 -0
  146. package/templates/typescript/__tests__/main-test.ts +89 -0
  147. package/templates/typescript/cdktf.json +11 -0
  148. package/templates/typescript/help +51 -0
  149. package/templates/typescript/jest.config.js +187 -0
  150. package/templates/typescript/main.ts +14 -0
  151. package/templates/typescript/package.json +22 -0
  152. package/templates/typescript/setup.js +2 -0
  153. package/templates/typescript/tsconfig.json +35 -0
  154. package/templates/typescript/{{}}.gitignore +11 -0
@@ -0,0 +1,133 @@
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.captureException = exports.initializErrorReporting = exports.persistReportCrashReportDecision = exports.shouldReportCrash = void 0;
30
+ // Copyright (c) HashiCorp, Inc
31
+ // SPDX-License-Identifier: MPL-2.0
32
+ const Sentry = __importStar(require("@sentry/node"));
33
+ const commons_1 = require("@cdktn/commons");
34
+ const commons_2 = require("@cdktn/commons");
35
+ const path = __importStar(require("path"));
36
+ const fs = __importStar(require("fs-extra"));
37
+ const ci_info_1 = __importDefault(require("ci-info"));
38
+ function shouldReportCrash(projectPath = process.cwd()) {
39
+ try {
40
+ const cdktfJson = JSON.parse(fs.readFileSync(path.resolve(projectPath, "cdktf.json"), "utf8"));
41
+ return typeof cdktfJson.sendCrashReports === "boolean"
42
+ ? cdktfJson.sendCrashReports
43
+ : cdktfJson.sendCrashReports === "true";
44
+ }
45
+ catch (e) {
46
+ commons_2.logger.debug(`Error determining if crash reporting should be enabled, defaulting to false: ${e}`);
47
+ return false;
48
+ }
49
+ }
50
+ exports.shouldReportCrash = shouldReportCrash;
51
+ function persistReportCrashReportDecision(decision, projectPath = process.cwd()) {
52
+ const cdktfJson = JSON.parse(fs.readFileSync(path.resolve(projectPath, "cdktf.json"), "utf8"));
53
+ cdktfJson.sendCrashReports = decision;
54
+ fs.writeFileSync(path.resolve(projectPath, "cdktf.json"), JSON.stringify(cdktfJson, null, 2));
55
+ }
56
+ exports.persistReportCrashReportDecision = persistReportCrashReportDecision;
57
+ function isPromise(p) {
58
+ return (typeof p === "object" &&
59
+ typeof p.then === "function" &&
60
+ typeof p.catch === "function");
61
+ }
62
+ async function initializErrorReporting(runConsentPrompt) {
63
+ let shouldReport = shouldReportCrash();
64
+ const ci = ci_info_1.default.isCI ? ci_info_1.default.name || "unknown" : false;
65
+ // We have no info yet, so we need to ask the user
66
+ if (shouldReport === undefined && runConsentPrompt) {
67
+ // But only if it's a user
68
+ if (ci) {
69
+ return;
70
+ }
71
+ shouldReport = await runConsentPrompt();
72
+ persistReportCrashReportDecision(shouldReport);
73
+ }
74
+ if (!shouldReport) {
75
+ commons_2.logger.debug("Error reporting disabled");
76
+ return;
77
+ }
78
+ if (!process.env.SENTRY_DSN) {
79
+ commons_2.logger.info("Error reporting disabled: SENTRY_DSN not set");
80
+ return;
81
+ }
82
+ commons_2.logger.debug("Initializing error reporting");
83
+ Sentry.init({
84
+ autoSessionTracking: true,
85
+ dsn: process.env.SENTRY_DSN,
86
+ release: `cdktn-cli-${commons_1.DISPLAY_VERSION}`,
87
+ async beforeSend(event, hint) {
88
+ if (!hint) {
89
+ return event;
90
+ }
91
+ // The promise character is not documented, but it happens
92
+ const originalException = hint.originalException;
93
+ let error;
94
+ if (isPromise(originalException)) {
95
+ originalException.catch((e) => (error = e));
96
+ await Promise.allSettled([originalException]);
97
+ }
98
+ else {
99
+ error = originalException;
100
+ }
101
+ const errorMessage = (error === null || error === void 0 ? void 0 : error.toString()) || "";
102
+ if (errorMessage.includes("Usage Error")) {
103
+ // This is a usage error, so we don't want to report it
104
+ return null;
105
+ }
106
+ return event;
107
+ },
108
+ });
109
+ Sentry.configureScope(function (scope) {
110
+ scope.setUser({
111
+ id: (0, commons_1.getUserId)(),
112
+ });
113
+ scope.setTag("projectId", (0, commons_1.getProjectId)());
114
+ });
115
+ commons_2.logger.debug("Collecting environment information for error reporting");
116
+ (0, commons_1.collectDebugInformation)().then((debugOutput) => {
117
+ Sentry.setContext("environment", debugOutput);
118
+ });
119
+ }
120
+ exports.initializErrorReporting = initializErrorReporting;
121
+ function captureException({ message, type, command, context, }) {
122
+ if (process.env.SENTRY_DSN && shouldReportCrash()) {
123
+ Sentry.captureException(new Error(message), {
124
+ tags: {
125
+ context: JSON.stringify(context),
126
+ type,
127
+ command,
128
+ },
129
+ });
130
+ }
131
+ }
132
+ exports.captureException = captureException;
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVwb3J0aW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVwb3J0aW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxxREFBdUM7QUFDdkMsNENBS3dCO0FBQ3hCLDRDQUF3QztBQUN4QywyQ0FBNkI7QUFDN0IsNkNBQStCO0FBQy9CLHNEQUE2QjtBQUU3QixTQUFnQixpQkFBaUIsQ0FDL0IsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFM0IsSUFBSSxDQUFDO1FBQ0gsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FDMUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxZQUFZLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDakUsQ0FBQztRQUVGLE9BQU8sT0FBTyxTQUFTLENBQUMsZ0JBQWdCLEtBQUssU0FBUztZQUNwRCxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtZQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixLQUFLLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUNWLGdGQUFnRixDQUFDLEVBQUUsQ0FDcEYsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFqQkQsOENBaUJDO0FBRUQsU0FBZ0IsZ0NBQWdDLENBQzlDLFFBQWlCLEVBQ2pCLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFO0lBRTNCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQzFCLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ2pFLENB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QUFLLENBQUMsT0FBTyxDQUFDO1lBQ1osRUFBRSxFQUFFLElBQUEsbUJBQVMsR0FBRTtTQUNoQixDQUFDLENBQUM7UUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFBLHNCQUFZLEdBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQztJQUN2RSxJQUFBLGlDQUF1QixHQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7UUFDN0MsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBM0VELDBEQTJFQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEVBQy9CLE9BQU8sRUFDUCxJQUFJLEVBQ0osT0FBTyxFQUNQLE9BQU8sR0FNUjtJQUNDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksaUJBQWlCLEVBQUUsRUFBRSxDQUFDO1FBQ2xELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUNoQyxJQUFJO2dCQUNKLE9BQU87YUFDUjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7QUFDSCxDQUFDO0FBcEJELDRDQW9CQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvbm9kZVwiO1xuaW1wb3J0IHtcbiAgZ2V0UHJvamVjdElkLFxuICBnZXRVc2VySWQsXG4gIGNvbGxlY3REZWJ1Z0luZm9ybWF0aW9uLFxuICBESVNQTEFZX1ZFUlNJT04sXG59IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBjaUluZm8gZnJvbSBcImNpLWluZm9cIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFJlcG9ydENyYXNoKFxuICBwcm9qZWN0UGF0aCA9IHByb2Nlc3MuY3dkKCksXG4pOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBjZGt0Zkpzb24gPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCwgXCJjZGt0Zi5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcblxuICAgIHJldHVybiB0eXBlb2YgY2RrdGZKc29uLnNlbmRDcmFzaFJlcG9ydHMgPT09IFwiYm9vbGVhblwiXG4gICAgICA/IGNka3RmSnNvbi5zZW5kQ3Jhc2hSZXBvcnRzXG4gICAgICA6IGNka3RmSnNvbi5zZW5kQ3Jhc2hSZXBvcnRzID09PSBcInRydWVcIjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBFcnJvciBkZXRlcm1pbmluZyBpZiBjcmFzaCByZXBvcnRpbmcgc2hvdWxkIGJlIGVuYWJsZWQsIGRlZmF1bHRpbmcgdG8gZmFsc2U6ICR7ZX1gLFxuICAgICk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwZXJzaXN0UmVwb3J0Q3Jhc2hSZXBvcnREZWNpc2lvbihcbiAgZGVjaXNpb246IGJvb2xlYW4sXG4gIHByb2plY3RQYXRoID0gcHJvY2Vzcy5jd2QoKSxcbikge1xuICBjb25zdCBjZGt0Zkpzb24gPSBKU09OLnBhcnNlKFxuICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUocHJvamVjdFBhdGgsIFwiY2RrdGYuanNvblwiKSwgXCJ1dGY4XCIpLFxuICApO1xuICBjZGt0Zkpzb24uc2VuZENyYXNoUmVwb3J0cyA9IGRlY2lzaW9uO1xuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHBhdGgucmVzb2x2ZShwcm9qZWN0UGF0aCwgXCJjZGt0Zi5qc29uXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGNka3RmSnNvbiwgbnVsbCwgMiksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzUHJvbWlzZShwOiBhbnkpOiBwIGlzIFByb21pc2U8YW55PiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHAgPT09IFwib2JqZWN0XCIgJiZcbiAgICB0eXBlb2YgcC50aGVuID09PSBcImZ1bmN0aW9uXCIgJiZcbiAgICB0eXBlb2YgcC5jYXRjaCA9PT0gXCJmdW5jdGlvblwiXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0aWFsaXpFcnJvclJlcG9ydGluZyhcbiAgcnVuQ29uc2VudFByb21wdD86ICgpID0+IFByb21pc2U8Ym9vbGVhbj4sXG4pIHtcbiAgbGV0IHNob3VsZFJlcG9ydCA9IHNob3VsZFJlcG9ydENyYXNoKCk7XG4gIGNvbnN0IGNpOiBzdHJpbmcgfCBmYWxzZSA9IGNpSW5mby5pc0NJID8gY2lJbmZvLm5hbWUgfHwgXCJ1bmtub3duXCIgOiBmYWxzZTtcblxuICAvLyBXZSBoYXZlIG5vIGluZm8geWV0LCBzbyB3ZSBuZWVkIHRvIGFzayB0aGUgdXNlclxuICBpZiAoc2hvdWxkUmVwb3J0ID09PSB1bmRlZmluZWQgJiYgcnVuQ29uc2VudFByb21wdCkge1xuICAgIC8vIEJ1dCBvbmx5IGlmIGl0J3MgYSB1c2VyXG4gICAgaWYgKGNpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2hvdWxkUmVwb3J0ID0gYXdhaXQgcnVuQ29uc2VudFByb21wdCgpO1xuICAgIHBlcnNpc3RSZXBvcnRDcmFzaFJlcG9ydERlY2lzaW9uKHNob3VsZFJlcG9ydCk7XG4gIH1cblxuICBpZiAoIXNob3VsZFJlcG9ydCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkVycm9yIHJlcG9ydGluZyBkaXNhYmxlZFwiKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFwcm9jZXNzLmVudi5TRU5UUllfRFNOKSB7XG4gICAgbG9nZ2VyLmluZm8oXCJFcnJvciByZXBvcnRpbmcgZGlzYWJsZWQ6IFNFTlRSWV9EU04gbm90IHNldFwiKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBsb2dnZXIuZGVidWcoXCJJbml0aWFsaXppbmcgZXJyb3IgcmVwb3J0aW5nXCIpO1xuXG4gIFNlbnRyeS5pbml0KHtcbiAgICBhdXRvU2Vzc2lvblRyYWNraW5nOiB0cnVlLFxuICAgIGRzbjogcHJvY2Vzcy5lbnYuU0VOVFJZX0RTTixcbiAgICByZWxlYXNlOiBgY2RrdG4tY2xpLSR7RElTUExBWV9WRVJTSU9OfWAsXG4gICAgYXN5bmMgYmVmb3JlU2VuZChldmVudCwgaGludCkge1xuICAgICAgaWYgKCFoaW50KSB7XG4gICAgICAgIHJldHVybiBldmVudDtcbiAgICAgIH1cblxuICAgICAgLy8gVGhlIHByb21pc2UgY2hhcmFjdGVyIGlzIG5vdCBkb2N1bWVudGVkLCBidXQgaXQgaGFwcGVuc1xuICAgICAgY29uc3Qgb3JpZ2luYWxFeGNlcHRpb246XG4gICAgICAgIHwgUHJvbWlzZTxFcnJvcj5cbiAgICAgICAgfCBFcnJvclxuICAgICAgICB8IHN0cmluZ1xuICAgICAgICB8IG51bGxcbiAgICAgICAgfCB1bmRlZmluZWRcbiAgICAgICAgfCB1bmtub3duID0gaGludC5vcmlnaW5hbEV4Y2VwdGlvbjtcbiAgICAgIGxldCBlcnJvcjogRXJyb3IgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHwgdW5rbm93bjtcbiAgICAgIGlmIChpc1Byb21pc2Uob3JpZ2luYWxFeGNlcHRpb24pKSB7XG4gICAgICAgIChvcmlnaW5hbEV4Y2VwdGlvbiBhcyB1bmtub3duIGFzIFByb21pc2U8RXJyb3I+KS5jYXRjaChcbiAgICAgICAgICAoZSkgPT4gKGVycm9yID0gZSksXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChbb3JpZ2luYWxFeGNlcHRpb25dKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yID0gb3JpZ2luYWxFeGNlcHRpb247XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yPy50b1N0cmluZygpIHx8IFwiXCI7XG4gICAgICBpZiAoZXJyb3JNZXNzYWdlLmluY2x1ZGVzKFwiVXNhZ2UgRXJyb3JcIikpIHtcbiAgICAgICAgLy8gVGhpcyBpcyBhIHVzYWdlIGVycm9yLCBzbyB3ZSBkb24ndCB3YW50IHRvIHJlcG9ydCBpdFxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBldmVudDtcbiAgICB9LFxuICB9KTtcblxuICBTZW50cnkuY29uZmlndXJlU2NvcGUoZnVuY3Rpb24gKHNjb3BlKSB7XG4gICAgc2NvcGUuc2V0VXNlcih7XG4gICAgICBpZDogZ2V0VXNlcklkKCksXG4gICAgfSk7XG4gICAgc2NvcGUuc2V0VGFnKFwicHJvamVjdElkXCIsIGdldFByb2plY3RJZCgpKTtcbiAgfSk7XG5cbiAgbG9nZ2VyLmRlYnVnKFwiQ29sbGVjdGluZyBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbiBmb3IgZXJyb3IgcmVwb3J0aW5nXCIpO1xuICBjb2xsZWN0RGVidWdJbmZvcm1hdGlvbigpLnRoZW4oKGRlYnVnT3V0cHV0KSA9PiB7XG4gICAgU2VudHJ5LnNldENvbnRleHQoXCJlbnZpcm9ubWVudFwiLCBkZWJ1Z091dHB1dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwdHVyZUV4Y2VwdGlvbih7XG4gIG1lc3NhZ2UsXG4gIHR5cGUsXG4gIGNvbW1hbmQsXG4gIGNvbnRleHQsXG59OiB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBjb21tYW5kOiBzdHJpbmc7XG4gIGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufSkge1xuICBpZiAocHJvY2Vzcy5lbnYuU0VOVFJZX0RTTiAmJiBzaG91bGRSZXBvcnRDcmFzaCgpKSB7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24obmV3IEVycm9yKG1lc3NhZ2UpLCB7XG4gICAgICB0YWdzOiB7XG4gICAgICAgIGNvbnRleHQ6IEpTT04uc3RyaW5naWZ5KGNvbnRleHQpLFxuICAgICAgICB0eXBlLFxuICAgICAgICBjb21tYW5kLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) HashiCorp, Inc.
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ export declare const missingVariable: (variableName: string) => string;
6
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,eAAe,iBAAkB,MAAM,WACgE,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) HashiCorp, Inc.
4
+ * SPDX-License-Identifier: MPL-2.0
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.missingVariable = void 0;
8
+ const missingVariable = (variableName) => `Missing variable: '${variableName}'. You can provide it using the 'TF_VAR_${variableName}' environment variable.`;
9
+ exports.missingVariable = missingVariable;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVJLE1BQU0sZUFBZSxHQUFHLENBQUMsWUFBb0IsRUFBRSxFQUFFLENBQ3RELHNCQUFzQixZQUFZLDJDQUEyQyxZQUFZLHlCQUF5QixDQUFDO0FBRHhHLFFBQUEsZUFBZSxtQkFDeUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmMuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbmV4cG9ydCBjb25zdCBtaXNzaW5nVmFyaWFibGUgPSAodmFyaWFibGVOYW1lOiBzdHJpbmcpID0+XG4gIGBNaXNzaW5nIHZhcmlhYmxlOiAnJHt2YXJpYWJsZU5hbWV9Jy4gWW91IGNhbiBwcm92aWRlIGl0IHVzaW5nIHRoZSAnVEZfVkFSXyR7dmFyaWFibGVOYW1lfScgZW52aXJvbm1lbnQgdmFyaWFibGUuYDtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import { SynthesizedStack } from "./synth-stack";
2
+ export declare function createEnhanceLogMessage(stack: SynthesizedStack): (message: string) => string | undefined;
3
+ //# sourceMappingURL=execution-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-logs.d.ts","sourceRoot":"","sources":["execution-logs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA2BjD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,gBAAgB,GACtB,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CA6CzC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnhanceLogMessage = void 0;
4
+ // Copyright (c) HashiCorp, Inc
5
+ // SPDX-License-Identifier: MPL-2.0
6
+ const commons_1 = require("@cdktn/commons");
7
+ // escapes any special charaters used in regex
8
+ const escapeRegexSpecialChars = (str) => str.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
9
+ // uses word boundary to match the whole of the tfIdentifer
10
+ const lineHasExactMatch = (line, tfIdentifier) => new RegExp(`\\b${escapeRegexSpecialChars(tfIdentifier)}\\b`).test(line);
11
+ function createEnhanceLogMessage(stack) {
12
+ // we never want to throw, if it does not work we just do as if it did not happen
13
+ const pathMapping = {};
14
+ try {
15
+ const json = JSON.parse(stack.content);
16
+ ["data", "resource"].forEach((type) => {
17
+ Object.entries(json[type] || {}).forEach(([resourceType, resourceInstances]) => {
18
+ Object.entries(resourceInstances || {}).forEach(([resourceName, resource]) => {
19
+ // Some constructs don't have this metadata
20
+ if (resource["//"] &&
21
+ resource["//"].metadata &&
22
+ resource["//"].metadata.path) {
23
+ pathMapping[`${resourceType}.${resourceName}`] = resource["//"].metadata.path.replace(`${stack.name}/`, "");
24
+ }
25
+ });
26
+ });
27
+ });
28
+ }
29
+ catch (e) {
30
+ commons_1.logger.debug(`Could not enhance log message: ${e}`);
31
+ }
32
+ return (message) => {
33
+ return message
34
+ .split("\n")
35
+ .map((line) => {
36
+ const matchingEntry = Object.entries(pathMapping).find(([tfIdentifier]) => lineHasExactMatch(line, tfIdentifier));
37
+ if (!matchingEntry) {
38
+ return line;
39
+ }
40
+ const [id, cdkPath] = matchingEntry;
41
+ return line.replace(id, `${id} (${cdkPath})`);
42
+ })
43
+ .join("\n");
44
+ };
45
+ }
46
+ exports.createEnhanceLogMessage = createEnhanceLogMessage;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRpb24tbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDRDQUF3QztBQW9CeEMsOENBQThDO0FBQzlDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUM5QyxHQUFHLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRS9DLDJEQUEyRDtBQUMzRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxDQUMvRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFMUUsU0FBZ0IsdUJBQXVCLENBQ3JDLEtBQXVCO0lBRXZCLGlGQUFpRjtJQUNqRixNQUFNLFdBQVcsR0FBNEMsRUFBRSxDQUFDO0lBQ2hFLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBVyxDQUFDO1FBRWpELENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQTJCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQzdELENBQUMsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FDN0MsQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO29CQUMzQiwyQ0FBMkM7b0JBQzNDLElBQ0UsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTt3QkFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQzVCLENBQUM7d0JBQ0QsV0FBVyxDQUFDLEdBQUcsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUN2RCxJQUFJLENBQ0wsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEQsQ0FBQztnQkFDSCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDekIsT0FBTyxPQUFPO2FBQ1gsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BELENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUEvQ0QsMERBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuL3N5bnRoLXN0YWNrXCI7XG50eXBlIFRGSWRlbnRpZmllciA9IHN0cmluZztcbnR5cGUgQ0RLVEZSZXNvdXJjZVBhdGggPSBzdHJpbmc7XG50eXBlIFRmUmVzb3VyY2UgPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAge1xuICAgIFtcIi8vXCJdPzoge1xuICAgICAgbWV0YWRhdGE/OiB7XG4gICAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gIH1cbj47XG50eXBlIFRmUmVzb3VyY2VUeXBlID0gUmVjb3JkPHN0cmluZywgVGZSZXNvdXJjZT47XG50eXBlIFRGSnNvbiA9IHtcbiAgZGF0YTogVGZSZXNvdXJjZVR5cGU7XG4gIHJlc291cmNlOiBUZlJlc291cmNlVHlwZTtcbn07XG5cbi8vIGVzY2FwZXMgYW55IHNwZWNpYWwgY2hhcmF0ZXJzIHVzZWQgaW4gcmVnZXhcbmNvbnN0IGVzY2FwZVJlZ2V4U3BlY2lhbENoYXJzID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIucmVwbGFjZSgvWy0vXFxcXF4kKis/LigpfFtcXF17fV0vZywgXCJcXFxcJCZcIik7XG5cbi8vIHVzZXMgd29yZCBib3VuZGFyeSB0byBtYXRjaCB0aGUgd2hvbGUgb2YgdGhlIHRmSWRlbnRpZmVyXG5jb25zdCBsaW5lSGFzRXhhY3RNYXRjaCA9IChsaW5lOiBzdHJpbmcsIHRmSWRlbnRpZmllcjogc3RyaW5nKSA9PlxuICBuZXcgUmVnRXhwKGBcXFxcYiR7ZXNjYXBlUmVnZXhTcGVjaWFsQ2hhcnModGZJZGVudGlmaWVyKX1cXFxcYmApLnRlc3QobGluZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbmhhbmNlTG9nTWVzc2FnZShcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2ssXG4pOiAobWVzc2FnZTogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyB3ZSBuZXZlciB3YW50IHRvIHRocm93LCBpZiBpdCBkb2VzIG5vdCB3b3JrIHdlIGp1c3QgZG8gYXMgaWYgaXQgZGlkIG5vdCBoYXBwZW5cbiAgY29uc3QgcGF0aE1hcHBpbmc6IFJlY29yZDxURklkZW50aWZpZXIsIENES1RGUmVzb3VyY2VQYXRoPiA9IHt9O1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpIGFzIFRGSnNvbjtcblxuICAgIFtcImRhdGFcIiwgXCJyZXNvdXJjZVwiXS5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhqc29uW3R5cGUgYXMgXCJkYXRhXCIgfCBcInJlc291cmNlXCJdIHx8IHt9KS5mb3JFYWNoKFxuICAgICAgICAoW3Jlc291cmNlVHlwZSwgcmVzb3VyY2VJbnN0YW5jZXNdKSA9PiB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VJbnN0YW5jZXMgfHwge30pLmZvckVhY2goXG4gICAgICAgICAgICAoW3Jlc291cmNlTmFtZSwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICAgICAgICAgIC8vIFNvbWUgY29uc3RydWN0cyBkb24ndCBoYXZlIHRoaXMgbWV0YWRhdGFcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc291cmNlW1wiLy9cIl0gJiZcbiAgICAgICAgICAgICAgICByZXNvdXJjZVtcIi8vXCJdLm1ldGFkYXRhICYmXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VbXCIvL1wiXS5tZXRhZGF0YS5wYXRoXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhdGhNYXBwaW5nW2Ake3Jlc291cmNlVHlwZX0uJHtyZXNvdXJjZU5hbWV9YF0gPSByZXNvdXJjZVtcbiAgICAgICAgICAgICAgICAgIFwiLy9cIlxuICAgICAgICAgICAgICAgIF0ubWV0YWRhdGEucGF0aC5yZXBsYWNlKGAke3N0YWNrLm5hbWV9L2AsIFwiXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBDb3VsZCBub3QgZW5oYW5jZSBsb2cgbWVzc2FnZTogJHtlfWApO1xuICB9XG5cbiAgcmV0dXJuIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nRW50cnkgPSBPYmplY3QuZW50cmllcyhwYXRoTWFwcGluZykuZmluZChcbiAgICAgICAgICAoW3RmSWRlbnRpZmllcl0pID0+IGxpbmVIYXNFeGFjdE1hdGNoKGxpbmUsIHRmSWRlbnRpZmllciksXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbWF0Y2hpbmdFbnRyeSkge1xuICAgICAgICAgIHJldHVybiBsaW5lO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtpZCwgY2RrUGF0aF0gPSBtYXRjaGluZ0VudHJ5O1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKGlkLCBgJHtpZH0gKCR7Y2RrUGF0aH0pYCk7XG4gICAgICB9KVxuICAgICAgLmpvaW4oXCJcXG5cIik7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { GetOptions } from "@cdktn/provider-generator";
2
+ import { TerraformModuleConstraint, TerraformProviderConstraint, TerraformDependencyConstraint } from "@cdktn/commons";
3
+ export declare enum GetStatus {
4
+ STARTING = "starting",
5
+ DOWNLOADING = "downloading and generating modules and providers",
6
+ DONE = "done",
7
+ ERROR = "error"
8
+ }
9
+ type ParsedDependencyConstraint = TerraformModuleConstraint | TerraformProviderConstraint | TerraformDependencyConstraint;
10
+ interface GetConfig {
11
+ constraints: ParsedDependencyConstraint[];
12
+ constraintsToGenerate?: ParsedDependencyConstraint[];
13
+ constructsOptions: GetOptions;
14
+ cleanDirectory?: boolean;
15
+ providerSchemaCachePath?: string;
16
+ onUpdate?: (payload: GetStatus) => void;
17
+ reportTelemetry?: (telemetry: {
18
+ targetLanguage: string;
19
+ trackingPayload: Record<string, any>;
20
+ }) => Promise<void>;
21
+ }
22
+ export declare function get({ constructsOptions, constraints, constraintsToGenerate, cleanDirectory, providerSchemaCachePath, onUpdate, reportTelemetry, }: GetConfig): Promise<void>;
23
+ export declare function runGetInDir(dir: string, clean?: boolean): Promise<void>;
24
+ export {};
25
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEL,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AAMxB,oBAAY,SAAS;IACnB,QAAQ,aAAa;IACrB,WAAW,qDAAqD;IAChE,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,KAAK,0BAA0B,GAC3B,yBAAyB,GACzB,2BAA2B,GAC3B,6BAA6B,CAAC;AAElC,UAAU,SAAS;IAEjB,WAAW,EAAE,0BAA0B,EAAE,CAAC;IAE1C,qBAAqB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrD,iBAAiB,EAAE,UAAU,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,wBAAsB,GAAG,CAAC,EACxB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,QAA0B,EAC1B,eAAuC,GACxC,EAAE,SAAS,iBAsCX;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAO,iBAiB1D"}
package/src/lib/get.js ADDED
@@ -0,0 +1,90 @@
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.runGetInDir = exports.get = exports.GetStatus = void 0;
27
+ // Copyright (c) HashiCorp, Inc
28
+ // SPDX-License-Identifier: MPL-2.0
29
+ const provider_generator_1 = require("@cdktn/provider-generator");
30
+ const commons_1 = require("@cdktn/commons");
31
+ const fs = __importStar(require("fs-extra"));
32
+ const commons_2 = require("@cdktn/commons");
33
+ const path = __importStar(require("path"));
34
+ const cdktf_config_1 = require("./cdktf-config");
35
+ var GetStatus;
36
+ (function (GetStatus) {
37
+ GetStatus["STARTING"] = "starting";
38
+ GetStatus["DOWNLOADING"] = "downloading and generating modules and providers";
39
+ GetStatus["DONE"] = "done";
40
+ GetStatus["ERROR"] = "error";
41
+ })(GetStatus || (exports.GetStatus = GetStatus = {}));
42
+ async function get({ constructsOptions, constraints, constraintsToGenerate, cleanDirectory, providerSchemaCachePath, onUpdate = () => undefined, reportTelemetry = async () => undefined, }) {
43
+ commons_2.logger.debug(`Starting get with outdir ${constructsOptions.codeMakerOutput}`);
44
+ const constructsMaker = new provider_generator_1.ConstructsMaker(constructsOptions, providerSchemaCachePath, reportTelemetry);
45
+ if (cleanDirectory) {
46
+ await fs.remove(constructsOptions.codeMakerOutput);
47
+ }
48
+ else {
49
+ // Remove all providers that are not in the new list
50
+ await constructsMaker.removeFoldersThatShouldNotExist(constraints);
51
+ if (constructsOptions.targetLanguage === commons_1.Language.TYPESCRIPT) {
52
+ // Remove all modules
53
+ await fs.remove(path.resolve(constructsOptions.codeMakerOutput, "modules"));
54
+ }
55
+ }
56
+ // Filter constraints to generate
57
+ const toGenerate = constraintsToGenerate ||
58
+ (await constructsMaker.filterAlreadyGenerated(constraints));
59
+ onUpdate(GetStatus.DOWNLOADING);
60
+ commons_2.logger.debug("Generating provider bindings");
61
+ await constructsMaker.generate(constraints, toGenerate);
62
+ commons_2.logger.debug("Provider bindings generated");
63
+ if (!(await fs.pathExists(constructsOptions.codeMakerOutput))) {
64
+ onUpdate(GetStatus.ERROR);
65
+ commons_2.logger.debug("Failed to generate provider bindings");
66
+ }
67
+ else {
68
+ onUpdate(GetStatus.DONE);
69
+ commons_2.logger.debug("Provider bindings generated");
70
+ }
71
+ }
72
+ exports.get = get;
73
+ async function runGetInDir(dir, clean = true) {
74
+ const config = cdktf_config_1.CdktfConfig.read(dir);
75
+ const constraints = [
76
+ ...config.terraformProviders.map((c) => new commons_1.TerraformProviderConstraint(c)),
77
+ ...config.terraformModules.map((c) => new commons_1.TerraformModuleConstraint(c)),
78
+ ];
79
+ await get({
80
+ constraints,
81
+ constructsOptions: {
82
+ codeMakerOutput: path.resolve(dir, config.codeMakerOutput),
83
+ targetLanguage: config.language,
84
+ jsiiParallelism: 1,
85
+ },
86
+ cleanDirectory: clean,
87
+ });
88
+ }
89
+ exports.runGetInDir = runGetInDir;
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxrRUFBd0U7QUFDeEUsNENBS3dCO0FBQ3hCLDZDQUErQjtBQUMvQiw0Q0FBd0M7QUFDeEMsMkNBQTZCO0FBQzdCLGlEQUE2QztBQUU3QyxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsa0NBQXFCLENBQUE7SUFDckIsNkVBQWdFLENBQUE7SUFDaEUsMEJBQWEsQ0FBQTtJQUNiLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLFNBQVMseUJBQVQsU0FBUyxRQUtwQjtBQXNCTSxLQUFLLFVBQVUsR0FBRyxDQUFDLEVBQ3hCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFDMUIsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsU0FBUyxHQUM3QjtJQUNWLGdCQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sZUFBZSxHQUFHLElBQUksb0NBQWUsQ0FDekMsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixlQUFlLENBQ2hCLENBQUM7SUFFRixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRCxDQUFDO1NBQU0sQ0FBQztRQUNOLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRSxJQUFJLGlCQUFpQixDQUFDLGNBQWMsS0FBSyxrQkFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdELHFCQUFxQjtZQUNyQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQzNELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxNQUFNLFVBQVUsR0FDZCxxQkFBcUI7UUFDckIsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRTlELFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3QyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFNUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLGdCQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztTQUFNLENBQUM7UUFDTixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDOUMsQ0FBQztBQUNILENBQUM7QUE5Q0Qsa0JBOENDO0FBRU0sS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFXLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDekQsTUFBTSxNQUFNLEdBQUcsMEJBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsTUFBTSxXQUFXLEdBQUc7UUFDbEIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHFDQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxtQ0FBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4RSxDQUFDO0lBRUYsTUFBTSxHQUFHLENBQUM7UUFDUixXQUFXO1FBQ1gsaUJBQWlCLEVBQUU7WUFDakIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDMUQsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQy9CLGVBQWUsRUFBRSxDQUFDO1NBQ25CO1FBQ0QsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWpCRCxrQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0c01ha2VyLCBHZXRPcHRpb25zIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1nZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gIExhbmd1YWdlLFxuICBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50LFxuICBUZXJyYWZvcm1Qcm92aWRlckNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50LFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuXG5leHBvcnQgZW51bSBHZXRTdGF0dXMge1xuICBTVEFSVElORyA9IFwic3RhcnRpbmdcIixcbiAgRE9XTkxPQURJTkcgPSBcImRvd25sb2FkaW5nIGFuZCBnZW5lcmF0aW5nIG1vZHVsZXMgYW5kIHByb3ZpZGVyc1wiLFxuICBET05FID0gXCJkb25lXCIsXG4gIEVSUk9SID0gXCJlcnJvclwiLFxufVxuXG50eXBlIFBhcnNlZERlcGVuZGVuY3lDb25zdHJhaW50ID1cbiAgfCBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50XG4gIHwgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50XG4gIHwgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQ7XG5cbmludGVyZmFjZSBHZXRDb25maWcge1xuICAvLyBBbGwgZXhpc3RpbmcgY29uc3RyYWludHMgKHRvIGJlIGFibGUgdG8gcmVtb3ZlIG5vIGxvbmdlciB1c2VkIG9uZXMpXG4gIGNvbnN0cmFpbnRzOiBQYXJzZWREZXBlbmRlbmN5Q29uc3RyYWludFtdO1xuICAvLyBUaGUgY29uc3RyYWludHMgdGhhdCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gIGNvbnN0cmFpbnRzVG9HZW5lcmF0ZT86IFBhcnNlZERlcGVuZGVuY3lDb25zdHJhaW50W107XG4gIGNvbnN0cnVjdHNPcHRpb25zOiBHZXRPcHRpb25zO1xuICBjbGVhbkRpcmVjdG9yeT86IGJvb2xlYW47XG4gIHByb3ZpZGVyU2NoZW1hQ2FjaGVQYXRoPzogc3RyaW5nO1xuICBvblVwZGF0ZT86IChwYXlsb2FkOiBHZXRTdGF0dXMpID0+IHZvaWQ7XG4gIHJlcG9ydFRlbGVtZXRyeT86ICh0ZWxlbWV0cnk6IHtcbiAgICB0YXJnZXRMYW5ndWFnZTogc3RyaW5nO1xuICAgIHRyYWNraW5nUGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldCh7XG4gIGNvbnN0cnVjdHNPcHRpb25zLFxuICBjb25zdHJhaW50cyxcbiAgY29uc3RyYWludHNUb0dlbmVyYXRlLFxuICBjbGVhbkRpcmVjdG9yeSxcbiAgcHJvdmlkZXJTY2hlbWFDYWNoZVBhdGgsXG4gIG9uVXBkYXRlID0gKCkgPT4gdW5kZWZpbmVkLFxuICByZXBvcnRUZWxlbWV0cnkgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG59OiBHZXRDb25maWcpIHtcbiAgbG9nZ2VyLmRlYnVnKGBTdGFydGluZyBnZXQgd2l0aCBvdXRkaXIgJHtjb25zdHJ1Y3RzT3B0aW9ucy5jb2RlTWFrZXJPdXRwdXR9YCk7XG4gIGNvbnN0IGNvbnN0cnVjdHNNYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIoXG4gICAgY29uc3RydWN0c09wdGlvbnMsXG4gICAgcHJvdmlkZXJTY2hlbWFDYWNoZVBhdGgsXG4gICAgcmVwb3J0VGVsZW1ldHJ5LFxuICApO1xuXG4gIGlmIChjbGVhbkRpcmVjdG9yeSkge1xuICAgIGF3YWl0IGZzLnJlbW92ZShjb25zdHJ1Y3RzT3B0aW9ucy5jb2RlTWFrZXJPdXRwdXQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJlbW92ZSBhbGwgcHJvdmlkZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgbmV3IGxpc3RcbiAgICBhd2FpdCBjb25zdHJ1Y3RzTWFrZXIucmVtb3ZlRm9sZGVyc1RoYXRTaG91bGROb3RFeGlzdChjb25zdHJhaW50cyk7XG4gICAgaWYgKGNvbnN0cnVjdHNPcHRpb25zLnRhcmdldExhbmd1YWdlID09PSBMYW5ndWFnZS5UWVBFU0NSSVBUKSB7XG4gICAgICAvLyBSZW1vdmUgYWxsIG1vZHVsZXNcbiAgICAgIGF3YWl0IGZzLnJlbW92ZShcbiAgICAgICAgcGF0aC5yZXNvbHZlKGNvbnN0cnVjdHNPcHRpb25zLmNvZGVNYWtlck91dHB1dCwgXCJtb2R1bGVzXCIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBGaWx0ZXIgY29uc3RyYWludHMgdG8gZ2VuZXJhdGVcbiAgY29uc3QgdG9HZW5lcmF0ZSA9XG4gICAgY29uc3RyYWludHNUb0dlbmVyYXRlIHx8XG4gICAgKGF3YWl0IGNvbnN0cnVjdHNNYWtlci5maWx0ZXJBbHJlYWR5R2VuZXJhdGVkKGNvbnN0cmFpbnRzKSk7XG5cbiAgb25VcGRhdGUoR2V0U3RhdHVzLkRPV05MT0FESU5HKTtcbiAgbG9nZ2VyLmRlYnVnKFwiR2VuZXJhdGluZyBwcm92aWRlciBiaW5kaW5nc1wiKTtcbiAgYXdhaXQgY29uc3RydWN0c01ha2VyLmdlbmVyYXRlKGNvbnN0cmFpbnRzLCB0b0dlbmVyYXRlKTtcbiAgbG9nZ2VyLmRlYnVnKFwiUHJvdmlkZXIgYmluZGluZ3MgZ2VuZXJhdGVkXCIpO1xuXG4gIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoY29uc3RydWN0c09wdGlvbnMuY29kZU1ha2VyT3V0cHV0KSkpIHtcbiAgICBvblVwZGF0ZShHZXRTdGF0dXMuRVJST1IpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkZhaWxlZCB0byBnZW5lcmF0ZSBwcm92aWRlciBiaW5kaW5nc1wiKTtcbiAgfSBlbHNlIHtcbiAgICBvblVwZGF0ZShHZXRTdGF0dXMuRE9ORSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiUHJvdmlkZXIgYmluZGluZ3MgZ2VuZXJhdGVkXCIpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5HZXRJbkRpcihkaXI6IHN0cmluZywgY2xlYW4gPSB0cnVlKSB7XG4gIGNvbnN0IGNvbmZpZyA9IENka3RmQ29uZmlnLnJlYWQoZGlyKTtcblxuICBjb25zdCBjb25zdHJhaW50cyA9IFtcbiAgICAuLi5jb25maWcudGVycmFmb3JtUHJvdmlkZXJzLm1hcCgoYykgPT4gbmV3IFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludChjKSksXG4gICAgLi4uY29uZmlnLnRlcnJhZm9ybU1vZHVsZXMubWFwKChjKSA9PiBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChjKSksXG4gIF07XG5cbiAgYXdhaXQgZ2V0KHtcbiAgICBjb25zdHJhaW50cyxcbiAgICBjb25zdHJ1Y3RzT3B0aW9uczoge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiBwYXRoLnJlc29sdmUoZGlyLCBjb25maWcuY29kZU1ha2VyT3V0cHV0KSxcbiAgICAgIHRhcmdldExhbmd1YWdlOiBjb25maWcubGFuZ3VhZ2UsXG4gICAgICBqc2lpUGFyYWxsZWxpc206IDEsXG4gICAgfSxcbiAgICBjbGVhbkRpcmVjdG9yeTogY2xlYW4sXG4gIH0pO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ import { CdktfStack } from "../cdktf-stack";
2
+ import { SynthesizedStack } from "../synth-stack";
3
+ export declare function getSingleStack(stacks: SynthesizedStack[], stackName?: string, targetAction?: string): SynthesizedStack;
4
+ export declare function getMultipleStacks(stacks: SynthesizedStack[], patterns?: string[], targetAction?: string): SynthesizedStack[];
5
+ export declare function getStackWithNoUnmetDependencies(stackExecutors: CdktfStack[]): Promise<CdktfStack | undefined>;
6
+ export declare function findAllNestedDependantStacks(stackExecutors: CdktfStack[], stackName: string, knownDependantStackNames?: Set<string>): CdktfStack[];
7
+ export declare function getStackWithNoUnmetDependants(stackExecutors: CdktfStack[]): Promise<CdktfStack | undefined>;
8
+ export declare function checkIfAllDependantsAreIncluded(stacksToRun: SynthesizedStack[], allStacks: SynthesizedStack[]): void;
9
+ /**
10
+ Throws an error if there is a dependency that is not included
11
+ Cycles are detected on dependency creation at synthesis time
12
+ Running this prevents us from being in a situation where we
13
+ have to wait for a stack to be deployed that is not included to be run
14
+ */
15
+ export declare function checkIfAllDependenciesAreIncluded(stacksToRun: SynthesizedStack[]): void;
16
+ //# sourceMappingURL=stack-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack-helpers.d.ts","sourceRoot":"","sources":["stack-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,oBA4BtB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,sBA0BtB;AAMD,wBAAsB,+BAA+B,CACnD,cAAc,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAyCjC;AAWD,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,UAAU,EAAE,EAC5B,SAAS,EAAE,MAAM,EACjB,wBAAwB,GAAE,GAAG,CAAC,MAAM,CAAa,GAChD,UAAU,EAAE,CAkBd;AAGD,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmCjC;AAGD,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,gBAAgB,EAAE,EAC/B,SAAS,EAAE,gBAAgB,EAAE,QAsB9B;AAED;;;;;EAKE;AACF,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,gBAAgB,EAAE,QAoBhC"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ // Copyright (c) HashiCorp, Inc
3
+ // SPDX-License-Identifier: MPL-2.0
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.checkIfAllDependenciesAreIncluded = exports.checkIfAllDependantsAreIncluded = exports.getStackWithNoUnmetDependants = exports.findAllNestedDependantStacks = exports.getStackWithNoUnmetDependencies = exports.getMultipleStacks = exports.getSingleStack = void 0;
9
+ const commons_1 = require("@cdktn/commons");
10
+ const minimatch_1 = __importDefault(require("minimatch"));
11
+ function getSingleStack(stacks, stackName, targetAction) {
12
+ if (!stacks) {
13
+ throw commons_1.Errors.Internal("Trying to access a stack before it has been synthesized");
14
+ }
15
+ if (stackName) {
16
+ const stack = stacks.find((s) => s.name === stackName);
17
+ if (!stack) {
18
+ throw commons_1.Errors.Usage("Could not find stack: " + stackName);
19
+ }
20
+ return stack;
21
+ }
22
+ if (stacks.length === 1) {
23
+ return stacks[0];
24
+ }
25
+ throw commons_1.Errors.Usage(`Found more than one stack, please specify a target stack. Run cdktn ${targetAction || "<verb>"} <stack> with one of these stacks: ${stacks
26
+ .map((s) => s.name)
27
+ .join(", ")} `);
28
+ }
29
+ exports.getSingleStack = getSingleStack;
30
+ function getMultipleStacks(stacks, patterns, targetAction) {
31
+ if (!patterns || !patterns.length) {
32
+ if (stacks.length === 1) {
33
+ return [stacks[0]];
34
+ }
35
+ throw commons_1.Errors.Usage(`Found more than one stack, please specify a target stack. Run cdktn ${targetAction || "<verb>"} <stack> with one of these stacks: ${stacks
36
+ .map((s) => s.name)
37
+ .join(", ")} `);
38
+ }
39
+ return patterns.flatMap((pattern) => {
40
+ const matchingStacks = stacks.filter((stack) => (0, minimatch_1.default)(stack.name, pattern));
41
+ if (matchingStacks.length === 0) {
42
+ throw commons_1.Errors.Usage(`Could not find stack for pattern '${pattern}'`);
43
+ }
44
+ return matchingStacks;
45
+ });
46
+ }
47
+ exports.getMultipleStacks = getMultipleStacks;
48
+ // Returns the first stack that has no unmet dependencies
49
+ // An unmet dependency is a dependency that has not been deployed yet
50
+ // If there is no unfinished stack, returns undefined
51
+ // If there is no stack ready to be worked on, it returns a promise that will resolve as soon as there is a follow-up stack available
52
+ async function getStackWithNoUnmetDependencies(stackExecutors) {
53
+ commons_1.logger.debug("Checking for stacks with unmet dependencies");
54
+ commons_1.logger.debug("stack executors:", stackExecutors);
55
+ const pendingStacks = stackExecutors.filter((executor) => executor.isPending);
56
+ commons_1.logger.debug("pending stacks:", stackExecutors);
57
+ if (pendingStacks.length === 0) {
58
+ return undefined;
59
+ }
60
+ const currentlyReadyStack = pendingStacks.find((executor) => executor.stack.dependencies.every((dependency) => {
61
+ var _a;
62
+ return ((_a = stackExecutors.find((executor) => executor.stack.name === dependency)) === null || _a === void 0 ? void 0 : _a.currentState) === "done";
63
+ }));
64
+ if (currentlyReadyStack) {
65
+ commons_1.logger.debug("Found a stack with no unmet dependencies");
66
+ return currentlyReadyStack;
67
+ }
68
+ const stackExecutionPromises = stackExecutors
69
+ .filter((ex) => ex.currentWorkPromise)
70
+ .map((ex) => ex.currentWorkPromise);
71
+ commons_1.logger.debug(`${stackExecutionPromises.length} stacks are currently busy, waiting for one to finish`);
72
+ if (!stackExecutionPromises.length) {
73
+ return undefined;
74
+ }
75
+ await (0, commons_1.ensureAllSettledBeforeThrowing)(Promise.race(stackExecutionPromises), stackExecutionPromises);
76
+ return await getStackWithNoUnmetDependencies(stackExecutors);
77
+ }
78
+ exports.getStackWithNoUnmetDependencies = getStackWithNoUnmetDependencies;
79
+ function findAllDependantStacks(stackExecutors, stackName) {
80
+ return stackExecutors.filter((innerExecutor) => innerExecutor.stack.dependencies.includes(stackName));
81
+ }
82
+ function findAllNestedDependantStacks(stackExecutors, stackName, knownDependantStackNames = new Set()) {
83
+ const dependantStacks = findAllDependantStacks(stackExecutors, stackName);
84
+ dependantStacks.forEach((stack) => {
85
+ if (knownDependantStackNames.has(stack.stack.name)) {
86
+ return;
87
+ }
88
+ knownDependantStackNames.add(stack.stack.name);
89
+ findAllNestedDependantStacks(stackExecutors, stack.stack.name, knownDependantStackNames);
90
+ });
91
+ return stackExecutors.filter((executor) => knownDependantStackNames.has(executor.stack.name));
92
+ }
93
+ exports.findAllNestedDependantStacks = findAllNestedDependantStacks;
94
+ // Returns the first stack that has no dependents that need to be destroyed first
95
+ async function getStackWithNoUnmetDependants(stackExecutors) {
96
+ commons_1.logger.debug("Checking for stacks with unmet dependants");
97
+ commons_1.logger.debug("stack executors:", stackExecutors);
98
+ const pendingStacks = stackExecutors.filter((executor) => executor.isPending);
99
+ commons_1.logger.debug("pending stacks:", stackExecutors);
100
+ if (pendingStacks.length === 0) {
101
+ return undefined;
102
+ }
103
+ const currentlyReadyStack = pendingStacks.find((executor) => {
104
+ const dependantStacks = findAllDependantStacks(stackExecutors, executor.stack.name);
105
+ return dependantStacks.every((stack) => stack.currentState === "done");
106
+ });
107
+ if (currentlyReadyStack) {
108
+ commons_1.logger.debug("Found a stack with no unmet dependants");
109
+ return currentlyReadyStack;
110
+ }
111
+ const stackExecutionPromises = stackExecutors
112
+ .filter((ex) => ex.currentWorkPromise)
113
+ .map((ex) => ex.currentWorkPromise);
114
+ commons_1.logger.debug(`${stackExecutionPromises.length} stacks are currently busy, waiting for one to finish`);
115
+ if (!stackExecutionPromises.length) {
116
+ return undefined;
117
+ }
118
+ await Promise.race(stackExecutionPromises);
119
+ return await getStackWithNoUnmetDependants(stackExecutors);
120
+ }
121
+ exports.getStackWithNoUnmetDependants = getStackWithNoUnmetDependants;
122
+ // Throws an error if there is a dependant stack that is not included
123
+ function checkIfAllDependantsAreIncluded(stacksToRun, allStacks) {
124
+ const allDependants = new Set();
125
+ stacksToRun
126
+ .map((stack) => allStacks.filter((s) => s.dependencies.includes(stack.name)))
127
+ .flat()
128
+ .forEach((dependant) => allDependants.add(dependant.name));
129
+ const stackNames = stacksToRun.map((stack) => stack.name);
130
+ const missingDependants = [...allDependants].filter((dependant) => !stackNames.includes(dependant));
131
+ if (missingDependants.length > 0) {
132
+ throw commons_1.Errors.Usage(`The following dependant stacks are not included in the stacks to run: ${missingDependants.join(", ")}. Either add them or add the --ignore-missing-stack-dependencies flag.`);
133
+ }
134
+ }
135
+ exports.checkIfAllDependantsAreIncluded = checkIfAllDependantsAreIncluded;
136
+ /**
137
+ Throws an error if there is a dependency that is not included
138
+ Cycles are detected on dependency creation at synthesis time
139
+ Running this prevents us from being in a situation where we
140
+ have to wait for a stack to be deployed that is not included to be run
141
+ */
142
+ function checkIfAllDependenciesAreIncluded(stacksToRun) {
143
+ const allDependencies = new Set();
144
+ stacksToRun
145
+ .map((stack) => stack.dependencies)
146
+ .flat()
147
+ .forEach((dependency) => allDependencies.add(dependency));
148
+ const stackNames = stacksToRun.map((stack) => stack.name);
149
+ const missingDependencies = [...allDependencies].filter((dependency) => !stackNames.includes(dependency));
150
+ if (missingDependencies.length > 0) {
151
+ throw commons_1.Errors.Usage(`The following dependencies are not included in the stacks to run: ${missingDependencies.join(", ")}. Either add them or add the --ignore-missing-stack-dependencies flag.`);
152
+ }
153
+ }
154
+ exports.checkIfAllDependenciesAreIncluded = checkIfAllDependenciesAreIncluded;
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7Ozs7OztBQUVuQyw0Q0FBZ0Y7QUFDaEYsMERBQWtDO0FBSWxDLFNBQWdCLGNBQWMsQ0FDNUIsTUFBMEIsRUFDMUIsU0FBa0IsRUFDbEIsWUFBcUI7SUFFckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FDbkIseURBQXlELENBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxnQkFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQix1RUFDRSxZQUFZLElBQUksUUFDbEIsc0NBQXNDLE1BQU07U0FDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNqQixDQUFDO0FBQ0osQ0FBQztBQS9CRCx3Q0ErQkM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsTUFBMEIsRUFDMUIsUUFBbUIsRUFDbkIsWUFB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QUM3RixJQUFJLENBQ0wsd0VBQXdFLENBQzFFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQXhCRCwwRUF3QkM7QUFFRDs7Ozs7RUFLRTtBQUNGLFNBQWdCLGlDQUFpQyxDQUMvQyxXQUErQjtJQUUvQixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQzFDLFdBQVc7U0FDUixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDbEMsSUFBSSxFQUFFO1NBQ04sT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDakQsQ0FBQztJQUVGLElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLHFFQUFxRSxtQkFBbUIsQ0FBQyxJQUFJLENBQzNGLElBQUksQ0FDTCx3RUFBd0UsQ0FDMUUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBckJELDhFQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmltcG9ydCB7IGVuc3VyZUFsbFNldHRsZWRCZWZvcmVUaHJvd2luZywgRXJyb3JzLCBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCBtaW5pbWF0Y2ggZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHsgQ2RrdGZTdGFjayB9IGZyb20gXCIuLi9jZGt0Zi1zdGFja1wiO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuLi9zeW50aC1zdGFja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2luZ2xlU3RhY2soXG4gIHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBzdGFja05hbWU/OiBzdHJpbmcsXG4gIHRhcmdldEFjdGlvbj86IHN0cmluZyxcbikge1xuICBpZiAoIXN0YWNrcykge1xuICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgIFwiVHJ5aW5nIHRvIGFjY2VzcyBhIHN0YWNrIGJlZm9yZSBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFwiLFxuICAgICk7XG4gIH1cblxuICBpZiAoc3RhY2tOYW1lKSB7XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5uYW1lID09PSBzdGFja05hbWUpO1xuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHRocm93IEVycm9ycy5Vc2FnZShcIkNvdWxkIG5vdCBmaW5kIHN0YWNrOiBcIiArIHN0YWNrTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgaWYgKHN0YWNrcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gc3RhY2tzWzBdO1xuICB9XG5cbiAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgIGBGb3VuZCBtb3JlIHRoYW4gb25lIHN0YWNrLCBwbGVhc2Ugc3BlY2lmeSBhIHRhcmdldCBzdGFjay4gUnVuIGNka3RuICR7XG4gICAgICB0YXJnZXRBY3Rpb24gfHwgXCI8dmVyYj5cIlxuICAgIH0gPHN0YWNrPiB3aXRoIG9uZSBvZiB0aGVzZSBzdGFja3M6ICR7c3RhY2tzXG4gICAgICAubWFwKChzKSA9PiBzLm5hbWUpXG4gICAgICAuam9pbihcIiwgXCIpfSBgLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlwbGVTdGFja3MoXG4gIHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBwYXR0ZXJucz86IHN0cmluZ1tdLFxuICB0YXJnZXRBY3Rpb24/OiBzdHJpbmcsXG4pIHtcbiAgaWYgKCFwYXR0ZXJucyB8fCAhcGF0dGVybnMubGVuZ3RoKSB7XG4gICAgaWYgKHN0YWNrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBbc3RhY2tzWzBdXTtcbiAgICB9XG4gICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgYEZvdW5kIG1vcmUgdGhhbiBvbmUgc3RhY2ssIHBsZWFzZSBzcGVjaWZ5IGEgdGFyZ2V0IHN0YWNrLiBSdW4gY2RrdG4gJHtcbiAgICAgICAgdGFyZ2V0QWN0aW9uIHx8IFwiPHZlcmI+XCJcbiAgICAgIH0gPHN0YWNrPiB3aXRoIG9uZSBvZiB0aGVzZSBzdGFja3M6ICR7c3RhY2tzXG4gICAgICAgIC5tYXAoKHMpID0+IHMubmFtZSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKX0gYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zLmZsYXRNYXAoKHBhdHRlcm4pID0+IHtcbiAgICBjb25zdCBtYXRjaGluZ1N0YWNrcyA9IHN0YWNrcy5maWx0ZXIoKHN0YWNrKSA9PlxuICAgICAgbWluaW1hdGNoKHN0YWNrLm5hbWUsIHBhdHRlcm4pLFxuICAgICk7XG5cbiAgICBpZiAobWF0Y2hpbmdTdGFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoYENvdWxkIG5vdCBmaW5kIHN0YWNrIGZvciBwYXR0ZXJuICcke3BhdHRlcm59J2ApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGluZ1N0YWNrcztcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgdGhlIGZpcnN0IHN0YWNrIHRoYXQgaGFzIG5vIHVubWV0IGRlcGVuZGVuY2llc1xuLy8gQW4gdW5tZXQgZGVwZW5kZW5jeSBpcyBhIGRlcGVuZGVuY3kgdGhhdCBoYXMgbm90IGJlZW4gZGVwbG95ZWQgeWV0XG4vLyBJZiB0aGVyZSBpcyBubyB1bmZpbmlzaGVkIHN0YWNrLCByZXR1cm5zIHVuZGVmaW5lZFxuLy8gSWYgdGhlcmUgaXMgbm8gc3RhY2sgcmVhZHkgdG8gYmUgd29ya2VkIG9uLCBpdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBhcyBzb29uIGFzIHRoZXJlIGlzIGEgZm9sbG93LXVwIHN0YWNrIGF2YWlsYWJsZVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRlbmNpZXMoXG4gIHN0YWNrRXhlY3V0b3JzOiBDZGt0ZlN0YWNrW10sXG4pOiBQcm9taXNlPENka3RmU3RhY2sgfCB1bmRlZmluZWQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFwiQ2hlY2tpbmcgZm9yIHN0YWNrcyB3aXRoIHVubWV0IGRlcGVuZGVuY2llc1wiKTtcbiAgbG9nZ2VyLmRlYnVnKFwic3RhY2sgZXhlY3V0b3JzOlwiLCBzdGFja0V4ZWN1dG9ycyk7XG4gIGNvbnN0IHBlbmRpbmdTdGFja3MgPSBzdGFja0V4ZWN1dG9ycy5maWx0ZXIoKGV4ZWN1dG9yKSA9PiBleGVjdXRvci5pc1BlbmRpbmcpO1xuICBsb2dnZXIuZGVidWcoXCJwZW5kaW5nIHN0YWNrczpcIiwgc3RhY2tFeGVjdXRvcnMpO1xuXG4gIGlmIChwZW5kaW5nU3RhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBjdXJyZW50bHlSZWFkeVN0YWNrID0gcGVuZGluZ1N0YWNrcy5maW5kKChleGVjdXRvcikgPT5cbiAgICBleGVjdXRvci5zdGFjay5kZXBlbmRlbmNpZXMuZXZlcnkoXG4gICAgICAoZGVwZW5kZW5jeSkgPT5cbiAgICAgICAgc3RhY2tFeGVjdXRvcnMuZmluZCgoZXhlY3V0b3IpID0+IGV4ZWN1dG9yLnN0YWNrLm5hbWUgPT09IGRlcGVuZGVuY3kpXG4gICAgICAgICAgPy5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiLFxuICAgICksXG4gICk7XG5cbiAgaWYgKGN1cnJlbnRseVJlYWR5U3RhY2spIHtcbiAgICBsb2dnZXIuZGVidWcoXCJGb3VuZCBhIHN0YWNrIHdpdGggbm8gdW5tZXQgZGVwZW5kZW5jaWVzXCIpO1xuICAgIHJldHVybiBjdXJyZW50bHlSZWFkeVN0YWNrO1xuICB9XG5cbiAgY29uc3Qgc3RhY2tFeGVjdXRpb25Qcm9taXNlcyA9IHN0YWNrRXhlY3V0b3JzXG4gICAgLmZpbHRlcigoZXgpID0+IGV4LmN1cnJlbnRXb3JrUHJvbWlzZSlcbiAgICAubWFwKChleCkgPT4gZXguY3VycmVudFdvcmtQcm9taXNlKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYCR7c3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGh9IHN0YWNrcyBhcmUgY3VycmVudGx5IGJ1c3ksIHdhaXRpbmcgZm9yIG9uZSB0byBmaW5pc2hgLFxuICApO1xuXG4gIGlmICghc3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICAgIFByb21pc2UucmFjZShzdGFja0V4ZWN1dGlvblByb21pc2VzKSxcbiAgICBzdGFja0V4ZWN1dGlvblByb21pc2VzLFxuICApO1xuXG4gIHJldHVybiBhd2FpdCBnZXRTdGFja1dpdGhOb1VubWV0RGVwZW5kZW5jaWVzKHN0YWNrRXhlY3V0b3JzKTtcbn1cblxuZnVuY3Rpb24gZmluZEFsbERlcGVuZGFudFN0YWNrcyhcbiAgc3RhY2tFeGVjdXRvcnM6IENka3RmU3RhY2tbXSxcbiAgc3RhY2tOYW1lOiBzdHJpbmcsXG4pOiBDZGt0ZlN0YWNrW10ge1xuICByZXR1cm4gc3RhY2tFeGVjdXRvcnMuZmlsdGVyKChpbm5lckV4ZWN1dG9yKSA9PlxuICAgIGlubmVyRXhlY3V0b3Iuc3RhY2suZGVwZW5kZW5jaWVzLmluY2x1ZGVzKHN0YWNrTmFtZSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzKFxuICBzdGFja0V4ZWN1dG9yczogQ2RrdGZTdGFja1tdLFxuICBzdGFja05hbWU6IHN0cmluZyxcbiAga25vd25EZXBlbmRhbnRTdGFja05hbWVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKSxcbik6IENka3RmU3RhY2tbXSB7XG4gIGNvbnN0IGRlcGVuZGFudFN0YWNrcyA9IGZpbmRBbGxEZXBlbmRhbnRTdGFja3Moc3RhY2tFeGVjdXRvcnMsIHN0YWNrTmFtZSk7XG4gIGRlcGVuZGFudFN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4ge1xuICAgIGlmIChrbm93bkRlcGVuZGFudFN0YWNrTmFtZXMuaGFzKHN0YWNrLnN0YWNrLm5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAga25vd25EZXBlbmRhbnRTdGFja05hbWVzLmFkZChzdGFjay5zdGFjay5uYW1lKTtcbiAgICBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzKFxuICAgICAgc3RhY2tFeGVjdXRvcnMsXG4gICAgICBzdGFjay5zdGFjay5uYW1lLFxuICAgICAga25vd25EZXBlbmRhbnRTdGFja05hbWVzLFxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiBzdGFja0V4ZWN1dG9ycy5maWx0ZXIoKGV4ZWN1dG9yKSA9PlxuICAgIGtub3duRGVwZW5kYW50U3RhY2tOYW1lcy5oYXMoZXhlY3V0b3Iuc3RhY2submFtZSksXG4gICk7XG59XG5cbi8vIFJldHVybnMgdGhlIGZpcnN0IHN0YWNrIHRoYXQgaGFzIG5vIGRlcGVuZGVudHMgdGhhdCBuZWVkIHRvIGJlIGRlc3Ryb3llZCBmaXJzdFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRhbnRzKFxuICBzdGFja0V4ZWN1dG9yczogQ2RrdGZTdGFja1tdLFxuKTogUHJvbWlzZTxDZGt0ZlN0YWNrIHwgdW5kZWZpbmVkPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcIkNoZWNraW5nIGZvciBzdGFja3Mgd2l0aCB1bm1ldCBkZXBlbmRhbnRzXCIpO1xuICBsb2dnZXIuZGVidWcoXCJzdGFjayBleGVjdXRvcnM6XCIsIHN0YWNrRXhlY3V0b3JzKTtcbiAgY29uc3QgcGVuZGluZ1N0YWNrcyA9IHN0YWNrRXhlY3V0b3JzLmZpbHRlcigoZXhlY3V0b3IpID0+IGV4ZWN1dG9yLmlzUGVuZGluZyk7XG4gIGxvZ2dlci5kZWJ1ZyhcInBlbmRpbmcgc3RhY2tzOlwiLCBzdGFja0V4ZWN1dG9ycyk7XG5cbiAgaWYgKHBlbmRpbmdTdGFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRseVJlYWR5U3RhY2sgPSBwZW5kaW5nU3RhY2tzLmZpbmQoKGV4ZWN1dG9yKSA9PiB7XG4gICAgY29uc3QgZGVwZW5kYW50U3RhY2tzID0gZmluZEFsbERlcGVuZGFudFN0YWNrcyhcbiAgICAgIHN0YWNrRXhlY3V0b3JzLFxuICAgICAgZXhlY3V0b3Iuc3RhY2submFtZSxcbiAgICApO1xuICAgIHJldHVybiBkZXBlbmRhbnRTdGFja3MuZXZlcnkoKHN0YWNrKSA9PiBzdGFjay5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiKTtcbiAgfSk7XG5cbiAgaWYgKGN1cnJlbnRseVJlYWR5U3RhY2spIHtcbiAgICBsb2dnZXIuZGVidWcoXCJGb3VuZCBhIHN0YWNrIHdpdGggbm8gdW5tZXQgZGVwZW5kYW50c1wiKTtcbiAgICByZXR1cm4gY3VycmVudGx5UmVhZHlTdGFjaztcbiAgfVxuICBjb25zdCBzdGFja0V4ZWN1dGlvblByb21pc2VzID0gc3RhY2tFeGVjdXRvcnNcbiAgICAuZmlsdGVyKChleCkgPT4gZXguY3VycmVudFdvcmtQcm9taXNlKVxuICAgIC5tYXAoKGV4KSA9PiBleC5jdXJyZW50V29ya1Byb21pc2UpO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtzdGFja0V4ZWN1dGlvblByb21pc2VzLmxlbmd0aH0gc3RhY2tzIGFyZSBjdXJyZW50bHkgYnVzeSwgd2FpdGluZyBmb3Igb25lIHRvIGZpbmlzaGAsXG4gICk7XG4gIGlmICghc3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKHN0YWNrRXhlY3V0aW9uUHJvbWlzZXMpO1xuICByZXR1cm4gYXdhaXQgZ2V0U3RhY2tXaXRoTm9Vbm1ldERlcGVuZGFudHMoc3RhY2tFeGVjdXRvcnMpO1xufVxuXG4vLyBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlcmUgaXMgYSBkZXBlbmRhbnQgc3RhY2sgdGhhdCBpcyBub3QgaW5jbHVkZWRcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0lmQWxsRGVwZW5kYW50c0FyZUluY2x1ZGVkKFxuICBzdGFja3NUb1J1bjogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBhbGxTdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXSxcbikge1xuICBjb25zdCBhbGxEZXBlbmRhbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHN0YWNrc1RvUnVuXG4gICAgLm1hcCgoc3RhY2spID0+XG4gICAgICBhbGxTdGFja3MuZmlsdGVyKChzKSA9PiBzLmRlcGVuZGVuY2llcy5pbmNsdWRlcyhzdGFjay5uYW1lKSksXG4gICAgKVxuICAgIC5mbGF0KClcbiAgICAuZm9yRWFjaCgoZGVwZW5kYW50KSA9PiBhbGxEZXBlbmRhbnRzLmFkZChkZXBlbmRhbnQubmFtZSkpO1xuXG4gIGNvbnN0IHN0YWNrTmFtZXMgPSBzdGFja3NUb1J1bi5tYXAoKHN0YWNrKSA9PiBzdGFjay5uYW1lKTtcbiAgY29uc3QgbWlzc2luZ0RlcGVuZGFudHMgPSBbLi4uYWxsRGVwZW5kYW50c10uZmlsdGVyKFxuICAgIChkZXBlbmRhbnQpID0+ICFzdGFja05hbWVzLmluY2x1ZGVzKGRlcGVuZGFudCksXG4gICk7XG5cbiAgaWYgKG1pc3NpbmdEZXBlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICBgVGhlIGZvbGxvd2luZyBkZXBlbmRhbnQgc3RhY2tzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHN0YWNrcyB0byBydW46ICR7bWlzc2luZ0RlcGVuZGFudHMuam9pbihcbiAgICAgICAgXCIsIFwiLFxuICAgICAgKX0uIEVpdGhlciBhZGQgdGhlbSBvciBhZGQgdGhlIC0taWdub3JlLW1pc3Npbmctc3RhY2stZGVwZW5kZW5jaWVzIGZsYWcuYCxcbiAgICApO1xuICB9XG59XG5cbi8qKiBcbiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIGEgZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBpbmNsdWRlZFxuICBDeWNsZXMgYXJlIGRldGVjdGVkIG9uIGRlcGVuZGVuY3kgY3JlYXRpb24gYXQgc3ludGhlc2lzIHRpbWVcbiAgUnVubmluZyB0aGlzIHByZXZlbnRzIHVzIGZyb20gYmVpbmcgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgXG4gIGhhdmUgdG8gd2FpdCBmb3IgYSBzdGFjayB0byBiZSBkZXBsb3llZCB0aGF0IGlzIG5vdCBpbmNsdWRlZCB0byBiZSBydW5cbiovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZkFsbERlcGVuZGVuY2llc0FyZUluY2x1ZGVkKFxuICBzdGFja3NUb1J1bjogU3ludGhlc2l6ZWRTdGFja1tdLFxuKSB7XG4gIGNvbnN0IGFsbERlcGVuZGVuY2llcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBzdGFja3NUb1J1blxuICAgIC5tYXAoKHN0YWNrKSA9PiBzdGFjay5kZXBlbmRlbmNpZXMpXG4gICAgLmZsYXQoKVxuICAgIC5mb3JFYWNoKChkZXBlbmRlbmN5KSA9PiBhbGxEZXBlbmRlbmNpZXMuYWRkKGRlcGVuZGVuY3kpKTtcblxuICBjb25zdCBzdGFja05hbWVzID0gc3RhY2tzVG9SdW4ubWFwKChzdGFjaykgPT4gc3RhY2submFtZSk7XG4gIGNvbnN0IG1pc3NpbmdEZXBlbmRlbmNpZXMgPSBbLi4uYWxsRGVwZW5kZW5jaWVzXS5maWx0ZXIoXG4gICAgKGRlcGVuZGVuY3kpID0+ICFzdGFja05hbWVzLmluY2x1ZGVzKGRlcGVuZGVuY3kpLFxuICApO1xuXG4gIGlmIChtaXNzaW5nRGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICBgVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgc3RhY2tzIHRvIHJ1bjogJHttaXNzaW5nRGVwZW5kZW5jaWVzLmpvaW4oXG4gICAgICAgIFwiLCBcIixcbiAgICAgICl9LiBFaXRoZXIgYWRkIHRoZW0gb3IgYWRkIHRoZSAtLWlnbm9yZS1taXNzaW5nLXN0YWNrLWRlcGVuZGVuY2llcyBmbGFnLmAsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ export { DependencyManager, ProviderConstraint, } from "./dependencies/dependency-manager";
2
+ export { getAllPrebuiltProviders } from "./dependencies/prebuilt-providers";
3
+ export { providerAdd } from "./provider-add";
4
+ export { TerraformCli } from "./models/terraform-cli";
5
+ export { CdktfConfig } from "./cdktf-config";
6
+ export { initializErrorReporting } from "./error-reporting";
7
+ export { CdktfStack } from "./cdktf-stack";
8
+ export { init, Project, InitArgs, templates, templatesDir } from "./init";
9
+ export { get, GetStatus, runGetInDir } from "./get";
10
+ export { SynthesizedStack } from "./synth-stack";
11
+ export { CdktfProject, ProjectUpdate } from "./cdktf-project";
12
+ export { watch, State as WatchState } from "./watch";
13
+ export { NestedTerraformOutputs, saveOutputs, normalizeOutputPath, } from "./output";
14
+ export { DeployingResource, DeployingResourceApplyState, isTerraformOutput, PlannedResourceAction, TerraformOutput, } from "./models/terraform";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}