@cdktn/cli-core 0.23.0-pre.36 → 0.23.0-pre.39

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 (163) hide show
  1. package/build/lib/cdktf-config.d.ts.map +1 -0
  2. package/build/lib/cdktf-config.js +108 -0
  3. package/build/lib/cdktf-project-io-handler.d.ts.map +1 -0
  4. package/build/lib/cdktf-project-io-handler.js +84 -0
  5. package/build/lib/cdktf-project.d.ts.map +1 -0
  6. package/build/lib/cdktf-project.js +371 -0
  7. package/{src → build}/lib/cdktf-stack.d.ts +1 -0
  8. package/build/lib/cdktf-stack.d.ts.map +1 -0
  9. package/build/lib/cdktf-stack.js +386 -0
  10. package/build/lib/convert.d.ts.map +1 -0
  11. package/build/lib/convert.js +51 -0
  12. package/build/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
  13. package/build/lib/dependencies/cdktf-config-manager.js +36 -0
  14. package/build/lib/dependencies/dependency-manager.d.ts.map +1 -0
  15. package/build/lib/dependencies/dependency-manager.js +393 -0
  16. package/build/lib/dependencies/package-manager.d.ts.map +1 -0
  17. package/build/lib/dependencies/package-manager.js +581 -0
  18. package/build/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
  19. package/build/lib/dependencies/prebuilt-providers.js +221 -0
  20. package/build/lib/dependencies/registry-api.d.ts.map +1 -0
  21. package/build/lib/dependencies/registry-api.js +77 -0
  22. package/build/lib/dependencies/version-constraints.d.ts.map +1 -0
  23. package/build/lib/dependencies/version-constraints.js +95 -0
  24. package/build/lib/error-reporting.d.ts.map +1 -0
  25. package/build/lib/error-reporting.js +133 -0
  26. package/build/lib/errors.d.ts.map +1 -0
  27. package/build/lib/errors.js +10 -0
  28. package/build/lib/execution-logs.d.ts.map +1 -0
  29. package/build/lib/execution-logs.js +47 -0
  30. package/build/lib/get.d.ts.map +1 -0
  31. package/build/lib/get.js +90 -0
  32. package/build/lib/helpers/stack-helpers.d.ts.map +1 -0
  33. package/build/lib/helpers/stack-helpers.js +155 -0
  34. package/build/lib/index.d.ts.map +1 -0
  35. package/{src → build}/lib/index.js +1 -1
  36. package/build/lib/init.d.ts.map +1 -0
  37. package/build/lib/init.js +131 -0
  38. package/build/lib/local-provider-constraints.d.ts.map +1 -0
  39. package/build/lib/local-provider-constraints.js +95 -0
  40. package/build/lib/local-provider-versions.d.ts.map +1 -0
  41. package/build/lib/local-provider-versions.js +73 -0
  42. package/build/lib/models/deploy-machine.d.ts.map +1 -0
  43. package/build/lib/models/deploy-machine.js +283 -0
  44. package/build/lib/models/interactive-process.d.ts.map +1 -0
  45. package/build/lib/models/interactive-process.js +59 -0
  46. package/{src → build}/lib/models/schema.d.ts.map +1 -1
  47. package/build/lib/models/schema.js +181 -0
  48. package/{src → build}/lib/models/terraform-cli.d.ts +1 -0
  49. package/build/lib/models/terraform-cli.d.ts.map +1 -0
  50. package/build/lib/models/terraform-cli.js +355 -0
  51. package/build/lib/models/terraform.d.ts.map +1 -0
  52. package/build/lib/models/terraform.js +72 -0
  53. package/build/lib/output.d.ts.map +1 -0
  54. package/build/lib/output.js +211 -0
  55. package/build/lib/provider-add.d.ts.map +1 -0
  56. package/build/lib/provider-add.js +30 -0
  57. package/build/lib/server/terraform-logs.d.ts.map +1 -0
  58. package/build/lib/server/terraform-logs.js +19 -0
  59. package/{src → build}/lib/synth-stack.d.ts +1 -0
  60. package/build/lib/synth-stack.d.ts.map +1 -0
  61. package/build/lib/synth-stack.js +251 -0
  62. package/build/lib/synth.d.ts.map +1 -0
  63. package/build/lib/synth.js +67 -0
  64. package/{src → build}/lib/terraform-json.d.ts.map +1 -1
  65. package/build/lib/terraform-json.js +82 -0
  66. package/build/lib/terraform-provider-lock.d.ts.map +1 -0
  67. package/build/lib/terraform-provider-lock.js +95 -0
  68. package/{src → build}/lib/watch.d.ts +1 -0
  69. package/build/lib/watch.d.ts.map +1 -0
  70. package/build/lib/watch.js +155 -0
  71. package/package.json +12 -12
  72. package/src/lib/cdktf-config.d.ts.map +0 -1
  73. package/src/lib/cdktf-config.js +0 -108
  74. package/src/lib/cdktf-project-io-handler.d.ts.map +0 -1
  75. package/src/lib/cdktf-project-io-handler.js +0 -84
  76. package/src/lib/cdktf-project.d.ts.map +0 -1
  77. package/src/lib/cdktf-project.js +0 -371
  78. package/src/lib/cdktf-stack.d.ts.map +0 -1
  79. package/src/lib/cdktf-stack.js +0 -386
  80. package/src/lib/convert.d.ts.map +0 -1
  81. package/src/lib/convert.js +0 -51
  82. package/src/lib/dependencies/cdktf-config-manager.d.ts.map +0 -1
  83. package/src/lib/dependencies/cdktf-config-manager.js +0 -36
  84. package/src/lib/dependencies/dependency-manager.d.ts.map +0 -1
  85. package/src/lib/dependencies/dependency-manager.js +0 -393
  86. package/src/lib/dependencies/package-manager.d.ts.map +0 -1
  87. package/src/lib/dependencies/package-manager.js +0 -581
  88. package/src/lib/dependencies/prebuilt-providers.d.ts.map +0 -1
  89. package/src/lib/dependencies/prebuilt-providers.js +0 -221
  90. package/src/lib/dependencies/registry-api.d.ts.map +0 -1
  91. package/src/lib/dependencies/registry-api.js +0 -77
  92. package/src/lib/dependencies/version-constraints.d.ts.map +0 -1
  93. package/src/lib/dependencies/version-constraints.js +0 -95
  94. package/src/lib/error-reporting.d.ts.map +0 -1
  95. package/src/lib/error-reporting.js +0 -133
  96. package/src/lib/errors.d.ts.map +0 -1
  97. package/src/lib/errors.js +0 -10
  98. package/src/lib/execution-logs.d.ts.map +0 -1
  99. package/src/lib/execution-logs.js +0 -47
  100. package/src/lib/get.d.ts.map +0 -1
  101. package/src/lib/get.js +0 -90
  102. package/src/lib/helpers/stack-helpers.d.ts.map +0 -1
  103. package/src/lib/helpers/stack-helpers.js +0 -155
  104. package/src/lib/index.d.ts.map +0 -1
  105. package/src/lib/init.d.ts.map +0 -1
  106. package/src/lib/init.js +0 -131
  107. package/src/lib/local-provider-constraints.d.ts.map +0 -1
  108. package/src/lib/local-provider-constraints.js +0 -95
  109. package/src/lib/local-provider-versions.d.ts.map +0 -1
  110. package/src/lib/local-provider-versions.js +0 -73
  111. package/src/lib/models/deploy-machine.d.ts.map +0 -1
  112. package/src/lib/models/deploy-machine.js +0 -283
  113. package/src/lib/models/interactive-process.d.ts.map +0 -1
  114. package/src/lib/models/interactive-process.js +0 -59
  115. package/src/lib/models/schema.js +0 -181
  116. package/src/lib/models/terraform-cli.d.ts.map +0 -1
  117. package/src/lib/models/terraform-cli.js +0 -355
  118. package/src/lib/models/terraform.d.ts.map +0 -1
  119. package/src/lib/models/terraform.js +0 -72
  120. package/src/lib/output.d.ts.map +0 -1
  121. package/src/lib/output.js +0 -211
  122. package/src/lib/provider-add.d.ts.map +0 -1
  123. package/src/lib/provider-add.js +0 -30
  124. package/src/lib/server/terraform-logs.d.ts.map +0 -1
  125. package/src/lib/server/terraform-logs.js +0 -19
  126. package/src/lib/synth-stack.d.ts.map +0 -1
  127. package/src/lib/synth-stack.js +0 -251
  128. package/src/lib/synth.d.ts.map +0 -1
  129. package/src/lib/synth.js +0 -67
  130. package/src/lib/terraform-json.js +0 -82
  131. package/src/lib/terraform-provider-lock.d.ts.map +0 -1
  132. package/src/lib/terraform-provider-lock.js +0 -95
  133. package/src/lib/watch.d.ts.map +0 -1
  134. package/src/lib/watch.js +0 -155
  135. /package/{src → build}/lib/cdktf-config.d.ts +0 -0
  136. /package/{src → build}/lib/cdktf-project-io-handler.d.ts +0 -0
  137. /package/{src → build}/lib/cdktf-project.d.ts +0 -0
  138. /package/{src → build}/lib/convert.d.ts +0 -0
  139. /package/{src → build}/lib/dependencies/cdktf-config-manager.d.ts +0 -0
  140. /package/{src → build}/lib/dependencies/dependency-manager.d.ts +0 -0
  141. /package/{src → build}/lib/dependencies/package-manager.d.ts +0 -0
  142. /package/{src → build}/lib/dependencies/prebuilt-providers.d.ts +0 -0
  143. /package/{src → build}/lib/dependencies/registry-api.d.ts +0 -0
  144. /package/{src → build}/lib/dependencies/version-constraints.d.ts +0 -0
  145. /package/{src → build}/lib/error-reporting.d.ts +0 -0
  146. /package/{src → build}/lib/errors.d.ts +0 -0
  147. /package/{src → build}/lib/execution-logs.d.ts +0 -0
  148. /package/{src → build}/lib/get.d.ts +0 -0
  149. /package/{src → build}/lib/helpers/stack-helpers.d.ts +0 -0
  150. /package/{src → build}/lib/index.d.ts +0 -0
  151. /package/{src → build}/lib/init.d.ts +0 -0
  152. /package/{src → build}/lib/local-provider-constraints.d.ts +0 -0
  153. /package/{src → build}/lib/local-provider-versions.d.ts +0 -0
  154. /package/{src → build}/lib/models/deploy-machine.d.ts +0 -0
  155. /package/{src → build}/lib/models/interactive-process.d.ts +0 -0
  156. /package/{src → build}/lib/models/schema.d.ts +0 -0
  157. /package/{src → build}/lib/models/terraform.d.ts +0 -0
  158. /package/{src → build}/lib/output.d.ts +0 -0
  159. /package/{src → build}/lib/provider-add.d.ts +0 -0
  160. /package/{src → build}/lib/server/terraform-logs.d.ts +0 -0
  161. /package/{src → build}/lib/synth.d.ts +0 -0
  162. /package/{src → build}/lib/terraform-json.d.ts +0 -0
  163. /package/{src → build}/lib/terraform-provider-lock.d.ts +0 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractTerraformPlan = exports.isTerraformOutput = exports.DeployingResourceApplyState = exports.PlannedResourceAction = void 0;
