@microsoft/terraform-cdk-constructs 0.0.3-pre.10 → 0.0.3-pre.12

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 (202) hide show
  1. package/.jsii +858 -681
  2. package/API.md +499 -405
  3. package/README.md +4 -5
  4. package/docs/testing.md +39 -137
  5. package/lib/azure-actiongroup/lib/actiongroup.d.ts +1 -1
  6. package/lib/azure-actiongroup/lib/actiongroup.js +4 -4
  7. package/lib/azure-actiongroup/model/action-group-props.d.ts +3 -2
  8. package/lib/azure-actiongroup/model/action-group-props.js +1 -1
  9. package/lib/azure-actiongroup/test/AzureActionGroup.integ.js +66 -0
  10. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +5 -33
  11. package/lib/azure-applicationgateway/lib/gateway.d.ts +5 -3
  12. package/lib/azure-applicationgateway/lib/gateway.js +14 -7
  13. package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.d.ts +1 -0
  14. package/lib/azure-applicationgateway/test/AzureApplicationGateway.integ.js +272 -0
  15. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +3 -35
  16. package/lib/azure-applicationinsights/lib/appinsights.d.ts +4 -3
  17. package/lib/azure-applicationinsights/lib/appinsights.js +6 -6
  18. package/lib/azure-applicationinsights/test/AzureAppInsights.integ.d.ts +1 -0
  19. package/lib/azure-applicationinsights/test/AzureAppInsights.integ.js +101 -0
  20. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +4 -27
  21. package/lib/azure-containerregistry/lib/registry.d.ts +4 -3
  22. package/lib/azure-containerregistry/lib/registry.js +5 -5
  23. package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.d.ts +1 -0
  24. package/lib/azure-containerregistry/test/AzureContainerRegistry.integ.js +68 -0
  25. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +4 -23
  26. package/lib/azure-datalake/lib/datalake.d.ts +1 -0
  27. package/lib/azure-datalake/lib/datalake.js +2 -1
  28. package/lib/azure-datalake/test/AzureDatalake.spec.d.ts +1 -0
  29. package/lib/azure-datalake/test/AzureDatalake.spec.js +32 -0
  30. package/lib/azure-datalake/test/AzureStorageAccount.integ.d.ts +1 -0
  31. package/lib/azure-datalake/test/AzureStorageAccount.integ.js +60 -0
  32. package/lib/azure-eventhub/lib/authorization.js +1 -1
  33. package/lib/azure-eventhub/lib/consumer.js +1 -1
  34. package/lib/azure-eventhub/lib/{cluster.d.ts → eventhubcluster.d.ts} +11 -7
  35. package/lib/azure-eventhub/lib/eventhubcluster.js +64 -0
  36. package/lib/azure-eventhub/lib/index.d.ts +1 -1
  37. package/lib/azure-eventhub/lib/index.js +2 -2
  38. package/lib/azure-eventhub/lib/instance.d.ts +1 -0
  39. package/lib/azure-eventhub/lib/instance.js +5 -4
  40. package/lib/azure-eventhub/lib/kusto-connection.js +1 -1
  41. package/lib/azure-eventhub/lib/namespace.d.ts +7 -6
  42. package/lib/azure-eventhub/lib/namespace.js +24 -26
  43. package/lib/azure-eventhub/test/AzureEventhub.integ.d.ts +1 -0
  44. package/lib/azure-eventhub/test/AzureEventhub.integ.js +72 -0
  45. package/lib/azure-eventhub/test/AzureEventhub.spec.js +4 -27
  46. package/lib/azure-functionapp/lib/functionapplinux.js +1 -1
  47. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.d.ts +1 -0
  48. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.integ.js +117 -0
  49. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +4 -21
  50. package/lib/azure-keyvault/lib/certificate.js +2 -2
  51. package/lib/azure-keyvault/lib/key.js +1 -1
  52. package/lib/azure-keyvault/lib/policy.js +1 -1
  53. package/lib/azure-keyvault/lib/secret.js +1 -1
  54. package/lib/azure-keyvault/lib/vault.d.ts +3 -2
  55. package/lib/azure-keyvault/lib/vault.js +4 -4
  56. package/lib/azure-keyvault/test/AzureKeyVault.integ.d.ts +1 -0
  57. package/lib/azure-keyvault/test/AzureKeyVault.integ.js +119 -0
  58. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +4 -35
  59. package/lib/azure-kubernetes/lib/cluster.js +1 -1
  60. package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.d.ts +1 -0
  61. package/lib/azure-kubernetes/test/AzureKubernetesCluster.integ.js +75 -0
  62. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +4 -21
  63. package/lib/azure-kusto/lib/cluster.d.ts +9 -5
  64. package/lib/azure-kusto/lib/cluster.js +66 -42
  65. package/lib/azure-kusto/lib/compute-specification.js +1 -1
  66. package/lib/azure-kusto/lib/database.d.ts +7 -8
  67. package/lib/azure-kusto/lib/database.js +23 -25
  68. package/lib/azure-kusto/test/AzureKusto.integ.d.ts +1 -0
  69. package/lib/azure-kusto/test/AzureKusto.integ.js +74 -0
  70. package/lib/azure-kusto/test/AzureKusto.spec.js +3 -22
  71. package/lib/azure-loganalytics/lib/workspace.d.ts +6 -3
  72. package/lib/azure-loganalytics/lib/workspace.js +7 -6
  73. package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.d.ts +1 -0
  74. package/lib/azure-loganalytics/test/AzureLogAnalytics.integ.js +117 -0
  75. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +4 -23
  76. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  77. package/lib/azure-metricalert/test/AzureMetricAlert.integ.d.ts +1 -0
  78. package/lib/azure-metricalert/test/AzureMetricAlert.integ.js +85 -0
  79. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +4 -21
  80. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +1 -1
  81. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +4 -3
  82. package/lib/azure-networksecuritygroup/lib/securitygroup.js +7 -7
  83. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.d.ts +1 -0
  84. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.integ.js +85 -0
  85. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +4 -23
  86. package/lib/azure-queryrulealert/lib/query-rule-alert.js +1 -1
  87. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.d.ts +1 -0
  88. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.integ.js +63 -0
  89. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +4 -21
  90. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  91. package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.d.ts +1 -0
  92. package/lib/azure-resourcegroup/test/AzureResourceGroup.integ.js +41 -0
  93. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +4 -17
  94. package/lib/azure-storageaccount/lib/account.d.ts +5 -0
  95. package/lib/azure-storageaccount/lib/account.js +3 -2
  96. package/lib/azure-storageaccount/lib/container.js +2 -2
  97. package/lib/azure-storageaccount/lib/fileshare.js +2 -2
  98. package/lib/azure-storageaccount/lib/queue.js +1 -1
  99. package/lib/azure-storageaccount/lib/table.js +1 -1
  100. package/lib/azure-storageaccount/test/AzureStorageAccount.integ.d.ts +1 -0
  101. package/lib/azure-storageaccount/test/AzureStorageAccount.integ.js +84 -0
  102. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +4 -17
  103. package/lib/azure-virtualmachine/lib/image-references.js +2 -2
  104. package/lib/azure-virtualmachine/lib/vm.d.ts +29 -6
  105. package/lib/azure-virtualmachine/lib/vm.js +17 -15
  106. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.d.ts +1 -0
  107. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.integ.js +109 -0
  108. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +5 -25
  109. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.d.ts +1 -0
  110. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.integ.js +105 -0
  111. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +4 -23
  112. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +28 -6
  113. package/lib/azure-virtualmachinescaleset/lib/cluster.js +13 -11
  114. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.d.ts +1 -0
  115. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.integ.js +113 -0
  116. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +5 -25
  117. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.d.ts +1 -0
  118. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.integ.js +109 -0
  119. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +4 -23
  120. package/lib/azure-virtualnetwork/lib/network.d.ts +4 -3
  121. package/lib/azure-virtualnetwork/lib/network.js +7 -6
  122. package/lib/azure-virtualnetwork/lib/peering.js +1 -1
  123. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.d.ts +1 -0
  124. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.integ.js +92 -0
  125. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +5 -25
  126. package/lib/core-azure/lib/diagsettings.d.ts +3 -2
  127. package/lib/core-azure/lib/diagsettings.js +15 -21
  128. package/lib/core-azure/lib/rbac.js +1 -1
  129. package/lib/core-azure/lib/resource.js +6 -4
  130. package/lib/core-azure/test/AzureResource.integ.d.ts +1 -0
  131. package/lib/core-azure/test/AzureResource.integ.js +75 -0
  132. package/lib/testing/index.d.ts +34 -0
  133. package/lib/testing/index.js +235 -2
  134. package/package.json +32 -11
  135. package/cdktf.out/manifest.json +0 -13
  136. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
  137. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
  138. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
  139. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
  140. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
  141. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
  142. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
  143. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
  144. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
  145. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
  146. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  147. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
  148. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
  149. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
  150. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
  151. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
  152. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
  153. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
  154. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
  155. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
  156. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
  157. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
  158. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
  159. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
  160. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
  161. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
  162. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
  163. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
  164. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
  165. package/lib/azure-eventhub/lib/cluster.js +0 -64
  166. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
  167. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
  168. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
  169. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
  170. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
  171. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
  172. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
  173. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
  174. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
  175. package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
  176. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
  177. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
  178. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
  179. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
  180. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
  181. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
  182. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
  183. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
  184. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
  185. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
  186. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
  187. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
  188. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
  189. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
  190. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
  191. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
  192. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
  193. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
  194. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
  195. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
  196. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
  197. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
  198. package/lib/core-azure/test/AzureResource.spec.js +0 -19
  199. package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
  200. package/lib/core-azure/test/ExampleAzureResource.js +0 -67
  201. package/tfsec.json +0 -4
  202. /package/lib/{core-azure/test/AzureResource.spec.d.ts → azure-actiongroup/test/AzureActionGroup.integ.d.ts} +0 -0
@@ -75,6 +75,8 @@ class AzureResource extends constructs_1.Construct {
75
75
  storageAccountId: props.storageAccountId,
76
76
  targetResourceId: this.id,
77
77
  logAnalyticsDestinationType: undefined,
78
+ log: props?.log,
79
+ metric: props?.metric,
78
80
  });
79
81
  }
