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

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 (930) hide show
  1. package/.devcontainer/devcontainer.json +62 -0
  2. package/.jsii +18296 -0
  3. package/API.md +19698 -0
  4. package/CODE_OF_CONDUCT.md +9 -0
  5. package/CONTRIBUTING.md +85 -0
  6. package/LICENSE +19 -0
  7. package/README.md +152 -0
  8. package/SECURITY.md +41 -0
  9. package/SUPPORT.md +25 -0
  10. package/cdktf.json +11 -0
  11. package/cdktf.out/manifest.json +13 -0
  12. package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +111 -0
  13. package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +588 -0
  14. package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +245 -0
  15. package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +179 -0
  16. package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +236 -0
  17. package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +436 -0
  18. package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +152 -0
  19. package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +209 -0
  20. package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +439 -0
  21. package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +283 -0
  22. package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +261 -0
  23. package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +309 -0
  24. package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +161 -0
  25. package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +271 -0
  26. package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +122 -0
  27. package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +88 -0
  28. package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +339 -0
  29. package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +264 -0
  30. package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +261 -0
  31. package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +280 -0
  32. package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +167 -0
  33. package/docs/design_guide.md +309 -0
  34. package/docs/images/ide-documentation.png +0 -0
  35. package/docs/testing.md +347 -0
  36. package/go.mod +73 -0
  37. package/go.sum +1006 -0
  38. package/help +51 -0
  39. package/jest.config.js.old +187 -0
  40. package/lib/azure-actiongroup/index.d.ts +1 -0
  41. package/lib/azure-actiongroup/index.js +18 -0
  42. package/lib/azure-actiongroup/lib/actiongroup.d.ts +49 -0
  43. package/lib/azure-actiongroup/lib/actiongroup.js +85 -0
  44. package/lib/azure-actiongroup/lib/index.d.ts +1 -0
  45. package/lib/azure-actiongroup/lib/index.js +18 -0
  46. package/lib/azure-actiongroup/model/action-group-props.d.ts +47 -0
  47. package/lib/azure-actiongroup/model/action-group-props.js +3 -0
  48. package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +20 -0
  49. package/lib/azure-actiongroup/model/arm-role-receiver-props.js +3 -0
  50. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +14 -0
  51. package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +3 -0
  52. package/lib/azure-actiongroup/model/email-receiver-props.d.ts +19 -0
  53. package/lib/azure-actiongroup/model/email-receiver-props.js +3 -0
  54. package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +23 -0
  55. package/lib/azure-actiongroup/model/eventhub-receiver-props.js +3 -0
  56. package/lib/azure-actiongroup/model/function.d.ts +40 -0
  57. package/lib/azure-actiongroup/model/function.js +118 -0
  58. package/lib/azure-actiongroup/model/index.d.ts +10 -0
  59. package/lib/azure-actiongroup/model/index.js +27 -0
  60. package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +23 -0
  61. package/lib/azure-actiongroup/model/logic-app-receiver-props.js +3 -0
  62. package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +18 -0
  63. package/lib/azure-actiongroup/model/sms-receiver-props.js +3 -0
  64. package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +18 -0
  65. package/lib/azure-actiongroup/model/voice-receiver-props.js +3 -0
  66. package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +18 -0
  67. package/lib/azure-actiongroup/model/webhook-receiver-props.js +3 -0
  68. package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +1 -0
  69. package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +294 -0
  70. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +5 -0
  71. package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +66 -0
  72. package/lib/azure-applicationgateway/index.d.ts +1 -0
  73. package/lib/azure-applicationgateway/index.js +18 -0
  74. package/lib/azure-applicationgateway/lib/gateway.d.ts +248 -0
  75. package/lib/azure-applicationgateway/lib/gateway.js +199 -0
  76. package/lib/azure-applicationgateway/lib/index.d.ts +1 -0
  77. package/lib/azure-applicationgateway/lib/index.js +18 -0
  78. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +1 -0
  79. package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +106 -0
  80. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +5 -0
  81. package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +267 -0
  82. package/lib/azure-applicationinsights/index.d.ts +1 -0
  83. package/lib/azure-applicationinsights/index.js +18 -0
  84. package/lib/azure-applicationinsights/lib/appinsights.d.ts +110 -0
  85. package/lib/azure-applicationinsights/lib/appinsights.js +134 -0
  86. package/lib/azure-applicationinsights/lib/index.d.ts +1 -0
  87. package/lib/azure-applicationinsights/lib/index.js +18 -0
  88. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +1 -0
  89. package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +55 -0
  90. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +5 -0
  91. package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +87 -0
  92. package/lib/azure-containerregistry/index.d.ts +1 -0
  93. package/lib/azure-containerregistry/index.js +18 -0
  94. package/lib/azure-containerregistry/lib/index.d.ts +1 -0
  95. package/lib/azure-containerregistry/lib/index.js +18 -0
  96. package/lib/azure-containerregistry/lib/registry.d.ts +70 -0
  97. package/lib/azure-containerregistry/lib/registry.js +76 -0
  98. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +1 -0
  99. package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +50 -0
  100. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +5 -0
  101. package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +57 -0
  102. package/lib/azure-datalake/index.d.ts +1 -0
  103. package/lib/azure-datalake/index.js +18 -0
  104. package/lib/azure-datalake/lib/datalake.d.ts +64 -0
  105. package/lib/azure-datalake/lib/datalake.js +92 -0
  106. package/lib/azure-datalake/lib/filesystem.d.ts +70 -0
  107. package/lib/azure-datalake/lib/filesystem.js +83 -0
  108. package/lib/azure-datalake/lib/index.d.ts +3 -0
  109. package/lib/azure-datalake/lib/index.js +20 -0
  110. package/lib/azure-datalake/lib/path.d.ts +49 -0
  111. package/lib/azure-datalake/lib/path.js +51 -0
  112. package/lib/azure-eventhub/index.d.ts +1 -0
  113. package/lib/azure-eventhub/index.js +18 -0
  114. package/lib/azure-eventhub/lib/authorization.d.ts +58 -0
  115. package/lib/azure-eventhub/lib/authorization.js +84 -0
  116. package/lib/azure-eventhub/lib/cluster.d.ts +56 -0
  117. package/lib/azure-eventhub/lib/cluster.js +64 -0
  118. package/lib/azure-eventhub/lib/consumer.d.ts +54 -0
  119. package/lib/azure-eventhub/lib/consumer.js +59 -0
  120. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  121. package/lib/azure-eventhub/lib/index.js +23 -0
  122. package/lib/azure-eventhub/lib/instance.d.ts +164 -0
  123. package/lib/azure-eventhub/lib/instance.js +184 -0
  124. package/lib/azure-eventhub/lib/kusto-connection.d.ts +109 -0
  125. package/lib/azure-eventhub/lib/kusto-connection.js +76 -0
  126. package/lib/azure-eventhub/lib/namespace.d.ts +151 -0
  127. package/lib/azure-eventhub/lib/namespace.js +131 -0
  128. package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +1 -0
  129. package/lib/azure-eventhub/test/AzureEventhub.spec.js +56 -0
  130. package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +5 -0
  131. package/lib/azure-eventhub/test/ExampleAzureEventhub.js +72 -0
  132. package/lib/azure-functionapp/index.d.ts +1 -0
  133. package/lib/azure-functionapp/index.js +18 -0
  134. package/lib/azure-functionapp/lib/functionapplinux.d.ts +211 -0
  135. package/lib/azure-functionapp/lib/functionapplinux.js +141 -0
  136. package/lib/azure-functionapp/lib/index.d.ts +1 -0
  137. package/lib/azure-functionapp/lib/index.js +18 -0
  138. package/lib/azure-functionapp/serviceplanskus.d.ts +70 -0
  139. package/lib/azure-functionapp/serviceplanskus.js +81 -0
  140. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +1 -0
  141. package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +48 -0
  142. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +5 -0
  143. package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +123 -0
  144. package/lib/azure-keyvault/index.d.ts +1 -0
  145. package/lib/azure-keyvault/index.js +18 -0
  146. package/lib/azure-keyvault/lib/certificate.d.ts +133 -0
  147. package/lib/azure-keyvault/lib/certificate.js +146 -0
  148. package/lib/azure-keyvault/lib/index.d.ts +5 -0
  149. package/lib/azure-keyvault/lib/index.js +22 -0
  150. package/lib/azure-keyvault/lib/key.d.ts +72 -0
  151. package/lib/azure-keyvault/lib/key.js +69 -0
  152. package/lib/azure-keyvault/lib/policy.d.ts +76 -0
  153. package/lib/azure-keyvault/lib/policy.js +56 -0
  154. package/lib/azure-keyvault/lib/secret.d.ts +70 -0
  155. package/lib/azure-keyvault/lib/secret.js +64 -0
  156. package/lib/azure-keyvault/lib/vault.d.ts +282 -0
  157. package/lib/azure-keyvault/lib/vault.js +392 -0
  158. package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +1 -0
  159. package/lib/azure-keyvault/test/AzureKeyVault.spec.js +63 -0
  160. package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +5 -0
  161. package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +112 -0
  162. package/lib/azure-kubernetes/index.d.ts +1 -0
  163. package/lib/azure-kubernetes/index.js +18 -0
  164. package/lib/azure-kubernetes/lib/cluster.d.ts +93 -0
  165. package/lib/azure-kubernetes/lib/cluster.js +63 -0
  166. package/lib/azure-kubernetes/lib/index.d.ts +1 -0
  167. package/lib/azure-kubernetes/lib/index.js +18 -0
  168. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +1 -0
  169. package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +56 -0
  170. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +5 -0
  171. package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +65 -0
  172. package/lib/azure-kusto/index.d.ts +1 -0
  173. package/lib/azure-kusto/index.js +18 -0
  174. package/lib/azure-kusto/lib/cluster.d.ts +136 -0
  175. package/lib/azure-kusto/lib/cluster.js +138 -0
  176. package/lib/azure-kusto/lib/compute-specification.d.ts +71 -0
  177. package/lib/azure-kusto/lib/compute-specification.js +651 -0
  178. package/lib/azure-kusto/lib/database.d.ts +162 -0
  179. package/lib/azure-kusto/lib/database.js +180 -0
  180. package/lib/azure-kusto/lib/index.d.ts +3 -0
  181. package/lib/azure-kusto/lib/index.js +20 -0
  182. package/lib/azure-kusto/test/AzureKusto.spec.d.ts +1 -0
  183. package/lib/azure-kusto/test/AzureKusto.spec.js +50 -0
  184. package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +5 -0
  185. package/lib/azure-kusto/test/ExampleAzureKusto.js +71 -0
  186. package/lib/azure-loganalytics/index.d.ts +1 -0
  187. package/lib/azure-loganalytics/index.js +18 -0
  188. package/lib/azure-loganalytics/lib/index.d.ts +1 -0
  189. package/lib/azure-loganalytics/lib/index.js +18 -0
  190. package/lib/azure-loganalytics/lib/workspace.d.ts +163 -0
  191. package/lib/azure-loganalytics/lib/workspace.js +126 -0
  192. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +1 -0
  193. package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +50 -0
  194. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +5 -0
  195. package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +115 -0
  196. package/lib/azure-metricalert/index.d.ts +2 -0
  197. package/lib/azure-metricalert/index.js +19 -0
  198. package/lib/azure-metricalert/lib/index.d.ts +1 -0
  199. package/lib/azure-metricalert/lib/index.js +18 -0
  200. package/lib/azure-metricalert/lib/metric-alert.d.ts +56 -0
  201. package/lib/azure-metricalert/lib/metric-alert.js +128 -0
  202. package/lib/azure-metricalert/model/action-props.d.ts +11 -0
  203. package/lib/azure-metricalert/model/action-props.js +3 -0
  204. package/lib/azure-metricalert/model/criteria-base-props.d.ts +38 -0
  205. package/lib/azure-metricalert/model/criteria-base-props.js +3 -0
  206. package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +21 -0
  207. package/lib/azure-metricalert/model/criteria-dimension-props.js +3 -0
  208. package/lib/azure-metricalert/model/criteria-props.d.ts +12 -0
  209. package/lib/azure-metricalert/model/criteria-props.js +3 -0
  210. package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +29 -0
  211. package/lib/azure-metricalert/model/dynamic-criteria-props.js +3 -0
  212. package/lib/azure-metricalert/model/function.d.ts +28 -0
  213. package/lib/azure-metricalert/model/function.js +78 -0
  214. package/lib/azure-metricalert/model/index.d.ts +7 -0
  215. package/lib/azure-metricalert/model/index.js +24 -0
  216. package/lib/azure-metricalert/model/metric-alert-props.d.ts +86 -0
  217. package/lib/azure-metricalert/model/metric-alert-props.js +3 -0
  218. package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +1 -0
  219. package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +63 -0
  220. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +5 -0
  221. package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +81 -0
  222. package/lib/azure-networksecuritygroup/index.d.ts +1 -0
  223. package/lib/azure-networksecuritygroup/index.js +18 -0
  224. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -0
  225. package/lib/azure-networksecuritygroup/lib/index.js +19 -0
  226. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +77 -0
  227. package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +608 -0
  228. package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +190 -0
  229. package/lib/azure-networksecuritygroup/lib/securitygroup.js +172 -0
  230. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +1 -0
  231. package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +54 -0
  232. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +5 -0
  233. package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +97 -0
  234. package/lib/azure-queryrulealert/index.d.ts +1 -0
  235. package/lib/azure-queryrulealert/index.js +18 -0
  236. package/lib/azure-queryrulealert/lib/index.d.ts +1 -0
  237. package/lib/azure-queryrulealert/lib/index.js +18 -0
  238. package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +175 -0
  239. package/lib/azure-queryrulealert/lib/query-rule-alert.js +205 -0
  240. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +1 -0
  241. package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +67 -0
  242. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +5 -0
  243. package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +67 -0
  244. package/lib/azure-resourcegroup/index.d.ts +1 -0
  245. package/lib/azure-resourcegroup/index.js +18 -0
  246. package/lib/azure-resourcegroup/lib/index.d.ts +1 -0
  247. package/lib/azure-resourcegroup/lib/index.js +18 -0
  248. package/lib/azure-resourcegroup/lib/resource-group.d.ts +66 -0
  249. package/lib/azure-resourcegroup/lib/resource-group.js +77 -0
  250. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +1 -0
  251. package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +41 -0
  252. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +5 -0
  253. package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +29 -0
  254. package/lib/azure-storageaccount/index.d.ts +1 -0
  255. package/lib/azure-storageaccount/index.js +18 -0
  256. package/lib/azure-storageaccount/lib/account.d.ts +232 -0
  257. package/lib/azure-storageaccount/lib/account.js +225 -0
  258. package/lib/azure-storageaccount/lib/container.d.ts +122 -0
  259. package/lib/azure-storageaccount/lib/container.js +167 -0
  260. package/lib/azure-storageaccount/lib/fileshare.d.ts +105 -0
  261. package/lib/azure-storageaccount/lib/fileshare.js +126 -0
  262. package/lib/azure-storageaccount/lib/index.d.ts +5 -0
  263. package/lib/azure-storageaccount/lib/index.js +22 -0
  264. package/lib/azure-storageaccount/lib/queue.d.ts +35 -0
  265. package/lib/azure-storageaccount/lib/queue.js +52 -0
  266. package/lib/azure-storageaccount/lib/table.d.ts +38 -0
  267. package/lib/azure-storageaccount/lib/table.js +55 -0
  268. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +1 -0
  269. package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +45 -0
  270. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +5 -0
  271. package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +102 -0
  272. package/lib/azure-virtualmachine/index.d.ts +1 -0
  273. package/lib/azure-virtualmachine/index.js +18 -0
  274. package/lib/azure-virtualmachine/lib/image-references.d.ts +22 -0
  275. package/lib/azure-virtualmachine/lib/image-references.js +128 -0
  276. package/lib/azure-virtualmachine/lib/index.d.ts +2 -0
  277. package/lib/azure-virtualmachine/lib/index.js +19 -0
  278. package/lib/azure-virtualmachine/lib/vm.d.ts +281 -0
  279. package/lib/azure-virtualmachine/lib/vm.js +283 -0
  280. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +1 -0
  281. package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +48 -0
  282. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +1 -0
  283. package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +50 -0
  284. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +5 -0
  285. package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +106 -0
  286. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +5 -0
  287. package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +102 -0
  288. package/lib/azure-virtualmachinescaleset/index.d.ts +1 -0
  289. package/lib/azure-virtualmachinescaleset/index.js +18 -0
  290. package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +324 -0
  291. package/lib/azure-virtualmachinescaleset/lib/cluster.js +264 -0
  292. package/lib/azure-virtualmachinescaleset/lib/index.d.ts +1 -0
  293. package/lib/azure-virtualmachinescaleset/lib/index.js +18 -0
  294. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +1 -0
  295. package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +48 -0
  296. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +1 -0
  297. package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +50 -0
  298. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +5 -0
  299. package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +107 -0
  300. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +5 -0
  301. package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +103 -0
  302. package/lib/azure-virtualnetwork/index.d.ts +1 -0
  303. package/lib/azure-virtualnetwork/index.js +18 -0
  304. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -0
  305. package/lib/azure-virtualnetwork/lib/index.js +19 -0
  306. package/lib/azure-virtualnetwork/lib/network.d.ts +122 -0
  307. package/lib/azure-virtualnetwork/lib/network.js +120 -0
  308. package/lib/azure-virtualnetwork/lib/peering.d.ts +90 -0
  309. package/lib/azure-virtualnetwork/lib/peering.js +71 -0
  310. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +1 -0
  311. package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +48 -0
  312. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +5 -0
  313. package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +88 -0
  314. package/lib/core-azure/index.d.ts +1 -0
  315. package/lib/core-azure/index.js +18 -0
  316. package/lib/core-azure/lib/diagsettings.d.ts +89 -0
  317. package/lib/core-azure/lib/diagsettings.js +83 -0
  318. package/lib/core-azure/lib/index.d.ts +3 -0
  319. package/lib/core-azure/lib/index.js +20 -0
  320. package/lib/core-azure/lib/rbac.d.ts +50 -0
  321. package/lib/core-azure/lib/rbac.js +48 -0
  322. package/lib/core-azure/lib/resource.d.ts +62 -0
  323. package/lib/core-azure/lib/resource.js +118 -0
  324. package/lib/core-azure/test/AzureResource.spec.d.ts +1 -0
  325. package/lib/core-azure/test/AzureResource.spec.js +19 -0
  326. package/lib/core-azure/test/ExampleAzureResource.d.ts +5 -0
  327. package/lib/core-azure/test/ExampleAzureResource.js +67 -0
  328. package/lib/index.d.ts +18 -0
  329. package/lib/index.js +22 -0
  330. package/lib/testing/index.d.ts +6 -0
  331. package/lib/testing/index.js +18 -0
  332. package/lib/util/azureTenantIdHelpers.d.ts +2 -0
  333. package/lib/util/azureTenantIdHelpers.js +34 -0
  334. package/lib/util/randomName.d.ts +1 -0
  335. package/lib/util/randomName.js +13 -0
  336. package/node_modules/moment/CHANGELOG.md +996 -0
  337. package/node_modules/moment/LICENSE +22 -0
  338. package/node_modules/moment/README.md +55 -0
  339. package/node_modules/moment/dist/locale/af.js +71 -0
  340. package/node_modules/moment/dist/locale/ar-dz.js +156 -0
  341. package/node_modules/moment/dist/locale/ar-kw.js +55 -0
  342. package/node_modules/moment/dist/locale/ar-ly.js +171 -0
  343. package/node_modules/moment/dist/locale/ar-ma.js +56 -0
  344. package/node_modules/moment/dist/locale/ar-ps.js +112 -0
  345. package/node_modules/moment/dist/locale/ar-sa.js +105 -0
  346. package/node_modules/moment/dist/locale/ar-tn.js +55 -0
  347. package/node_modules/moment/dist/locale/ar.js +189 -0
  348. package/node_modules/moment/dist/locale/az.js +102 -0
  349. package/node_modules/moment/dist/locale/be.js +142 -0
  350. package/node_modules/moment/dist/locale/bg.js +87 -0
  351. package/node_modules/moment/dist/locale/bm.js +52 -0
  352. package/node_modules/moment/dist/locale/bn-bd.js +129 -0
  353. package/node_modules/moment/dist/locale/bn.js +119 -0
  354. package/node_modules/moment/dist/locale/bo.js +124 -0
  355. package/node_modules/moment/dist/locale/br.js +168 -0
  356. package/node_modules/moment/dist/locale/bs.js +160 -0
  357. package/node_modules/moment/dist/locale/ca.js +100 -0
  358. package/node_modules/moment/dist/locale/cs.js +181 -0
  359. package/node_modules/moment/dist/locale/cv.js +63 -0
  360. package/node_modules/moment/dist/locale/cy.js +98 -0
  361. package/node_modules/moment/dist/locale/da.js +53 -0
  362. package/node_modules/moment/dist/locale/de-at.js +79 -0
  363. package/node_modules/moment/dist/locale/de-ch.js +78 -0
  364. package/node_modules/moment/dist/locale/de.js +78 -0
  365. package/node_modules/moment/dist/locale/dv.js +90 -0
  366. package/node_modules/moment/dist/locale/el.js +106 -0
  367. package/node_modules/moment/dist/locale/en-au.js +68 -0
  368. package/node_modules/moment/dist/locale/en-ca.js +64 -0
  369. package/node_modules/moment/dist/locale/en-gb.js +68 -0
  370. package/node_modules/moment/dist/locale/en-ie.js +68 -0
  371. package/node_modules/moment/dist/locale/en-il.js +64 -0
  372. package/node_modules/moment/dist/locale/en-in.js +68 -0
  373. package/node_modules/moment/dist/locale/en-nz.js +68 -0
  374. package/node_modules/moment/dist/locale/en-sg.js +68 -0
  375. package/node_modules/moment/dist/locale/eo.js +68 -0
  376. package/node_modules/moment/dist/locale/es-do.js +108 -0
  377. package/node_modules/moment/dist/locale/es-mx.js +110 -0
  378. package/node_modules/moment/dist/locale/es-us.js +110 -0
  379. package/node_modules/moment/dist/locale/es.js +110 -0
  380. package/node_modules/moment/dist/locale/et.js +78 -0
  381. package/node_modules/moment/dist/locale/eu.js +65 -0
  382. package/node_modules/moment/dist/locale/fa.js +113 -0
  383. package/node_modules/moment/dist/locale/fi.js +124 -0
  384. package/node_modules/moment/dist/locale/fil.js +58 -0
  385. package/node_modules/moment/dist/locale/fo.js +57 -0
  386. package/node_modules/moment/dist/locale/fr-ca.js +70 -0
  387. package/node_modules/moment/dist/locale/fr-ch.js +74 -0
  388. package/node_modules/moment/dist/locale/fr.js +108 -0
  389. package/node_modules/moment/dist/locale/fy.js +75 -0
  390. package/node_modules/moment/dist/locale/ga.js +95 -0
  391. package/node_modules/moment/dist/locale/gd.js +95 -0
  392. package/node_modules/moment/dist/locale/gl.js +75 -0
  393. package/node_modules/moment/dist/locale/gom-deva.js +126 -0
  394. package/node_modules/moment/dist/locale/gom-latn.js +124 -0
  395. package/node_modules/moment/dist/locale/gu.js +122 -0
  396. package/node_modules/moment/dist/locale/he.js +94 -0
  397. package/node_modules/moment/dist/locale/hi.js +168 -0
  398. package/node_modules/moment/dist/locale/hr.js +156 -0
  399. package/node_modules/moment/dist/locale/hu.js +118 -0
  400. package/node_modules/moment/dist/locale/hy-am.js +94 -0
  401. package/node_modules/moment/dist/locale/id.js +76 -0
  402. package/node_modules/moment/dist/locale/is.js +140 -0
  403. package/node_modules/moment/dist/locale/it-ch.js +64 -0
  404. package/node_modules/moment/dist/locale/it.js +106 -0
  405. package/node_modules/moment/dist/locale/ja.js +148 -0
  406. package/node_modules/moment/dist/locale/jv.js +76 -0
  407. package/node_modules/moment/dist/locale/ka.js +92 -0
  408. package/node_modules/moment/dist/locale/kk.js +82 -0
  409. package/node_modules/moment/dist/locale/km.js +103 -0
  410. package/node_modules/moment/dist/locale/kn.js +124 -0
  411. package/node_modules/moment/dist/locale/ko.js +75 -0
  412. package/node_modules/moment/dist/locale/ku-kmr.js +121 -0
  413. package/node_modules/moment/dist/locale/ku.js +118 -0
  414. package/node_modules/moment/dist/locale/ky.js +84 -0
  415. package/node_modules/moment/dist/locale/lb.js +137 -0
  416. package/node_modules/moment/dist/locale/lo.js +66 -0
  417. package/node_modules/moment/dist/locale/lt.js +125 -0
  418. package/node_modules/moment/dist/locale/lv.js +94 -0
  419. package/node_modules/moment/dist/locale/me.js +117 -0
  420. package/node_modules/moment/dist/locale/mi.js +60 -0
  421. package/node_modules/moment/dist/locale/mk.js +85 -0
  422. package/node_modules/moment/dist/locale/ml.js +82 -0
  423. package/node_modules/moment/dist/locale/mn.js +100 -0
  424. package/node_modules/moment/dist/locale/mr.js +203 -0
  425. package/node_modules/moment/dist/locale/ms-my.js +76 -0
  426. package/node_modules/moment/dist/locale/ms.js +75 -0
  427. package/node_modules/moment/dist/locale/mt.js +56 -0
  428. package/node_modules/moment/dist/locale/my.js +91 -0
  429. package/node_modules/moment/dist/locale/nb.js +60 -0
  430. package/node_modules/moment/dist/locale/ne.js +121 -0
  431. package/node_modules/moment/dist/locale/nl-be.js +102 -0
  432. package/node_modules/moment/dist/locale/nl.js +104 -0
  433. package/node_modules/moment/dist/locale/nn.js +59 -0
  434. package/node_modules/moment/dist/locale/oc-lnc.js +85 -0
  435. package/node_modules/moment/dist/locale/pa-in.js +122 -0
  436. package/node_modules/moment/dist/locale/pl.js +140 -0
  437. package/node_modules/moment/dist/locale/pt-br.js +58 -0
  438. package/node_modules/moment/dist/locale/pt.js +63 -0
  439. package/node_modules/moment/dist/locale/ro.js +76 -0
  440. package/node_modules/moment/dist/locale/ru.js +213 -0
  441. package/node_modules/moment/dist/locale/sd.js +81 -0
  442. package/node_modules/moment/dist/locale/se.js +57 -0
  443. package/node_modules/moment/dist/locale/si.js +69 -0
  444. package/node_modules/moment/dist/locale/sk.js +145 -0
  445. package/node_modules/moment/dist/locale/sl.js +171 -0
  446. package/node_modules/moment/dist/locale/sq.js +65 -0
  447. package/node_modules/moment/dist/locale/sr-cyrl.js +127 -0
  448. package/node_modules/moment/dist/locale/sr.js +129 -0
  449. package/node_modules/moment/dist/locale/ss.js +84 -0
  450. package/node_modules/moment/dist/locale/sv.js +68 -0
  451. package/node_modules/moment/dist/locale/sw.js +55 -0
  452. package/node_modules/moment/dist/locale/ta.js +131 -0
  453. package/node_modules/moment/dist/locale/te.js +88 -0
  454. package/node_modules/moment/dist/locale/tet.js +68 -0
  455. package/node_modules/moment/dist/locale/tg.js +117 -0
  456. package/node_modules/moment/dist/locale/th.js +65 -0
  457. package/node_modules/moment/dist/locale/tk.js +91 -0
  458. package/node_modules/moment/dist/locale/tl-ph.js +57 -0
  459. package/node_modules/moment/dist/locale/tlh.js +124 -0
  460. package/node_modules/moment/dist/locale/tr.js +106 -0
  461. package/node_modules/moment/dist/locale/tzl.js +89 -0
  462. package/node_modules/moment/dist/locale/tzm-latn.js +54 -0
  463. package/node_modules/moment/dist/locale/tzm.js +54 -0
  464. package/node_modules/moment/dist/locale/ug-cn.js +111 -0
  465. package/node_modules/moment/dist/locale/uk.js +167 -0
  466. package/node_modules/moment/dist/locale/ur.js +82 -0
  467. package/node_modules/moment/dist/locale/uz-latn.js +54 -0
  468. package/node_modules/moment/dist/locale/uz.js +51 -0
  469. package/node_modules/moment/dist/locale/vi.js +80 -0
  470. package/node_modules/moment/dist/locale/x-pseudo.js +73 -0
  471. package/node_modules/moment/dist/locale/yo.js +53 -0
  472. package/node_modules/moment/dist/locale/zh-cn.js +120 -0
  473. package/node_modules/moment/dist/locale/zh-hk.js +101 -0
  474. package/node_modules/moment/dist/locale/zh-mo.js +100 -0
  475. package/node_modules/moment/dist/locale/zh-tw.js +99 -0
  476. package/node_modules/moment/dist/moment.js +5680 -0
  477. package/node_modules/moment/ender.js +1 -0
  478. package/node_modules/moment/locale/af.js +82 -0
  479. package/node_modules/moment/locale/ar-dz.js +167 -0
  480. package/node_modules/moment/locale/ar-kw.js +66 -0
  481. package/node_modules/moment/locale/ar-ly.js +182 -0
  482. package/node_modules/moment/locale/ar-ma.js +67 -0
  483. package/node_modules/moment/locale/ar-ps.js +123 -0
  484. package/node_modules/moment/locale/ar-sa.js +116 -0
  485. package/node_modules/moment/locale/ar-tn.js +66 -0
  486. package/node_modules/moment/locale/ar.js +200 -0
  487. package/node_modules/moment/locale/az.js +113 -0
  488. package/node_modules/moment/locale/be.js +153 -0
  489. package/node_modules/moment/locale/bg.js +98 -0
  490. package/node_modules/moment/locale/bm.js +62 -0
  491. package/node_modules/moment/locale/bn-bd.js +140 -0
  492. package/node_modules/moment/locale/bn.js +130 -0
  493. package/node_modules/moment/locale/bo.js +135 -0
  494. package/node_modules/moment/locale/br.js +179 -0
  495. package/node_modules/moment/locale/bs.js +171 -0
  496. package/node_modules/moment/locale/ca.js +111 -0
  497. package/node_modules/moment/locale/cs.js +192 -0
  498. package/node_modules/moment/locale/cv.js +74 -0
  499. package/node_modules/moment/locale/cy.js +109 -0
  500. package/node_modules/moment/locale/da.js +64 -0
  501. package/node_modules/moment/locale/de-at.js +90 -0
  502. package/node_modules/moment/locale/de-ch.js +87 -0
  503. package/node_modules/moment/locale/de.js +89 -0
  504. package/node_modules/moment/locale/dv.js +101 -0
  505. package/node_modules/moment/locale/el.js +117 -0
  506. package/node_modules/moment/locale/en-au.js +79 -0
  507. package/node_modules/moment/locale/en-ca.js +75 -0
  508. package/node_modules/moment/locale/en-gb.js +79 -0
  509. package/node_modules/moment/locale/en-ie.js +79 -0
  510. package/node_modules/moment/locale/en-il.js +75 -0
  511. package/node_modules/moment/locale/en-in.js +79 -0
  512. package/node_modules/moment/locale/en-nz.js +79 -0
  513. package/node_modules/moment/locale/en-sg.js +79 -0
  514. package/node_modules/moment/locale/eo.js +79 -0
  515. package/node_modules/moment/locale/es-do.js +119 -0
  516. package/node_modules/moment/locale/es-mx.js +121 -0
  517. package/node_modules/moment/locale/es-us.js +121 -0
  518. package/node_modules/moment/locale/es.js +121 -0
  519. package/node_modules/moment/locale/et.js +89 -0
  520. package/node_modules/moment/locale/eu.js +76 -0
  521. package/node_modules/moment/locale/fa.js +124 -0
  522. package/node_modules/moment/locale/fi.js +135 -0
  523. package/node_modules/moment/locale/fil.js +69 -0
  524. package/node_modules/moment/locale/fo.js +68 -0
  525. package/node_modules/moment/locale/fr-ca.js +81 -0
  526. package/node_modules/moment/locale/fr-ch.js +85 -0
  527. package/node_modules/moment/locale/fr.js +119 -0
  528. package/node_modules/moment/locale/fy.js +86 -0
  529. package/node_modules/moment/locale/ga.js +106 -0
  530. package/node_modules/moment/locale/gd.js +106 -0
  531. package/node_modules/moment/locale/gl.js +86 -0
  532. package/node_modules/moment/locale/gom-deva.js +137 -0
  533. package/node_modules/moment/locale/gom-latn.js +135 -0
  534. package/node_modules/moment/locale/gu.js +133 -0
  535. package/node_modules/moment/locale/he.js +105 -0
  536. package/node_modules/moment/locale/hi.js +179 -0
  537. package/node_modules/moment/locale/hr.js +167 -0
  538. package/node_modules/moment/locale/hu.js +129 -0
  539. package/node_modules/moment/locale/hy-am.js +105 -0
  540. package/node_modules/moment/locale/id.js +87 -0
  541. package/node_modules/moment/locale/is.js +151 -0
  542. package/node_modules/moment/locale/it-ch.js +75 -0
  543. package/node_modules/moment/locale/it.js +117 -0
  544. package/node_modules/moment/locale/ja.js +159 -0
  545. package/node_modules/moment/locale/jv.js +87 -0
  546. package/node_modules/moment/locale/ka.js +103 -0
  547. package/node_modules/moment/locale/kk.js +93 -0
  548. package/node_modules/moment/locale/km.js +114 -0
  549. package/node_modules/moment/locale/kn.js +135 -0
  550. package/node_modules/moment/locale/ko.js +86 -0
  551. package/node_modules/moment/locale/ku-kmr.js +125 -0
  552. package/node_modules/moment/locale/ku.js +129 -0
  553. package/node_modules/moment/locale/ky.js +95 -0
  554. package/node_modules/moment/locale/lb.js +148 -0
  555. package/node_modules/moment/locale/lo.js +77 -0
  556. package/node_modules/moment/locale/lt.js +136 -0
  557. package/node_modules/moment/locale/lv.js +105 -0
  558. package/node_modules/moment/locale/me.js +128 -0
  559. package/node_modules/moment/locale/mi.js +71 -0
  560. package/node_modules/moment/locale/mk.js +97 -0
  561. package/node_modules/moment/locale/ml.js +93 -0
  562. package/node_modules/moment/locale/mn.js +111 -0
  563. package/node_modules/moment/locale/mr.js +214 -0
  564. package/node_modules/moment/locale/ms-my.js +87 -0
  565. package/node_modules/moment/locale/ms.js +86 -0
  566. package/node_modules/moment/locale/mt.js +67 -0
  567. package/node_modules/moment/locale/my.js +102 -0
  568. package/node_modules/moment/locale/nb.js +71 -0
  569. package/node_modules/moment/locale/ne.js +132 -0
  570. package/node_modules/moment/locale/nl-be.js +113 -0
  571. package/node_modules/moment/locale/nl.js +115 -0
  572. package/node_modules/moment/locale/nn.js +70 -0
  573. package/node_modules/moment/locale/oc-lnc.js +96 -0
  574. package/node_modules/moment/locale/pa-in.js +133 -0
  575. package/node_modules/moment/locale/pl.js +151 -0
  576. package/node_modules/moment/locale/pt-br.js +69 -0
  577. package/node_modules/moment/locale/pt.js +74 -0
  578. package/node_modules/moment/locale/ro.js +87 -0
  579. package/node_modules/moment/locale/ru.js +224 -0
  580. package/node_modules/moment/locale/sd.js +92 -0
  581. package/node_modules/moment/locale/se.js +68 -0
  582. package/node_modules/moment/locale/si.js +80 -0
  583. package/node_modules/moment/locale/sk.js +156 -0
  584. package/node_modules/moment/locale/sl.js +182 -0
  585. package/node_modules/moment/locale/sq.js +76 -0
  586. package/node_modules/moment/locale/sr-cyrl.js +138 -0
  587. package/node_modules/moment/locale/sr.js +140 -0
  588. package/node_modules/moment/locale/ss.js +95 -0
  589. package/node_modules/moment/locale/sv.js +79 -0
  590. package/node_modules/moment/locale/sw.js +66 -0
  591. package/node_modules/moment/locale/ta.js +142 -0
  592. package/node_modules/moment/locale/te.js +99 -0
  593. package/node_modules/moment/locale/tet.js +79 -0
  594. package/node_modules/moment/locale/tg.js +128 -0
  595. package/node_modules/moment/locale/th.js +76 -0
  596. package/node_modules/moment/locale/tk.js +102 -0
  597. package/node_modules/moment/locale/tl-ph.js +68 -0
  598. package/node_modules/moment/locale/tlh.js +135 -0
  599. package/node_modules/moment/locale/tr.js +117 -0
  600. package/node_modules/moment/locale/tzl.js +100 -0
  601. package/node_modules/moment/locale/tzm-latn.js +65 -0
  602. package/node_modules/moment/locale/tzm.js +65 -0
  603. package/node_modules/moment/locale/ug-cn.js +122 -0
  604. package/node_modules/moment/locale/uk.js +178 -0
  605. package/node_modules/moment/locale/ur.js +93 -0
  606. package/node_modules/moment/locale/uz-latn.js +65 -0
  607. package/node_modules/moment/locale/uz.js +62 -0
  608. package/node_modules/moment/locale/vi.js +91 -0
  609. package/node_modules/moment/locale/x-pseudo.js +84 -0
  610. package/node_modules/moment/locale/yo.js +64 -0
  611. package/node_modules/moment/locale/zh-cn.js +131 -0
  612. package/node_modules/moment/locale/zh-hk.js +112 -0
  613. package/node_modules/moment/locale/zh-mo.js +111 -0
  614. package/node_modules/moment/locale/zh-tw.js +110 -0
  615. package/node_modules/moment/min/locales.js +12800 -0
  616. package/node_modules/moment/min/locales.min.js +2 -0
  617. package/node_modules/moment/min/locales.min.js.map +1 -0
  618. package/node_modules/moment/min/moment-with-locales.js +18472 -0
  619. package/node_modules/moment/min/moment-with-locales.min.js +2 -0
  620. package/node_modules/moment/min/moment-with-locales.min.js.map +1 -0
  621. package/node_modules/moment/min/moment.min.js +2 -0
  622. package/node_modules/moment/min/moment.min.js.map +1 -0
  623. package/node_modules/moment/moment.d.ts +796 -0
  624. package/node_modules/moment/moment.js +5688 -0
  625. package/node_modules/moment/package.js +11 -0
  626. package/node_modules/moment/package.json +116 -0
  627. package/node_modules/moment/src/lib/create/check-overflow.js +57 -0
  628. package/node_modules/moment/src/lib/create/date-from-array.js +35 -0
  629. package/node_modules/moment/src/lib/create/from-anything.js +117 -0
  630. package/node_modules/moment/src/lib/create/from-array.js +187 -0
  631. package/node_modules/moment/src/lib/create/from-object.js +20 -0
  632. package/node_modules/moment/src/lib/create/from-string-and-array.js +67 -0
  633. package/node_modules/moment/src/lib/create/from-string-and-format.js +135 -0
  634. package/node_modules/moment/src/lib/create/from-string.js +258 -0
  635. package/node_modules/moment/src/lib/create/local.js +5 -0
  636. package/node_modules/moment/src/lib/create/parsing-flags.js +28 -0
  637. package/node_modules/moment/src/lib/create/utc.js +5 -0
  638. package/node_modules/moment/src/lib/create/valid.js +51 -0
  639. package/node_modules/moment/src/lib/duration/abs.js +18 -0
  640. package/node_modules/moment/src/lib/duration/add-subtract.js +21 -0
  641. package/node_modules/moment/src/lib/duration/as.js +76 -0
  642. package/node_modules/moment/src/lib/duration/bubble.js +68 -0
  643. package/node_modules/moment/src/lib/duration/clone.js +5 -0
  644. package/node_modules/moment/src/lib/duration/constructor.js +42 -0
  645. package/node_modules/moment/src/lib/duration/create.js +133 -0
  646. package/node_modules/moment/src/lib/duration/duration.js +16 -0
  647. package/node_modules/moment/src/lib/duration/get.js +27 -0
  648. package/node_modules/moment/src/lib/duration/humanize.js +114 -0
  649. package/node_modules/moment/src/lib/duration/iso-string.js +68 -0
  650. package/node_modules/moment/src/lib/duration/prototype.js +78 -0
  651. package/node_modules/moment/src/lib/duration/valid.js +55 -0
  652. package/node_modules/moment/src/lib/format/format.js +104 -0
  653. package/node_modules/moment/src/lib/locale/base-config.js +41 -0
  654. package/node_modules/moment/src/lib/locale/calendar.js +15 -0
  655. package/node_modules/moment/src/lib/locale/constructor.js +5 -0
  656. package/node_modules/moment/src/lib/locale/en.js +39 -0
  657. package/node_modules/moment/src/lib/locale/formats.js +36 -0
  658. package/node_modules/moment/src/lib/locale/invalid.js +5 -0
  659. package/node_modules/moment/src/lib/locale/lists.js +93 -0
  660. package/node_modules/moment/src/lib/locale/locale.js +45 -0
  661. package/node_modules/moment/src/lib/locale/locales.js +249 -0
  662. package/node_modules/moment/src/lib/locale/ordinal.js +8 -0
  663. package/node_modules/moment/src/lib/locale/pre-post-format.js +3 -0
  664. package/node_modules/moment/src/lib/locale/prototype.js +88 -0
  665. package/node_modules/moment/src/lib/locale/relative.js +32 -0
  666. package/node_modules/moment/src/lib/locale/set.js +56 -0
  667. package/node_modules/moment/src/lib/moment/add-subtract.js +61 -0
  668. package/node_modules/moment/src/lib/moment/calendar.js +53 -0
  669. package/node_modules/moment/src/lib/moment/clone.js +5 -0
  670. package/node_modules/moment/src/lib/moment/compare.js +72 -0
  671. package/node_modules/moment/src/lib/moment/constructor.js +80 -0
  672. package/node_modules/moment/src/lib/moment/creation-data.js +9 -0
  673. package/node_modules/moment/src/lib/moment/diff.js +79 -0
  674. package/node_modules/moment/src/lib/moment/format.js +78 -0
  675. package/node_modules/moment/src/lib/moment/from.js +20 -0
  676. package/node_modules/moment/src/lib/moment/get-set.js +117 -0
  677. package/node_modules/moment/src/lib/moment/locale.js +34 -0
  678. package/node_modules/moment/src/lib/moment/min-max.js +62 -0
  679. package/node_modules/moment/src/lib/moment/moment.js +28 -0
  680. package/node_modules/moment/src/lib/moment/now.js +3 -0
  681. package/node_modules/moment/src/lib/moment/prototype.js +197 -0
  682. package/node_modules/moment/src/lib/moment/start-end-of.js +164 -0
  683. package/node_modules/moment/src/lib/moment/to-type.js +42 -0
  684. package/node_modules/moment/src/lib/moment/to.js +20 -0
  685. package/node_modules/moment/src/lib/moment/valid.js +15 -0
  686. package/node_modules/moment/src/lib/parse/regex.js +84 -0
  687. package/node_modules/moment/src/lib/parse/token.js +36 -0
  688. package/node_modules/moment/src/lib/units/aliases.js +75 -0
  689. package/node_modules/moment/src/lib/units/constants.js +9 -0
  690. package/node_modules/moment/src/lib/units/day-of-month.js +35 -0
  691. package/node_modules/moment/src/lib/units/day-of-week.js +432 -0
  692. package/node_modules/moment/src/lib/units/day-of-year.js +28 -0
  693. package/node_modules/moment/src/lib/units/era.js +293 -0
  694. package/node_modules/moment/src/lib/units/hour.js +152 -0
  695. package/node_modules/moment/src/lib/units/millisecond.js +66 -0
  696. package/node_modules/moment/src/lib/units/minute.js +24 -0
  697. package/node_modules/moment/src/lib/units/month.js +340 -0
  698. package/node_modules/moment/src/lib/units/offset.js +249 -0
  699. package/node_modules/moment/src/lib/units/priorities.js +34 -0
  700. package/node_modules/moment/src/lib/units/quarter.js +24 -0
  701. package/node_modules/moment/src/lib/units/second.js +24 -0
  702. package/node_modules/moment/src/lib/units/timestamp.js +20 -0
  703. package/node_modules/moment/src/lib/units/timezone.js +16 -0
  704. package/node_modules/moment/src/lib/units/units.js +20 -0
  705. package/node_modules/moment/src/lib/units/week-calendar-utils.js +66 -0
  706. package/node_modules/moment/src/lib/units/week-year.js +128 -0
  707. package/node_modules/moment/src/lib/units/week.js +62 -0
  708. package/node_modules/moment/src/lib/units/year.js +75 -0
  709. package/node_modules/moment/src/lib/utils/abs-ceil.js +7 -0
  710. package/node_modules/moment/src/lib/utils/abs-floor.js +8 -0
  711. package/node_modules/moment/src/lib/utils/abs-round.js +7 -0
  712. package/node_modules/moment/src/lib/utils/compare-arrays.js +18 -0
  713. package/node_modules/moment/src/lib/utils/defaults.js +10 -0
  714. package/node_modules/moment/src/lib/utils/deprecate.js +69 -0
  715. package/node_modules/moment/src/lib/utils/extend.js +19 -0
  716. package/node_modules/moment/src/lib/utils/has-own-prop.js +3 -0
  717. package/node_modules/moment/src/lib/utils/hooks.js +13 -0
  718. package/node_modules/moment/src/lib/utils/index-of.js +18 -0
  719. package/node_modules/moment/src/lib/utils/is-array.js +6 -0
  720. package/node_modules/moment/src/lib/utils/is-calendar-spec.js +25 -0
  721. package/node_modules/moment/src/lib/utils/is-date.js +6 -0
  722. package/node_modules/moment/src/lib/utils/is-function.js +6 -0
  723. package/node_modules/moment/src/lib/utils/is-leap-year.js +3 -0
  724. package/node_modules/moment/src/lib/utils/is-moment-input.js +75 -0
  725. package/node_modules/moment/src/lib/utils/is-number.js +6 -0
  726. package/node_modules/moment/src/lib/utils/is-object-empty.js +15 -0
  727. package/node_modules/moment/src/lib/utils/is-object.js +8 -0
  728. package/node_modules/moment/src/lib/utils/is-string.js +3 -0
  729. package/node_modules/moment/src/lib/utils/is-undefined.js +3 -0
  730. package/node_modules/moment/src/lib/utils/keys.js +20 -0
  731. package/node_modules/moment/src/lib/utils/map.js +9 -0
  732. package/node_modules/moment/src/lib/utils/mod.js +3 -0
  733. package/node_modules/moment/src/lib/utils/some.js +20 -0
  734. package/node_modules/moment/src/lib/utils/to-int.js +12 -0
  735. package/node_modules/moment/src/lib/utils/zero-fill.js +10 -0
  736. package/node_modules/moment/src/locale/af.js +71 -0
  737. package/node_modules/moment/src/locale/ar-dz.js +156 -0
  738. package/node_modules/moment/src/locale/ar-kw.js +55 -0
  739. package/node_modules/moment/src/locale/ar-ly.js +171 -0
  740. package/node_modules/moment/src/locale/ar-ma.js +56 -0
  741. package/node_modules/moment/src/locale/ar-ps.js +112 -0
  742. package/node_modules/moment/src/locale/ar-sa.js +105 -0
  743. package/node_modules/moment/src/locale/ar-tn.js +55 -0
  744. package/node_modules/moment/src/locale/ar.js +189 -0
  745. package/node_modules/moment/src/locale/az.js +102 -0
  746. package/node_modules/moment/src/locale/be.js +142 -0
  747. package/node_modules/moment/src/locale/bg.js +87 -0
  748. package/node_modules/moment/src/locale/bm.js +52 -0
  749. package/node_modules/moment/src/locale/bn-bd.js +129 -0
  750. package/node_modules/moment/src/locale/bn.js +119 -0
  751. package/node_modules/moment/src/locale/bo.js +124 -0
  752. package/node_modules/moment/src/locale/br.js +168 -0
  753. package/node_modules/moment/src/locale/bs.js +160 -0
  754. package/node_modules/moment/src/locale/ca.js +100 -0
  755. package/node_modules/moment/src/locale/cs.js +181 -0
  756. package/node_modules/moment/src/locale/cv.js +63 -0
  757. package/node_modules/moment/src/locale/cy.js +98 -0
  758. package/node_modules/moment/src/locale/da.js +53 -0
  759. package/node_modules/moment/src/locale/de-at.js +79 -0
  760. package/node_modules/moment/src/locale/de-ch.js +78 -0
  761. package/node_modules/moment/src/locale/de.js +78 -0
  762. package/node_modules/moment/src/locale/dv.js +90 -0
  763. package/node_modules/moment/src/locale/el.js +106 -0
  764. package/node_modules/moment/src/locale/en-au.js +68 -0
  765. package/node_modules/moment/src/locale/en-ca.js +64 -0
  766. package/node_modules/moment/src/locale/en-gb.js +68 -0
  767. package/node_modules/moment/src/locale/en-ie.js +68 -0
  768. package/node_modules/moment/src/locale/en-il.js +64 -0
  769. package/node_modules/moment/src/locale/en-in.js +68 -0
  770. package/node_modules/moment/src/locale/en-nz.js +68 -0
  771. package/node_modules/moment/src/locale/en-sg.js +68 -0
  772. package/node_modules/moment/src/locale/eo.js +68 -0
  773. package/node_modules/moment/src/locale/es-do.js +108 -0
  774. package/node_modules/moment/src/locale/es-mx.js +110 -0
  775. package/node_modules/moment/src/locale/es-us.js +110 -0
  776. package/node_modules/moment/src/locale/es.js +110 -0
  777. package/node_modules/moment/src/locale/et.js +78 -0
  778. package/node_modules/moment/src/locale/eu.js +65 -0
  779. package/node_modules/moment/src/locale/fa.js +113 -0
  780. package/node_modules/moment/src/locale/fi.js +124 -0
  781. package/node_modules/moment/src/locale/fil.js +58 -0
  782. package/node_modules/moment/src/locale/fo.js +57 -0
  783. package/node_modules/moment/src/locale/fr-ca.js +70 -0
  784. package/node_modules/moment/src/locale/fr-ch.js +74 -0
  785. package/node_modules/moment/src/locale/fr.js +108 -0
  786. package/node_modules/moment/src/locale/fy.js +75 -0
  787. package/node_modules/moment/src/locale/ga.js +95 -0
  788. package/node_modules/moment/src/locale/gd.js +95 -0
  789. package/node_modules/moment/src/locale/gl.js +75 -0
  790. package/node_modules/moment/src/locale/gom-deva.js +126 -0
  791. package/node_modules/moment/src/locale/gom-latn.js +124 -0
  792. package/node_modules/moment/src/locale/gu.js +122 -0
  793. package/node_modules/moment/src/locale/he.js +94 -0
  794. package/node_modules/moment/src/locale/hi.js +168 -0
  795. package/node_modules/moment/src/locale/hr.js +156 -0
  796. package/node_modules/moment/src/locale/hu.js +118 -0
  797. package/node_modules/moment/src/locale/hy-am.js +94 -0
  798. package/node_modules/moment/src/locale/id.js +76 -0
  799. package/node_modules/moment/src/locale/is.js +140 -0
  800. package/node_modules/moment/src/locale/it-ch.js +64 -0
  801. package/node_modules/moment/src/locale/it.js +106 -0
  802. package/node_modules/moment/src/locale/ja.js +148 -0
  803. package/node_modules/moment/src/locale/jv.js +76 -0
  804. package/node_modules/moment/src/locale/ka.js +92 -0
  805. package/node_modules/moment/src/locale/kk.js +82 -0
  806. package/node_modules/moment/src/locale/km.js +103 -0
  807. package/node_modules/moment/src/locale/kn.js +124 -0
  808. package/node_modules/moment/src/locale/ko.js +75 -0
  809. package/node_modules/moment/src/locale/ku-kmr.js +121 -0
  810. package/node_modules/moment/src/locale/ku.js +118 -0
  811. package/node_modules/moment/src/locale/ky.js +84 -0
  812. package/node_modules/moment/src/locale/lb.js +137 -0
  813. package/node_modules/moment/src/locale/lo.js +66 -0
  814. package/node_modules/moment/src/locale/lt.js +125 -0
  815. package/node_modules/moment/src/locale/lv.js +94 -0
  816. package/node_modules/moment/src/locale/me.js +117 -0
  817. package/node_modules/moment/src/locale/mi.js +60 -0
  818. package/node_modules/moment/src/locale/mk.js +85 -0
  819. package/node_modules/moment/src/locale/ml.js +82 -0
  820. package/node_modules/moment/src/locale/mn.js +100 -0
  821. package/node_modules/moment/src/locale/mr.js +203 -0
  822. package/node_modules/moment/src/locale/ms-my.js +76 -0
  823. package/node_modules/moment/src/locale/ms.js +75 -0
  824. package/node_modules/moment/src/locale/mt.js +56 -0
  825. package/node_modules/moment/src/locale/my.js +91 -0
  826. package/node_modules/moment/src/locale/nb.js +60 -0
  827. package/node_modules/moment/src/locale/ne.js +121 -0
  828. package/node_modules/moment/src/locale/nl-be.js +102 -0
  829. package/node_modules/moment/src/locale/nl.js +104 -0
  830. package/node_modules/moment/src/locale/nn.js +59 -0
  831. package/node_modules/moment/src/locale/oc-lnc.js +85 -0
  832. package/node_modules/moment/src/locale/pa-in.js +122 -0
  833. package/node_modules/moment/src/locale/pl.js +140 -0
  834. package/node_modules/moment/src/locale/pt-br.js +58 -0
  835. package/node_modules/moment/src/locale/pt.js +63 -0
  836. package/node_modules/moment/src/locale/ro.js +76 -0
  837. package/node_modules/moment/src/locale/ru.js +213 -0
  838. package/node_modules/moment/src/locale/sd.js +81 -0
  839. package/node_modules/moment/src/locale/se.js +57 -0
  840. package/node_modules/moment/src/locale/si.js +69 -0
  841. package/node_modules/moment/src/locale/sk.js +145 -0
  842. package/node_modules/moment/src/locale/sl.js +171 -0
  843. package/node_modules/moment/src/locale/sq.js +65 -0
  844. package/node_modules/moment/src/locale/sr-cyrl.js +127 -0
  845. package/node_modules/moment/src/locale/sr.js +129 -0
  846. package/node_modules/moment/src/locale/ss.js +84 -0
  847. package/node_modules/moment/src/locale/sv.js +68 -0
  848. package/node_modules/moment/src/locale/sw.js +55 -0
  849. package/node_modules/moment/src/locale/ta.js +131 -0
  850. package/node_modules/moment/src/locale/te.js +88 -0
  851. package/node_modules/moment/src/locale/tet.js +68 -0
  852. package/node_modules/moment/src/locale/tg.js +117 -0
  853. package/node_modules/moment/src/locale/th.js +65 -0
  854. package/node_modules/moment/src/locale/tk.js +91 -0
  855. package/node_modules/moment/src/locale/tl-ph.js +57 -0
  856. package/node_modules/moment/src/locale/tlh.js +124 -0
  857. package/node_modules/moment/src/locale/tr.js +106 -0
  858. package/node_modules/moment/src/locale/tzl.js +89 -0
  859. package/node_modules/moment/src/locale/tzm-latn.js +54 -0
  860. package/node_modules/moment/src/locale/tzm.js +54 -0
  861. package/node_modules/moment/src/locale/ug-cn.js +111 -0
  862. package/node_modules/moment/src/locale/uk.js +167 -0
  863. package/node_modules/moment/src/locale/ur.js +82 -0
  864. package/node_modules/moment/src/locale/uz-latn.js +54 -0
  865. package/node_modules/moment/src/locale/uz.js +51 -0
  866. package/node_modules/moment/src/locale/vi.js +80 -0
  867. package/node_modules/moment/src/locale/x-pseudo.js +73 -0
  868. package/node_modules/moment/src/locale/yo.js +53 -0
  869. package/node_modules/moment/src/locale/zh-cn.js +120 -0
  870. package/node_modules/moment/src/locale/zh-hk.js +101 -0
  871. package/node_modules/moment/src/locale/zh-mo.js +100 -0
  872. package/node_modules/moment/src/locale/zh-tw.js +99 -0
  873. package/node_modules/moment/src/moment.js +93 -0
  874. package/node_modules/moment/ts3.1-typings/moment.d.ts +785 -0
  875. package/node_modules/nanoid/LICENSE +20 -0
  876. package/node_modules/nanoid/README.md +38 -0
  877. package/node_modules/nanoid/async/index.browser.js +33 -0
  878. package/node_modules/nanoid/async/index.d.ts +56 -0
  879. package/node_modules/nanoid/async/index.js +34 -0
  880. package/node_modules/nanoid/async/index.native.js +25 -0
  881. package/node_modules/nanoid/bin/nanoid.js +46 -0
  882. package/node_modules/nanoid/index.browser.js +33 -0
  883. package/node_modules/nanoid/index.d.ts +91 -0
  884. package/node_modules/nanoid/index.js +45 -0
  885. package/node_modules/nanoid/nanoid.js +1 -0
  886. package/node_modules/nanoid/non-secure/index.d.ts +33 -0
  887. package/node_modules/nanoid/non-secure/index.js +20 -0
  888. package/node_modules/nanoid/package.json +46 -0
  889. package/node_modules/nanoid/url-alphabet/index.js +2 -0
  890. package/node_modules/ts-md5/LICENSE +21 -0
  891. package/node_modules/ts-md5/README.md +101 -0
  892. package/node_modules/ts-md5/dist/cjs/index.d.ts +3 -0
  893. package/node_modules/ts-md5/dist/cjs/index.js +10 -0
  894. package/node_modules/ts-md5/dist/cjs/index.js.map +1 -0
  895. package/node_modules/ts-md5/dist/cjs/md5.d.ts +70 -0
  896. package/node_modules/ts-md5/dist/cjs/md5.js +429 -0
  897. package/node_modules/ts-md5/dist/cjs/md5.js.map +1 -0
  898. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +25 -0
  899. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +96 -0
  900. package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +1 -0
  901. package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +22 -0
  902. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +69 -0
  903. package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +1 -0
  904. package/node_modules/ts-md5/dist/esm/index.d.ts +3 -0
  905. package/node_modules/ts-md5/dist/esm/index.js +4 -0
  906. package/node_modules/ts-md5/dist/esm/index.js.map +1 -0
  907. package/node_modules/ts-md5/dist/esm/md5.d.ts +70 -0
  908. package/node_modules/ts-md5/dist/esm/md5.js +421 -0
  909. package/node_modules/ts-md5/dist/esm/md5.js.map +1 -0
  910. package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +25 -0
  911. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +89 -0
  912. package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +1 -0
  913. package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +22 -0
  914. package/node_modules/ts-md5/dist/esm/parallel_hasher.js +64 -0
  915. package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +1 -0
  916. package/node_modules/ts-md5/dist/md5.js +429 -0
  917. package/node_modules/ts-md5/dist/md5_worker.js +523 -0
  918. package/node_modules/ts-md5/package.json +82 -0
  919. package/node_modules/ts-md5/src/index.ts +4 -0
  920. package/node_modules/ts-md5/src/md5.ts +473 -0
  921. package/node_modules/ts-md5/src/md5_file_hasher.ts +110 -0
  922. package/node_modules/ts-md5/src/parallel_hasher.ts +90 -0
  923. package/node_modules/ts-md5/src/worker.js +20 -0
  924. package/package.json +160 -0
  925. package/scripts/generate-index.js +52 -0
  926. package/setup.js +2 -0
  927. package/tfsec.json +4 -0
  928. package/util/compute.go +106 -0
  929. package/util/terraform.go +213 -0
  930. package/util/util.go +100 -0
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Vault = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const key_vault_1 = require("@cdktf/provider-azurerm/lib/key-vault");
7
+ const cdktf = require("cdktf");
8
+ const certificate_1 = require("./certificate");
9
+ const key_1 = require("./key");
10
+ const policy_1 = require("./policy");
11
+ const secret_1 = require("./secret");
12
+ const lib_1 = require("../../core-azure/lib");
13
+ class Vault extends lib_1.AzureResource {
14
+ /**
15
+ * Constructs a new Azure Key Vault resource.
16
+ *
17
+ * This class creates and configures an Azure Key Vault, a secure store for managing secrets, keys, certificates, and other sensitive data.
18
+ * It supports advanced configurations such as access policies, network rules, and data retention policies.
19
+ *
20
+ * @param scope - The scope in which to define this construct, usually representing the Cloud Development Kit (CDK) stack.
21
+ * @param id - The unique identifier for this instance of the Key Vault.
22
+ * @param props - The properties for creating the Key Vault as defined in VaultProps. These include settings for location, SKU, tenant ID, etc.
23
+ *
24
+ * Example usage:
25
+ * ```typescript
26
+ * new Vault(this, 'MyKeyVault', {
27
+ * name: 'mySecureVault',
28
+ * location: 'East US',
29
+ * resourceGroup: myResourceGroup,
30
+ * sku: 'premium',
31
+ * tenantId: 'my-tenant-id',
32
+ * softDeleteRetentionDays: 90,
33
+ * purgeProtection: true,
34
+ * tags: {
35
+ * project: 'My Application'
36
+ * }
37
+ * });
38
+ * ```
39
+ */
40
+ constructor(scope, id, props) {
41
+ super(scope, id);
42
+ this.accessPolicies = [];
43
+ this.props = props;
44
+ this.resourceGroup = props.resourceGroup;
45
+ // Provide default values
46
+ const purgeProtection = props.purgeProtection ?? true;
47
+ const sku = props.sku ?? "standard";
48
+ const softDeleteRetentionDays = props.softDeleteRetentionDays ?? 90;
49
+ const azurermKeyVault = new key_vault_1.KeyVault(this, "key_vault", {
50
+ name: props.name,
51
+ location: props.location,
52
+ resourceGroupName: props.resourceGroup.name,
53
+ tags: props.tags,
54
+ skuName: sku,
55
+ tenantId: props.tenantId,
56
+ networkAcls: props.networkAcls,
57
+ purgeProtectionEnabled: purgeProtection,
58
+ softDeleteRetentionDays: softDeleteRetentionDays,
59
+ });
60
+ this.id = azurermKeyVault.id;
61
+ this.keyVault = azurermKeyVault;
62
+ // Terraform Outputs
63
+ const cdktfTerraformOutputKeyVaultid = new cdktf.TerraformOutput(this, "id", {
64
+ value: azurermKeyVault.id,
65
+ });
66
+ /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
67
+ cdktfTerraformOutputKeyVaultid.overrideLogicalId("id");
68
+ const cdktfTerraformOutputKeyVaultname = new cdktf.TerraformOutput(this, "key_vault_name", {
69
+ value: azurermKeyVault.name,
70
+ });
71
+ /*This allows the Terraform resource name to match the original name. You can remove the call if you don't need them to match.*/
72
+ cdktfTerraformOutputKeyVaultname.overrideLogicalId("key_vault_name");
73
+ }
74
+ /**
75
+ * Grants read-only access to secrets stored in the Key Vault to a specified Azure AD group.
76
+ *
77
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to secrets.
78
+ */
79
+ grantSecretReaderAccess(azureAdGroupId) {
80
+ const policyProps = {
81
+ keyVaultId: this,
82
+ tenantId: this.props.tenantId,
83
+ objectId: azureAdGroupId,
84
+ secretPermissions: ["Get", "List"],
85
+ };
86
+ const policy = new policy_1.AccessPolicy(this, `kv_secret_reader_access_${azureAdGroupId}`, policyProps);
87
+ this.accessPolicies.push(policy);
88
+ }
89
+ /**
90
+ * Grants administrative access to secrets stored in the Key Vault to a specified Azure AD group.
91
+ *
92
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to secrets.
93
+ */
94
+ grantSecretAdminAccess(azureAdGroupId) {
95
+ const policyProps = {
96
+ keyVaultId: this,
97
+ tenantId: this.props.tenantId,
98
+ objectId: azureAdGroupId,
99
+ secretPermissions: [
100
+ "Get",
101
+ "List",
102
+ "Set",
103
+ "Delete",
104
+ "Backup",
105
+ "Restore",
106
+ "Recover",
107
+ ],
108
+ };
109
+ const policy = new policy_1.AccessPolicy(this, `kv_secret_admin_access_${azureAdGroupId}`, policyProps);
110
+ this.accessPolicies.push(policy);
111
+ }
112
+ /**
113
+ * Grants administrative access to certificates stored in the Key Vault to a specified Azure AD group.
114
+ *
115
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to certificates.
116
+ */
117
+ grantCertAdminAccess(azureAdGroupId) {
118
+ const policyProps = {
119
+ keyVaultId: this,
120
+ tenantId: this.props.tenantId,
121
+ objectId: azureAdGroupId,
122
+ certificatePermissions: [
123
+ "Get",
124
+ "List",
125
+ "Set",
126
+ "Delete",
127
+ "Backup",
128
+ "Restore",
129
+ "Recover",
130
+ ],
131
+ };
132
+ const policy = new policy_1.AccessPolicy(this, `kv_cert_admin_access_${azureAdGroupId}`, policyProps);
133
+ this.accessPolicies.push(policy);
134
+ }
135
+ /**
136
+ * Grants read-only access to certificates stored in the Key Vault to a specified Azure AD group.
137
+ *
138
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to certificates.
139
+ */
140
+ grantCertReaderAccess(azureAdGroupId) {
141
+ const policyProps = {
142
+ keyVaultId: this,
143
+ tenantId: this.props.tenantId,
144
+ objectId: azureAdGroupId,
145
+ certificatePermissions: ["Get", "List"],
146
+ };
147
+ const policy = new policy_1.AccessPolicy(this, `kv_cert_reader_access_${azureAdGroupId}`, policyProps);
148
+ this.accessPolicies.push(policy);
149
+ }
150
+ /**
151
+ * Grants administrative access to keys stored in the Key Vault to a specified Azure AD group.
152
+ *
153
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive administrative access to keys.
154
+ */
155
+ grantKeyAdminAccess(azureAdGroupId) {
156
+ const policyProps = {
157
+ keyVaultId: this,
158
+ tenantId: this.props.tenantId,
159
+ objectId: azureAdGroupId,
160
+ keyPermissions: [
161
+ "Get",
162
+ "List",
163
+ "Set",
164
+ "Delete",
165
+ "Backup",
166
+ "Restore",
167
+ "Recover",
168
+ ],
169
+ };
170
+ const policy = new policy_1.AccessPolicy(this, `kv_key_admin_access_${azureAdGroupId}`, policyProps);
171
+ this.accessPolicies.push(policy);
172
+ }
173
+ /**
174
+ * Grants read-only access to keys stored in the Key Vault to a specified Azure AD group.
175
+ *
176
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive read access to keys.
177
+ */
178
+ grantKeyReaderAccess(azureAdGroupId) {
179
+ const policyProps = {
180
+ keyVaultId: this,
181
+ tenantId: this.props.tenantId,
182
+ objectId: azureAdGroupId,
183
+ keyPermissions: ["Get", "List"],
184
+ };
185
+ const policy = new policy_1.AccessPolicy(this, `kv_key_reader_access_${azureAdGroupId}`, policyProps);
186
+ this.accessPolicies.push(policy);
187
+ }
188
+ /**
189
+ * Grants custom access based on specified options to an Azure AD group in the Key Vault.
190
+ *
191
+ * @param azureAdGroupId - The Azure Active Directory group ID that will receive the custom access.
192
+ * @param options - Custom access options specifying various permissions for secrets, keys, certificates, and storage.
193
+ */
194
+ grantCustomAccess(azureAdGroupId, options) {
195
+ const policyProps = {
196
+ keyVaultId: this,
197
+ tenantId: this.props.tenantId,
198
+ objectId: azureAdGroupId,
199
+ ...options,
200
+ };
201
+ const policy = new policy_1.AccessPolicy(this, `kv_custom_policy_access_${azureAdGroupId}`, policyProps);
202
+ this.accessPolicies.push(policy);
203
+ }
204
+ /**
205
+ * Creates a new secret within the Azure Key Vault.
206
+ *
207
+ * This method facilitates the storage of sensitive information in the form of a secret within the Key Vault.
208
+ * Secrets are protected items such as passwords, database connection strings, or any other piece of information
209
+ * that needs to be securely stored and accessed. This method allows setting additional properties such as
210
+ * expiration date and content type for better management and compliance.
211
+ *
212
+ * @param keyVaultSecretName - The unique name for the secret within the Key Vault.
213
+ * @param secretValue - The sensitive information or data that needs to be securely stored as a secret.
214
+ * @param expirationDate - Optional. The expiration date of the secret in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
215
+ * If provided, the secret will no longer be valid after this date.
216
+ * @param contentType - Optional. A description of the type of information the secret contains (e.g., 'password', 'connectionString').
217
+ * This can be used by applications to handle the secret appropriately.
218
+ *
219
+ * Example usage:
220
+ * ```typescript
221
+ * vault.addSecret(
222
+ * 'myDatabasePassword',
223
+ * 'p@ssw0rd123!',
224
+ * '2030-01-01',
225
+ * 'databasePassword'
226
+ * );
227
+ * ```
228
+ * This method does not return a value. It creates a secret within the Key Vault with the specified properties.
229
+ */
230
+ addSecret(keyVaultSecretName, secretValue, expirationDate, contentType) {
231
+ const secretProps = {
232
+ keyVaultId: this,
233
+ name: keyVaultSecretName,
234
+ value: secretValue,
235
+ expirationDate: expirationDate,
236
+ contentType: contentType,
237
+ accessPolicies: this.accessPolicies,
238
+ };
239
+ new secret_1.Secret(this, keyVaultSecretName, secretProps);
240
+ }
241
+ /**
242
+ * Creates an RSA cryptographic key within the Azure Key Vault.
243
+ *
244
+ * This method facilitates the creation of an RSA key, which is useful for a variety of cryptographic operations such as
245
+ * encryption, decryption, digital signature verification, and more. The RSA key created by this method is configurable
246
+ * with an optional expiration date and a default key size of 2048 bits. The key operations allowed include decryption,
247
+ * encryption, signing, verifying signatures, and key wrapping/unwrapping.
248
+ *
249
+ * @param keyVaultKeyName - The unique name for the RSA key within the Key Vault.
250
+ * @param expirationDate - Optional. The expiration date of the key in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
251
+ * If provided, the key will no longer be valid after this date.
252
+ * @returns A KeyVaultKey object representing the newly created RSA key within the vault.
253
+ *
254
+ * Example usage:
255
+ * ```typescript
256
+ * const rsaKey = vault.addRSAKey(
257
+ * 'myRSAKey',
258
+ * '2030-01-01'
259
+ * );
260
+ * ```
261
+ * This method returns the created KeyVaultKey object, allowing further operations or references to the key.
262
+ */
263
+ addRSAKey(keyVaultKeyName, expirationDate) {
264
+ const keyProps = {
265
+ keyVaultId: this,
266
+ name: keyVaultKeyName,
267
+ keyType: "RSA",
268
+ keySize: 2048,
269
+ keyOpts: ["decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey"],
270
+ expires: expirationDate,
271
+ accessPolicies: this.accessPolicies,
272
+ };
273
+ const key = new key_1.Key(this, keyVaultKeyName, keyProps);
274
+ return key.vaultKey;
275
+ }
276
+ /**
277
+ * Creates a cryptographic key within the Azure Key Vault.
278
+ *
279
+ * This method allows the creation of a cryptographic key of specified type and size within the Key Vault. The key can be
280
+ * configured with specific operations it can perform, such as encryption, decryption, signing, etc. An optional expiration
281
+ * date can also be set to control the key's lifecycle. This method is flexible, supporting various key types and sizes,
282
+ * making it suitable for a wide range of cryptographic needs.
283
+ *
284
+ * @param keyVaultKeyName - The unique name for the cryptographic key within the Key Vault.
285
+ * @param keyType - The type of cryptographic key to create (e.g., 'RSA', 'EC', 'oct-HSM').
286
+ * @param keySize - The size of the cryptographic key in bits (e.g., 2048, 3072, 4096 for RSA).
287
+ * @param keyOpts - A list of cryptographic operations that the key is allowed to perform. Possible values might include
288
+ * 'encrypt', 'decrypt', 'sign', 'verify', 'wrapKey', 'unwrapKey'.
289
+ * @param expirationDate - Optional. The expiration date of the key in ISO 8601 format (YYYY-MM-DD or YYYY-MM-DDTHH:MM:SSZ).
290
+ * If provided, the key will no longer be valid after this date, aligning with best practices for key management.
291
+ * @returns A KeyVaultKey object representing the newly created cryptographic key within the vault.
292
+ *
293
+ * Example usage:
294
+ * ```typescript
295
+ * const myKey = vault.addKey(
296
+ * 'myKey',
297
+ * 'RSA',
298
+ * 2048,
299
+ * ['encrypt', 'decrypt', 'sign', 'verify'],
300
+ * '2030-12-31'
301
+ * );
302
+ * ```
303
+ * This method returns the created KeyVaultKey object, enabling immediate use within the application for cryptographic operations.
304
+ */
305
+ addKey(keyVaultKeyName, keyType, keySize, keyOpts, expirationDate) {
306
+ const keyProps = {
307
+ keyVaultId: this,
308
+ name: keyVaultKeyName,
309
+ keyType: keyType,
310
+ keySize: keySize,
311
+ keyOpts: keyOpts,
312
+ expires: expirationDate,
313
+ accessPolicies: this.accessPolicies,
314
+ };
315
+ const key = new key_1.Key(this, keyVaultKeyName, keyProps);
316
+ return key.vaultKey;
317
+ }
318
+ /**
319
+ * Creates a self-signed certificate within the Azure Key Vault.
320
+ *
321
+ * This method facilitates the creation of a self-signed certificate, which is a digital certificate that is signed by
322
+ * its own creator rather than a trusted authority. Self-signed certificates can be useful for testing, internal
323
+ * communications, or any scenario where public trust is not required. The method allows specifying subject details,
324
+ * DNS names for the certificate, and managing its lifecycle with action types and expiry.
325
+ *
326
+ * @param certName - The unique name for the certificate within the Key Vault.
327
+ * @param subject - The subject name of the certificate, typically formatted as an X.500 Distinguished Name (e.g., "CN=example.com").
328
+ * @param dnsNames - An array of DNS names that should be associated with this certificate. This is useful for certificates
329
+ * that need to be valid for multiple hostnames.
330
+ * @param actionType - Optional. Specifies the action to be performed with the certificate, such as 'create' or 'renew'.
331
+ * @param daysBeforeExpiry - Optional. Number of days before expiry when an action should be taken, useful for auto-renewal scenarios.
332
+ * @returns A KeyVaultCertificate object representing the newly created self-signed certificate.
333
+ *
334
+ * Example usage:
335
+ * ```typescript
336
+ * const myCertificate = vault.addSelfSignedCert(
337
+ * 'myCert',
338
+ * 'CN=mydomain.com',
339
+ * ['mydomain.com', 'www.mydomain.com'],
340
+ * 'create',
341
+ * 30
342
+ * );
343
+ * ```
344
+ * This method returns the KeyVaultCertificate object, enabling it to be used immediately within the application or stored for future use.
345
+ */
346
+ addSelfSignedCert(certName, subject, dnsNames, actionType, daysBeforeExpiry) {
347
+ const keyProps = {
348
+ keyVaultId: this,
349
+ name: certName,
350
+ subject: subject,
351
+ dnsNames: dnsNames,
352
+ actionType: actionType,
353
+ daysBeforeExpiry: daysBeforeExpiry,
354
+ accessPolicies: this.accessPolicies,
355
+ };
356
+ const cert = new certificate_1.SelfSignedCertificate(this, certName, keyProps);
357
+ return cert.certificate;
358
+ }
359
+ /**
360
+ * Adds a certificate issuer to the Azure Key Vault.
361
+ *
362
+ * This method configures a certificate issuer within the Key Vault, allowing the Key Vault to issue certificates
363
+ * through external providers. Configuring an issuer is essential for enabling automated certificate management
364
+ * processes, such as issuance and renewal, directly through the Key Vault with a specified Certificate Authority (CA).
365
+ *
366
+ * @param name - The unique name for the certificate issuer within the Key Vault.
367
+ * @param provider - The name of the external provider that will issue the certificates, such as 'DigiCert' or 'GlobalSign'.
368
+ *
369
+ * Example usage:
370
+ * ```typescript
371
+ * vault.addCertIssuer(
372
+ * 'myCertIssuer',
373
+ * 'DigiCert'
374
+ * );
375
+ * ```
376
+ * This method configures a certificate issuer but does not return any value. The issuer details, including provider name
377
+ * and any necessary credentials (managed externally or through additional method parameters), are set up in the Key Vault
378
+ * for future certificate operations.
379
+ */
380
+ addCertIssuer(name, provider) {
381
+ new certificate_1.CertificateIssuer(this, name, {
382
+ name: name,
383
+ providerName: provider,
384
+ keyVaultId: this,
385
+ accessPolicies: this.accessPolicies,
386
+ });
387
+ }
388
+ }
389
+ exports.Vault = Vault;
390
+ _a = JSII_RTTI_SYMBOL_1;
391
+ Vault[_a] = { fqn: "@microsoft/terraform-cdk-constructs.azure_keyvault.Vault", version: "0.0.3-pre.10" };
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUta2V5dmF1bHQvbGliL3ZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUVBRytDO0FBSy9DLCtCQUErQjtBQUUvQiwrQ0FJdUI7QUFDdkIsK0JBQXNDO0FBQ3RDLHFDQUEyRDtBQUMzRCxxQ0FBK0M7QUFDL0MsOENBQXFEO0FBNEVyRCxNQUFhLEtBQU0sU0FBUSxtQkFBYTtJQU90Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXlCRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQTdCWCxtQkFBYyxHQUFtQixFQUFFLENBQUM7UUErQjFDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztRQUV6Qyx5QkFBeUI7UUFDekIsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUM7UUFDdEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsSUFBSSxVQUFVLENBQUM7UUFDcEMsTUFBTSx1QkFBdUIsR0FBRyxLQUFLLENBQUMsdUJBQXVCLElBQUksRUFBRSxDQUFDO1FBRXBFLE1BQU0sZUFBZSxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJO1lBQzNDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixPQUFPLEVBQUUsR0FBRztZQUNaLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVB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QUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7U0FDcEMsQ0FBQztRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksbUNBQXFCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNqRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLGFBQWEsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7UUFDakQsSUFBSSwrQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLElBQUksRUFBRSxJQUFJO1lBQ1YsWUFBWSxFQUFFLFFBQVE7WUFDdEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBbmRILHNCQW9kQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleVZhdWx0LFxuICBLZXlWYXVsdE5ldHdvcmtBY2xzLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF6dXJlcm0vbGliL2tleS12YXVsdFwiO1xuaW1wb3J0IHsgS2V5VmF1bHRDZXJ0aWZpY2F0ZSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0LWNlcnRpZmljYXRlXCI7IC8vIEFkanVzdCB0aGUgaW1wb3J0IHBhdGggYmFzZWQgb24gdGhlIGFjdHVhbCBtb2R1bGUgbG9jYXRpb24uXG5pbXBvcnQgeyBLZXlWYXVsdEtleSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIva2V5LXZhdWx0LWtleVwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQ2VydGlmaWNhdGVJc3N1ZXIsXG4gIFNlbGZTaWduZWRDZXJ0aWZpY2F0ZSxcbiAgU2VsZlNpZ25lZENlcnRpZmljYXRlUHJvcHMsXG59IGZyb20gXCIuL2NlcnRpZmljYXRlXCI7XG5pbXBvcnQgeyBLZXksIEtleVByb3BzIH0gZnJvbSBcIi4va2V5XCI7XG5pbXBvcnQgeyBBY2Nlc3NQb2xpY3ksIEFjY2Vzc1BvbGljeVByb3BzIH0gZnJvbSBcIi4vcG9saWN5XCI7XG5pbXBvcnQgeyBTZWNyZXQsIFNlY3JldFByb3BzIH0gZnJvbSBcIi4vc2VjcmV0XCI7XG5pbXBvcnQgeyBBenVyZVJlc291cmNlIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmF1bHRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgS2V5IFZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIEF6dXJlIFJlZ2lvbiB0byBkZXBsb3kgdGhlIEtleSBWYXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQXp1cmUgUmVzb3VyY2UgR3JvdXAuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwOiBSZXNvdXJjZUdyb3VwO1xuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXNzaWduIHRvIHRoZSBLZXkgVmF1bHQuXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFzc2lnbiB0byB0aGUgS2V5IFZhdWx0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2t1Pzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIE5hbWUgb2YgdGhlIFNLVSB1c2VkIGZvciB0aGlzIEtleSBWYXVsdC4gUG9zc2libGUgdmFsdWVzIGFyZSBzdGFuZGFyZCBhbmQgcHJlbWl1bS5cbiAgICovXG4gIHJlYWRvbmx5IHRlbmFudElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSB0ZW5hbnQgSUQgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgYXV0aGVudGljYXRpbmcgcmVxdWVzdHMgdG8gdGhlIGtleSB2YXVsdC5cbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xzPzogS2V5VmF1bHROZXR3b3JrQWNscztcbiAgLyoqXG4gICAqIEEgbWFwIG9mIElQIG5ldHdvcmsgQUNMIHJ1bGVzLiBUaGUga2V5IGlzIHRoZSBJUCBvciBJUCByYW5nZSBpbiBDSURSIG5vdGF0aW9uLlxuICAgKiBUaGUgdmFsdWUgaXMgYSBkZXNjcmlwdGlvbiBvZiB0aGF0IElQIHJhbmdlLlxuICAgKi9cbiAgcmVhZG9ubHkgcHVyZ2VQcm90ZWN0aW9uPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqICBTcGVjaWZpZXMgd2hldGhlciBwcm90ZWN0aW9uIGFnYWluc3QgcHVyZ2UgaXMgZW5hYmxlZCBmb3IgdGhpcyBLZXkgVmF1bHQuXG4gICAqIFNldHRpbmcgdGhpcyBwcm9wZXJ0eSB0byB0cnVlIGFjdGl2YXRlcyBwcm90ZWN0aW9uIGFnYWluc3QgZGVsZXRpb24gb2YgYW55IGFjdGl2ZSBrZXksIHNlY3JldCBvciBjZXJ0aWZpY2F0ZSBpbiB0aGUgdmF1bHQuIFRoZSBzZXR0aW5nIGlzIGVmZmVjdGl2ZSBvbmx5IGlmIHNvZnQgZGVsZXRlIGlzIGFsc28gZW5hYmxlZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UuXG4gICAqIE9uY2UgYWN0aXZhdGVkLCB0aGUgcHJvcGVydHkgY2Fubm90IGJlIHJldmVydGVkIHRvIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgc29mdERlbGV0ZVJldGVudGlvbkRheXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGRheXMgdGhhdCBpdGVtcyBzaG91bGQgYmUgcmV0YWluZWQgZm9yIG9uY2Ugc29mdC1kZWxldGVkLlxuICAgKi9cbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBncmFudGluZyBjdXN0b20gYWNjZXNzIHBlcm1pc3Npb25zIGluIEF6dXJlIEtleSBWYXVsdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFudEN1c3RvbUFjY2Vzc09wdGlvbnMge1xuICAvKipcbiAgICogT3B0aW9uYWw6IEEgbGlzdCBvZiBwZXJtaXNzaW9ucyB0byBncmFudCBmb3Igc2VjcmV0cyBpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBFeGFtcGxlIHBlcm1pc3Npb25zIGluY2x1ZGUgJ2dldCcsICdsaXN0JywgJ3NldCcsICdkZWxldGUnLCBldGMuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXRQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBjZXJ0aWZpY2F0ZXMgaW4gdGhlIEtleSBWYXVsdC5cbiAgICogRXhhbXBsZSBwZXJtaXNzaW9ucyBpbmNsdWRlICdnZXQnLCAnbGlzdCcsICdjcmVhdGUnLCAnZGVsZXRlJywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVQZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbDogQSBsaXN0IG9mIHBlcm1pc3Npb25zIHRvIGdyYW50IGZvciBrZXlzIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEV4YW1wbGUgcGVybWlzc2lvbnMgaW5jbHVkZSAnZW5jcnlwdCcsICdkZWNyeXB0JywgJ3dyYXBLZXknLCAndW53cmFwS2V5JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkga2V5UGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogT3B0aW9uYWw6IEEgbGlzdCBvZiBwZXJtaXNzaW9ucyB0byBncmFudCBmb3Igc3RvcmFnZSBhY2NvdW50cyBpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBFeGFtcGxlIHBlcm1pc3Npb25zIGluY2x1ZGUgJ2dldCcsICdsaXN0JywgJ2RlbGV0ZScsICdzZXQnLCAndXBkYXRlJywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZVBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBWYXVsdCBleHRlbmRzIEF6dXJlUmVzb3VyY2Uge1xuICByZWFkb25seSBwcm9wczogVmF1bHRQcm9wcztcbiAgcHVibGljIGtleVZhdWx0OiBLZXlWYXVsdDtcbiAgcHVibGljIHJlc291cmNlR3JvdXA6IFJlc291cmNlR3JvdXA7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwcml2YXRlIGFjY2Vzc1BvbGljaWVzOiBBY2Nlc3NQb2xpY3lbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEF6dXJlIEtleSBWYXVsdCByZXNvdXJjZS5cbiAgICpcbiAgICogVGhpcyBjbGFzcyBjcmVhdGVzIGFuZCBjb25maWd1cmVzIGFuIEF6dXJlIEtleSBWYXVsdCwgYSBzZWN1cmUgc3RvcmUgZm9yIG1hbmFnaW5nIHNlY3JldHMsIGtleXMsIGNlcnRpZmljYXRlcywgYW5kIG90aGVyIHNlbnNpdGl2ZSBkYXRhLlxuICAgKiBJdCBzdXBwb3J0cyBhZHZhbmNlZCBjb25maWd1cmF0aW9ucyBzdWNoIGFzIGFjY2VzcyBwb2xpY2llcywgbmV0d29yayBydWxlcywgYW5kIGRhdGEgcmV0ZW50aW9uIHBvbGljaWVzLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0LCB1c3VhbGx5IHJlcHJlc2VudGluZyB0aGUgQ2xvdWQgRGV2ZWxvcG1lbnQgS2l0IChDREspIHN0YWNrLlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIEtleSBWYXVsdC5cbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIHRoZSBLZXkgVmF1bHQgYXMgZGVmaW5lZCBpbiBWYXVsdFByb3BzLiBUaGVzZSBpbmNsdWRlIHNldHRpbmdzIGZvciBsb2NhdGlvbiwgU0tVLCB0ZW5hbnQgSUQsIGV0Yy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBuZXcgVmF1bHQodGhpcywgJ015S2V5VmF1bHQnLCB7XG4gICAqICAgbmFtZTogJ215U2VjdXJlVmF1bHQnLFxuICAgKiAgIGxvY2F0aW9uOiAnRWFzdCBVUycsXG4gICAqICAgcmVzb3VyY2VHcm91cDogbXlSZXNvdXJjZUdyb3VwLFxuICAgKiAgIHNrdTogJ3ByZW1pdW0nLFxuICAgKiAgIHRlbmFudElkOiAnbXktdGVuYW50LWlkJyxcbiAgICogICBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5czogOTAsXG4gICAqICAgcHVyZ2VQcm90ZWN0aW9uOiB0cnVlLFxuICAgKiAgIHRhZ3M6IHtcbiAgICogICAgIHByb2plY3Q6ICdNeSBBcHBsaWNhdGlvbidcbiAgICogICB9XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWYXVsdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnJlc291cmNlR3JvdXAgPSBwcm9wcy5yZXNvdXJjZUdyb3VwO1xuXG4gICAgLy8gUHJvdmlkZSBkZWZhdWx0IHZhbHVlc1xuICAgIGNvbnN0IHB1cmdlUHJvdGVjdGlvbiA9IHByb3BzLnB1cmdlUHJvdGVjdGlvbiA/PyB0cnVlO1xuICAgIGNvbnN0IHNrdSA9IHByb3BzLnNrdSA/PyBcInN0YW5kYXJkXCI7XG4gICAgY29uc3Qgc29mdERlbGV0ZVJldGVudGlvbkRheXMgPSBwcm9wcy5zb2Z0RGVsZXRlUmV0ZW50aW9uRGF5cyA/PyA5MDtcblxuICAgIGNvbnN0IGF6dXJlcm1LZXlWYXVsdCA9IG5ldyBLZXlWYXVsdCh0aGlzLCBcImtleV92YXVsdFwiLCB7XG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgbG9jYXRpb246IHByb3BzLmxvY2F0aW9uLFxuICAgICAgcmVzb3VyY2VHcm91cE5hbWU6IHByb3BzLnJlc291cmNlR3JvdXAubmFtZSxcbiAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICBza3VOYW1lOiBza3UsXG4gICAgICB0ZW5hbnRJZDogcHJvcHMudGVuYW50SWQsXG4gICAgICBuZXR3b3JrQWNsczogcHJvcHMubmV0d29ya0FjbHMsXG4gICAgICBwdXJnZVByb3RlY3Rpb25FbmFibGVkOiBwdXJnZVByb3RlY3Rpb24sXG4gICAgICBzb2Z0RGVsZXRlUmV0ZW50aW9uRGF5czogc29mdERlbGV0ZVJldGVudGlvbkRheXMsXG4gICAgfSk7XG4gICAgdGhpcy5pZCA9IGF6dXJlcm1LZXlWYXVsdC5pZDtcbiAgICB0aGlzLmtleVZhdWx0ID0gYXp1cmVybUtleVZhdWx0O1xuXG4gICAgLy8gVGVycmFmb3JtIE91dHB1dHNcbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEtleVZhdWx0aWQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiaWRcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGF6dXJlcm1LZXlWYXVsdC5pZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8qVGhpcyBhbGxvd3MgdGhlIFRlcnJhZm9ybSByZXNvdXJjZSBuYW1lIHRvIG1hdGNoIHRoZSBvcmlnaW5hbCBuYW1lLiBZb3UgY2FuIHJlbW92ZSB0aGUgY2FsbCBpZiB5b3UgZG9uJ3QgbmVlZCB0aGVtIHRvIG1hdGNoLiovXG4gICAgY2RrdGZUZXJyYWZvcm1PdXRwdXRLZXlWYXVsdGlkLm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG5cbiAgICBjb25zdCBjZGt0ZlRlcnJhZm9ybU91dHB1dEtleVZhdWx0bmFtZSA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJrZXlfdmF1bHRfbmFtZVwiLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYXp1cmVybUtleVZhdWx0Lm5hbWUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKlRoaXMgYWxsb3dzIHRoZSBUZXJyYWZvcm0gcmVzb3VyY2UgbmFtZSB0byBtYXRjaCB0aGUgb3JpZ2luYWwgbmFtZS4gWW91IGNhbiByZW1vdmUgdGhlIGNhbGwgaWYgeW91IGRvbid0IG5lZWQgdGhlbSB0byBtYXRjaC4qL1xuICAgIGNka3RmVGVycmFmb3JtT3V0cHV0S2V5VmF1bHRuYW1lLm92ZXJyaWRlTG9naWNhbElkKFwia2V5X3ZhdWx0X25hbWVcIik7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIHJlYWQtb25seSBhY2Nlc3MgdG8gc2VjcmV0cyBzdG9yZWQgaW4gdGhlIEtleSBWYXVsdCB0byBhIHNwZWNpZmllZCBBenVyZSBBRCBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGF6dXJlQWRHcm91cElkIC0gVGhlIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgZ3JvdXAgSUQgdGhhdCB3aWxsIHJlY2VpdmUgcmVhZCBhY2Nlc3MgdG8gc2VjcmV0cy5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlY3JldFJlYWRlckFjY2VzcyhhenVyZUFkR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9saWN5UHJvcHM6IEFjY2Vzc1BvbGljeVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIHRlbmFudElkOiB0aGlzLnByb3BzLnRlbmFudElkLFxuICAgICAgb2JqZWN0SWQ6IGF6dXJlQWRHcm91cElkLFxuICAgICAgc2VjcmV0UGVybWlzc2lvbnM6IFtcIkdldFwiLCBcIkxpc3RcIl0sXG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBY2Nlc3NQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYGt2X3NlY3JldF9yZWFkZXJfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBzZWNyZXRzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gc2VjcmV0cy5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlY3JldEFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBzZWNyZXRQZXJtaXNzaW9uczogW1xuICAgICAgICBcIkdldFwiLFxuICAgICAgICBcIkxpc3RcIixcbiAgICAgICAgXCJTZXRcIixcbiAgICAgICAgXCJEZWxldGVcIixcbiAgICAgICAgXCJCYWNrdXBcIixcbiAgICAgICAgXCJSZXN0b3JlXCIsXG4gICAgICAgIFwiUmVjb3ZlclwiLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3Zfc2VjcmV0X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgcHVibGljIGdyYW50Q2VydEFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBjZXJ0aWZpY2F0ZVBlcm1pc3Npb25zOiBbXG4gICAgICAgIFwiR2V0XCIsXG4gICAgICAgIFwiTGlzdFwiLFxuICAgICAgICBcIlNldFwiLFxuICAgICAgICBcIkRlbGV0ZVwiLFxuICAgICAgICBcIkJhY2t1cFwiLFxuICAgICAgICBcIlJlc3RvcmVcIixcbiAgICAgICAgXCJSZWNvdmVyXCIsXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9jZXJ0X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIGNlcnRpZmljYXRlcyBzdG9yZWQgaW4gdGhlIEtleSBWYXVsdCB0byBhIHNwZWNpZmllZCBBenVyZSBBRCBncm91cC5cbiAgICpcbiAgICogQHBhcmFtIGF6dXJlQWRHcm91cElkIC0gVGhlIEF6dXJlIEFjdGl2ZSBEaXJlY3RvcnkgZ3JvdXAgSUQgdGhhdCB3aWxsIHJlY2VpdmUgcmVhZCBhY2Nlc3MgdG8gY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgcHVibGljIGdyYW50Q2VydFJlYWRlckFjY2VzcyhhenVyZUFkR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgcG9saWN5UHJvcHM6IEFjY2Vzc1BvbGljeVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIHRlbmFudElkOiB0aGlzLnByb3BzLnRlbmFudElkLFxuICAgICAgb2JqZWN0SWQ6IGF6dXJlQWRHcm91cElkLFxuICAgICAgY2VydGlmaWNhdGVQZXJtaXNzaW9uczogW1wiR2V0XCIsIFwiTGlzdFwiXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3ZfY2VydF9yZWFkZXJfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnRzIGFkbWluaXN0cmF0aXZlIGFjY2VzcyB0byBrZXlzIHN0b3JlZCBpbiB0aGUgS2V5IFZhdWx0IHRvIGEgc3BlY2lmaWVkIEF6dXJlIEFEIGdyb3VwLlxuICAgKlxuICAgKiBAcGFyYW0gYXp1cmVBZEdyb3VwSWQgLSBUaGUgQXp1cmUgQWN0aXZlIERpcmVjdG9yeSBncm91cCBJRCB0aGF0IHdpbGwgcmVjZWl2ZSBhZG1pbmlzdHJhdGl2ZSBhY2Nlc3MgdG8ga2V5cy5cbiAgICovXG4gIHB1YmxpYyBncmFudEtleUFkbWluQWNjZXNzKGF6dXJlQWRHcm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwb2xpY3lQcm9wczogQWNjZXNzUG9saWN5UHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgdGVuYW50SWQ6IHRoaXMucHJvcHMudGVuYW50SWQsXG4gICAgICBvYmplY3RJZDogYXp1cmVBZEdyb3VwSWQsXG4gICAgICBrZXlQZXJtaXNzaW9uczogW1xuICAgICAgICBcIkdldFwiLFxuICAgICAgICBcIkxpc3RcIixcbiAgICAgICAgXCJTZXRcIixcbiAgICAgICAgXCJEZWxldGVcIixcbiAgICAgICAgXCJCYWNrdXBcIixcbiAgICAgICAgXCJSZXN0b3JlXCIsXG4gICAgICAgIFwiUmVjb3ZlclwiLFxuICAgICAgXSxcbiAgICB9O1xuXG4gICAgY29uc3QgcG9saWN5ID0gbmV3IEFjY2Vzc1BvbGljeShcbiAgICAgIHRoaXMsXG4gICAgICBga3Zfa2V5X2FkbWluX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyByZWFkLW9ubHkgYWNjZXNzIHRvIGtleXMgc3RvcmVkIGluIHRoZSBLZXkgVmF1bHQgdG8gYSBzcGVjaWZpZWQgQXp1cmUgQUQgZ3JvdXAuXG4gICAqXG4gICAqIEBwYXJhbSBhenVyZUFkR3JvdXBJZCAtIFRoZSBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IGdyb3VwIElEIHRoYXQgd2lsbCByZWNlaXZlIHJlYWQgYWNjZXNzIHRvIGtleXMuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRLZXlSZWFkZXJBY2Nlc3MoYXp1cmVBZEdyb3VwSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIGtleVBlcm1pc3Npb25zOiBbXCJHZXRcIiwgXCJMaXN0XCJdLFxuICAgIH07XG5cbiAgICBjb25zdCBwb2xpY3kgPSBuZXcgQWNjZXNzUG9saWN5KFxuICAgICAgdGhpcyxcbiAgICAgIGBrdl9rZXlfcmVhZGVyX2FjY2Vzc18ke2F6dXJlQWRHcm91cElkfWAsXG4gICAgICBwb2xpY3lQcm9wcyxcbiAgICApO1xuICAgIHRoaXMuYWNjZXNzUG9saWNpZXMucHVzaChwb2xpY3kpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50cyBjdXN0b20gYWNjZXNzIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRpb25zIHRvIGFuIEF6dXJlIEFEIGdyb3VwIGluIHRoZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIEBwYXJhbSBhenVyZUFkR3JvdXBJZCAtIFRoZSBBenVyZSBBY3RpdmUgRGlyZWN0b3J5IGdyb3VwIElEIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBjdXN0b20gYWNjZXNzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIEN1c3RvbSBhY2Nlc3Mgb3B0aW9ucyBzcGVjaWZ5aW5nIHZhcmlvdXMgcGVybWlzc2lvbnMgZm9yIHNlY3JldHMsIGtleXMsIGNlcnRpZmljYXRlcywgYW5kIHN0b3JhZ2UuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRDdXN0b21BY2Nlc3MoXG4gICAgYXp1cmVBZEdyb3VwSWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBHcmFudEN1c3RvbUFjY2Vzc09wdGlvbnMsXG4gICkge1xuICAgIGNvbnN0IHBvbGljeVByb3BzOiBBY2Nlc3NQb2xpY3lQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICB0ZW5hbnRJZDogdGhpcy5wcm9wcy50ZW5hbnRJZCxcbiAgICAgIG9iamVjdElkOiBhenVyZUFkR3JvdXBJZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIGNvbnN0IHBvbGljeSA9IG5ldyBBY2Nlc3NQb2xpY3koXG4gICAgICB0aGlzLFxuICAgICAgYGt2X2N1c3RvbV9wb2xpY3lfYWNjZXNzXyR7YXp1cmVBZEdyb3VwSWR9YCxcbiAgICAgIHBvbGljeVByb3BzLFxuICAgICk7XG4gICAgdGhpcy5hY2Nlc3NQb2xpY2llcy5wdXNoKHBvbGljeSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBzZWNyZXQgd2l0aGluIHRoZSBBenVyZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGZhY2lsaXRhdGVzIHRoZSBzdG9yYWdlIG9mIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBpbiB0aGUgZm9ybSBvZiBhIHNlY3JldCB3aXRoaW4gdGhlIEtleSBWYXVsdC5cbiAgICogU2VjcmV0cyBhcmUgcHJvdGVjdGVkIGl0ZW1zIHN1Y2ggYXMgcGFzc3dvcmRzLCBkYXRhYmFzZSBjb25uZWN0aW9uIHN0cmluZ3MsIG9yIGFueSBvdGhlciBwaWVjZSBvZiBpbmZvcm1hdGlvblxuICAgKiB0aGF0IG5lZWRzIHRvIGJlIHNlY3VyZWx5IHN0b3JlZCBhbmQgYWNjZXNzZWQuIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGFkZGl0aW9uYWwgcHJvcGVydGllcyBzdWNoIGFzXG4gICAqIGV4cGlyYXRpb24gZGF0ZSBhbmQgY29udGVudCB0eXBlIGZvciBiZXR0ZXIgbWFuYWdlbWVudCBhbmQgY29tcGxpYW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGtleVZhdWx0U2VjcmV0TmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBmb3IgdGhlIHNlY3JldCB3aXRoaW4gdGhlIEtleSBWYXVsdC5cbiAgICogQHBhcmFtIHNlY3JldFZhbHVlIC0gVGhlIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBvciBkYXRhIHRoYXQgbmVlZHMgdG8gYmUgc2VjdXJlbHkgc3RvcmVkIGFzIGEgc2VjcmV0LlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUgc2VjcmV0IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUgc2VjcmV0IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZS5cbiAgICogQHBhcmFtIGNvbnRlbnRUeXBlIC0gT3B0aW9uYWwuIEEgZGVzY3JpcHRpb24gb2YgdGhlIHR5cGUgb2YgaW5mb3JtYXRpb24gdGhlIHNlY3JldCBjb250YWlucyAoZS5nLiwgJ3Bhc3N3b3JkJywgJ2Nvbm5lY3Rpb25TdHJpbmcnKS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgVGhpcyBjYW4gYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMgdG8gaGFuZGxlIHRoZSBzZWNyZXQgYXBwcm9wcmlhdGVseS5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXVsdC5hZGRTZWNyZXQoXG4gICAqICAgJ215RGF0YWJhc2VQYXNzd29yZCcsXG4gICAqICAgJ3BAc3N3MHJkMTIzIScsXG4gICAqICAgJzIwMzAtMDEtMDEnLFxuICAgKiAgICdkYXRhYmFzZVBhc3N3b3JkJ1xuICAgKiApO1xuICAgKiBgYGBcbiAgICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIEl0IGNyZWF0ZXMgYSBzZWNyZXQgd2l0aGluIHRoZSBLZXkgVmF1bHQgd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMuXG4gICAqL1xuICBwdWJsaWMgYWRkU2VjcmV0KFxuICAgIGtleVZhdWx0U2VjcmV0TmFtZTogc3RyaW5nLFxuICAgIHNlY3JldFZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJhdGlvbkRhdGU/OiBzdHJpbmcsXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmcsXG4gICkge1xuICAgIGNvbnN0IHNlY3JldFByb3BzOiBTZWNyZXRQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBuYW1lOiBrZXlWYXVsdFNlY3JldE5hbWUsXG4gICAgICB2YWx1ZTogc2VjcmV0VmFsdWUsXG4gICAgICBleHBpcmF0aW9uRGF0ZTogZXhwaXJhdGlvbkRhdGUsXG4gICAgICBjb250ZW50VHlwZTogY29udGVudFR5cGUsXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9O1xuXG4gICAgbmV3IFNlY3JldCh0aGlzLCBrZXlWYXVsdFNlY3JldE5hbWUsIHNlY3JldFByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIFJTQSBjcnlwdG9ncmFwaGljIGtleSB3aXRoaW4gdGhlIEF6dXJlIEtleSBWYXVsdC5cbiAgICpcbiAgICogVGhpcyBtZXRob2QgZmFjaWxpdGF0ZXMgdGhlIGNyZWF0aW9uIG9mIGFuIFJTQSBrZXksIHdoaWNoIGlzIHVzZWZ1bCBmb3IgYSB2YXJpZXR5IG9mIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyBzdWNoIGFzXG4gICAqIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIGRpZ2l0YWwgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiwgYW5kIG1vcmUuIFRoZSBSU0Ega2V5IGNyZWF0ZWQgYnkgdGhpcyBtZXRob2QgaXMgY29uZmlndXJhYmxlXG4gICAqIHdpdGggYW4gb3B0aW9uYWwgZXhwaXJhdGlvbiBkYXRlIGFuZCBhIGRlZmF1bHQga2V5IHNpemUgb2YgMjA0OCBiaXRzLiBUaGUga2V5IG9wZXJhdGlvbnMgYWxsb3dlZCBpbmNsdWRlIGRlY3J5cHRpb24sXG4gICAqIGVuY3J5cHRpb24sIHNpZ25pbmcsIHZlcmlmeWluZyBzaWduYXR1cmVzLCBhbmQga2V5IHdyYXBwaW5nL3Vud3JhcHBpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBrZXlWYXVsdEtleU5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgZm9yIHRoZSBSU0Ega2V5IHdpdGhpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUga2V5IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUga2V5IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZS5cbiAgICogQHJldHVybnMgQSBLZXlWYXVsdEtleSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBuZXdseSBjcmVhdGVkIFJTQSBrZXkgd2l0aGluIHRoZSB2YXVsdC5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByc2FLZXkgPSB2YXVsdC5hZGRSU0FLZXkoXG4gICAqICAgJ215UlNBS2V5JyxcbiAgICogICAnMjAzMC0wMS0wMSdcbiAgICogKTtcbiAgICogYGBgXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGNyZWF0ZWQgS2V5VmF1bHRLZXkgb2JqZWN0LCBhbGxvd2luZyBmdXJ0aGVyIG9wZXJhdGlvbnMgb3IgcmVmZXJlbmNlcyB0byB0aGUga2V5LlxuICAgKi9cbiAgcHVibGljIGFkZFJTQUtleShcbiAgICBrZXlWYXVsdEtleU5hbWU6IHN0cmluZyxcbiAgICBleHBpcmF0aW9uRGF0ZT86IHN0cmluZyxcbiAgKTogS2V5VmF1bHRLZXkge1xuICAgIGNvbnN0IGtleVByb3BzOiBLZXlQcm9wcyA9IHtcbiAgICAgIGtleVZhdWx0SWQ6IHRoaXMsXG4gICAgICBuYW1lOiBrZXlWYXVsdEtleU5hbWUsXG4gICAgICBrZXlUeXBlOiBcIlJTQVwiLFxuICAgICAga2V5U2l6ZTogMjA0OCxcbiAgICAgIGtleU9wdHM6IFtcImRlY3J5cHRcIiwgXCJlbmNyeXB0XCIsIFwic2lnblwiLCBcInVud3JhcEtleVwiLCBcInZlcmlmeVwiLCBcIndyYXBLZXlcIl0sXG4gICAgICBleHBpcmVzOiBleHBpcmF0aW9uRGF0ZSxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH07XG5cbiAgICBjb25zdCBrZXkgPSBuZXcgS2V5KHRoaXMsIGtleVZhdWx0S2V5TmFtZSwga2V5UHJvcHMpO1xuICAgIHJldHVybiBrZXkudmF1bHRLZXk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNyeXB0b2dyYXBoaWMga2V5IHdpdGhpbiB0aGUgQXp1cmUgS2V5IFZhdWx0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGEgY3J5cHRvZ3JhcGhpYyBrZXkgb2Ygc3BlY2lmaWVkIHR5cGUgYW5kIHNpemUgd2l0aGluIHRoZSBLZXkgVmF1bHQuIFRoZSBrZXkgY2FuIGJlXG4gICAqIGNvbmZpZ3VyZWQgd2l0aCBzcGVjaWZpYyBvcGVyYXRpb25zIGl0IGNhbiBwZXJmb3JtLCBzdWNoIGFzIGVuY3J5cHRpb24sIGRlY3J5cHRpb24sIHNpZ25pbmcsIGV0Yy4gQW4gb3B0aW9uYWwgZXhwaXJhdGlvblxuICAgKiBkYXRlIGNhbiBhbHNvIGJlIHNldCB0byBjb250cm9sIHRoZSBrZXkncyBsaWZlY3ljbGUuIFRoaXMgbWV0aG9kIGlzIGZsZXhpYmxlLCBzdXBwb3J0aW5nIHZhcmlvdXMga2V5IHR5cGVzIGFuZCBzaXplcyxcbiAgICogbWFraW5nIGl0IHN1aXRhYmxlIGZvciBhIHdpZGUgcmFuZ2Ugb2YgY3J5cHRvZ3JhcGhpYyBuZWVkcy5cbiAgICpcbiAgICogQHBhcmFtIGtleVZhdWx0S2V5TmFtZSAtIFRoZSB1bmlxdWUgbmFtZSBmb3IgdGhlIGNyeXB0b2dyYXBoaWMga2V5IHdpdGhpbiB0aGUgS2V5IFZhdWx0LlxuICAgKiBAcGFyYW0ga2V5VHlwZSAtIFRoZSB0eXBlIG9mIGNyeXB0b2dyYXBoaWMga2V5IHRvIGNyZWF0ZSAoZS5nLiwgJ1JTQScsICdFQycsICdvY3QtSFNNJykuXG4gICAqIEBwYXJhbSBrZXlTaXplIC0gVGhlIHNpemUgb2YgdGhlIGNyeXB0b2dyYXBoaWMga2V5IGluIGJpdHMgKGUuZy4sIDIwNDgsIDMwNzIsIDQwOTYgZm9yIFJTQSkuXG4gICAqIEBwYXJhbSBrZXlPcHRzIC0gQSBsaXN0IG9mIGNyeXB0b2dyYXBoaWMgb3BlcmF0aW9ucyB0aGF0IHRoZSBrZXkgaXMgYWxsb3dlZCB0byBwZXJmb3JtLiBQb3NzaWJsZSB2YWx1ZXMgbWlnaHQgaW5jbHVkZVxuICAgKiAgICAgICAgICAgICAgICAgICdlbmNyeXB0JywgJ2RlY3J5cHQnLCAnc2lnbicsICd2ZXJpZnknLCAnd3JhcEtleScsICd1bndyYXBLZXknLlxuICAgKiBAcGFyYW0gZXhwaXJhdGlvbkRhdGUgLSBPcHRpb25hbC4gVGhlIGV4cGlyYXRpb24gZGF0ZSBvZiB0aGUga2V5IGluIElTTyA4NjAxIGZvcm1hdCAoWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREVEhIOk1NOlNTWikuXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIElmIHByb3ZpZGVkLCB0aGUga2V5IHdpbGwgbm8gbG9uZ2VyIGJlIHZhbGlkIGFmdGVyIHRoaXMgZGF0ZSwgYWxpZ25pbmcgd2l0aCBiZXN0IHByYWN0aWNlcyBmb3Iga2V5IG1hbmFnZW1lbnQuXG4gICAqIEByZXR1cm5zIEEgS2V5VmF1bHRLZXkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV3bHkgY3JlYXRlZCBjcnlwdG9ncmFwaGljIGtleSB3aXRoaW4gdGhlIHZhdWx0LlxuICAgKlxuICAgKiBFeGFtcGxlIHVzYWdlOlxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IG15S2V5ID0gdmF1bHQuYWRkS2V5KFxuICAgKiAgICdteUtleScsXG4gICAqICAgJ1JTQScsXG4gICAqICAgMjA0OCxcbiAgICogICBbJ2VuY3J5cHQnLCAnZGVjcnlwdCcsICdzaWduJywgJ3ZlcmlmeSddLFxuICAgKiAgICcyMDMwLTEyLTMxJ1xuICAgKiApO1xuICAgKiBgYGBcbiAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgY3JlYXRlZCBLZXlWYXVsdEtleSBvYmplY3QsIGVuYWJsaW5nIGltbWVkaWF0ZSB1c2Ugd2l0aGluIHRoZSBhcHBsaWNhdGlvbiBmb3IgY3J5cHRvZ3JhcGhpYyBvcGVyYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFkZEtleShcbiAgICBrZXlWYXVsdEtleU5hbWU6IHN0cmluZyxcbiAgICBrZXlUeXBlOiBzdHJpbmcsXG4gICAga2V5U2l6ZTogbnVtYmVyLFxuICAgIGtleU9wdHM6IHN0cmluZ1tdLFxuICAgIGV4cGlyYXRpb25EYXRlPzogc3RyaW5nLFxuICApOiBLZXlWYXVsdEtleSB7XG4gICAgY29uc3Qga2V5UHJvcHM6IEtleVByb3BzID0ge1xuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIG5hbWU6IGtleVZhdWx0S2V5TmFtZSxcbiAgICAgIGtleVR5cGU6IGtleVR5cGUsXG4gICAgICBrZXlTaXplOiBrZXlTaXplLFxuICAgICAga2V5T3B0czoga2V5T3B0cyxcbiAgICAgIGV4cGlyZXM6IGV4cGlyYXRpb25EYXRlLFxuICAgICAgYWNjZXNzUG9saWNpZXM6IHRoaXMuYWNjZXNzUG9saWNpZXMsXG4gICAgfTtcblxuICAgIGNvbnN0IGtleSA9IG5ldyBLZXkodGhpcywga2V5VmF1bHRLZXlOYW1lLCBrZXlQcm9wcyk7XG4gICAgcmV0dXJuIGtleS52YXVsdEtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgd2l0aGluIHRoZSBBenVyZSBLZXkgVmF1bHQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGZhY2lsaXRhdGVzIHRoZSBjcmVhdGlvbiBvZiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlLCB3aGljaCBpcyBhIGRpZ2l0YWwgY2VydGlmaWNhdGUgdGhhdCBpcyBzaWduZWQgYnlcbiAgICogaXRzIG93biBjcmVhdG9yIHJhdGhlciB0aGFuIGEgdHJ1c3RlZCBhdXRob3JpdHkuIFNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyBjYW4gYmUgdXNlZnVsIGZvciB0ZXN0aW5nLCBpbnRlcm5hbFxuICAgKiBjb21tdW5pY2F0aW9ucywgb3IgYW55IHNjZW5hcmlvIHdoZXJlIHB1YmxpYyB0cnVzdCBpcyBub3QgcmVxdWlyZWQuIFRoZSBtZXRob2QgYWxsb3dzIHNwZWNpZnlpbmcgc3ViamVjdCBkZXRhaWxzLFxuICAgKiBETlMgbmFtZXMgZm9yIHRoZSBjZXJ0aWZpY2F0ZSwgYW5kIG1hbmFnaW5nIGl0cyBsaWZlY3ljbGUgd2l0aCBhY3Rpb24gdHlwZXMgYW5kIGV4cGlyeS5cbiAgICpcbiAgICogQHBhcmFtIGNlcnROYW1lIC0gVGhlIHVuaXF1ZSBuYW1lIGZvciB0aGUgY2VydGlmaWNhdGUgd2l0aGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEBwYXJhbSBzdWJqZWN0IC0gVGhlIHN1YmplY3QgbmFtZSBvZiB0aGUgY2VydGlmaWNhdGUsIHR5cGljYWxseSBmb3JtYXR0ZWQgYXMgYW4gWC41MDAgRGlzdGluZ3Vpc2hlZCBOYW1lIChlLmcuLCBcIkNOPWV4YW1wbGUuY29tXCIpLlxuICAgKiBAcGFyYW0gZG5zTmFtZXMgLSBBbiBhcnJheSBvZiBETlMgbmFtZXMgdGhhdCBzaG91bGQgYmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2VydGlmaWNhdGUuIFRoaXMgaXMgdXNlZnVsIGZvciBjZXJ0aWZpY2F0ZXNcbiAgICogICAgICAgICAgICAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHZhbGlkIGZvciBtdWx0aXBsZSBob3N0bmFtZXMuXG4gICAqIEBwYXJhbSBhY3Rpb25UeXBlIC0gT3B0aW9uYWwuIFNwZWNpZmllcyB0aGUgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZCB3aXRoIHRoZSBjZXJ0aWZpY2F0ZSwgc3VjaCBhcyAnY3JlYXRlJyBvciAncmVuZXcnLlxuICAgKiBAcGFyYW0gZGF5c0JlZm9yZUV4cGlyeSAtIE9wdGlvbmFsLiBOdW1iZXIgb2YgZGF5cyBiZWZvcmUgZXhwaXJ5IHdoZW4gYW4gYWN0aW9uIHNob3VsZCBiZSB0YWtlbiwgdXNlZnVsIGZvciBhdXRvLXJlbmV3YWwgc2NlbmFyaW9zLlxuICAgKiBAcmV0dXJucyBBIEtleVZhdWx0Q2VydGlmaWNhdGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgbmV3bHkgY3JlYXRlZCBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBteUNlcnRpZmljYXRlID0gdmF1bHQuYWRkU2VsZlNpZ25lZENlcnQoXG4gICAqICAgJ215Q2VydCcsXG4gICAqICAgJ0NOPW15ZG9tYWluLmNvbScsXG4gICAqICAgWydteWRvbWFpbi5jb20nLCAnd3d3Lm15ZG9tYWluLmNvbSddLFxuICAgKiAgICdjcmVhdGUnLFxuICAgKiAgIDMwXG4gICAqICk7XG4gICAqIGBgYFxuICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBLZXlWYXVsdENlcnRpZmljYXRlIG9iamVjdCwgZW5hYmxpbmcgaXQgdG8gYmUgdXNlZCBpbW1lZGlhdGVseSB3aXRoaW4gdGhlIGFwcGxpY2F0aW9uIG9yIHN0b3JlZCBmb3IgZnV0dXJlIHVzZS5cbiAgICovXG4gIHB1YmxpYyBhZGRTZWxmU2lnbmVkQ2VydChcbiAgICBjZXJ0TmFtZTogc3RyaW5nLFxuICAgIHN1YmplY3Q6IHN0cmluZyxcbiAgICBkbnNOYW1lczogc3RyaW5nW10sXG4gICAgYWN0aW9uVHlwZT86IHN0cmluZyxcbiAgICBkYXlzQmVmb3JlRXhwaXJ5PzogbnVtYmVyLFxuICApOiBLZXlWYXVsdENlcnRpZmljYXRlIHtcbiAgICBjb25zdCBrZXlQcm9wczogU2VsZlNpZ25lZENlcnRpZmljYXRlUHJvcHMgPSB7XG4gICAgICBrZXlWYXVsdElkOiB0aGlzLFxuICAgICAgbmFtZTogY2VydE5hbWUsXG4gICAgICBzdWJqZWN0OiBzdWJqZWN0LFxuICAgICAgZG5zTmFtZXM6IGRuc05hbWVzLFxuICAgICAgYWN0aW9uVHlwZTogYWN0aW9uVHlwZSxcbiAgICAgIGRheXNCZWZvcmVFeHBpcnk6IGRheXNCZWZvcmVFeHBpcnksXG4gICAgICBhY2Nlc3NQb2xpY2llczogdGhpcy5hY2Nlc3NQb2xpY2llcyxcbiAgICB9O1xuICAgIGNvbnN0IGNlcnQgPSBuZXcgU2VsZlNpZ25lZENlcnRpZmljYXRlKHRoaXMsIGNlcnROYW1lLCBrZXlQcm9wcyk7XG4gICAgcmV0dXJuIGNlcnQuY2VydGlmaWNhdGU7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNlcnRpZmljYXRlIGlzc3VlciB0byB0aGUgQXp1cmUgS2V5IFZhdWx0LlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBjb25maWd1cmVzIGEgY2VydGlmaWNhdGUgaXNzdWVyIHdpdGhpbiB0aGUgS2V5IFZhdWx0LCBhbGxvd2luZyB0aGUgS2V5IFZhdWx0IHRvIGlzc3VlIGNlcnRpZmljYXRlc1xuICAgKiB0aHJvdWdoIGV4dGVybmFsIHByb3ZpZGVycy4gQ29uZmlndXJpbmcgYW4gaXNzdWVyIGlzIGVzc2VudGlhbCBmb3IgZW5hYmxpbmcgYXV0b21hdGVkIGNlcnRpZmljYXRlIG1hbmFnZW1lbnRcbiAgICogcHJvY2Vzc2VzLCBzdWNoIGFzIGlzc3VhbmNlIGFuZCByZW5ld2FsLCBkaXJlY3RseSB0aHJvdWdoIHRoZSBLZXkgVmF1bHQgd2l0aCBhIHNwZWNpZmllZCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKS5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgZm9yIHRoZSBjZXJ0aWZpY2F0ZSBpc3N1ZXIgd2l0aGluIHRoZSBLZXkgVmF1bHQuXG4gICAqIEBwYXJhbSBwcm92aWRlciAtIFRoZSBuYW1lIG9mIHRoZSBleHRlcm5hbCBwcm92aWRlciB0aGF0IHdpbGwgaXNzdWUgdGhlIGNlcnRpZmljYXRlcywgc3VjaCBhcyAnRGlnaUNlcnQnIG9yICdHbG9iYWxTaWduJy5cbiAgICpcbiAgICogRXhhbXBsZSB1c2FnZTpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiB2YXVsdC5hZGRDZXJ0SXNzdWVyKFxuICAgKiAgICdteUNlcnRJc3N1ZXInLFxuICAgKiAgICdEaWdpQ2VydCdcbiAgICogKTtcbiAgICogYGBgXG4gICAqIFRoaXMgbWV0aG9kIGNvbmZpZ3VyZXMgYSBjZXJ0aWZpY2F0ZSBpc3N1ZXIgYnV0IGRvZXMgbm90IHJldHVybiBhbnkgdmFsdWUuIFRoZSBpc3N1ZXIgZGV0YWlscywgaW5jbHVkaW5nIHByb3ZpZGVyIG5hbWVcbiAgICogYW5kIGFueSBuZWNlc3NhcnkgY3JlZGVudGlhbHMgKG1hbmFnZWQgZXh0ZXJuYWxseSBvciB0aHJvdWdoIGFkZGl0aW9uYWwgbWV0aG9kIHBhcmFtZXRlcnMpLCBhcmUgc2V0IHVwIGluIHRoZSBLZXkgVmF1bHRcbiAgICogZm9yIGZ1dHVyZSBjZXJ0aWZpY2F0ZSBvcGVyYXRpb25zLlxuICAgKi9cbiAgcHVibGljIGFkZENlcnRJc3N1ZXIobmFtZTogc3RyaW5nLCBwcm92aWRlcjogc3RyaW5nKSB7XG4gICAgbmV3IENlcnRpZmljYXRlSXNzdWVyKHRoaXMsIG5hbWUsIHtcbiAgICAgIG5hbWU6IG5hbWUsXG4gICAgICBwcm92aWRlck5hbWU6IHByb3ZpZGVyLFxuICAgICAga2V5VmF1bHRJZDogdGhpcyxcbiAgICAgIGFjY2Vzc1BvbGljaWVzOiB0aGlzLmFjY2Vzc1BvbGljaWVzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const provider_1 = require("@cdktf/provider-azurerm/lib/provider");
4
+ const resource_group_1 = require("@cdktf/provider-azurerm/lib/resource-group");
5
+ const cdktf_1 = require("cdktf");
6
+ const ExampleAzureKeyVault_1 = require("./ExampleAzureKeyVault");
7
+ require("cdktf/lib/testing/adapters/jest");
8
+ const kv = require("..");
9
+ const util = require("../../util/azureTenantIdHelpers");
10
+ describe("Azure Key Vault With Defaults", () => {
11
+ let stack;
12
+ let fullSynthResult;
13
+ beforeEach(() => {
14
+ const app = cdktf_1.Testing.app();
15
+ stack = new cdktf_1.TerraformStack(app, "test");
16
+ new provider_1.AzurermProvider(stack, "azureFeature", { features: {} });
17
+ const rg = new resource_group_1.ResourceGroup(stack, "MyResourceGroup", {
18
+ name: "rg-test",
19
+ location: "eastus",
20
+ });
21
+ new kv.Vault(stack, "testAzureKeyVaultDefaults", {
22
+ name: "kv-test",
23
+ location: "eastus",
24
+ resourceGroup: rg,
25
+ tenantId: "123e4567-e89b-12d3-a456-426614174000",
26
+ });
27
+ fullSynthResult = cdktf_1.Testing.fullSynth(stack); // Save the result for reuse
28
+ });
29
+ it("renders an Azure Key Vault with defaults and checks snapshot", () => {
30
+ expect(cdktf_1.Testing.synth(stack)).toMatchSnapshot(); // Compare the already prepared stack
31
+ });
32
+ it("check if the produced terraform configuration is valid", () => {
33
+ expect(fullSynthResult).toBeValidTerraform(); // Use the saved result
34
+ });
35
+ it("check if this can be planned", () => {
36
+ expect(fullSynthResult).toPlanSuccessfully(); // Use the saved result
37
+ });
38
+ });
39
+ describe("Azure Key Vault Example", () => {
40
+ //let stack: TerraformStack;
41
+ // beforeEach(() => {
42
+ // const app = Testing.app();
43
+ // stack = new TerraformStack(app, "test");
44
+ // Testing.synthScope((stack) => {
45
+ // new exampleAzureKeyVault(stack, "testAzureKeyVault");
46
+ // });
47
+ // });
48
+ it("renders the Example Azure KeyVault and checks snapshot", () => {
49
+ // Need to remove the tenant_id from the snapshot as it will change wherever the test is run
50
+ const output = cdktf_1.Testing.synth(new ExampleAzureKeyVault_1.exampleAzureKeyVault(cdktf_1.Testing.app(), "testAzureKeyVault"));
51
+ const myObject = JSON.parse(output);
52
+ expect(util.removeTenantIdFromSnapshot(myObject)).toMatchSnapshot();
53
+ });
54
+ it("check if the produced terraform configuration is valid", () => {
55
+ // We need to do a full synth to plan the terraform configuration
56
+ expect(cdktf_1.Testing.fullSynth(new ExampleAzureKeyVault_1.exampleAzureKeyVault(cdktf_1.Testing.app(), "testAzureKeyVault"))).toBeValidTerraform();
57
+ });
58
+ it("check if this can be planned", () => {
59
+ // We need to do a full synth to plan the terraform configuration
60
+ expect(cdktf_1.Testing.fullSynth(new ExampleAzureKeyVault_1.exampleAzureKeyVault(cdktf_1.Testing.app(), "testAzureKeyVault"))).toPlanSuccessfully();
61
+ });
62
+ });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXp1cmVLZXlWYXVsdC5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWtleXZhdWx0L3Rlc3QvQXp1cmVLZXlWYXVsdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUVBQXVFO0FBQ3ZFLCtFQUEyRTtBQUMzRSxpQ0FBZ0Q7QUFDaEQsaUVBQThEO0FBQzlELDJDQUF5QztBQUN6Qyx5QkFBeUI7QUFDekIsd0RBQXdEO0FBRXhELFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7SUFDN0MsSUFBSSxLQUFxQixDQUFDO0lBQzFCLElBQUksZUFBb0IsQ0FBQztJQUV6QixVQUFVLENBQUMsR0FBRyxFQUFFO1FBQ2QsTUFBTSxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzFCLEtBQUssR0FBRyxJQUFJLHNCQUFjLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXhDLElBQUksMEJBQWUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFN0QsTUFBTSxFQUFFLEdBQUcsSUFBSSw4QkFBYSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsRUFBRTtZQUNyRCxJQUFJLEVBQUUsU0FBUztZQUNmLFFBQVEsRUFBRSxRQUFRO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsMkJBQTJCLEVBQUU7WUFDL0MsSUFBSSxFQUFFLFNBQVM7WUFDZixRQUFRLEVBQUUsUUFBUTtZQUNsQixhQUFhLEVBQUUsRUFBRTtZQUNqQixRQUFRLEVBQUUsc0NBQXNDO1NBQ2pELENBQUMsQ0FBQztRQUVILGVBQWUsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNEJBQTRCO0lBQzFFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhEQUE4RCxFQUFFLEdBQUcsRUFBRTtRQUN0RSxNQUFNLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMscUNBQXFDO0lBQ3ZGLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtRQUNoRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtJQUN2RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxHQUFHLEVBQUU7UUFDdEMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQyx1QkFBdUI7SUFDdkUsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7SUFDdkMsNEJBQTRCO0lBRTVCLHFCQUFxQjtJQUNyQiwrQkFBK0I7SUFDL0IsNkNBQTZDO0lBRTdDLG9DQUFvQztJQUNwQyw0REFBNEQ7SUFDNUQsUUFBUTtJQUNSLE1BQU07SUFFTixFQUFFLENBQUMsd0RBQXdELEVBQUUsR0FBRyxFQUFFO1FBQ2hFLDRGQUE0RjtRQUM1RixNQUFNLE1BQU0sR0FBRyxlQUFPLENBQUMsS0FBSyxDQUMxQixJQUFJLDJDQUFvQixDQUFDLGVBQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUM3RCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQXdCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekQsTUFBTSxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdEQUF3RCxFQUFFLEdBQUcsRUFBRTtRQUNoRSxpRUFBaUU7UUFDakUsTUFBTSxDQUNKLGVBQU8sQ0FBQyxTQUFTLENBQ2YsSUFBSSwyQ0FBb0IsQ0FBQyxlQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FDN0QsQ0FDRixDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1FBQ3RDLGlFQUFpRTtRQUNqRSxNQUFNLENBQ0osZUFBTyxDQUFDLFNBQVMsQ0FDZixJQUFJLDJDQUFvQixDQUFDLGVBQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxtQkFBbUIsQ0FBQyxDQUM3RCxDQUNGLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUN6QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXp1cmVybVByb3ZpZGVyIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1henVyZXJtL2xpYi9wcm92aWRlclwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXp1cmVybS9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFRlc3RpbmcsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBleGFtcGxlQXp1cmVLZXlWYXVsdCB9IGZyb20gXCIuL0V4YW1wbGVBenVyZUtleVZhdWx0XCI7XG5pbXBvcnQgXCJjZGt0Zi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgKiBhcyBrdiBmcm9tIFwiLi5cIjtcbmltcG9ydCAqIGFzIHV0aWwgZnJvbSBcIi4uLy4uL3V0aWwvYXp1cmVUZW5hbnRJZEhlbHBlcnNcIjtcblxuZGVzY3JpYmUoXCJBenVyZSBLZXkgVmF1bHQgV2l0aCBEZWZhdWx0c1wiLCAoKSA9PiB7XG4gIGxldCBzdGFjazogVGVycmFmb3JtU3RhY2s7XG4gIGxldCBmdWxsU3ludGhSZXN1bHQ6IGFueTtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIHN0YWNrID0gbmV3IFRlcnJhZm9ybVN0YWNrKGFwcCwgXCJ0ZXN0XCIpO1xuXG4gICAgbmV3IEF6dXJlcm1Qcm92aWRlcihzdGFjaywgXCJhenVyZUZlYXR1cmVcIiwgeyBmZWF0dXJlczoge30gfSk7XG5cbiAgICBjb25zdCByZyA9IG5ldyBSZXNvdXJjZUdyb3VwKHN0YWNrLCBcIk15UmVzb3VyY2VHcm91cFwiLCB7XG4gICAgICBuYW1lOiBcInJnLXRlc3RcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgIH0pO1xuXG4gICAgbmV3IGt2LlZhdWx0KHN0YWNrLCBcInRlc3RBenVyZUtleVZhdWx0RGVmYXVsdHNcIiwge1xuICAgICAgbmFtZTogXCJrdi10ZXN0XCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXA6IHJnLFxuICAgICAgdGVuYW50SWQ6IFwiMTIzZTQ1NjctZTg5Yi0xMmQzLWE0NTYtNDI2NjE0MTc0MDAwXCIsXG4gICAgfSk7XG5cbiAgICBmdWxsU3ludGhSZXN1bHQgPSBUZXN0aW5nLmZ1bGxTeW50aChzdGFjayk7IC8vIFNhdmUgdGhlIHJlc3VsdCBmb3IgcmV1c2VcbiAgfSk7XG5cbiAgaXQoXCJyZW5kZXJzIGFuIEF6dXJlIEtleSBWYXVsdCB3aXRoIGRlZmF1bHRzIGFuZCBjaGVja3Mgc25hcHNob3RcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChUZXN0aW5nLnN5bnRoKHN0YWNrKSkudG9NYXRjaFNuYXBzaG90KCk7IC8vIENvbXBhcmUgdGhlIGFscmVhZHkgcHJlcGFyZWQgc3RhY2tcbiAgfSk7XG5cbiAgaXQoXCJjaGVjayBpZiB0aGUgcHJvZHVjZWQgdGVycmFmb3JtIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChmdWxsU3ludGhSZXN1bHQpLnRvQmVWYWxpZFRlcnJhZm9ybSgpOyAvLyBVc2UgdGhlIHNhdmVkIHJlc3VsdFxuICB9KTtcblxuICBpdChcImNoZWNrIGlmIHRoaXMgY2FuIGJlIHBsYW5uZWRcIiwgKCkgPT4ge1xuICAgIGV4cGVjdChmdWxsU3ludGhSZXN1bHQpLnRvUGxhblN1Y2Nlc3NmdWxseSgpOyAvLyBVc2UgdGhlIHNhdmVkIHJlc3VsdFxuICB9KTtcbn0pO1xuXG5kZXNjcmliZShcIkF6dXJlIEtleSBWYXVsdCBFeGFtcGxlXCIsICgpID0+IHtcbiAgLy9sZXQgc3RhY2s6IFRlcnJhZm9ybVN0YWNrO1xuXG4gIC8vIGJlZm9yZUVhY2goKCkgPT4ge1xuICAvLyAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gIC8vICAgc3RhY2sgPSBuZXcgVGVycmFmb3JtU3RhY2soYXBwLCBcInRlc3RcIik7XG5cbiAgLy8gICBUZXN0aW5nLnN5bnRoU2NvcGUoKHN0YWNrKSA9PiB7XG4gIC8vICAgICBuZXcgZXhhbXBsZUF6dXJlS2V5VmF1bHQoc3RhY2ssIFwidGVzdEF6dXJlS2V5VmF1bHRcIik7XG4gIC8vICAgfSk7XG4gIC8vIH0pO1xuXG4gIGl0KFwicmVuZGVycyB0aGUgRXhhbXBsZSBBenVyZSBLZXlWYXVsdCBhbmQgY2hlY2tzIHNuYXBzaG90XCIsICgpID0+IHtcbiAgICAvLyBOZWVkIHRvIHJlbW92ZSB0aGUgdGVuYW50X2lkIGZyb20gdGhlIHNuYXBzaG90IGFzIGl0IHdpbGwgY2hhbmdlIHdoZXJldmVyIHRoZSB0ZXN0IGlzIHJ1blxuICAgIGNvbnN0IG91dHB1dCA9IFRlc3Rpbmcuc3ludGgoXG4gICAgICBuZXcgZXhhbXBsZUF6dXJlS2V5VmF1bHQoVGVzdGluZy5hcHAoKSwgXCJ0ZXN0QXp1cmVLZXlWYXVsdFwiKSxcbiAgICApO1xuICAgIGNvbnN0IG15T2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0gSlNPTi5wYXJzZShvdXRwdXQpO1xuXG4gICAgZXhwZWN0KHV0aWwucmVtb3ZlVGVuYW50SWRGcm9tU25hcHNob3QobXlPYmplY3QpKS50b01hdGNoU25hcHNob3QoKTtcbiAgfSk7XG5cbiAgaXQoXCJjaGVjayBpZiB0aGUgcHJvZHVjZWQgdGVycmFmb3JtIGNvbmZpZ3VyYXRpb24gaXMgdmFsaWRcIiwgKCkgPT4ge1xuICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBmdWxsIHN5bnRoIHRvIHBsYW4gdGhlIHRlcnJhZm9ybSBjb25maWd1cmF0aW9uXG4gICAgZXhwZWN0KFxuICAgICAgVGVzdGluZy5mdWxsU3ludGgoXG4gICAgICAgIG5ldyBleGFtcGxlQXp1cmVLZXlWYXVsdChUZXN0aW5nLmFwcCgpLCBcInRlc3RBenVyZUtleVZhdWx0XCIpLFxuICAgICAgKSxcbiAgICApLnRvQmVWYWxpZFRlcnJhZm9ybSgpO1xuICB9KTtcblxuICBpdChcImNoZWNrIGlmIHRoaXMgY2FuIGJlIHBsYW5uZWRcIiwgKCkgPT4ge1xuICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBmdWxsIHN5bnRoIHRvIHBsYW4gdGhlIHRlcnJhZm9ybSBjb25maWd1cmF0aW9uXG4gICAgZXhwZWN0KFxuICAgICAgVGVzdGluZy5mdWxsU3ludGgoXG4gICAgICAgIG5ldyBleGFtcGxlQXp1cmVLZXlWYXVsdChUZXN0aW5nLmFwcCgpLCBcInRlc3RBenVyZUtleVZhdWx0XCIpLFxuICAgICAgKSxcbiAgICApLnRvUGxhblN1Y2Nlc3NmdWxseSgpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,5 @@
1
+ import { Construct } from "constructs";
2
+ import { BaseTestStack } from "../../testing";
3
+ export declare class exampleAzureKeyVault extends BaseTestStack {
4
+ constructor(scope: Construct, id: string);
5
+ }