4
+ // Copyright (c) HashiCorp, Inc
5
+ // SPDX-License-Identifier: MPL-2.0
6
+ var PlannedResourceAction;
7
+ (function (PlannedResourceAction) {
8
+ PlannedResourceAction["CREATE"] = "create";
9
+ PlannedResourceAction["UPDATE"] = "update";
10
+ PlannedResourceAction["DELETE"] = "delete";
11
+ PlannedResourceAction["READ"] = "read";
12
+ PlannedResourceAction["NO_OP"] = "no-op";
13
+ })(PlannedResourceAction || (exports.PlannedResourceAction = PlannedResourceAction = {}));
14
+ var DeployingResourceApplyState;
15
+ (function (DeployingResourceApplyState) {
16
+ DeployingResourceApplyState["WAITING"] = "waiting";
17
+ DeployingResourceApplyState["UPDATING"] = "updating";
18
+ DeployingResourceApplyState["UPDATED"] = "updated";
19
+ DeployingResourceApplyState["CREATING"] = "creating";
20
+ DeployingResourceApplyState["CREATED"] = "created";
21
+ DeployingResourceApplyState["DESTROYING"] = "destroying";
22
+ DeployingResourceApplyState["DESTROYED"] = "destroyed";
23
+ DeployingResourceApplyState["SUCCESS"] = "success";
24
+ DeployingResourceApplyState["ERROR"] = "error";
25
+ })(DeployingResourceApplyState || (exports.DeployingResourceApplyState = DeployingResourceApplyState = {}));
26
+ function isTerraformOutput(output) {
27
+ return (typeof output === "object" &&
28
+ typeof output.sensitive === "boolean" &&
29
+ (typeof output.type === "string" || Array.isArray(output.type)));
30
+ }
31
+ exports.isTerraformOutput = isTerraformOutput;
32
+ function filterChangingResources(resources) {
33
+ const applyActions = [
34
+ PlannedResourceAction.UPDATE,
35
+ PlannedResourceAction.CREATE,
36
+ PlannedResourceAction.DELETE,
37
+ PlannedResourceAction.READ,
38
+ ];
39
+ return resources.filter((resource) => applyActions.includes(resource.action));
40
+ }
41
+ class AbstractTerraformPlan {
42
+ constructor(planFile, resourceChanges, outputChanges) {
43
+ this.planFile = planFile;
44
+ this.resourceChanges = resourceChanges;
45
+ this.outputChanges = outputChanges;
46
+ }
47
+ get resources() {
48
+ return (this.resourceChanges || []).map((resource) => {
49
+ return {
50
+ id: resource.address,
51
+ action: resource.change.actions[0],
52
+ };
53
+ });
54
+ }
55
+ get applyableResources() {
56
+ return filterChangingResources(this.resources);
57
+ }
58
+ get outputs() {
59
+ return Object.entries(this.outputChanges || {}).map(([key, value]) => ({
60
+ id: `output.${key}`,
61
+ action: value.actions[0],
62
+ }));
63
+ }
64
+ get changingOutputs() {
65
+ return filterChangingResources(this.outputs);
66
+ }
67
+ get needsApply() {
68
+ return (this.applyableResources.length > 0 || this.changingOutputs.length > 0);
69
+ }
70
+ }
71
+ exports.AbstractTerraformPlan = AbstractTerraformPlan;
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tb2RlbHMvdGVycmFmb3JtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsSUFBWSxxQkFNWDtBQU5ELFdBQVkscUJBQXFCO0lBQy9CLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLDBDQUFpQixDQUFBO0lBQ2pCLHNDQUFhLENBQUE7SUFDYix3Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFOVyxxQkFBcUIscUNBQXJCLHFCQUFxQixRQU1oQztBQUVELElBQVksMkJBVVg7QUFWRCxXQUFZLDJCQUEyQjtJQUNyQyxrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQixvREFBcUIsQ0FBQTtJQUNyQixrREFBbUIsQ0FBQTtJQUNuQix3REFBeUIsQ0FBQTtJQUN6QixzREFBdUIsQ0FBQTtJQUN2QixrREFBbUIsQ0FBQTtJQUNuQiw4Q0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFWVywyQkFBMkIsMkNBQTNCLDJCQUEyQixRQVV0QztBQWlDRCxTQUFnQixpQkFBaUIsQ0FBQyxNQUFXO0lBQzNDLE9BQU8sQ0FDTCxPQUFPLE1BQU0sS0FBSyxRQUFRO1FBQzFCLE9BQU8sTUFBTSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQ3JDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNoRSxDQUFDO0FBQ0osQ0FBQztBQU5ELDhDQU1DO0FBU0QsU0FBUyx1QkFBdUIsQ0FBQyxTQUE0QjtJQUMzRCxNQUFNLFlBQVksR0FBRztRQUNuQixxQkFBcUIsQ0FBQyxNQUFNO1FBQzVCLHFCQUFxQixDQUFDLE1BQU07UUFDNUIscUJBQXFCLENBQUMsTUFBTTtRQUM1QixxQkFBcUIsQ0FBQyxJQUFJO0tBQzNCLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNELE1BQXNCLHFCQUFxQjtJQUN6QyxZQUNrQixRQUFnQixFQUNmLGVBQWtDLEVBQ2xDLGFBQW9EO1FBRnJELGFBQVEsR0FBUixRQUFRLENBQVE7UUFDZixvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQXVDO0lBQ3BFLENBQUM7SUFFSixJQUFXLFNBQVM7UUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDbkQsT0FBTztnQkFDTCxFQUFFLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3BCLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDaEIsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFXLGtCQUFrQjtRQUMzQixPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLEVBQUUsRUFBRSxVQUFVLEdBQUcsRUFBRTtZQUNuQixNQUFNLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDekIsQ0FBQyxDQUFzQixDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLENBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUN0RSxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcENELHNEQW9DQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5leHBvcnQgZW51bSBQbGFubmVkUmVzb3VyY2VBY3Rpb24ge1xuICBDUkVBVEUgPSBcImNyZWF0ZVwiLFxuICBVUERBVEUgPSBcInVwZGF0ZVwiLFxuICBERUxFVEUgPSBcImRlbGV0ZVwiLFxuICBSRUFEID0gXCJyZWFkXCIsXG4gIE5PX09QID0gXCJuby1vcFwiLFxufVxuXG5leHBvcnQgZW51bSBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUge1xuICBXQUlUSU5HID0gXCJ3YWl0aW5nXCIsXG4gIFVQREFUSU5HID0gXCJ1cGRhdGluZ1wiLFxuICBVUERBVEVEID0gXCJ1cGRhdGVkXCIsXG4gIENSRUFUSU5HID0gXCJjcmVhdGluZ1wiLFxuICBDUkVBVEVEID0gXCJjcmVhdGVkXCIsXG4gIERFU1RST1lJTkcgPSBcImRlc3Ryb3lpbmdcIixcbiAgREVTVFJPWUVEID0gXCJkZXN0cm95ZWRcIixcbiAgU1VDQ0VTUyA9IFwic3VjY2Vzc1wiLFxuICBFUlJPUiA9IFwiZXJyb3JcIixcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGxhbm5lZFJlc291cmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgYWN0aW9uOiBQbGFubmVkUmVzb3VyY2VBY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95aW5nUmVzb3VyY2UgZXh0ZW5kcyBQbGFubmVkUmVzb3VyY2Uge1xuICBhcHBseVN0YXRlOiBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlIHtcbiAgYWN0aW9uczogc3RyaW5nW107XG4gIGJlZm9yZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgYWZ0ZXI6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VDaGFuZ2VzIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBtb2R1bGVfYWRkcmVzczogc3RyaW5nO1xuICBtb2RlOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xuICBwcm92aWRlcl9uYW1lOiBzdHJpbmc7XG4gIGNoYW5nZTogUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybU91dHB1dCB7XG4gIHNlbnNpdGl2ZTogYm9vbGVhbjtcbiAgdHlwZTogc3RyaW5nIHwgQXJyYXk8YW55PjtcbiAgdmFsdWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgQXJyYXk8YW55Pjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzVGVycmFmb3JtT3V0cHV0KG91dHB1dDogYW55KTogb3V0cHV0IGlzIFRlcnJhZm9ybU91dHB1dCB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIG91dHB1dCA9PT0gXCJvYmplY3RcIiAmJlxuICAgIHR5cGVvZiBvdXRwdXQuc2Vuc2l0aXZlID09PSBcImJvb2xlYW5cIiAmJlxuICAgICh0eXBlb2Ygb3V0cHV0LnR5cGUgPT09IFwic3RyaW5nXCIgfHwgQXJyYXkuaXNBcnJheShvdXRwdXQudHlwZSkpXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtUGxhbiB7XG4gIHJlYWRvbmx5IHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IGFwcGx5YWJsZVJlc291cmNlczogUGxhbm5lZFJlc291cmNlW107XG4gIHJlYWRvbmx5IG5lZWRzQXBwbHk6IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHJlc291cmNlczogUGxhbm5lZFJlc291cmNlW10pIHtcbiAgY29uc3QgYXBwbHlBY3Rpb25zID0gW1xuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5VUERBVEUsXG4gICAgUGxhbm5lZFJlc291cmNlQWN0aW9uLkNSRUFURSxcbiAgICBQbGFubmVkUmVzb3VyY2VBY3Rpb24uREVMRVRFLFxuICAgIFBsYW5uZWRSZXNvdXJjZUFjdGlvbi5SRUFELFxuICBdO1xuICByZXR1cm4gcmVzb3VyY2VzLmZpbHRlcigocmVzb3VyY2UpID0+IGFwcGx5QWN0aW9ucy5pbmNsdWRlcyhyZXNvdXJjZS5hY3Rpb24pKTtcbn1cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFRlcnJhZm9ybVBsYW4gaW1wbGVtZW50cyBUZXJyYWZvcm1QbGFuIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHBsYW5GaWxlOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlc1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3V0cHV0Q2hhbmdlczogUmVjb3JkPHN0cmluZywgUmVzb3VyY2VDaGFuZ2VzQ2hhbmdlPixcbiAgKSB7fVxuXG4gIHB1YmxpYyBnZXQgcmVzb3VyY2VzKCk6IFBsYW5uZWRSZXNvdXJjZVtdIHtcbiAgICByZXR1cm4gKHRoaXMucmVzb3VyY2VDaGFuZ2VzIHx8IFtdKS5tYXAoKHJlc291cmNlKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcmVzb3VyY2UuYWRkcmVzcyxcbiAgICAgICAgYWN0aW9uOiByZXNvdXJjZS5jaGFuZ2UuYWN0aW9uc1swXSxcbiAgICAgIH0gYXMgUGxhbm5lZFJlc291cmNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBhcHBseWFibGVSZXNvdXJjZXMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBmaWx0ZXJDaGFuZ2luZ1Jlc291cmNlcyh0aGlzLnJlc291cmNlcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUGxhbm5lZFJlc291cmNlW10ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh0aGlzLm91dHB1dENoYW5nZXMgfHwge30pLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgaWQ6IGBvdXRwdXQuJHtrZXl9YCxcbiAgICAgIGFjdGlvbjogdmFsdWUuYWN0aW9uc1swXSxcbiAgICB9KSkgYXMgUGxhbm5lZFJlc291cmNlW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5naW5nT3V0cHV0cygpOiBQbGFubmVkUmVzb3VyY2VbXSB7XG4gICAgcmV0dXJuIGZpbHRlckNoYW5naW5nUmVzb3VyY2VzKHRoaXMub3V0cHV0cyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5lZWRzQXBwbHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuYXBwbHlhYmxlUmVzb3VyY2VzLmxlbmd0aCA+IDAgfHwgdGhpcy5jaGFuZ2luZ091dHB1dHMubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgVGVycmFmb3JtRGVwbG95U3RhdGUgPVxuICB8IHsgdHlwZTogXCJydW5uaW5nXCI7IGNhbmNlbGxlZDogYm9vbGVhbiB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBhcHByb3ZhbFwiO1xuICAgICAgYXBwcm92ZTogKCkgPT4gdm9pZDtcbiAgICAgIHJlamVjdDogKCkgPT4gdm9pZDtcbiAgICB9XG4gIHwge1xuICAgICAgdHlwZTogXCJ3YWl0aW5nIGZvciBzZW50aW5lbCBvdmVycmlkZVwiO1xuICAgICAgb3ZlcnJpZGU6ICgpID0+IHZvaWQ7XG4gICAgICByZWplY3Q6ICgpID0+IHZvaWQ7XG4gICAgfVxuICB8IHsgdHlwZTogXCJleHRlcm5hbCBhcHByb3ZhbCByZXBseVwiOyBhcHByb3ZlZDogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiBcImV4dGVybmFsIHNlbnRpbmVsIG92ZXJyaWRlIHJlcGx5XCI7IG92ZXJyaWRkZW46IGJvb2xlYW4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXJyYWZvcm0ge1xuICBpbml0OiAob3B0czoge1xuICAgIG5lZWRzVXBncmFkZTogYm9vbGVhbjtcbiAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICBuZWVkc0xvY2tmaWxlVXBkYXRlOiBib29sZWFuO1xuICAgIG1pZ3JhdGVTdGF0ZTogYm9vbGVhbjtcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBwbGFuOiAob3B0czoge1xuICAgIGRlc3Ryb3k6IGJvb2xlYW47XG4gICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgIHBhcmFsbGVsaXNtPzogbnVtYmVyO1xuICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgIG5vQ29sb3I/OiBib29sZWFuO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBkZXBsb3koXG4gICAgb3B0aW9uczoge1xuICAgICAgYXV0b0FwcHJvdmU/OiBib29sZWFuO1xuICAgICAgcmVmcmVzaE9ubHk/OiBib29sZWFuO1xuICAgICAgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gICAgICB2YXJzPzogc3RyaW5nW107XG4gICAgICB2YXJGaWxlcz86IHN0cmluZ1tdO1xuICAgICAgbm9Db2xvcj86IGJvb2xlYW47XG4gICAgfSxcbiAgICBjYWxsYmFjazogKHN0YXRlOiBUZXJyYWZvcm1EZXBsb3lTdGF0ZSkgPT4gdm9pZCxcbiAgKTogUHJvbWlzZTx7IGNhbmNlbGxlZDogYm9vbGVhbiB9PjtcbiAgZGVzdHJveShcbiAgICBvcHRpb25zOiB7XG4gICAgICBhdXRvQXBwcm92ZT86IGJvb2xlYW47XG4gICAgICBwYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgICAgIHZhcnM/OiBzdHJpbmdbXTtcbiAgICAgIHZhckZpbGVzPzogc3RyaW5nW107XG4gICAgICBub0NvbG9yPzogYm9vbGVhbjtcbiAgICB9LFxuICAgIGNhbGxiYWNrOiAoc3RhdGU6IFRlcnJhZm9ybURlcGxveVN0YXRlKSA9PiB2b2lkLFxuICApOiBQcm9taXNlPHsgY2FuY2VsbGVkOiBib29sZWFuIH0+O1xuICBvdXRwdXQoKTogUHJvbWlzZTx7IFtrZXk6IHN0cmluZ106IFRlcnJhZm9ybU91dHB1dCB9PjtcbiAgYWJvcnQ6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/lib/output.ts"],"names":[],"mappings":"AASA,OAAO,EACL,iBAAiB,EAGjB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,OAAO,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,kBAAkB,EAAE,MAAM,GAAG,WAAW,CAAA;CAAE,CAAC;AAC5E,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;AAmB5D,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,sBAAsB,EAC/B,uBAAuB,EAAE,OAAO,iBAUjC;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,UAInD;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,GAClC;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CAAE,CAAC;AAoH9C,eAAO,MAAM,WAAW,QAAS,MAAM,KAAG,iBAAiB,EAwB1D,CAAC;AAcF,eAAO,MAAM,yBAAyB,iBACtB,OAAO,MAAM,EAAE,GAAG,CAAC,WACxB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,KAC1C,sBA0BF,CAAC"}
@@ -0,0 +1,211 @@
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.getConstructIdsForOutputs = exports.parseOutput = exports.normalizeOutputPath = exports.saveOutputs = void 0;
30
+ // Copyright (c) HashiCorp, Inc
31
+ // SPDX-License-Identifier: MPL-2.0
32
+ const z = __importStar(require("zod"));
33
+ const fs = __importStar(require("fs"));
34
+ const path = __importStar(require("path"));
35
+ const strip_ansi_1 = __importDefault(require("strip-ansi"));
36
+ const commons_1 = require("@cdktn/commons");
37
+ const schema_1 = require("./models/schema");
38
+ const terraform_1 = require("./models/terraform");
39
+ function unpackTerraformOutput(outputs, includeSensitiveOutputs) {
40
+ return Object.entries(outputs).reduce((acc, [key, entry]) => ({
41
+ ...acc,
42
+ [key]: (0, terraform_1.isTerraformOutput)(entry)
43
+ ? !entry.sensitive || includeSensitiveOutputs
44
+ ? entry.value
45
+ : undefined
46
+ : unpackTerraformOutput(entry, includeSensitiveOutputs),
47
+ }), {});
48
+ }
49
+ async function saveOutputs(filePath, outputs, includeSensitiveOutputs) {
50
+ fs.writeFileSync(filePath, JSON.stringify(unpackTerraformOutput(outputs, includeSensitiveOutputs), null, 2));
51
+ }
52
+ exports.saveOutputs = saveOutputs;
53
+ function normalizeOutputPath(filePath) {
54
+ return path.isAbsolute(filePath)
55
+ ? filePath
56
+ : path.join(process.cwd(), filePath);
57
+ }
58
+ exports.normalizeOutputPath = normalizeOutputPath;
59
+ const mapActionToState = (action, done) => {
60
+ switch (action) {
61
+ case "create":
62
+ case "update":
63
+ return done
64
+ ? terraform_1.DeployingResourceApplyState.CREATED
65
+ : terraform_1.DeployingResourceApplyState.CREATING;
66
+ case "delete":
67
+ return done
68
+ ? terraform_1.DeployingResourceApplyState.DESTROYED
69
+ : terraform_1.DeployingResourceApplyState.DESTROYING;
70
+ default:
71
+ return terraform_1.DeployingResourceApplyState.WAITING;
72
+ }
73
+ };
74
+ // This is deprecated and will be removed in a future version.
75
+ const parseJsonOutputLine = (line) => {
76
+ let json, message;
77
+ try {
78
+ json = JSON.parse(line);
79
+ }
80
+ catch (_a) {
81
+ commons_1.logger.trace(`Could not parse line as JSON: ${line}`);
82
+ return;
83
+ }
84
+ try {
85
+ message = schema_1.schema.parse(json);
86
+ }
87
+ catch (err) {
88
+ if (err instanceof z.ZodError) {
89
+ commons_1.logger.trace(`Error parsing line into schema: ${JSON.stringify(err.errors)} => ${line}`);
90
+ }
91
+ return;
92
+ }
93
+ switch (message.type) {
94
+ case "apply_start":
95
+ case "apply_progress":
96
+ return {
97
+ id: message.hook.resource.resource,
98
+ applyState: mapActionToState(message.hook.action, false),
99
+ };
100
+ case "apply_complete":
101
+ return {
102
+ id: message.hook.resource.resource,
103
+ applyState: mapActionToState(message.hook.action, true),
104
+ };
105
+ default:
106
+ return;
107
+ }
108
+ };
109
+ const parseTextOutputLine = (line) => {
110
+ if (/^Outputs:/.test(line)) {
111
+ return;
112
+ }
113
+ if (/^Plan:/.test(line)) {
114
+ return;
115
+ }
116
+ if (/^data\..*/.test(line)) {
117
+ return;
118
+ }
119
+ const resourceMatch = line.match(/^([a-zA-Z_][a-zA-Z\d_\-.]*):/);
120
+ let applyState;
121
+ switch (true) {
122
+ case /Creating.../.test(line):
123
+ case /Still creating.../.test(line):
124
+ applyState = terraform_1.DeployingResourceApplyState.CREATING;
125
+ break;
126
+ case /Creation complete/.test(line):
127
+ applyState = terraform_1.DeployingResourceApplyState.CREATED;
128
+ break;
129
+ case /Modifying.../.test(line):
130
+ applyState = terraform_1.DeployingResourceApplyState.UPDATING;
131
+ break;
132
+ case /Modifications complete/.test(line):
133
+ applyState = terraform_1.DeployingResourceApplyState.UPDATED;
134
+ break;
135
+ case /Destroying.../.test(line):
136
+ case /Still destroying.../.test(line):
137
+ applyState = terraform_1.DeployingResourceApplyState.DESTROYING;
138
+ break;
139
+ case /Destruction complete/.test(line):
140
+ applyState = terraform_1.DeployingResourceApplyState.DESTROYED;
141
+ break;
142
+ default:
143
+ return;
144
+ }
145
+ if (resourceMatch &&
146
+ resourceMatch.length >= 0 &&
147
+ resourceMatch[1] != "Warning") {
148
+ return {
149
+ id: resourceMatch[1],
150
+ applyState,
151
+ };
152
+ }
153
+ else {
154
+ return;
155
+ }
156
+ };
157
+ const parseOutput = (str) => {
158
+ const lines = (0, strip_ansi_1.default)(str.toString()).split("\n");
159
+ const resources = lines.map((line) => {
160
+ const parsed = parseJsonOutputLine(line) || parseTextOutputLine(line);
161
+ if (parsed === undefined) {
162
+ return;
163
+ }
164
+ const { id, applyState } = parsed;
165
+ return {
166
+ id,
167
+ applyState,
168
+ action: terraform_1.PlannedResourceAction.CREATE,
169
+ };
170
+ });
171
+ return resources.reduce((acc, resource) => {
172
+ if (resource) {
173
+ acc.push(resource);
174
+ }
175
+ return acc;
176
+ // eslint-disable-next-line @typescript-eslint/no-array-constructor
177
+ }, new Array());
178
+ };
179
+ exports.parseOutput = parseOutput;
180
+ const isObjectEmpty = (obj) => {
181
+ if (typeof obj !== "object") {
182
+ return false;
183
+ }
184
+ return (Object.keys(obj).length === 0 ||
185
+ Object.values(obj).every((v) => v === undefined || v === null || isObjectEmpty(v)));
186
+ };
187
+ const getConstructIdsForOutputs = (stackContent, outputs) => {
188
+ // Older cdktf versions might not have the output metadata
189
+ if (!("//" in stackContent) || !("outputs" in stackContent["//"])) {
190
+ return outputs;
191
+ }
192
+ const outputsMapping = stackContent["//"].outputs;
193
+ const mapOutputs = (value) => {
194
+ return Object.entries(value).reduce((acc, [key, value]) => {
195
+ if (typeof value === "string") {
196
+ return { ...acc, [key]: outputs[value] };
197
+ }
198
+ const mapped = mapOutputs(value);
199
+ if (isObjectEmpty(mapped)) {
200
+ return acc;
201
+ }
202
+ return {
203
+ ...acc,
204
+ [key]: mapped,
205
+ };
206
+ }, {});
207
+ };
208
+ return mapOutputs(outputsMapping);
209
+ };
210
+ exports.getConstructIdsForOutputs = getConstructIdsForOutputs;
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDREQUFtQztBQUVuQyw0Q0FBd0M7QUFDeEMsNENBQXNEO0FBQ3RELGtEQU00QjtBQU81QixTQUFTLHFCQUFxQixDQUM1QixPQUErQixFQUMvQix1QkFBZ0M7SUFFaEMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FDbkMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdEIsR0FBRyxHQUFHO1FBQ04sQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFBLDZCQUFpQixFQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLHVCQUF1QjtnQkFDM0MsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUNiLENBQUMsQ0FBQyxTQUFTO1lBQ2IsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSx1QkFBdUIsQ0FBQztLQUMxRCxDQUFDLEVBQ0YsRUFBRSxDQUNILENBQUM7QUFDSixDQUFDO0FBRU0sS0FBSyxVQUFVLFdBQVcsQ0FDL0IsUUFBZ0IsRUFDaEIsT0FBK0IsRUFDL0IsdUJBQWdDO0lBRWhDLEVBQUUsQ0FBQyxhQUFhLENBQ2QsUUFBUSxFQUNSLElBQUksQ0FBQyxTQUFTLENBQ1oscUJBQXFCLENBQUMsT0FBTyxFQUFFLHVCQUF1QixDQUFDLEVBQ3ZELElBQUksRUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0FBQ0osQ0FBQztBQWJELGtDQWFDO0FBRUQsU0FBZ0IsbUJBQW1CLENBQUMs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LENBQUM7UUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDVCxDQUFDLENBQUM7SUFFRixPQUFPLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUE3QlcsUUFBQSx5QkFBeUIsNkJBNkJwQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyB6IGZyb20gXCJ6b2RcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHN0cmlwQW5zaSBmcm9tIFwic3RyaXAtYW5zaVwiO1xuXG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCB7IEFjdGlvblR5cGVzLCBzY2hlbWEgfSBmcm9tIFwiLi9tb2RlbHMvc2NoZW1hXCI7XG5pbXBvcnQge1xuICBEZXBsb3lpbmdSZXNvdXJjZSxcbiAgRGVwbG95aW5nUmVzb3VyY2VBcHBseVN0YXRlLFxuICBQbGFubmVkUmVzb3VyY2VBY3Rpb24sXG4gIFRlcnJhZm9ybU91dHB1dCxcbiAgaXNUZXJyYWZvcm1PdXRwdXQsXG59IGZyb20gXCIuL21vZGVscy90ZXJyYWZvcm1cIjtcblxuZXhwb3J0IHR5cGUgT3V0cHV0cyA9IHsgW2tleTogc3RyaW5nXTogVGVycmFmb3JtT3V0cHV0IH07XG5leHBvcnQgdHlwZSBPdXRwdXRJZE1hcExlYWYgPSB7IFtjb25zdHJ1Y3RJZDogc3RyaW5nXTogc3RyaW5nIH07XG5leHBvcnQgdHlwZSBPdXRwdXRJZE1hcE5vZGUgPSB7IFtzdGFja09yQ29uc3RydWN0SWQ6IHN0cmluZ106IE91dHB1dElkTWFwIH07XG5leHBvcnQgdHlwZSBPdXRwdXRJZE1hcCA9IE91dHB1dElkTWFwTGVhZiB8IE91dHB1dElkTWFwTm9kZTtcblxuZnVuY3Rpb24gdW5wYWNrVGVycmFmb3JtT3V0cHV0KFxuICBvdXRwdXRzOiBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzLFxuICBpbmNsdWRlU2Vuc2l0aXZlT3V0cHV0czogYm9vbGVhbixcbik6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob3V0cHV0cykucmVkdWNlKFxuICAgIChhY2MsIFtrZXksIGVudHJ5XSkgPT4gKHtcbiAgICAgIC4uLmFjYyxcbiAgICAgIFtrZXldOiBpc1RlcnJhZm9ybU91dHB1dChlbnRyeSlcbiAgICAgICAgPyAhZW50cnkuc2Vuc2l0aXZlIHx8IGluY2x1ZGVTZW5zaXRpdmVPdXRwdXRzXG4gICAgICAgICAgPyBlbnRyeS52YWx1ZVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIDogdW5wYWNrVGVycmFmb3JtT3V0cHV0KGVudHJ5LCBpbmNsdWRlU2Vuc2l0aXZlT3V0cHV0cyksXG4gICAgfSksXG4gICAge30sXG4gICk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlT3V0cHV0cyhcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgb3V0cHV0czogTmVzdGVkVGVycmFmb3JtT3V0cHV0cyxcbiAgaW5jbHVkZVNlbnNpdGl2ZU91dHB1dHM6IGJvb2xlYW4sXG4pIHtcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBmaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgIHVucGFja1RlcnJhZm9ybU91dHB1dChvdXRwdXRzLCBpbmNsdWRlU2Vuc2l0aXZlT3V0cHV0cyksXG4gICAgICBudWxsLFxuICAgICAgMixcbiAgICApLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplT3V0cHV0UGF0aChmaWxlUGF0aDogc3RyaW5nKSB7XG4gIHJldHVybiBwYXRoLmlzQWJzb2x1dGUoZmlsZVBhdGgpXG4gICAgPyBmaWxlUGF0aFxuICAgIDogcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGZpbGVQYXRoKTtcbn1cblxuZXhwb3J0IHR5cGUgTmVzdGVkVGVycmFmb3JtT3V0cHV0cyA9XG4gIHwgeyBba2V5OiBzdHJpbmddOiBUZXJyYWZvcm1PdXRwdXQgfVxuICB8IHsgW2tleTogc3RyaW5nXTogTmVzdGVkVGVycmFmb3JtT3V0cHV0cyB9O1xuXG5jb25zdCBtYXBBY3Rpb25Ub1N0YXRlID0gKGFjdGlvbjogQWN0aW9uVHlwZXMsIGRvbmU6IGJvb2xlYW4pID0+IHtcbiAgc3dpdGNoIChhY3Rpb24pIHtcbiAgICBjYXNlIFwiY3JlYXRlXCI6XG4gICAgY2FzZSBcInVwZGF0ZVwiOlxuICAgICAgcmV0dXJuIGRvbmVcbiAgICAgICAgPyBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUuQ1JFQVRFRFxuICAgICAgICA6IERlcGxveWluZ1Jlc291cmNlQXBwbHlTdGF0ZS5DUkVBVElORztcbiAgICBjYXNlIFwiZGVsZXRlXCI6XG4gICAgICByZXR1cm4gZG9uZVxuICAgICAgICA/IERlcGxveWluZ1Jlc291cmNlQXBwbHlTdGF0ZS5ERVNUUk9ZRURcbiAgICAgICAgOiBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUuREVTVFJPWUlORztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIERlcGxveWluZ1Jlc291cmNlQXBwbHlTdGF0ZS5XQUlUSU5HO1xuICB9XG59O1xuLy8gVGhpcyBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi5cbmNvbnN0IHBhcnNlSnNvbk91dHB1dExpbmUgPSAoXG4gIGxpbmU6IHN0cmluZyxcbik6IE9taXQ8RGVwbG95aW5nUmVzb3VyY2UsIFwiYWN0aW9uXCI+IHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGpzb24sIG1lc3NhZ2U7XG4gIHRyeSB7XG4gICAganNvbiA9IEpTT04ucGFyc2UobGluZSk7XG4gIH0gY2F0Y2gge1xuICAgIGxvZ2dlci50cmFjZShgQ291bGQgbm90IHBhcnNlIGxpbmUgYXMgSlNPTjogJHtsaW5lfWApO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgbWVzc2FnZSA9IHNjaGVtYS5wYXJzZShqc29uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGxvZ2dlci50cmFjZShcbiAgICAgICAgYEVycm9yIHBhcnNpbmcgbGluZSBpbnRvIHNjaGVtYTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBlcnIuZXJyb3JzLFxuICAgICAgICApfSA9PiAke2xpbmV9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICBjYXNlIFwiYXBwbHlfc3RhcnRcIjpcbiAgICBjYXNlIFwiYXBwbHlfcHJvZ3Jlc3NcIjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBtZXNzYWdlLmhvb2sucmVzb3VyY2UucmVzb3VyY2UsXG4gICAgICAgIGFwcGx5U3RhdGU6IG1hcEFjdGlvblRvU3RhdGUobWVzc2FnZS5ob29rLmFjdGlvbiwgZmFsc2UpLFxuICAgICAgfTtcblxuICAgIGNhc2UgXCJhcHBseV9jb21wbGV0ZVwiOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG1lc3NhZ2UuaG9vay5yZXNvdXJjZS5yZXNvdXJjZSxcbiAgICAgICAgYXBwbHlTdGF0ZTogbWFwQWN0aW9uVG9TdGF0ZShtZXNzYWdlLmhvb2suYWN0aW9uLCB0cnVlKSxcbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybjtcbiAgfVxufTtcblxuY29uc3QgcGFyc2VUZXh0T3V0cHV0TGluZSA9IChcbiAgbGluZTogc3RyaW5nLFxuKTogT21pdDxEZXBsb3lpbmdSZXNvdXJjZSwgXCJhY3Rpb25cIj4gfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoL15PdXRwdXRzOi8udGVzdChsaW5lKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoL15QbGFuOi8udGVzdChsaW5lKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoL15kYXRhXFwuLiovLnRlc3QobGluZSkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCByZXNvdXJjZU1hdGNoID0gbGluZS5tYXRjaCgvXihbYS16QS1aX11bYS16QS1aXFxkX1xcLS5dKik6Lyk7XG4gIGxldCBhcHBseVN0YXRlOiBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGU7XG5cbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSAvQ3JlYXRpbmcuLi4vLnRlc3QobGluZSk6XG4gICAgY2FzZSAvU3RpbGwgY3JlYXRpbmcuLi4vLnRlc3QobGluZSk6XG4gICAgICBhcHBseVN0YXRlID0gRGVwbG95aW5nUmVzb3VyY2VBcHBseVN0YXRlLkNSRUFUSU5HO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAvQ3JlYXRpb24gY29tcGxldGUvLnRlc3QobGluZSk6XG4gICAgICBhcHBseVN0YXRlID0gRGVwbG95aW5nUmVzb3VyY2VBcHBseVN0YXRlLkNSRUFURUQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIC9Nb2RpZnlpbmcuLi4vLnRlc3QobGluZSk6XG4gICAgICBhcHBseVN0YXRlID0gRGVwbG95aW5nUmVzb3VyY2VBcHBseVN0YXRlLlVQREFUSU5HO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAvTW9kaWZpY2F0aW9ucyBjb21wbGV0ZS8udGVzdChsaW5lKTpcbiAgICAgIGFwcGx5U3RhdGUgPSBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUuVVBEQVRFRDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgL0Rlc3Ryb3lpbmcuLi4vLnRlc3QobGluZSk6XG4gICAgY2FzZSAvU3RpbGwgZGVzdHJveWluZy4uLi8udGVzdChsaW5lKTpcbiAgICAgIGFwcGx5U3RhdGUgPSBEZXBsb3lpbmdSZXNvdXJjZUFwcGx5U3RhdGUuREVTVFJPWUlORztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgL0Rlc3RydWN0aW9uIGNvbXBsZXRlLy50ZXN0KGxpbmUpOlxuICAgICAgYXBwbHlTdGF0ZSA9IERlcGxveWluZ1Jlc291cmNlQXBwbHlTdGF0ZS5ERVNUUk9ZRUQ7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKFxuICAgIHJlc291cmNlTWF0Y2ggJiZcbiAgICByZXNvdXJjZU1hdGNoLmxlbmd0aCA+PSAwICYmXG4gICAgcmVzb3VyY2VNYXRjaFsxXSAhPSBcIldhcm5pbmdcIlxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHJlc291cmNlTWF0Y2hbMV0sXG4gICAgICBhcHBseVN0YXRlLFxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VPdXRwdXQgPSAoc3RyOiBzdHJpbmcpOiBEZXBsb3lpbmdSZXNvdXJjZVtdID0+IHtcbiAgY29uc3QgbGluZXMgPSBzdHJpcEFuc2koc3RyLnRvU3RyaW5nKCkpLnNwbGl0KFwiXFxuXCIpO1xuXG4gIGNvbnN0IHJlc291cmNlcyA9IGxpbmVzLm1hcCgobGluZSkgPT4ge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlSnNvbk91dHB1dExpbmUobGluZSkgfHwgcGFyc2VUZXh0T3V0cHV0TGluZShsaW5lKTtcbiAgICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB7IGlkLCBhcHBseVN0YXRlIH0gPSBwYXJzZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkLFxuICAgICAgYXBwbHlTdGF0ZSxcbiAgICAgIGFjdGlvbjogUGxhbm5lZFJlc291cmNlQWN0aW9uLkNSRUFURSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4gcmVzb3VyY2VzLnJlZHVjZSgoYWNjLCByZXNvdXJjZSkgPT4ge1xuICAgIGlmIChyZXNvdXJjZSkge1xuICAgICAgYWNjLnB1c2gocmVzb3VyY2UpO1xuICAgIH1cbiAgICByZXR1cm4gYWNjO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tYXJyYXktY29uc3RydWN0b3JcbiAgfSwgbmV3IEFycmF5KCkpO1xufTtcblxuY29uc3QgaXNPYmplY3RFbXB0eSA9IChvYmo6IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuID0+IHtcbiAgaWYgKHR5cGVvZiBvYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBPYmplY3Qua2V5cyhvYmopLmxlbmd0aCA9PT0gMCB8fFxuICAgIE9iamVjdC52YWx1ZXMob2JqKS5ldmVyeShcbiAgICAgICh2KSA9PiB2ID09PSB1bmRlZmluZWQgfHwgdiA9PT0gbnVsbCB8fCBpc09iamVjdEVtcHR5KHYpLFxuICAgIClcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25zdHJ1Y3RJZHNGb3JPdXRwdXRzID0gKFxuICBzdGFja0NvbnRlbnQ6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIG91dHB1dHM6IHsgW2tleTogc3RyaW5nXTogVGVycmFmb3JtT3V0cHV0IH0sXG4pOiBOZXN0ZWRUZXJyYWZvcm1PdXRwdXRzID0+IHtcbiAgLy8gT2xkZXIgY2RrdGYgdmVyc2lvbnMgbWlnaHQgbm90IGhhdmUgdGhlIG91dHB1dCBtZXRhZGF0YVxuICBpZiAoIShcIi8vXCIgaW4gc3RhY2tDb250ZW50KSB8fCAhKFwib3V0cHV0c1wiIGluIHN0YWNrQ29udGVudFtcIi8vXCJdKSkge1xuICAgIHJldHVybiBvdXRwdXRzO1xuICB9XG4gIGNvbnN0IG91dHB1dHNNYXBwaW5nID0gc3RhY2tDb250ZW50W1wiLy9cIl0ub3V0cHV0cztcblxuICBjb25zdCBtYXBPdXRwdXRzID0gKHZhbHVlOiBPdXRwdXRJZE1hcCk6IE5lc3RlZFRlcnJhZm9ybU91dHB1dHMgPT4ge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyh2YWx1ZSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtrZXldOiBvdXRwdXRzW3ZhbHVlXSB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtYXBwZWQgPSBtYXBPdXRwdXRzKHZhbHVlKTtcbiAgICAgIGlmIChpc09iamVjdEVtcHR5KG1hcHBlZCkpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBba2V5XTogbWFwcGVkLFxuICAgICAgfTtcbiAgICB9LCB7fSk7XG4gIH07XG5cbiAgcmV0dXJuIG1hcE91dHB1dHMob3V0cHV0c01hcHBpbmcpO1xufTtcbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-add.d.ts","sourceRoot":"","sources":["../../src/lib/provider-add.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO1C,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,wBAAsB,WAAW,CAAC,EAChC,SAAS,EACT,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,IAAI,EACJ,UAAU,GACX,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAsBpC"}
@@ -0,0 +1,30 @@
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.providerAdd = void 0;
8
+ const dependency_manager_1 = require("./dependencies/dependency-manager");
9
+ const init_1 = require("./init");
10
+ async function providerAdd({ providers, language, projectDirectory, cdktfVersion, dist, forceLocal, }) {
11
+ const version = cdktfVersion || (await (0, init_1.determineDeps)(cdktfVersion, dist)).cdktf_version;
12
+ const manager = new dependency_manager_1.DependencyManager(language, version, projectDirectory);
13
+ let needsGet = false;
14
+ for (const provider of providers) {
15
+ const constraint = dependency_manager_1.ProviderConstraint.fromConfigEntry(provider);
16
+ if (forceLocal) {
17
+ needsGet = true;
18
+ await manager.addLocalProvider(constraint);
19
+ }
20
+ else {
21
+ const { addedLocalProvider } = await manager.addProvider(constraint);
22
+ if (addedLocalProvider) {
23
+ needsGet = true;
24
+ }
25
+ }
26
+ }
27
+ return needsGet;
28
+ }
29
+ exports.providerAdd = providerAdd;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXItYWRkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wcm92aWRlci1hZGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBR0gsMEVBRzJDO0FBQzNDLGlDQUF1QztBQVdoQyxLQUFLLFVBQVUsV0FBVyxDQUFDLEVBQ2hDLFNBQVMsRUFDVCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFlBQVksRUFDWixJQUFJLEVBQ0osVUFBVSxHQUNNO0lBQ2hCLE1BQU0sT0FBTyxHQUNYLFlBQVksSUFBSSxDQUFDLE1BQU0sSUFBQSxvQkFBYSxFQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQztJQUUxRSxNQUFNLE9BQU8sR0FBRyxJQUFJLHNDQUFpQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUUzRSxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFckIsS0FBSyxNQUFNLFFBQVEsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNqQyxNQUFNLFVBQVUsR0FBRyx1Q0FBa0IsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDaEIsTUFBTSxPQUFPLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0MsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDckUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO2dCQUN2QixRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUE3QkQsa0NBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbiAqL1xuXG5pbXBvcnQgeyBMYW5ndWFnZSB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHtcbiAgRGVwZW5kZW5jeU1hbmFnZXIsXG4gIFByb3ZpZGVyQ29uc3RyYWludCxcbn0gZnJvbSBcIi4vZGVwZW5kZW5jaWVzL2RlcGVuZGVuY3ktbWFuYWdlclwiO1xuaW1wb3J0IHsgZGV0ZXJtaW5lRGVwcyB9IGZyb20gXCIuL2luaXRcIjtcblxuZXhwb3J0IHR5cGUgUHJvdmlkZXJBZGRBcmdzID0ge1xuICBwcm92aWRlcnM6IHN0cmluZ1tdO1xuICBsYW5ndWFnZTogTGFuZ3VhZ2U7XG4gIHByb2plY3REaXJlY3Rvcnk6IHN0cmluZztcbiAgY2RrdGZWZXJzaW9uPzogc3RyaW5nO1xuICBmb3JjZUxvY2FsPzogYm9vbGVhbjtcbiAgZGlzdD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm92aWRlckFkZCh7XG4gIHByb3ZpZGVycyxcbiAgbGFuZ3VhZ2UsXG4gIHByb2plY3REaXJlY3RvcnksXG4gIGNka3RmVmVyc2lvbixcbiAgZGlzdCxcbiAgZm9yY2VMb2NhbCxcbn06IFByb3ZpZGVyQWRkQXJncyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB2ZXJzaW9uID1cbiAgICBjZGt0ZlZlcnNpb24gfHwgKGF3YWl0IGRldGVybWluZURlcHMoY2RrdGZWZXJzaW9uLCBkaXN0KSkuY2RrdGZfdmVyc2lvbjtcblxuICBjb25zdCBtYW5hZ2VyID0gbmV3IERlcGVuZGVuY3lNYW5hZ2VyKGxhbmd1YWdlLCB2ZXJzaW9uLCBwcm9qZWN0RGlyZWN0b3J5KTtcblxuICBsZXQgbmVlZHNHZXQgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHByb3ZpZGVyIG9mIHByb3ZpZGVycykge1xuICAgIGNvbnN0IGNvbnN0cmFpbnQgPSBQcm92aWRlckNvbnN0cmFpbnQuZnJvbUNvbmZpZ0VudHJ5KHByb3ZpZGVyKTtcbiAgICBpZiAoZm9yY2VMb2NhbCkge1xuICAgICAgbmVlZHNHZXQgPSB0cnVlO1xuICAgICAgYXdhaXQgbWFuYWdlci5hZGRMb2NhbFByb3ZpZGVyKGNvbnN0cmFpbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB7IGFkZGVkTG9jYWxQcm92aWRlciB9ID0gYXdhaXQgbWFuYWdlci5hZGRQcm92aWRlcihjb25zdHJhaW50KTtcbiAgICAgIGlmIChhZGRlZExvY2FsUHJvdmlkZXIpIHtcbiAgICAgICAgbmVlZHNHZXQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZWVkc0dldDtcbn1cbiJdfQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terraform-logs.d.ts","sourceRoot":"","sources":["../../../src/lib/server/terraform-logs.ts"],"names":[],"mappings":"AAWA,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractJsonLogIfPresent = void 0;
4
+ // Copyright (c) HashiCorp, Inc
5
+ // SPDX-License-Identifier: MPL-2.0
6
+ function extractJsonLogLineIfPresent(logLine) {
7
+ try {
8
+ const extractedMessage = JSON.parse(logLine)["@message"];
9
+ return extractedMessage ? extractedMessage.trim() : logLine;
10
+ }
11
+ catch (e) {
12
+ return logLine;
13
+ }
14
+ }
15
+ function extractJsonLogIfPresent(logLines) {
16
+ return logLines.split("\n").map(extractJsonLogLineIfPresent).join("\n");
17
+ }
18
+ exports.extractJsonLogIfPresent = extractJsonLogIfPresent;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVycmFmb3JtLWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3NlcnZlci90ZXJyYWZvcm0tbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLFNBQVMsMkJBQTJCLENBQUMsT0FBZTtJQUNsRCxJQUFJLENBQUM7UUFDSCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekQsT0FBTyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUM5RCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsUUFBZ0I7SUFDdEQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRkQsMERBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuZnVuY3Rpb24gZXh0cmFjdEpzb25Mb2dMaW5lSWZQcmVzZW50KGxvZ0xpbmU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHRyeSB7XG4gICAgY29uc3QgZXh0cmFjdGVkTWVzc2FnZSA9IEpTT04ucGFyc2UobG9nTGluZSlbXCJAbWVzc2FnZVwiXTtcbiAgICByZXR1cm4gZXh0cmFjdGVkTWVzc2FnZSA/IGV4dHJhY3RlZE1lc3NhZ2UudHJpbSgpIDogbG9nTGluZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBsb2dMaW5lO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0SnNvbkxvZ0lmUHJlc2VudChsb2dMaW5lczogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGxvZ0xpbmVzLnNwbGl0KFwiXFxuXCIpLm1hcChleHRyYWN0SnNvbkxvZ0xpbmVJZlByZXNlbnQpLmpvaW4oXCJcXG5cIik7XG59XG4iXX0=
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import { StackManifest, TerraformStackMetadata } from "cdktn";
2
3
  export interface SynthesizedStackMetadata {
3
4
  "//"?: {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synth-stack.d.ts","sourceRoot":"","sources":["../../src/lib/synth-stack.ts"],"names":[],"mappings":";AAMA,OAAO,EAGL,aAAa,EACb,sBAAsB,EACvB,MAAM,OAAO,CAAC;AAQf,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAE,CAAC;CAClD;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,iBAAiB;IAKhB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ5B,aAAa,EAAE,gBAAgB,EAAE,CAAM;IACvC,cAAc,EAAE,gBAAgB,EAAE,CAAM;IACxC,cAAc,EAAE,gBAAgB,EAAE,CAAM;gBAElB,MAAM,EAAE,gBAAgB,EAAE;IAIhD,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAOvC,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAO/C,IAAW,uBAAuB,IAAI,gBAAgB,EAAE,CAYvD;CACF;AAOD,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC;AAElC,qBAAa,UAAU;WACD,KAAK,CACvB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,gBAAgB,SAAgB,EAChC,QAAQ,UAAQ,EAAE,0DAA0D;IAC5E,OAAO,UAAQ,EACf,WAAW,CAAC,EAAE,WAAW,EACzB,GAAG,UAAQ,GACV,OAAO,CAAC,gBAAgB,EAAE,CAAC;WAmIV,cAAc,CAAC,MAAM,EAAE,MAAM;WAsB7B,qBAAqB,CACvC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,EAAE,CAAC;WAkCV,cAAc,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,gBAAgB,EAAE,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;WAiBI,mBAAmB,CAAC,WAAW,CAAC,EAAE,WAAW;CAGlE"}