80
82
  setupResourceGroup(props) {
@@ -82,7 +84,7 @@ class AzureResource extends constructs_1.Construct {
82
84
  // Create a new resource group
83
85
  const newResourceGroup = new resource_group_1.ResourceGroup(this, "rg", {
84
86
  name: `rg-${props.name}`,
85
- location: props.location,
87
+ location: props.location || "eastus",
86
88
  tags: props.tags,
87
89
  });
88
90
  // Use the name of the new resource group
@@ -96,7 +98,7 @@ class AzureResource extends constructs_1.Construct {
96
98
  }
97
99
  exports.AzureResource = AzureResource;
98
100
  _a = JSII_RTTI_SYMBOL_1;
99
- AzureResource[_a] = { fqn: "@microsoft/terraform-cdk-constructs.core_azure.AzureResource", version: "0.0.3-pre.10" };
101
+ AzureResource[_a] = { fqn: "@microsoft/terraform-cdk-constructs.core_azure.AzureResource", version: "0.0.3-pre.12" };
100
102
  class AzureResourceWithAlert extends AzureResource {
101
103
  addQueryRuleAlert(props) {
102
104
  new queryalert.QueryRuleAlert(this, "queryrulealert", {
@@ -114,5 +116,5 @@ class AzureResourceWithAlert extends AzureResource {
114
116
  }
115
117
  exports.AzureResourceWithAlert = AzureResourceWithAlert;
116
118
  _b = JSII_RTTI_SYMBOL_1;
117
- AzureResourceWithAlert[_b] = { fqn: "@microsoft/terraform-cdk-constructs.core_azure.AzureResourceWithAlert", version: "0.0.3-pre.10" };
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRUFBMkU7QUFDM0UsMkNBQXVDO0FBQ3ZDLGlEQUd3QjtBQUN4QixpQ0FBOEI7QUFDOUIsdURBQXVEO0FBQ3ZELHlEQUF5RDtBQUV6RCxNQUFzQixhQUFjLFNBQVEsc0JBQVM7SUFJbkQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxTQUFTLENBQUMsUUFBZ0IsRUFBRSxjQUFzQjtRQUN2RCxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLGNBQWMsRUFBRTtZQUN4QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixrQkFBa0IsRUFBRSxjQUFjO1lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTRCRztJQUNJLGVBQWUsQ0FDcEIsS0FBa0M7UUFFbEMsT0FBTyxJQUFJLGlDQUFrQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksZUFBZTtZQUNuQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1lBQ3RELDJCQUEyQixFQUFFLEtBQUssQ0FBQywyQkFBMkI7WUFDOUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDekIsMkJBQTJCLEVBQUUsU0FBUztTQUN2QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsa0JBQWtCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUN4Qiw4QkFBOEI7WUFDOUIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLDhCQUFhLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtnQkFDckQsSUFBSSxFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDeEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7YUFDakIsQ0FBQyxDQUFDO1lBQ0gseUNBQXlDO1lBQ3pDLE9BQU8sZ0JBQWdCLENBQUM7U0FDekI7YUFBTTtZQUNMLHVDQUF1QztZQUN2QyxPQUFPLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDNUI7SUFDSCxDQUFDOztBQTFGSCxzQ0EyRkM7OztBQUVELE1BQXNCLHNCQUF1QixTQUFRLGFBQWE7SUFDekQsaUJBQWlCLENBQUMsS0FBOEM7UUFDckUsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNwRCxHQUFHLEtBQUs7WUFDUixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2xCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBd0M7UUFDNUQsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0MsR0FBRyxLQUFLO1lBQ1IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFkSCx3REFlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgRGlhZ25vc3RpY1NldHRpbmdzLFxuICBCYXNlRGlhZ25vc3RpY1NldHRpbmdzUHJvcHMsXG59IGZyb20gXCIuL2RpYWdzZXR0aW5nc1wiO1xuaW1wb3J0IHsgUmJhYyB9IGZyb20gXCIuL3JiYWNcIjtcbmltcG9ydCAqIGFzIG1ldHJpY2FsZXJ0IGZyb20gXCIuLi8uLi9henVyZS1tZXRyaWNhbGVydFwiO1xuaW1wb3J0ICogYXMgcXVlcnlhbGVydCBmcm9tIFwiLi4vLi4vYXp1cmUtcXVlcnlydWxlYWxlcnRcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF6dXJlUmVzb3VyY2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYWNjZXNzIHJvbGUgYXNzaWdubWVudCBmb3IgYSBzcGVjaWZpZWQgQXp1cmUgQUQgb2JqZWN0IChlLmcuLCB1c2VyLCBncm91cCwgc2VydmljZSBwcmluY2lwYWwpIHdpdGhpbiB0aGlzIFJCQUMgY29uc3RydWN0J3Mgc2NvcGUuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBuZXcgcm9sZSBhc3NpZ25tZW50IHdoaWNoIGdyYW50cyB0aGUgc3BlY2lmaWVkIEF6dXJlIEFEIG9iamVjdCBhY2Nlc3MgdG8gcmVzb3VyY2VzXG4gICAqIGF0IHRoZSBzY29wZSBkZWZpbmVkIGJ5IHRoaXMgY29uc3RydWN0LiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJvZ3JhbW1hdGljYWxseSBtYW5hZ2luZyBhY2Nlc3MgY29udHJvbHMsXG4gICAqIGVuc3VyaW5nIG9ubHkgYXV0aG9yaXplZCB1c2VycyBvciBzeXN0ZW1zIGNhbiBwZXJmb3JtIHNwZWNpZmljIGFjdGlvbnMgb24gQXp1cmUgcmVzb3VyY2VzLlxuICAgKlxuICAgKiBAcGFyYW0gb2JqZWN0SWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIEF6dXJlIEFEIG9iamVjdCAodXNlciwgZ3JvdXAsIG9yIHNlcnZpY2UgcHJpbmNpcGFsKSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgcm9sZSBhc3NpZ25tZW50LlxuICAgKiBAcGFyYW0gY3VzdG9tUm9sZU5hbWUgLSBUaGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgQXp1cmUgUkJBQyByb2xlIHRvIGJlIGFzc2lnbmVkLiBUaGlzIHJvbGUgZGVmaW5lcyB0aGUgcGVybWlzc2lvbnMgdGhhdCB0aGUgb2JqZWN0IHdpbGwgaGF2ZS5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiAvLyBFeGFtcGxlOiBBc3NpZ24gYSBcIlJlYWRlclwiIHJvbGUgdG8gYSB1c2VyIGZvciB0aGUgY3VycmVudCBSQkFDIHNjb3BlXG4gICAqIHJiYWNJbnN0YW5jZS5hZGRBY2Nlc3MoJ3VzZXItb2JqZWN0LWlkJywgJ1JlYWRlcicpO1xuICAgKiBgYGBcbiAgICovXG4gIHB1YmxpYyBhZGRBY2Nlc3Mob2JqZWN0SWQ6IHN0cmluZywgY3VzdG9tUm9sZU5hbWU6IHN0cmluZykge1xuICAgIG5ldyBSYmFjKHRoaXMsIG9iamVjdElkICsgY3VzdG9tUm9sZU5hbWUsIHtcbiAgICAgIG9iamVjdElkOiBvYmplY3RJZCxcbiAgICAgIHJvbGVEZWZpbml0aW9uTmFtZTogY3VzdG9tUm9sZU5hbWUsXG4gICAgICBzY29wZTogdGhpcy5pZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGRpYWdub3N0aWMgc2V0dGluZ3MgdG8gYSBzcGVjaWZpZWQgcmVzb3VyY2Ugd2l0aGluIHRoaXMgY29uc3RydWN0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGEgbmV3IERpYWdub3N0aWNTZXR0aW5ncyBpbnN0YW5jZSB3aGljaCBjYXB0dXJlcyBhbmQgcm91dGVzXG4gICAqIGRpYWdub3N0aWMgZGF0YSAobG9ncyBhbmQgbWV0cmljcykgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlvbnMgc3VjaCBhcyBBenVyZSBNb25pdG9yLFxuICAgKiBhbiBFdmVudCBIdWJzIGluc3RhbmNlLCBhIExvZyBBbmFseXRpY3Mgd29ya3NwYWNlLCBvciBhbiBBenVyZSBTdG9yYWdlIGFjY291bnQuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyAtIFRoZSBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGNvbmZpZ3VyZSB0aGUgZGlhZ25vc3RpYyBzZXR0aW5ncy4gVGhlc2UgaW5jbHVkZTpcbiAgICogICAgICAgICAgICAgICAgLSBgbmFtZWA6IE9wdGlvbmFsLiBUaGUgbmFtZSBvZiB0aGUgZGlhZ25vc3RpYyBzZXR0aW5ncyByZXNvdXJjZS4gRGVmYXVsdHMgdG8gJ2RpYWctc2V0dGluZ3MnLlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2dBbmFseXRpY3NXb3Jrc3BhY2VJZGA6IE9wdGlvbmFsLiBUaGUgaWRlbnRpZmllciBvZiB0aGUgTG9nIEFuYWx5dGljcyB3b3Jrc3BhY2UgdG8gc2VuZCBsb2dzLlxuICAgKiAgICAgICAgICAgICAgICAtIGBldmVudGh1YkF1dGhvcml6YXRpb25SdWxlSWRgOiBPcHRpb25hbC4gVGhlIGF1dGhvcml6YXRpb24gcnVsZSBJRCBmb3IgYW4gRXZlbnQgSHViIHdoZXJlIGxvZ3Mgd2lsbCBiZSBmb3J3YXJkZWQuXG4gICAqICAgICAgICAgICAgICAgIC0gYGV2ZW50aHViTmFtZWA6IE9wdGlvbmFsLiBUaGUgbmFtZSBvZiB0aGUgRXZlbnQgSHViIHRvIHdoaWNoIGxvZ3Mgd2lsbCBiZSBzZW50LlxuICAgKiAgICAgICAgICAgICAgICAtIGBzdG9yYWdlQWNjb3VudElkYDogT3B0aW9uYWwuIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBBenVyZSBTdG9yYWdlIGFjY291bnQgd2hlcmUgbG9ncyB3aWxsIGJlIHN0b3JlZC5cbiAgICogICAgICAgICAgICAgICAgLSBgbG9nQW5hbHl0aWNzRGVzdGluYXRpb25UeXBlYDogT3B0aW9uYWwuIERldGVybWluZXMgaWYgbG9ncyBhcmUgc2VudCB0byBkZWRpY2F0ZWQgb3IgbGVnYWN5IHRhYmxlcyBpbiBMb2cgQW5hbHl0aWNzLiBEZWZhdWx0cyB0byB1bmRlZmluZWQgd2hpY2ggdXNlcyB0aGUgZGVmYXVsdCBzZXR0aW5ncy5cbiAgICogICAgICAgICAgICAgICAgVGhlIGB0YXJnZXRSZXNvdXJjZUlkYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgSUQgb2YgdGhpcyBjb25zdHJ1Y3QgaW5zdGFuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIGluc3RhbmNlIG9mIHRoZSBEaWFnbm9zdGljU2V0dGluZ3MgY2xhc3MsIGNvbmZpZ3VyZWQgd2l0aCB0aGUgcHJvdmlkZWQgcHJvcGVydGllcy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBkaWFnU2V0dGluZ3MgPSByZXNvdXJjZS5hZGREaWFnU2V0dGluZ3Moe1xuICAgKiAgIG5hbWU6ICdjdXN0b20tZGlhZy1zZXR0aW5ncycsXG4gICAqICAgbG9nQW5hbHl0aWNzV29ya3NwYWNlSWQ6ICd3b3Jrc3BhY2UtaWQnLFxuICAgKiAgIGV2ZW50aHViQXV0aG9yaXphdGlvblJ1bGVJZDogJ2F1dGgtcnVsZS1pZCcsXG4gICAqICAgZXZlbnRodWJOYW1lOiAnZXZlbnRodWItbmFtZScsXG4gICAqICAgc3RvcmFnZUFjY291bnRJZDogJ3N0b3JhZ2UtYWNjb3VudC1pZCdcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFkZERpYWdTZXR0aW5ncyhcbiAgICBwcm9wczogQmFzZURpYWdub3N0aWNTZXR0aW5nc1Byb3BzLFxuICApOiBEaWFnbm9zdGljU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgRGlhZ25vc3RpY1NldHRpbmdzKHRoaXMsIFwiZGlhZ3NldHRpbmdzXCIsIHtcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUgfHwgXCJkaWFnLXNldHRpbmdzXCIsXG4gICAgICBsb2dBbmFseXRpY3NXb3Jrc3BhY2VJZDogcHJvcHMubG9nQW5hbHl0aWNzV29ya3NwYWNlSWQsXG4gICAgICBldmVudGh1YkF1dGhvcml6YXRpb25SdWxlSWQ6IHByb3BzLmV2ZW50aHViQXV0aG9yaXphdGlvblJ1bGVJZCxcbiAgICAgIGV2ZW50aHViTmFtZTogcHJvcHMuZXZlbnRodWJOYW1lLFxuICAgICAgc3RvcmFnZUFjY291bnRJZDogcHJvcHMuc3RvcmFnZUFjY291bnRJZCxcbiAgICAgIHRhcmdldFJlc291cmNlSWQ6IHRoaXMuaWQsXG4gICAgICBsb2dBbmFseXRpY3NEZXN0aW5hdGlvblR5cGU6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXR1cFJlc291cmNlR3JvdXAocHJvcHM6IGFueSk6IFJlc291cmNlR3JvdXAge1xuICAgIGlmICghcHJvcHMucmVzb3VyY2VHcm91cCkge1xuICAgICAgLy8gQ3JlYXRlIGEgbmV3IHJlc291cmNlIGdyb3VwXG4gICAgICBjb25zdCBuZXdSZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJyZ1wiLCB7XG4gICAgICAgIG5hbWU6IGByZy0ke3Byb3BzLm5hbWV9YCxcbiAgICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgfSk7XG4gICAgICAvLyBVc2UgdGhlIG5hbWUgb2YgdGhlIG5ldyByZXNvdXJjZSBncm91cFxuICAgICAgcmV0dXJuIG5ld1Jlc291cmNlR3JvdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVzZSB0aGUgcHJvdmlkZWQgcmVzb3VyY2UgZ3JvdXAgbmFtZVxuICAgICAgcmV0dXJuIHByb3BzLnJlc291cmNlR3JvdXA7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBenVyZVJlc291cmNlV2l0aEFsZXJ0IGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gIHB1YmxpYyBhZGRRdWVyeVJ1bGVBbGVydChwcm9wczogcXVlcnlhbGVydC5CYXNlQXp1cmVRdWVyeVJ1bGVBbGVydFByb3BzKSB7XG4gICAgbmV3IHF1ZXJ5YWxlcnQuUXVlcnlSdWxlQWxlcnQodGhpcywgXCJxdWVyeXJ1bGVhbGVydFwiLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHNjb3BlczogW3RoaXMuaWRdLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1ldHJpY0FsZXJ0KHByb3BzOiBtZXRyaWNhbGVydC5JQmFzZU1ldHJpY0FsZXJ0UHJvcHMpIHtcbiAgICBuZXcgbWV0cmljYWxlcnQuTWV0cmljQWxlcnQodGhpcywgXCJtZXRyaWNhbGVydFwiLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJlc291cmNlR3JvdXA6IHRoaXMucmVzb3VyY2VHcm91cCxcbiAgICAgIHNjb3BlczogW3RoaXMuaWRdLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
119
+ AzureResourceWithAlert[_b] = { fqn: "@microsoft/terraform-cdk-constructs.core_azure.AzureResourceWithAlert", version: "0.0.3-pre.12" };
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS1henVyZS9saWIvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRUFBMkU7QUFDM0UsMkNBQXVDO0FBQ3ZDLGlEQUd3QjtBQUN4QixpQ0FBOEI7QUFDOUIsdURBQXVEO0FBQ3ZELHlEQUF5RDtBQUV6RCxNQUFzQixhQUFjLFNBQVEsc0JBQVM7SUFJbkQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSSxTQUFTLENBQUMsUUFBZ0IsRUFBRSxjQUFzQjtRQUN2RCxJQUFJLFdBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxHQUFHLGNBQWMsRUFBRTtZQUN4QyxRQUFRLEVBQUUsUUFBUTtZQUNsQixrQkFBa0IsRUFBRSxjQUFjO1lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtTQUNmLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQTRCRztJQUNJLGVBQWUsQ0FDcEIsS0FBa0M7UUFFbEMsT0FBTyxJQUFJLGlDQUFrQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDbEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLElBQUksZUFBZTtZQUNuQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCO1lBQ3RELDJCQUEyQixFQUFFLEtBQUssQ0FBQywyQkFBMkI7WUFDOUQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7WUFDeEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDekIsMkJBQTJCLEVBQUUsU0FBUztZQUN0QyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUc7WUFDZixNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU07U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLGtCQUFrQixDQUFDLEtBQVU7UUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDeEIsOEJBQThCO1lBQzlCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSw4QkFBYSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQ3JELElBQUksRUFBRSxNQUFNLEtBQUssQ0FBQyxJQUFJLEVBQUU7Z0JBQ3hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxJQUFJLFFBQVE7Z0JBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUM7WUFDSCx5Q0FBeUM7WUFDekMsT0FBTyxnQkFBZ0IsQ0FBQztTQUN6QjthQUFNO1lBQ0wsdUNBQXVDO1lBQ3ZDLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQztTQUM1QjtJQUNILENBQUM7O0FBNUZILHNDQTZGQzs7O0FBRUQsTUFBc0Isc0JBQXVCLFNBQVEsYUFBYTtJQUN6RCxpQkFBaUIsQ0FBQyxLQUE4QztRQUNyRSxJQUFJLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3BELEdBQUcsS0FBSztZQUNSLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDbEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGNBQWMsQ0FBQyxLQUF3QztRQUM1RCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMvQyxHQUFHLEtBQUs7WUFDUixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWRILHdEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBEaWFnbm9zdGljU2V0dGluZ3MsXG4gIEJhc2VEaWFnbm9zdGljU2V0dGluZ3NQcm9wcyxcbn0gZnJvbSBcIi4vZGlhZ3NldHRpbmdzXCI7XG5pbXBvcnQgeyBSYmFjIH0gZnJvbSBcIi4vcmJhY1wiO1xuaW1wb3J0ICogYXMgbWV0cmljYWxlcnQgZnJvbSBcIi4uLy4uL2F6dXJlLW1ldHJpY2FsZXJ0XCI7XG5pbXBvcnQgKiBhcyBxdWVyeWFsZXJ0IGZyb20gXCIuLi8uLi9henVyZS1xdWVyeXJ1bGVhbGVydFwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXp1cmVSZXNvdXJjZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVzb3VyY2VHcm91cDogUmVzb3VyY2VHcm91cDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBhY2Nlc3Mgcm9sZSBhc3NpZ25tZW50IGZvciBhIHNwZWNpZmllZCBBenVyZSBBRCBvYmplY3QgKGUuZy4sIHVzZXIsIGdyb3VwLCBzZXJ2aWNlIHByaW5jaXBhbCkgd2l0aGluIHRoaXMgUkJBQyBjb25zdHJ1Y3QncyBzY29wZS5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIG5ldyByb2xlIGFzc2lnbm1lbnQgd2hpY2ggZ3JhbnRzIHRoZSBzcGVjaWZpZWQgQXp1cmUgQUQgb2JqZWN0IGFjY2VzcyB0byByZXNvdXJjZXNcbiAgICogYXQgdGhlIHNjb3BlIGRlZmluZWQgYnkgdGhpcyBjb25zdHJ1Y3QuIFRoaXMgaXMgdXNlZnVsIGZvciBwcm9ncmFtbWF0aWNhbGx5IG1hbmFnaW5nIGFjY2VzcyBjb250cm9scyxcbiAgICogZW5zdXJpbmcgb25seSBhdXRob3JpemVkIHVzZXJzIG9yIHN5c3RlbXMgY2FuIHBlcmZvcm0gc3BlY2lmaWMgYWN0aW9ucyBvbiBBenVyZSByZXNvdXJjZXMuXG4gICAqXG4gICAqIEBwYXJhbSBvYmplY3RJZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgQXp1cmUgQUQgb2JqZWN0ICh1c2VyLCBncm91cCwgb3Igc2VydmljZSBwcmluY2lwYWwpIHRoYXQgd2lsbCByZWNlaXZlIHRoZSByb2xlIGFzc2lnbm1lbnQuXG4gICAqIEBwYXJhbSBjdXN0b21Sb2xlTmFtZSAtIFRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoZSBBenVyZSBSQkFDIHJvbGUgdG8gYmUgYXNzaWduZWQuIFRoaXMgcm9sZSBkZWZpbmVzIHRoZSBwZXJtaXNzaW9ucyB0aGF0IHRoZSBvYmplY3Qgd2lsbCBoYXZlLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIEV4YW1wbGU6IEFzc2lnbiBhIFwiUmVhZGVyXCIgcm9sZSB0byBhIHVzZXIgZm9yIHRoZSBjdXJyZW50IFJCQUMgc2NvcGVcbiAgICogcmJhY0luc3RhbmNlLmFkZEFjY2VzcygndXNlci1vYmplY3QtaWQnLCAnUmVhZGVyJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgcHVibGljIGFkZEFjY2VzcyhvYmplY3RJZDogc3RyaW5nLCBjdXN0b21Sb2xlTmFtZTogc3RyaW5nKSB7XG4gICAgbmV3IFJiYWModGhpcywgb2JqZWN0SWQgKyBjdXN0b21Sb2xlTmFtZSwge1xuICAgICAgb2JqZWN0SWQ6IG9iamVjdElkLFxuICAgICAgcm9sZURlZmluaXRpb25OYW1lOiBjdXN0b21Sb2xlTmFtZSxcbiAgICAgIHNjb3BlOiB0aGlzLmlkLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZGlhZ25vc3RpYyBzZXR0aW5ncyB0byBhIHNwZWNpZmllZCByZXNvdXJjZSB3aXRoaW4gdGhpcyBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYW5kIGNvbmZpZ3VyZXMgYSBuZXcgRGlhZ25vc3RpY1NldHRpbmdzIGluc3RhbmNlIHdoaWNoIGNhcHR1cmVzIGFuZCByb3V0ZXNcbiAgICogZGlhZ25vc3RpYyBkYXRhIChsb2dzIGFuZCBtZXRyaWNzKSB0byB0aGUgc3BlY2lmaWVkIGRlc3RpbmF0aW9ucyBzdWNoIGFzIEF6dXJlIE1vbml0b3IsXG4gICAqIGFuIEV2ZW50IEh1YnMgaW5zdGFuY2UsIGEgTG9nIEFuYWx5dGljcyB3b3Jrc3BhY2UsIG9yIGFuIEF6dXJlIFN0b3JhZ2UgYWNjb3VudC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBkaWFnbm9zdGljIHNldHRpbmdzLiBUaGVzZSBpbmNsdWRlOlxuICAgKiAgICAgICAgICAgICAgICAtIGBuYW1lYDogT3B0aW9uYWwuIFRoZSBuYW1lIG9mIHRoZSBkaWFnbm9zdGljIHNldHRpbmdzIHJlc291cmNlLiBEZWZhdWx0cyB0byAnZGlhZy1zZXR0aW5ncycuXG4gICAqICAgICAgICAgICAgICAgIC0gYGxvZ0FuYWx5dGljc1dvcmtzcGFjZUlkYDogT3B0aW9uYWwuIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBMb2cgQW5hbHl0aWNzIHdvcmtzcGFjZSB0byBzZW5kIGxvZ3MuXG4gICAqICAgICAgICAgICAgICAgIC0gYGV2ZW50aHViQXV0aG9yaXphdGlvblJ1bGVJZGA6IE9wdGlvbmFsLiBUaGUgYXV0aG9yaXphdGlvbiBydWxlIElEIGZvciBhbiBFdmVudCBIdWIgd2hlcmUgbG9ncyB3aWxsIGJlIGZvcndhcmRlZC5cbiAgICogICAgICAgICAgICAgICAgLSBgZXZlbnRodWJOYW1lYDogT3B0aW9uYWwuIFRoZSBuYW1lIG9mIHRoZSBFdmVudCBIdWIgdG8gd2hpY2ggbG9ncyB3aWxsIGJlIHNlbnQuXG4gICAqICAgICAgICAgICAgICAgIC0gYHN0b3JhZ2VBY2NvdW50SWRgOiBPcHRpb25hbC4gVGhlIGlkZW50aWZpZXIgb2YgdGhlIEF6dXJlIFN0b3JhZ2UgYWNjb3VudCB3aGVyZSBsb2dzIHdpbGwgYmUgc3RvcmVkLlxuICAgKiAgICAgICAgICAgICAgICAtIGBsb2dBbmFseXRpY3NEZXN0aW5hdGlvblR5cGVgOiBPcHRpb25hbC4gRGV0ZXJtaW5lcyBpZiBsb2dzIGFyZSBzZW50IHRvIGRlZGljYXRlZCBvciBsZWdhY3kgdGFibGVzIGluIExvZyBBbmFseXRpY3MuIERlZmF1bHRzIHRvIHVuZGVmaW5lZCB3aGljaCB1c2VzIHRoZSBkZWZhdWx0IHNldHRpbmdzLlxuICAgKiAgICAgICAgICAgICAgICBUaGUgYHRhcmdldFJlc291cmNlSWRgIGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSBJRCBvZiB0aGlzIGNvbnN0cnVjdCBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJldHVybnMgQW4gaW5zdGFuY2Ugb2YgdGhlIERpYWdub3N0aWNTZXR0aW5ncyBjbGFzcywgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBwcm9wZXJ0aWVzLlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGRpYWdTZXR0aW5ncyA9IHJlc291cmNlLmFkZERpYWdTZXR0aW5ncyh7XG4gICAqICAgbmFtZTogJ2N1c3RvbS1kaWFnLXNldHRpbmdzJyxcbiAgICogICBsb2dBbmFseXRpY3NXb3Jrc3BhY2VJZDogJ3dvcmtzcGFjZS1pZCcsXG4gICAqICAgZXZlbnRodWJBdXRob3JpemF0aW9uUnVsZUlkOiAnYXV0aC1ydWxlLWlkJyxcbiAgICogICBldmVudGh1Yk5hbWU6ICdldmVudGh1Yi1uYW1lJyxcbiAgICogICBzdG9yYWdlQWNjb3VudElkOiAnc3RvcmFnZS1hY2NvdW50LWlkJ1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBwdWJsaWMgYWRkRGlhZ1NldHRpbmdzKFxuICAgIHByb3BzOiBCYXNlRGlhZ25vc3RpY1NldHRpbmdzUHJvcHMsXG4gICk6IERpYWdub3N0aWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBEaWFnbm9zdGljU2V0dGluZ3ModGhpcywgXCJkaWFnc2V0dGluZ3NcIiwge1xuICAgICAgbmFtZTogcHJvcHMubmFtZSB8fCBcImRpYWctc2V0dGluZ3NcIixcbiAgICAgIGxvZ0FuYWx5dGljc1dvcmtzcGFjZUlkOiBwcm9wcy5sb2dBbmFseXRpY3NXb3Jrc3BhY2VJZCxcbiAgICAgIGV2ZW50aHViQXV0aG9yaXphdGlvblJ1bGVJZDogcHJvcHMuZXZlbnRodWJBdXRob3JpemF0aW9uUnVsZUlkLFxuICAgICAgZXZlbnRodWJOYW1lOiBwcm9wcy5ldmVudGh1Yk5hbWUsXG4gICAgICBzdG9yYWdlQWNjb3VudElkOiBwcm9wcy5zdG9yYWdlQWNjb3VudElkLFxuICAgICAgdGFyZ2V0UmVzb3VyY2VJZDogdGhpcy5pZCxcbiAgICAgIGxvZ0FuYWx5dGljc0Rlc3RpbmF0aW9uVHlwZTogdW5kZWZpbmVkLFxuICAgICAgbG9nOiBwcm9wcz8ubG9nLFxuICAgICAgbWV0cmljOiBwcm9wcz8ubWV0cmljLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwUmVzb3VyY2VHcm91cChwcm9wczogYW55KTogUmVzb3VyY2VHcm91cCB7XG4gICAgaWYgKCFwcm9wcy5yZXNvdXJjZUdyb3VwKSB7XG4gICAgICAvLyBDcmVhdGUgYSBuZXcgcmVzb3VyY2UgZ3JvdXBcbiAgICAgIGNvbnN0IG5ld1Jlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcbiAgICAgICAgbmFtZTogYHJnLSR7cHJvcHMubmFtZX1gLFxuICAgICAgICBsb2NhdGlvbjogcHJvcHMubG9jYXRpb24gfHwgXCJlYXN0dXNcIixcbiAgICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIH0pO1xuICAgICAgLy8gVXNlIHRoZSBuYW1lIG9mIHRoZSBuZXcgcmVzb3VyY2UgZ3JvdXBcbiAgICAgIHJldHVybiBuZXdSZXNvdXJjZUdyb3VwO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIHJlc291cmNlIGdyb3VwIG5hbWVcbiAgICAgIHJldHVybiBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXp1cmVSZXNvdXJjZVdpdGhBbGVydCBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICBwdWJsaWMgYWRkUXVlcnlSdWxlQWxlcnQocHJvcHM6IHF1ZXJ5YWxlcnQuQmFzZUF6dXJlUXVlcnlSdWxlQWxlcnRQcm9wcykge1xuICAgIG5ldyBxdWVyeWFsZXJ0LlF1ZXJ5UnVsZUFsZXJ0KHRoaXMsIFwicXVlcnlydWxlYWxlcnRcIiwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzY29wZXM6IFt0aGlzLmlkXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRNZXRyaWNBbGVydChwcm9wczogbWV0cmljYWxlcnQuSUJhc2VNZXRyaWNBbGVydFByb3BzKSB7XG4gICAgbmV3IG1ldHJpY2FsZXJ0Lk1ldHJpY0FsZXJ0KHRoaXMsIFwibWV0cmljYWxlcnRcIiwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICByZXNvdXJjZUdyb3VwOiB0aGlzLnJlc291cmNlR3JvdXAsXG4gICAgICBzY29wZXM6IFt0aGlzLmlkXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1 @@
1
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const container_registry_1 = require("@cdktf/provider-azurerm/lib/container-registry");
4
+ const data_azurerm_client_config_1 = require("@cdktf/provider-azurerm/lib/data-azurerm-client-config");
5
+ const log_analytics_workspace_1 = require("@cdktf/provider-azurerm/lib/log-analytics-workspace");
6
+ const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
7
+ const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
8
+ const cdktf_1 = require("cdktf");
9
+ const testing_1 = require("../../testing");
10
+ const randomName_1 = require("../../util/randomName");
11
+ const lib_1 = require("../lib");
12
+ require("cdktf/lib/testing/adapters/jest");
13
+ describe("Example of deploying an Azure Resource", () => {
14
+ let stack;
15
+ let fullSynthResult;
16
+ const streamOutput = process.env.STREAM_OUTPUT !== "false";
17
+ beforeEach(() => {
18
+ const app = cdktf_1.Testing.app();
19
+ stack = new cdktf_1.TerraformStack(app, "test");
20
+ const randomName = (0, randomName_1.generateRandomName)(12);
21
+ class TestACR extends lib_1.AzureResource {
22
+ constructor(scope, name, resourceGroup, location) {
23
+ super(scope, name);
24
+ const containerRegistry = new container_registry_1.ContainerRegistry(this, "containerRegistry", {
25
+ name: `acr${name}8898`,
26
+ resourceGroupName: resourceGroup.name,
27
+ location: location,
28
+ sku: "Basic",
29
+ adminEnabled: true,
30
+ });
31
+ this.id = containerRegistry.id;
32
+ this.resourceGroup = resourceGroup;
33
+ }
34
+ }
35
+ const clientConfig = new data_azurerm_client_config_1.DataAzurermClientConfig(stack, "CurrentClientConfig", {});
36
+ new provider_1.AzurermProvider(stack, "azureFeature", { features: {} });
37
+ // Create a resource group
38
+ const resourceGroup = new resource_group_1.ResourceGroup(stack, "rg", {
39
+ name: `rg-${randomName}`,
40
+ location: "eastus",
41
+ });
42
+ const acr = new TestACR(stack, `${randomName}`, resourceGroup, resourceGroup.location);
43
+ // Test RBAC Methods
44
+ acr.addAccess(clientConfig.objectId, "Contributor");
45
+ acr.addAccess(clientConfig.objectId, "Monitoring Reader");
46
+ const logAnalyticsWorkspace = new log_analytics_workspace_1.LogAnalyticsWorkspace(stack, "log_analytics", {
47
+ location: "eastus",
48
+ name: `la-${randomName}`,
49
+ resourceGroupName: resourceGroup.name,
50
+ });
51
+ // Test Diag Settings
52
+ acr.addDiagSettings({
53
+ name: "diagsettings",
54
+ logAnalyticsWorkspaceId: logAnalyticsWorkspace.id,
55
+ metric: [
56
+ {
57
+ category: "AllMetrics",
58
+ },
59
+ ],
60
+ });
61
+ fullSynthResult = cdktf_1.Testing.fullSynth(stack); // Save the result for reuse
62
+ });
63
+ afterEach(() => {
64
+ try {
65
+ (0, testing_1.TerraformDestroy)(fullSynthResult, streamOutput);
66
+ }
67
+ catch (error) {
68
+ console.error("Error during Terraform destroy:", error);
69
+ }
70
+ });
71
+ it("check if this can be deployed", () => {
72
+ (0, testing_1.TerraformApplyAndCheckIdempotency)(fullSynthResult, streamOutput); // Set to true to stream output
73
+ });
74
+ });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXp1cmVSZXNvdXJjZS5pbnRlZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3JlLWF6dXJlL3Rlc3QvQXp1cmVSZXNvdXJjZS5pbnRlZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVGQUFtRjtBQUNuRix1R0FBaUc7QUFDakcsaUdBQTRGO0FBQzVGLG1FQUF1RTtBQUN2RSwrRUFBMkU7QUFFM0UsaUNBQWdEO0FBRWhELDJDQUd1QjtBQUN2QixzREFBMkQ7QUFDM0QsZ0NBQXVDO0FBQ3ZDLDJDQUF5QztBQUV6QyxRQUFRLENBQUMsd0NBQXdDLEVBQUUsR0FBRyxFQUFFO0lBQ3RELElBQUksS0FBcUIsQ0FBQztJQUMxQixJQUFJLGVBQW9CLENBQUM7SUFDekIsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEtBQUssT0FBTyxDQUFDO0lBRTNELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsS0FBSyxHQUFHLElBQUksc0JBQWMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDeEMsTUFBTSxVQUFVLEdBQUcsSUFBQSwrQkFBa0IsRUFBQyxFQUFFLENBQUMsQ0FBQztRQUUxQyxNQUFNLE9BQVEsU0FBUSxtQkFBYTtZQUlqQyxZQUNFLEtBQWdCLEVBQ2hCLElBQVksRUFDWixhQUE0QixFQUM1QixRQUFnQjtnQkFFaEIsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFFbkIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLHNDQUFpQixDQUM3QyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CO29CQUNFLElBQUksRUFBRSxNQUFNLElBQUksTUFBTTtvQkFDdEIsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLElBQUk7b0JBQ3JDLFFBQVEsRUFBRSxRQUFRO29CQUNsQixHQUFHLEVBQUUsT0FBTztvQkFDWixZQUFZLEVBQUUsSUFBSTtpQkFDbkIsQ0FDRixDQUFDO2dCQUNGLElBQUksQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNyQyxDQUFDO1NBQ0Y7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLG9EQUF1QixDQUM5QyxLQUFLLEVBQ0wscUJBQXFCLEVBQ3JCLEVBQUUsQ0FDSCxDQUFDO1FBRUYsSUFBSSwwQkFBZSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUU3RCwwQkFBMEI7UUFDMUIsTUFBTSxhQUFhLEdBQUcsSUFBSSw4QkFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDbkQsSUFBSSxFQUFFLE1BQU0sVUFBVSxFQUFFO1lBQ3hCLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztRQUVILE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxDQUNyQixLQUFLLEVBQ0wsR0FBRyxVQUFVLEVBQUUsRUFDZixhQUFhLEVBQ2IsYUFBYSxDQUFDLFFBQVEsQ0FDdkIsQ0FBQztRQUVGLG9CQUFvQjtRQUNwQixHQUFHLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDcEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFMUQsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLCtDQUFxQixDQUNyRCxLQUFLLEVBQ0wsZUFBZSxFQUNmO1lBQ0UsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFLE1BQU0sVUFBVSxFQUFFO1lBQ3hCLGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxJQUFJO1NBQ3RDLENBQ0YsQ0FBQztRQUVGLHFCQUFxQjtRQUNyQixHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ2xCLElBQUksRUFBRSxjQUFjO1lBQ3BCLHVCQUF1QixFQUFFLHFCQUFxQixDQUFDLEVBQUU7WUFDakQsTUFBTSxFQUFFO2dCQUNOO29CQUNFLFFBQVEsRUFBRSxZQUFZO2lCQUN2QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsZUFBZSxHQUFHLGVBQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7SUFDMUUsQ0FBQyxDQUFDLENBQUM7SUFFSCxTQUFTLENBQUMsR0FBRyxFQUFFO1FBQ2IsSUFBSTtZQUNGLElBQUEsMEJBQWdCLEVBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2pEO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO1FBQ3ZDLElBQUEsMkNBQWlDLEVBQUMsZUFBZSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsK0JBQStCO0lBQ25HLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250YWluZXJSZWdpc3RyeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvY29udGFpbmVyLXJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBEYXRhQXp1cmVybUNsaWVudENvbmZpZyB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvZGF0YS1henVyZXJtLWNsaWVudC1jb25maWdcIjtcbmltcG9ydCB7IExvZ0FuYWx5dGljc1dvcmtzcGFjZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvbG9nLWFuYWx5dGljcy13b3Jrc3BhY2VcIjtcbmltcG9ydCB7IEF6dXJlcm1Qcm92aWRlciB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcHJvdmlkZXJcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL3Jlc291cmNlLWdyb3VwXCI7XG5cbmltcG9ydCB7IFRlc3RpbmcsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgVGVycmFmb3JtQXBwbHlBbmRDaGVja0lkZW1wb3RlbmN5LFxuICBUZXJyYWZvcm1EZXN0cm95LFxufSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21OYW1lIH0gZnJvbSBcIi4uLy4uL3V0aWwvcmFuZG9tTmFtZVwiO1xuaW1wb3J0IHsgQXp1cmVSZXNvdXJjZSB9IGZyb20gXCIuLi9saWJcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcblxuZGVzY3JpYmUoXCJFeGFtcGxlIG9mIGRlcGxveWluZyBhbiBBenVyZSBSZXNvdXJjZVwiLCAoKSA9PiB7XG4gIGxldCBzdGFjazogVGVycmFmb3JtU3RhY2s7XG4gIGxldCBmdWxsU3ludGhSZXN1bHQ6IGFueTtcbiAgY29uc3Qgc3RyZWFtT3V0cHV0ID0gcHJvY2Vzcy5lbnYuU1RSRUFNX09VVFBVVCAhPT0gXCJmYWxzZVwiO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG4gICAgY29uc3QgcmFuZG9tTmFtZSA9IGdlbmVyYXRlUmFuZG9tTmFtZSgxMik7XG5cbiAgICBjbGFzcyBUZXN0QUNSIGV4dGVuZHMgQXp1cmVSZXNvdXJjZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuXG4gICAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwLFxuICAgICAgICBsb2NhdGlvbjogc3RyaW5nLFxuICAgICAgKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBuYW1lKTtcblxuICAgICAgICBjb25zdCBjb250YWluZXJSZWdpc3RyeSA9IG5ldyBDb250YWluZXJSZWdpc3RyeShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIFwiY29udGFpbmVyUmVnaXN0cnlcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBgYWNyJHtuYW1lfTg4OThgLFxuICAgICAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICAgIHNrdTogXCJCYXNpY1wiLFxuICAgICAgICAgICAgYWRtaW5FbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuaWQgPSBjb250YWluZXJSZWdpc3RyeS5pZDtcbiAgICAgICAgdGhpcy5yZXNvdXJjZUdyb3VwID0gcmVzb3VyY2VHcm91cDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjbGllbnRDb25maWcgPSBuZXcgRGF0YUF6dXJlcm1DbGllbnRDb25maWcoXG4gICAgICBzdGFjayxcbiAgICAgIFwiQ3VycmVudENsaWVudENvbmZpZ1wiLFxuICAgICAge30sXG4gICAgKTtcblxuICAgIG5ldyBBenVyZXJtUHJvdmlkZXIoc3RhY2ssIFwiYXp1cmVGZWF0dXJlXCIsIHsgZmVhdHVyZXM6IHt9IH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAoc3RhY2ssIFwicmdcIiwge1xuICAgICAgbmFtZTogYHJnLSR7cmFuZG9tTmFtZX1gLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBhY3IgPSBuZXcgVGVzdEFDUihcbiAgICAgIHN0YWNrLFxuICAgICAgYCR7cmFuZG9tTmFtZX1gLFxuICAgICAgcmVzb3VyY2VHcm91cCxcbiAgICAgIHJlc291cmNlR3JvdXAubG9jYXRpb24sXG4gICAgKTtcblxuICAgIC8vIFRlc3QgUkJBQyBNZXRob2RzXG4gICAgYWNyLmFkZEFjY2VzcyhjbGllbnRDb25maWcub2JqZWN0SWQsIFwiQ29udHJpYnV0b3JcIik7XG4gICAgYWNyLmFkZEFjY2VzcyhjbGllbnRDb25maWcub2JqZWN0SWQsIFwiTW9uaXRvcmluZyBSZWFkZXJcIik7XG5cbiAgICBjb25zdCBsb2dBbmFseXRpY3NXb3Jrc3BhY2UgPSBuZXcgTG9nQW5hbHl0aWNzV29ya3NwYWNlKFxuICAgICAgc3RhY2ssXG4gICAgICBcImxvZ19hbmFseXRpY3NcIixcbiAgICAgIHtcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIG5hbWU6IGBsYS0ke3JhbmRvbU5hbWV9YCxcbiAgICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIFRlc3QgRGlhZyBTZXR0aW5nc1xuICAgIGFjci5hZGREaWFnU2V0dGluZ3Moe1xuICAgICAgbmFtZTogXCJkaWFnc2V0dGluZ3NcIixcbiAgICAgIGxvZ0FuYWx5dGljc1dvcmtzcGFjZUlkOiBsb2dBbmFseXRpY3NXb3Jrc3BhY2UuaWQsXG4gICAgICBtZXRyaWM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGNhdGVnb3J5OiBcIkFsbE1ldHJpY3NcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG5cbiAgICBmdWxsU3ludGhSZXN1bHQgPSBUZXN0aW5nLmZ1bGxTeW50aChzdGFjayk7IC8vIFNhdmUgdGhlIHJlc3VsdCBmb3IgcmV1c2VcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgVGVycmFmb3JtRGVzdHJveShmdWxsU3ludGhSZXN1bHQsIHN0cmVhbU91dHB1dCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgVGVycmFmb3JtIGRlc3Ryb3k6XCIsIGVycm9yKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KFwiY2hlY2sgaWYgdGhpcyBjYW4gYmUgZGVwbG95ZWRcIiwgKCkgPT4ge1xuICAgIFRlcnJhZm9ybUFwcGx5QW5kQ2hlY2tJZGVtcG90ZW5jeShmdWxsU3ludGhSZXN1bHQsIHN0cmVhbU91dHB1dCk7IC8vIFNldCB0byB0cnVlIHRvIHN0cmVhbSBvdXRwdXRcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,6 +1,40 @@
1
+ /// <reference types="node" />
2
+ import { ExecSyncOptionsWithStringEncoding } from "child_process";
1
3
  import { TerraformStack } from "cdktf";
2
4
  import { Construct } from "constructs";
3
5
  export declare class BaseTestStack extends TerraformStack {
4
6
  readonly name: string;
5
7
  constructor(scope: Construct, id: string);
6
8
  }
9
+ export declare function execTerraformCommand(command: string, opts: ExecSyncOptionsWithStringEncoding, streamOutput: boolean): {
10
+ stdout: string;
11
+ stderr: string;
12
+ exitCode: number;
13
+ };
14
+ export declare function TerraformApply(stack: any, streamOutput?: boolean): {
15
+ stdout: string;
16
+ stderr: string;
17
+ error: any;
18
+ };
19
+ export declare function TerraformPlanExitCode(stack: any, streamOutput?: boolean): {
20
+ stdout: string;
21
+ stderr: string;
22
+ exitCode: number;
23
+ error: any;
24
+ };
25
+ export declare function TerraformIdempotentCheck(stack: any): AssertionReturn;
26
+ export declare function TerraformDestroy(stack: any, streamOutput?: boolean): AssertionReturn;
27
+ export declare function TerraformApplyAndCheckIdempotency(stack: any, streamOutput?: boolean): AssertionReturn;
28
+ export declare function TerraformApplyCheckAndDestroy(stack: any): void;
29
+ export declare function TerraformPlan(stack: any): AssertionReturn;
30
+ export declare class AssertionReturn {
31
+ readonly message: string;
32
+ readonly pass: boolean;
33
+ /**
34
+ * Create an AssertionReturn
35
+ * @param message - String message containing information about the result of the assertion
36
+ * @param pass - Boolean pass denoting the success of the assertion
37
+ */
38
+ constructor(message: string, pass: boolean);
39
+ }
40
+ export declare function cleanupCdkTfOutDirs(): void;
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseTestStack = void 0;
3
+ exports.cleanupCdkTfOutDirs = exports.AssertionReturn = exports.TerraformPlan = exports.TerraformApplyCheckAndDestroy = exports.TerraformApplyAndCheckIdempotency = exports.TerraformDestroy = exports.TerraformIdempotentCheck = exports.TerraformPlanExitCode = exports.TerraformApply = exports.execTerraformCommand = exports.BaseTestStack = void 0;
4
+ const child_process_1 = require("child_process");
5
+ const fs = require("fs");
6
+ const path = require("path");
4
7
  const cdktf = require("cdktf");
5
8
  const cdktf_1 = require("cdktf");
6
9
  class BaseTestStack extends cdktf_1.TerraformStack {
@@ -15,4 +18,234 @@ class BaseTestStack extends cdktf_1.TerraformStack {
15
18
  }
16
19
  }
17
20
  exports.BaseTestStack = BaseTestStack;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsaUNBQXVDO0FBR3ZDLE1BQWEsYUFBYyxTQUFRLHNCQUFjO0lBRy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNyRCxJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsV0FBVyxFQUFFLDZDQUE2QztTQUMzRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBZEQsc0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVRlc3RTdGFjayBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG5hbWUgPSBuZXcgY2RrdGYuVGVycmFmb3JtVmFyaWFibGUodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZWZhdWx0OiBcInRlc3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN5c3RlbSBuYW1lIHVzZWQgdG8gcmFuZG9taXplIHRoZSByZXNvdXJjZXNcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWUudmFsdWU7XG4gIH1cbn1cbiJdfQ==
21
+ function execTerraformCommand(command, opts, streamOutput) {
22
+ try {
23
+ if (streamOutput) {
24
+ (0, child_process_1.execSync)(command, { ...opts, stdio: "inherit" });
25
+ return { stdout: "", stderr: "", exitCode: 0 };
26
+ }
27
+ else {
28
+ const stdout = (0, child_process_1.execSync)(command, { ...opts, stdio: "pipe" }).toString();
29
+ return { stdout, stderr: "", exitCode: 0 };
30
+ }
31
+ }
32
+ catch (error) {
33
+ const stdout = error.stdout ? error.stdout.toString() : "";
34
+ const stderr = error.stderr ? error.stderr.toString() : "";
35
+ return { stdout, stderr, exitCode: error.status || 1 };
36
+ }
37
+ }
38
+ exports.execTerraformCommand = execTerraformCommand;
39
+ function TerraformApply(stack, streamOutput = false) {
40
+ try {
41
+ const manifest = JSON.parse(fs.readFileSync(path.resolve(stack, "manifest.json"), "utf8"));
42
+ const stacks = Object.entries(manifest.stacks);
43
+ for (const [, stackDetails] of stacks) {
44
+ const opts = {
45
+ cwd: path.resolve(stack, stackDetails.workingDirectory),
46
+ env: process.env,
47
+ encoding: "utf-8",
48
+ };
49
+ const initResult = execTerraformCommand(`terraform init`, opts, streamOutput);
50
+ if (initResult.exitCode !== 0)
51
+ throw new Error(`Terraform init failed: ${initResult.stdout} ${initResult.stderr}`);
52
+ const applyResult = execTerraformCommand(`terraform apply -auto-approve`, opts, streamOutput);
53
+ if (applyResult.exitCode !== 0) {
54
+ return {
55
+ stdout: applyResult.stdout,
56
+ stderr: applyResult.stderr,
57
+ error: new Error(`Terraform apply failed: ${applyResult.stdout} ${applyResult.stderr}`),
58
+ };
59
+ }
60
+ }
61
+ return { stdout: "Terraform apply succeeded", stderr: "", error: null };
62
+ }
63
+ catch (error) {
64
+ console.error("Error during Terraform init or apply:", error);
65
+ return { stdout: "", stderr: "", error };
66
+ }
67
+ }
68
+ exports.TerraformApply = TerraformApply;
69
+ function TerraformPlanExitCode(stack, streamOutput = false) {
70
+ try {
71
+ const manifest = JSON.parse(fs.readFileSync(path.resolve(stack, "manifest.json"), "utf8"));
72
+ const stacks = Object.entries(manifest.stacks);
73
+ for (const [, stackDetails] of stacks) {
74
+ const opts = {
75
+ cwd: path.resolve(stack, stackDetails.workingDirectory),
76
+ env: process.env,
77
+ encoding: "utf-8",
78
+ };
79
+ const initResult = execTerraformCommand(`terraform init`, opts, streamOutput);
80
+ if (initResult.exitCode !== 0)
81
+ throw new Error(`Terraform init failed: ${initResult.stdout} ${initResult.stderr}`);
82
+ const planResult = execTerraformCommand(`terraform plan -input=false -lock=false -detailed-exitcode`, opts, streamOutput);
83
+ return {
84
+ stdout: planResult.stdout,
85
+ stderr: planResult.stderr,
86
+ exitCode: planResult.exitCode,
87
+ error: null,
88
+ };
89
+ }
90
+ return {
91
+ stdout: "Terraform plan succeeded",
92
+ stderr: "",
93
+ exitCode: 0,
94
+ error: null,
95
+ };
96
+ }
97
+ catch (error) {
98
+ console.error("Error during Terraform init or plan:", error);
99
+ return { stdout: "", stderr: "", exitCode: 1, error };
100
+ }
101
+ }
102
+ exports.TerraformPlanExitCode = TerraformPlanExitCode;
103
+ function TerraformIdempotentCheck(stack) {
104
+ try {
105
+ const manifest = JSON.parse(fs.readFileSync(path.resolve(stack, "manifest.json"), "utf8"));
106
+ const stacks = Object.entries(manifest.stacks);
107
+ for (const [, stackDetails] of stacks) {
108
+ const opts = {
109
+ cwd: path.resolve(stack, stackDetails.workingDirectory),
110
+ env: process.env,
111
+ stdio: "pipe",
112
+ };
113
+ (0, child_process_1.execSync)(`terraform init`, opts);
114
+ let planOutput;
115
+ try {
116
+ planOutput = (0, child_process_1.execSync)(`terraform plan -input=false -detailed-exitcode`, opts).toString();
117
+ }
118
+ catch (error) {
119
+ planOutput = error.stdout ? error.stdout.toString() : "";
120
+ }
121
+ if (planOutput.includes("No changes. Your infrastructure matches the configuration.")) {
122
+ return new AssertionReturn(`Expected subject to be idempotent with no changes`, true);
123
+ }
124
+ else {
125
+ throw new Error(`Plan resulted in changes:\n${planOutput}`);
126
+ }
127
+ }
128
+ return new AssertionReturn(`Expected subject to be idempotent with no changes`, true);
129
+ }
130
+ catch (error) {
131
+ console.error("Error during Terraform init or plan:", error);
132
+ throw error;
133
+ }
134
+ }
135
+ exports.TerraformIdempotentCheck = TerraformIdempotentCheck;
136
+ function TerraformDestroy(stack, streamOutput = false) {
137
+ try {
138
+ const manifest = JSON.parse(fs.readFileSync(path.resolve(stack, "manifest.json"), "utf8"));
139
+ const stacks = Object.entries(manifest.stacks);
140
+ for (const [, stackDetails] of stacks) {
141
+ const opts = {
142
+ cwd: path.resolve(stack, stackDetails.workingDirectory),
143
+ env: process.env,
144
+ encoding: "utf-8",
145
+ };
146
+ const initResult = execTerraformCommand(`terraform init`, opts, streamOutput);
147
+ if (initResult.exitCode !== 0)
148
+ throw new Error(`Terraform init failed: ${initResult.stdout} ${initResult.stderr}`);
149
+ const destroyResult = execTerraformCommand(`terraform destroy -auto-approve`, opts, streamOutput);
150
+ if (destroyResult.exitCode !== 0)
151
+ throw new Error(`Terraform destroy failed: ${destroyResult.stdout} ${destroyResult.stderr}`);
152
+ }
153
+ return new AssertionReturn(`Expected subject to destroy successfully`, true);
154
+ }
155
+ catch (error) {
156
+ console.error("Error during Terraform init or destroy:", error);
157
+ return new AssertionReturn(`Expected subject to destroy successfully`, false);
158
+ }
159
+ }
160
+ exports.TerraformDestroy = TerraformDestroy;
161
+ function TerraformApplyAndCheckIdempotency(stack, streamOutput = false) {
162
+ const applyResult = TerraformApply(stack, streamOutput);
163
+ if (applyResult.error) {
164
+ return new AssertionReturn(applyResult.error.message, false);
165
+ }
166
+ const planResult = TerraformPlanExitCode(stack, streamOutput);
167
+ if (planResult.error) {
168
+ return new AssertionReturn(planResult.error.message, false);
169
+ }
170
+ if (planResult.exitCode !== 0) {
171
+ return new AssertionReturn(`Terraform configuration not idempotent:\n${planResult.stdout}`, false);
172
+ }
173
+ return new AssertionReturn(`Terraform apply and idempotency check completed successfully`, true);
174
+ }
175
+ exports.TerraformApplyAndCheckIdempotency = TerraformApplyAndCheckIdempotency;
176
+ function TerraformApplyCheckAndDestroy(stack) {
177
+ try {
178
+ const applyAndCheckResult = TerraformApplyAndCheckIdempotency(stack);
179
+ if (!applyAndCheckResult.pass) {
180
+ throw new Error(applyAndCheckResult.message);
181
+ }
182
+ }
183
+ catch (error) {
184
+ console.error("Error during Terraform apply and idempotency check:", error);
185
+ throw error; // Re-throw the error to ensure the test fails
186
+ }
187
+ finally {
188
+ try {
189
+ const destroyResult = TerraformDestroy(stack);
190
+ if (!destroyResult.pass) {
191
+ console.error("Error during Terraform destroy:", destroyResult.message);
192
+ }
193
+ }
194
+ catch (destroyError) {
195
+ console.error("Error during Terraform destroy:", destroyError);
196
+ }
197
+ }
198
+ }
199
+ exports.TerraformApplyCheckAndDestroy = TerraformApplyCheckAndDestroy;
200
+ function TerraformPlan(stack) {
201
+ try {
202
+ // Assuming the presence of a received variable pointing to the relevant directory
203
+ const manifest = JSON.parse(fs.readFileSync(path.resolve(stack, "manifest.json"), "utf8"));
204
+ const stacks = Object.entries(manifest.stacks);
205
+ stacks.forEach(([, stackDetails]) => {
206
+ const opts = {
207
+ cwd: path.resolve(stack, stackDetails.workingDirectory),
208
+ env: process.env,
209
+ stdio: "pipe",
210
+ };
211
+ (0, child_process_1.execSync)(`terraform init`, opts);
212
+ (0, child_process_1.execSync)(`terraform plan -input=false -lock=false`, opts);
213
+ });
214
+ return new AssertionReturn(`Expected subject not to plan successfully`, true);
215
+ }
216
+ catch (error) {
217
+ console.error("Error during Terraform init or plan:", error);
218
+ throw error;
219
+ return new AssertionReturn("Expected subject to plan successfully, false", false);
220
+ }
221
+ }
222
+ exports.TerraformPlan = TerraformPlan;
223
+ class AssertionReturn {
224
+ /**
225
+ * Create an AssertionReturn
226
+ * @param message - String message containing information about the result of the assertion
227
+ * @param pass - Boolean pass denoting the success of the assertion
228
+ */
229
+ constructor(message, pass) {
230
+ this.message = message;
231
+ this.pass = pass;
232
+ if (!pass) {
233
+ throw new Error(message);
234
+ }
235
+ }
236
+ }
237
+ exports.AssertionReturn = AssertionReturn;
238
+ // Define a cleanup function that can be exported and used in tests.
239
+ function cleanupCdkTfOutDirs() {
240
+ try {
241
+ (0, child_process_1.execSync)('find /tmp -name "cdktf.outdir.*" -type d -exec rm -rf {} +');
242
+ // console.log(
243
+ // "Cleanup of cdktf.outdir.* directories in /tmp was successful.",
244
+ // );
245
+ }
246
+ catch (error) {
247
+ console.error("Error during cleanup:", error);
248
+ }
249
+ }
250
+ exports.cleanupCdkTfOutDirs = cleanupCdkTfOutDirs;
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBNEU7QUFDNUUseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QiwrQkFBK0I7QUFDL0IsaUNBQXVDO0FBR3ZDLE1BQWEsYUFBYyxTQUFRLHNCQUFjO0lBRy9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUNyRCxJQUFJLEVBQUUsUUFBUTtZQUNkLE9BQU8sRUFBRSxNQUFNO1lBQ2YsV0FBVyxFQUFFLDZDQUE2QztTQUMzRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBZEQsc0NBY0M7QUFFRCxTQUFnQixvQkFBb0IsQ0FDbEMsT0FBZSxFQUNmLElBQXVDLEVBQ3ZDLFlBQXFCO0lBRXJCLElBQUk7UUFDRixJQUFJLFlBQVksRUFBRTtZQUNoQixJQUFBLHdCQUFRLEVBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7YUFBTTtZQUNMLE1BQU0sTUFBTSxHQUFHLElBQUEsd0JBQVEsRUFBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxFQUFF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QUFDLEtBQUssQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUMvQztBQUNILENBQUM7QUFURCxrREFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNTeW5jLCBFeGVjU3luY09wdGlvbnNXaXRoU3RyaW5nRW5jb2RpbmcgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgQmFzZVRlc3RTdGFjayBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IG5hbWUgPSBuZXcgY2RrdGYuVGVycmFmb3JtVmFyaWFibGUodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZWZhdWx0OiBcInRlc3RcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlN5c3RlbSBuYW1lIHVzZWQgdG8gcmFuZG9taXplIHRoZSByZXNvdXJjZXNcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWUudmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4ZWNUZXJyYWZvcm1Db21tYW5kKFxuICBjb21tYW5kOiBzdHJpbmcsXG4gIG9wdHM6IEV4ZWNTeW5jT3B0aW9uc1dpdGhTdHJpbmdFbmNvZGluZyxcbiAgc3RyZWFtT3V0cHV0OiBib29sZWFuLFxuKTogeyBzdGRvdXQ6IHN0cmluZzsgc3RkZXJyOiBzdHJpbmc7IGV4aXRDb2RlOiBudW1iZXIgfSB7XG4gIHRyeSB7XG4gICAgaWYgKHN0cmVhbU91dHB1dCkge1xuICAgICAgZXhlY1N5bmMoY29tbWFuZCwgeyAuLi5vcHRzLCBzdGRpbzogXCJpbmhlcml0XCIgfSk7XG4gICAgICByZXR1cm4geyBzdGRvdXQ6IFwiXCIsIHN0ZGVycjogXCJcIiwgZXhpdENvZGU6IDAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3Rkb3V0ID0gZXhlY1N5bmMoY29tbWFuZCwgeyAuLi5vcHRzLCBzdGRpbzogXCJwaXBlXCIgfSkudG9TdHJpbmcoKTtcbiAgICAgIHJldHVybiB7IHN0ZG91dCwgc3RkZXJyOiBcIlwiLCBleGl0Q29kZTogMCB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGNvbnN0IHN0ZG91dCA9IGVycm9yLnN0ZG91dCA/IGVycm9yLnN0ZG91dC50b1N0cmluZygpIDogXCJcIjtcbiAgICBjb25zdCBzdGRlcnIgPSBlcnJvci5zdGRlcnIgPyBlcnJvci5zdGRlcnIudG9TdHJpbmcoKSA6IFwiXCI7XG4gICAgcmV0dXJuIHsgc3Rkb3V0LCBzdGRlcnIsIGV4aXRDb2RlOiBlcnJvci5zdGF0dXMgfHwgMSB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUZXJyYWZvcm1BcHBseShcbiAgc3RhY2s6IGFueSxcbiAgc3RyZWFtT3V0cHV0OiBib29sZWFuID0gZmFsc2UsXG4pOiB7IHN0ZG91dDogc3RyaW5nOyBzdGRlcnI6IHN0cmluZzsgZXJyb3I6IGFueSB9IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKHN0YWNrLCBcIm1hbmlmZXN0Lmpzb25cIiksIFwidXRmOFwiKSxcbiAgICApO1xuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBmb3IgKGNvbnN0IFssIHN0YWNrRGV0YWlsc10gb2Ygc3RhY2tzKSB7XG4gICAgICBjb25zdCBvcHRzOiBFeGVjU3luY09wdGlvbnNXaXRoU3RyaW5nRW5jb2RpbmcgPSB7XG4gICAgICAgIGN3ZDogcGF0aC5yZXNvbHZlKHN0YWNrLCAoc3RhY2tEZXRhaWxzIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbml0UmVzdWx0ID0gZXhlY1RlcnJhZm9ybUNvbW1hbmQoXG4gICAgICAgIGB0ZXJyYWZvcm0gaW5pdGAsXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHN0cmVhbU91dHB1dCxcbiAgICAgICk7XG4gICAgICBpZiAoaW5pdFJlc3VsdC5leGl0Q29kZSAhPT0gMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUZXJyYWZvcm0gaW5pdCBmYWlsZWQ6ICR7aW5pdFJlc3VsdC5zdGRvdXR9ICR7aW5pdFJlc3VsdC5zdGRlcnJ9YCxcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgYXBwbHlSZXN1bHQgPSBleGVjVGVycmFmb3JtQ29tbWFuZChcbiAgICAgICAgYHRlcnJhZm9ybSBhcHBseSAtYXV0by1hcHByb3ZlYCxcbiAgICAgICAgb3B0cyxcbiAgICAgICAgc3RyZWFtT3V0cHV0LFxuICAgICAgKTtcbiAgICAgIGlmIChhcHBseVJlc3VsdC5leGl0Q29kZSAhPT0gMCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0ZG91dDogYXBwbHlSZXN1bHQuc3Rkb3V0LFxuICAgICAgICAgIHN0ZGVycjogYXBwbHlSZXN1bHQuc3RkZXJyLFxuICAgICAgICAgIGVycm9yOiBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVGVycmFmb3JtIGFwcGx5IGZhaWxlZDogJHthcHBseVJlc3VsdC5zdGRvdXR9ICR7YXBwbHlSZXN1bHQuc3RkZXJyfWAsXG4gICAgICAgICAgKSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGRvdXQ6IFwiVGVycmFmb3JtIGFwcGx5IHN1Y2NlZWRlZFwiLCBzdGRlcnI6IFwiXCIsIGVycm9yOiBudWxsIH07XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIFRlcnJhZm9ybSBpbml0IG9yIGFwcGx5OlwiLCBlcnJvcik7XG4gICAgcmV0dXJuIHsgc3Rkb3V0OiBcIlwiLCBzdGRlcnI6IFwiXCIsIGVycm9yIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRlcnJhZm9ybVBsYW5FeGl0Q29kZShcbiAgc3RhY2s6IGFueSxcbiAgc3RyZWFtT3V0cHV0OiBib29sZWFuID0gZmFsc2UsXG4pOiB7IHN0ZG91dDogc3RyaW5nOyBzdGRlcnI6IHN0cmluZzsgZXhpdENvZGU6IG51bWJlcjsgZXJyb3I6IGFueSB9IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBtYW5pZmVzdCA9IEpTT04ucGFyc2UoXG4gICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKHN0YWNrLCBcIm1hbmlmZXN0Lmpzb25cIiksIFwidXRmOFwiKSxcbiAgICApO1xuICAgIGNvbnN0IHN0YWNrcyA9IE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LnN0YWNrcyk7XG5cbiAgICBmb3IgKGNvbnN0IFssIHN0YWNrRGV0YWlsc10gb2Ygc3RhY2tzKSB7XG4gICAgICBjb25zdCBvcHRzOiBFeGVjU3luY09wdGlvbnNXaXRoU3RyaW5nRW5jb2RpbmcgPSB7XG4gICAgICAgIGN3ZDogcGF0aC5yZXNvbHZlKHN0YWNrLCAoc3RhY2tEZXRhaWxzIGFzIGFueSkud29ya2luZ0RpcmVjdG9yeSksXG4gICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbml0UmVzdWx0ID0gZXhlY1RlcnJhZm9ybUNvbW1hbmQoXG4gICAgICAgIGB0ZXJyYWZvcm0gaW5pdGAsXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHN0cmVhbU91dHB1dCxcbiAgICAgICk7XG4gICAgICBpZiAoaW5pdFJlc3VsdC5leGl0Q29kZSAhPT0gMClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBUZXJyYWZvcm0gaW5pdCBmYWlsZWQ6ICR7aW5pdFJlc3VsdC5zdGRvdXR9ICR7aW5pdFJlc3VsdC5zdGRlcnJ9YCxcbiAgICAgICAgKTtcblxuICAgICAgY29uc3QgcGxhblJlc3VsdCA9IGV4ZWNUZXJyYWZvcm1Db21tYW5kKFxuICAgICAgICBgdGVycmFmb3JtIHBsYW4gLWlucHV0PWZhbHNlIC1sb2NrPWZhbHNlIC1kZXRhaWxlZC1leGl0Y29kZWAsXG4gICAgICAgIG9wdHMsXG4gICAgICAgIHN0cmVhbU91dHB1dCxcbiAgICAgICk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGRvdXQ6IHBsYW5SZXN1bHQuc3Rkb3V0LFxuICAgICAgICBzdGRlcnI6IHBsYW5SZXN1bHQuc3RkZXJyLFxuICAgICAgICBleGl0Q29kZTogcGxhblJlc3VsdC5leGl0Q29kZSxcbiAgICAgICAgZXJyb3I6IG51bGwsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBzdGRvdXQ6IFwiVGVycmFmb3JtIHBsYW4gc3VjY2VlZGVkXCIsXG4gICAgICBzdGRlcnI6IFwiXCIsXG4gICAgICBleGl0Q29kZTogMCxcbiAgICAgIGVycm9yOiBudWxsLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIFRlcnJhZm9ybSBpbml0IG9yIHBsYW46XCIsIGVycm9yKTtcbiAgICByZXR1cm4geyBzdGRvdXQ6IFwiXCIsIHN0ZGVycjogXCJcIiwgZXhpdENvZGU6IDEsIGVycm9yIH07XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBUZXJyYWZvcm1JZGVtcG90ZW50Q2hlY2soc3RhY2s6IGFueSk6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShzdGFjaywgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcbiAgICBjb25zdCBzdGFja3MgPSBPYmplY3QuZW50cmllcyhtYW5pZmVzdC5zdGFja3MpO1xuXG4gICAgZm9yIChjb25zdCBbLCBzdGFja0RldGFpbHNdIG9mIHN0YWNrcykge1xuICAgICAgY29uc3Qgb3B0cyA9IHtcbiAgICAgICAgY3dkOiBwYXRoLnJlc29sdmUoc3RhY2ssIChzdGFja0RldGFpbHMgYXMgYW55KS53b3JraW5nRGlyZWN0b3J5KSxcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgc3RkaW86IFwicGlwZVwiLFxuICAgICAgfSBhcyBhbnk7XG5cbiAgICAgIGV4ZWNTeW5jKGB0ZXJyYWZvcm0gaW5pdGAsIG9wdHMpO1xuXG4gICAgICBsZXQgcGxhbk91dHB1dDogc3RyaW5nO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGxhbk91dHB1dCA9IGV4ZWNTeW5jKFxuICAgICAgICAgIGB0ZXJyYWZvcm0gcGxhbiAtaW5wdXQ9ZmFsc2UgLWRldGFpbGVkLWV4aXRjb2RlYCxcbiAgICAgICAgICBvcHRzLFxuICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICAgIHBsYW5PdXRwdXQgPSBlcnJvci5zdGRvdXQgPyBlcnJvci5zdGRvdXQudG9TdHJpbmcoKSA6IFwiXCI7XG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgcGxhbk91dHB1dC5pbmNsdWRlcyhcbiAgICAgICAgICBcIk5vIGNoYW5nZXMuIFlvdXIgaW5mcmFzdHJ1Y3R1cmUgbWF0Y2hlcyB0aGUgY29uZmlndXJhdGlvbi5cIixcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IHRvIGJlIGlkZW1wb3RlbnQgd2l0aCBubyBjaGFuZ2VzYCxcbiAgICAgICAgICB0cnVlLFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQbGFuIHJlc3VsdGVkIGluIGNoYW5nZXM6XFxuJHtwbGFuT3V0cHV0fWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgYEV4cGVjdGVkIHN1YmplY3QgdG8gYmUgaWRlbXBvdGVudCB3aXRoIG5vIGNoYW5nZXNgLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgVGVycmFmb3JtIGluaXQgb3IgcGxhbjpcIiwgZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBUZXJyYWZvcm1EZXN0cm95KFxuICBzdGFjazogYW55LFxuICBzdHJlYW1PdXRwdXQ6IGJvb2xlYW4gPSBmYWxzZSxcbik6IEFzc2VydGlvblJldHVybiB7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShzdGFjaywgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcbiAgICBjb25zdCBzdGFja3MgPSBPYmplY3QuZW50cmllcyhtYW5pZmVzdC5zdGFja3MpO1xuXG4gICAgZm9yIChjb25zdCBbLCBzdGFja0RldGFpbHNdIG9mIHN0YWNrcykge1xuICAgICAgY29uc3Qgb3B0czogRXhlY1N5bmNPcHRpb25zV2l0aFN0cmluZ0VuY29kaW5nID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShzdGFjaywgKHN0YWNrRGV0YWlscyBhcyBhbnkpLndvcmtpbmdEaXJlY3RvcnkpLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaW5pdFJlc3VsdCA9IGV4ZWNUZXJyYWZvcm1Db21tYW5kKFxuICAgICAgICBgdGVycmFmb3JtIGluaXRgLFxuICAgICAgICBvcHRzLFxuICAgICAgICBzdHJlYW1PdXRwdXQsXG4gICAgICApO1xuICAgICAgaWYgKGluaXRSZXN1bHQuZXhpdENvZGUgIT09IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGVycmFmb3JtIGluaXQgZmFpbGVkOiAke2luaXRSZXN1bHQuc3Rkb3V0fSAke2luaXRSZXN1bHQuc3RkZXJyfWAsXG4gICAgICAgICk7XG5cbiAgICAgIGNvbnN0IGRlc3Ryb3lSZXN1bHQgPSBleGVjVGVycmFmb3JtQ29tbWFuZChcbiAgICAgICAgYHRlcnJhZm9ybSBkZXN0cm95IC1hdXRvLWFwcHJvdmVgLFxuICAgICAgICBvcHRzLFxuICAgICAgICBzdHJlYW1PdXRwdXQsXG4gICAgICApO1xuICAgICAgaWYgKGRlc3Ryb3lSZXN1bHQuZXhpdENvZGUgIT09IDApXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGVycmFmb3JtIGRlc3Ryb3kgZmFpbGVkOiAke2Rlc3Ryb3lSZXN1bHQuc3Rkb3V0fSAke2Rlc3Ryb3lSZXN1bHQuc3RkZXJyfWAsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCB0byBkZXN0cm95IHN1Y2Nlc3NmdWxseWAsXG4gICAgICB0cnVlLFxuICAgICk7XG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIFRlcnJhZm9ybSBpbml0IG9yIGRlc3Ryb3k6XCIsIGVycm9yKTtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBFeHBlY3RlZCBzdWJqZWN0IHRvIGRlc3Ryb3kgc3VjY2Vzc2Z1bGx5YCxcbiAgICAgIGZhbHNlLFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRlcnJhZm9ybUFwcGx5QW5kQ2hlY2tJZGVtcG90ZW5jeShcbiAgc3RhY2s6IGFueSxcbiAgc3RyZWFtT3V0cHV0OiBib29sZWFuID0gZmFsc2UsXG4pOiBBc3NlcnRpb25SZXR1cm4ge1xuICBjb25zdCBhcHBseVJlc3VsdCA9IFRlcnJhZm9ybUFwcGx5KHN0YWNrLCBzdHJlYW1PdXRwdXQpO1xuICBpZiAoYXBwbHlSZXN1bHQuZXJyb3IpIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihhcHBseVJlc3VsdC5lcnJvci5tZXNzYWdlLCBmYWxzZSk7XG4gIH1cblxuICBjb25zdCBwbGFuUmVzdWx0ID0gVGVycmFmb3JtUGxhbkV4aXRDb2RlKHN0YWNrLCBzdHJlYW1PdXRwdXQpO1xuICBpZiAocGxhblJlc3VsdC5lcnJvcikge1xuICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKHBsYW5SZXN1bHQuZXJyb3IubWVzc2FnZSwgZmFsc2UpO1xuICB9XG5cbiAgaWYgKHBsYW5SZXN1bHQuZXhpdENvZGUgIT09IDApIHtcbiAgICByZXR1cm4gbmV3IEFzc2VydGlvblJldHVybihcbiAgICAgIGBUZXJyYWZvcm0gY29uZmlndXJhdGlvbiBub3QgaWRlbXBvdGVudDpcXG4ke3BsYW5SZXN1bHQuc3Rkb3V0fWAsXG4gICAgICBmYWxzZSxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgYFRlcnJhZm9ybSBhcHBseSBhbmQgaWRlbXBvdGVuY3kgY2hlY2sgY29tcGxldGVkIHN1Y2Nlc3NmdWxseWAsXG4gICAgdHJ1ZSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN0YWNrOiBhbnkpOiB2b2lkIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcHBseUFuZENoZWNrUmVzdWx0ID0gVGVycmFmb3JtQXBwbHlBbmRDaGVja0lkZW1wb3RlbmN5KHN0YWNrKTtcbiAgICBpZiAoIWFwcGx5QW5kQ2hlY2tSZXN1bHQucGFzcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGFwcGx5QW5kQ2hlY2tSZXN1bHQubWVzc2FnZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgVGVycmFmb3JtIGFwcGx5IGFuZCBpZGVtcG90ZW5jeSBjaGVjazpcIiwgZXJyb3IpO1xuICAgIHRocm93IGVycm9yOyAvLyBSZS10aHJvdyB0aGUgZXJyb3IgdG8gZW5zdXJlIHRoZSB0ZXN0IGZhaWxzXG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlc3Ryb3lSZXN1bHQgPSBUZXJyYWZvcm1EZXN0cm95KHN0YWNrKTtcbiAgICAgIGlmICghZGVzdHJveVJlc3VsdC5wYXNzKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgVGVycmFmb3JtIGRlc3Ryb3k6XCIsIGRlc3Ryb3lSZXN1bHQubWVzc2FnZSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZGVzdHJveUVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIFRlcnJhZm9ybSBkZXN0cm95OlwiLCBkZXN0cm95RXJyb3IpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gVGVycmFmb3JtUGxhbihzdGFjazogYW55KTogQXNzZXJ0aW9uUmV0dXJuIHtcbiAgdHJ5IHtcbiAgICAvLyBBc3N1bWluZyB0aGUgcHJlc2VuY2Ugb2YgYSByZWNlaXZlZCB2YXJpYWJsZSBwb2ludGluZyB0byB0aGUgcmVsZXZhbnQgZGlyZWN0b3J5XG4gICAgY29uc3QgbWFuaWZlc3QgPSBKU09OLnBhcnNlKFxuICAgICAgZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShzdGFjaywgXCJtYW5pZmVzdC5qc29uXCIpLCBcInV0ZjhcIiksXG4gICAgKTtcbiAgICBjb25zdCBzdGFja3MgPSBPYmplY3QuZW50cmllcyhtYW5pZmVzdC5zdGFja3MpO1xuICAgIHN0YWNrcy5mb3JFYWNoKChbLCBzdGFja0RldGFpbHNdKSA9PiB7XG4gICAgICBjb25zdCBvcHRzID0ge1xuICAgICAgICBjd2Q6IHBhdGgucmVzb2x2ZShzdGFjaywgKHN0YWNrRGV0YWlscyBhcyBhbnkpLndvcmtpbmdEaXJlY3RvcnkpLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBzdGRpbzogXCJwaXBlXCIsXG4gICAgICB9IGFzIGFueTtcbiAgICAgIGV4ZWNTeW5jKGB0ZXJyYWZvcm0gaW5pdGAsIG9wdHMpO1xuICAgICAgZXhlY1N5bmMoYHRlcnJhZm9ybSBwbGFuIC1pbnB1dD1mYWxzZSAtbG9jaz1mYWxzZWAsIG9wdHMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ldyBBc3NlcnRpb25SZXR1cm4oXG4gICAgICBgRXhwZWN0ZWQgc3ViamVjdCBub3QgdG8gcGxhbiBzdWNjZXNzZnVsbHlgLFxuICAgICAgdHJ1ZSxcbiAgICApO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgVGVycmFmb3JtIGluaXQgb3IgcGxhbjpcIiwgZXJyb3IpO1xuICAgIHRocm93IGVycm9yO1xuICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uUmV0dXJuKFxuICAgICAgXCJFeHBlY3RlZCBzdWJqZWN0IHRvIHBsYW4gc3VjY2Vzc2Z1bGx5LCBmYWxzZVwiLFxuICAgICAgZmFsc2UsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQXNzZXJ0aW9uUmV0dXJuIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBBc3NlcnRpb25SZXR1cm5cbiAgICogQHBhcmFtIG1lc3NhZ2UgLSBTdHJpbmcgbWVzc2FnZSBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXN1bHQgb2YgdGhlIGFzc2VydGlvblxuICAgKiBAcGFyYW0gcGFzcyAtIEJvb2xlYW4gcGFzcyBkZW5vdGluZyB0aGUgc3VjY2VzcyBvZiB0aGUgYXNzZXJ0aW9uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBwYXNzOiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoIXBhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gRGVmaW5lIGEgY2xlYW51cCBmdW5jdGlvbiB0aGF0IGNhbiBiZSBleHBvcnRlZCBhbmQgdXNlZCBpbiB0ZXN0cy5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwQ2RrVGZPdXREaXJzKCkge1xuICB0cnkge1xuICAgIGV4ZWNTeW5jKCdmaW5kIC90bXAgLW5hbWUgXCJjZGt0Zi5vdXRkaXIuKlwiIC10eXBlIGQgLWV4ZWMgcm0gLXJmIHt9ICsnKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcbiAgICAvLyAgIFwiQ2xlYW51cCBvZiBjZGt0Zi5vdXRkaXIuKiBkaXJlY3RvcmllcyBpbiAvdG1wIHdhcyBzdWNjZXNzZnVsLlwiLFxuICAgIC8vICk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcIkVycm9yIGR1cmluZyBjbGVhbnVwOlwiLCBlcnJvcik7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -17,18 +17,23 @@
17
17
  "eslint": "npx projen eslint",
18
18
  "package": "npx projen package",
19
19
  "package-all": "npx projen package-all",
20
+ "package:dotnet": "npx projen package:dotnet",
21
+ "package:java": "npx projen package:java",
20
22
  "package:js": "npx projen package:js",
23
+ "package:python": "npx projen package:python",
21
24
  "post-compile": "npx projen post-compile",
22
25
  "post-upgrade": "npx projen post-upgrade",
23
26
  "pre-compile": "npx projen pre-compile",
24
27
  "release": "npx projen release",
25
- "test": "npx projen test",
28
+ "test": "jest --testMatch '**/*.spec.ts'",
26
29
  "test:update": "npx projen test:update",
27
30
  "test:watch": "npx projen test:watch",
28
31
  "unbump": "npx projen unbump",
29
32
  "upgrade": "npx projen upgrade",
30
33
  "watch": "npx projen watch",
31
34
  "projen": "npx projen",
35
+ "integration": "STREAM_OUTPUT=true jest --testMatch '**/*.integ.ts'",
36
+ "integration:nostream": "STREAM_OUTPUT=false jest --maxWorkers=12 --testMatch '**/*.integ.ts'",
32
37
  "generate-index": "node ./scripts/generate-index.js"
33
38
  },
34
39
  "author": {
@@ -38,7 +43,7 @@
38
43
  },
39
44
  "devDependencies": {
40
45
  "@cdktf/provider-azurerm": "9.0.8",
41
- "@types/jest": "^29.5.11",
46
+ "@types/jest": "^29.5.12",
42
47
  "@types/moment": "^2.13.0",
43
48
  "@types/node": "^20",
44
49
  "@typescript-eslint/eslint-plugin": "^6",
@@ -53,14 +58,14 @@
53
58
  "jest": "^29.7.0",
54
59
  "jest-junit": "^15",
55
60
  "jsii": "~5.2.0",
56
- "jsii-diff": "^1.94.0",
57
- "jsii-docgen": "^10.3.9",
58
- "jsii-pacmak": "^1.94.0",
61
+ "jsii-diff": "^1.98.0",
62
+ "jsii-docgen": "^10.4.9",
63
+ "jsii-pacmak": "^1.98.0",
59
64
  "jsii-rosetta": "~5.2.0",
60
- "prettier": "^3.2.4",
61
- "projen": "^0.79.1",
65
+ "prettier": "^3.2.5",
66
+ "projen": "^0.81.15",
62
67
  "standard-version": "^9",
63
- "ts-jest": "^29.1.1",
68
+ "ts-jest": "^29.1.3",
64
69
  "ts-node": "^10.9.2",
65
70
  "typescript": "~5.2.0"
66
71
  },
@@ -98,11 +103,11 @@
98
103
  "publishConfig": {
99
104
  "access": "public"
100
105
  },
101
- "version": "0.0.3-pre.10",
106
+ "version": "0.0.3-pre.12",
102
107
  "jest": {
103
108
  "testMatch": [
104
109
  "<rootDir>/src/**/__tests__/**/*.ts?(x)",
105
- "<rootDir>/(|src)/**/*(*.)@(spec|test).ts?(x)"
110
+ "<rootDir>/@(|src)/**/*(*.)@(spec|test|integ).ts?(x)"
106
111
  ],
107
112
  "clearMocks": true,
108
113
  "collectCoverage": true,
@@ -150,7 +155,23 @@
150
155
  "stability": "stable",
151
156
  "jsii": {
152
157
  "outdir": "dist",
153
- "targets": {},
158
+ "targets": {
159
+ "java": {
160
+ "package": "com.microsoft.terraformcdkconstructs",
161
+ "maven": {
162
+ "groupId": "com.microsoft.terraformcdkconstructs",
163
+ "artifactId": "cdktf-azure-constructs"
164
+ }
165
+ },
166
+ "python": {
167
+ "distName": "microsoft-cdktfconstructs",
168
+ "module": "microsoft_cdktfconstructs"
169
+ },
170
+ "dotnet": {
171
+ "namespace": "Microsoft.Cdktf.Azure.TFConstructs",
172
+ "packageId": "Microsoft.Cdktf.Azure.TFConstructs"
173
+ }
174
+ },
154
175
  "tsc": {
155
176
  "outDir": "lib",
156
177
  "rootDir": "src"
@@ -1,13 +0,0 @@
1
- {
2
- "version": "0.17.3",
3
- "stacks": {
4
- "testExampleAzureResource": {
5
- "name": "testExampleAzureResource",
6
- "constructPath": "testExampleAzureResource",
7
- "workingDirectory": "stacks/testExampleAzureResource",
8
- "synthesizedStackPath": "stacks/testExampleAzureResource/cdk.tf.json",
9
- "annotations": [],
10
- "dependencies": []
11
- }
12
- }
13
- }