@microsoft/terraform-cdk-constructs 1.0.0 → 1.2.0

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 (385) hide show
  1. package/.jsii +60999 -15780
  2. package/API.md +54947 -10610
  3. package/README.md +72 -36
  4. package/docs/monitoring-guide.md +206 -0
  5. package/docs/testing.md +84 -1
  6. package/lib/azure-actiongroup/index.d.ts +11 -0
  7. package/lib/azure-actiongroup/index.js +28 -0
  8. package/lib/azure-actiongroup/lib/action-group-schemas.d.ts +24 -0
  9. package/lib/azure-actiongroup/lib/action-group-schemas.js +201 -0
  10. package/lib/azure-actiongroup/lib/action-group.d.ts +312 -0
  11. package/lib/azure-actiongroup/lib/action-group.js +201 -0
  12. package/lib/azure-actiongroup/lib/index.d.ts +5 -0
  13. package/lib/azure-actiongroup/lib/index.js +22 -0
  14. package/lib/azure-actiongroup/test/action-group.integ.d.ts +9 -0
  15. package/lib/azure-actiongroup/test/action-group.integ.js +79 -0
  16. package/lib/azure-actiongroup/test/action-group.spec.d.ts +8 -0
  17. package/lib/azure-actiongroup/test/action-group.spec.js +602 -0
  18. package/lib/azure-activitylogalert/index.d.ts +11 -0
  19. package/lib/azure-activitylogalert/index.js +28 -0
  20. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.d.ts +24 -0
  21. package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.js +182 -0
  22. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +236 -0
  23. package/lib/azure-activitylogalert/lib/activity-log-alert.js +212 -0
  24. package/lib/azure-activitylogalert/lib/index.d.ts +5 -0
  25. package/lib/azure-activitylogalert/lib/index.js +22 -0
  26. package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +9 -0
  27. package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +98 -0
  28. package/lib/azure-activitylogalert/test/activity-log-alert.spec.d.ts +9 -0
  29. package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +1101 -0
  30. package/lib/azure-aks/index.d.ts +9 -0
  31. package/lib/azure-aks/index.js +28 -0
  32. package/lib/azure-aks/lib/aks-cluster-schemas.d.ts +505 -0
  33. package/lib/azure-aks/lib/aks-cluster-schemas.js +572 -0
  34. package/lib/azure-aks/lib/aks-cluster.d.ts +395 -0
  35. package/lib/azure-aks/lib/aks-cluster.js +489 -0
  36. package/lib/azure-aks/lib/index.d.ts +11 -0
  37. package/lib/azure-aks/lib/index.js +38 -0
  38. package/lib/azure-aks/test/aks-cluster.integ.d.ts +9 -0
  39. package/lib/azure-aks/test/aks-cluster.integ.js +260 -0
  40. package/lib/azure-aks/test/aks-cluster.spec.d.ts +8 -0
  41. package/lib/azure-aks/test/aks-cluster.spec.js +1396 -0
  42. package/lib/azure-diagnosticsettings/index.d.ts +7 -0
  43. package/lib/azure-diagnosticsettings/index.js +24 -0
  44. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.d.ts +50 -0
  45. package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.js +207 -0
  46. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +193 -0
  47. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +200 -0
  48. package/lib/azure-diagnosticsettings/lib/index.d.ts +8 -0
  49. package/lib/azure-diagnosticsettings/lib/index.js +25 -0
  50. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.d.ts +8 -0
  51. package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +432 -0
  52. package/lib/azure-metricalert/index.d.ts +11 -0
  53. package/lib/azure-metricalert/index.js +28 -0
  54. package/lib/azure-metricalert/lib/index.d.ts +5 -0
  55. package/lib/azure-metricalert/lib/index.js +22 -0
  56. package/lib/azure-metricalert/lib/metric-alert-schemas.d.ts +24 -0
  57. package/lib/azure-metricalert/lib/metric-alert-schemas.js +242 -0
  58. package/lib/azure-metricalert/lib/metric-alert.d.ts +344 -0
  59. package/lib/azure-metricalert/lib/metric-alert.js +252 -0
  60. package/lib/azure-metricalert/test/metric-alert.integ.d.ts +9 -0
  61. package/lib/azure-metricalert/test/metric-alert.integ.js +123 -0
  62. package/lib/azure-metricalert/test/metric-alert.spec.d.ts +9 -0
  63. package/lib/azure-metricalert/test/metric-alert.spec.js +1266 -0
  64. package/lib/azure-networkinterface/index.d.ts +4 -0
  65. package/lib/azure-networkinterface/index.js +21 -0
  66. package/lib/azure-networkinterface/lib/index.d.ts +6 -0
  67. package/lib/azure-networkinterface/lib/index.js +22 -0
  68. package/lib/azure-networkinterface/lib/network-interface-schemas.d.ts +32 -0
  69. package/lib/azure-networkinterface/lib/network-interface-schemas.js +222 -0
  70. package/lib/azure-networkinterface/lib/network-interface.d.ts +265 -0
  71. package/lib/azure-networkinterface/lib/network-interface.js +228 -0
  72. package/lib/azure-networkinterface/test/network-interface.integ.d.ts +9 -0
  73. package/lib/azure-networkinterface/test/network-interface.integ.js +102 -0
  74. package/lib/azure-networkinterface/test/network-interface.spec.d.ts +8 -0
  75. package/lib/azure-networkinterface/test/network-interface.spec.js +655 -0
  76. package/lib/azure-networksecuritygroup/index.d.ts +6 -0
  77. package/lib/azure-networksecuritygroup/index.js +23 -0
  78. package/lib/azure-networksecuritygroup/lib/index.d.ts +5 -0
  79. package/lib/azure-networksecuritygroup/lib/index.js +16 -0
  80. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.d.ts +32 -0
  81. package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.js +198 -0
  82. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +268 -0
  83. package/lib/azure-networksecuritygroup/lib/network-security-group.js +248 -0
  84. package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +9 -0
  85. package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +151 -0
  86. package/lib/azure-networksecuritygroup/test/network-security-group.spec.d.ts +8 -0
  87. package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +652 -0
  88. package/lib/azure-publicipaddress/index.d.ts +6 -0
  89. package/lib/azure-publicipaddress/index.js +23 -0
  90. package/lib/azure-publicipaddress/lib/index.d.ts +9 -0
  91. package/lib/azure-publicipaddress/lib/index.js +19 -0
  92. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.d.ts +32 -0
  93. package/lib/azure-publicipaddress/lib/public-ip-address-schemas.js +227 -0
  94. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +256 -0
  95. package/lib/azure-publicipaddress/lib/public-ip-address.js +267 -0
  96. package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +9 -0
  97. package/lib/azure-publicipaddress/test/public-ip-address.integ.js +75 -0
  98. package/lib/azure-publicipaddress/test/public-ip-address.spec.d.ts +15 -0
  99. package/lib/azure-publicipaddress/test/public-ip-address.spec.js +498 -0
  100. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  101. package/lib/azure-resourcegroup/test/resource-group.integ.js +23 -11
  102. package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +98 -0
  103. package/lib/azure-storageaccount/lib/storage-account-schemas.js +1 -1
  104. package/lib/azure-storageaccount/lib/storage-account.d.ts +38 -1
  105. package/lib/azure-storageaccount/lib/storage-account.js +138 -2
  106. package/lib/azure-storageaccount/test/storage-account.integ.js +91 -12
  107. package/lib/azure-subnet/index.d.ts +4 -0
  108. package/lib/azure-subnet/index.js +21 -0
  109. package/lib/azure-subnet/lib/index.d.ts +5 -0
  110. package/lib/azure-subnet/lib/index.js +22 -0
  111. package/lib/azure-subnet/lib/subnet-schemas.d.ts +32 -0
  112. package/lib/azure-subnet/lib/subnet-schemas.js +237 -0
  113. package/lib/azure-subnet/lib/subnet.d.ts +285 -0
  114. package/lib/azure-subnet/lib/subnet.js +254 -0
  115. package/lib/azure-subnet/test/subnet.integ.d.ts +11 -0
  116. package/lib/azure-subnet/test/subnet.integ.js +80 -0
  117. package/lib/azure-subnet/test/subnet.spec.d.ts +8 -0
  118. package/lib/azure-subnet/test/subnet.spec.js +396 -0
  119. package/lib/azure-virtualmachine/index.d.ts +7 -0
  120. package/lib/azure-virtualmachine/index.js +24 -0
  121. package/lib/azure-virtualmachine/lib/index.d.ts +11 -0
  122. package/lib/azure-virtualmachine/lib/index.js +38 -0
  123. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.d.ts +327 -0
  124. package/lib/azure-virtualmachine/lib/virtual-machine-schemas.js +544 -0
  125. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +377 -0
  126. package/lib/azure-virtualmachine/lib/virtual-machine.js +462 -0
  127. package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +9 -0
  128. package/lib/azure-virtualmachine/test/virtual-machine.integ.js +220 -0
  129. package/lib/azure-virtualmachine/test/virtual-machine.spec.d.ts +9 -0
  130. package/lib/azure-virtualmachine/test/virtual-machine.spec.js +1032 -0
  131. package/lib/azure-virtualnetwork/index.d.ts +10 -0
  132. package/lib/azure-virtualnetwork/index.js +28 -0
  133. package/lib/azure-virtualnetwork/lib/index.d.ts +9 -0
  134. package/lib/azure-virtualnetwork/lib/index.js +22 -0
  135. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.d.ts +32 -0
  136. package/lib/azure-virtualnetwork/lib/virtual-network-schemas.js +236 -0
  137. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +213 -0
  138. package/lib/azure-virtualnetwork/lib/virtual-network.js +245 -0
  139. package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +9 -0
  140. package/lib/azure-virtualnetwork/test/virtual-network.integ.js +91 -0
  141. package/lib/azure-virtualnetwork/test/virtual-network.spec.d.ts +8 -0
  142. package/lib/azure-virtualnetwork/test/virtual-network.spec.js +398 -0
  143. package/lib/azure-vmss/index.d.ts +6 -0
  144. package/lib/azure-vmss/index.js +23 -0
  145. package/lib/azure-vmss/lib/index.d.ts +9 -0
  146. package/lib/azure-vmss/lib/index.js +39 -0
  147. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +258 -0
  148. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +503 -0
  149. package/lib/azure-vmss/lib/vmss-schemas.d.ts +472 -0
  150. package/lib/azure-vmss/lib/vmss-schemas.js +444 -0
  151. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +15 -0
  152. package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +261 -0
  153. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.d.ts +8 -0
  154. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +997 -0
  155. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +95 -27
  156. package/lib/core-azure/lib/azapi/azapi-resource.js +95 -58
  157. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +33 -21
  158. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +69 -27
  159. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +134 -120
  160. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +209 -59
  161. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +141 -128
  162. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +183 -36
  163. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +55 -43
  164. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +94 -26
  165. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +129 -116
  166. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +155 -32
  167. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +187 -174
  168. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +267 -48
  169. package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -10
  170. package/lib/core-azure/lib/azapi/providers-azapi/index.js +1 -1
  171. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.d.ts +0 -0
  172. package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +13 -0
  173. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +174 -162
  174. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +274 -14
  175. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +239 -225
  176. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +360 -76
  177. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +163 -150
  178. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +221 -46
  179. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +162 -149
  180. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +249 -50
  181. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +4 -2
  182. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  183. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  184. package/lib/index.d.ts +37 -0
  185. package/lib/index.js +40 -2
  186. package/lib/testing/index.d.ts +92 -2
  187. package/lib/testing/index.js +258 -18
  188. package/lib/testing/lib/cleanup.d.ts +229 -0
  189. package/lib/testing/lib/cleanup.js +331 -0
  190. package/lib/testing/lib/metadata.d.ts +151 -0
  191. package/lib/testing/lib/metadata.js +180 -0
  192. package/lib/testing/lib/naming.d.ts +96 -0
  193. package/lib/testing/lib/naming.js +336 -0
  194. package/node_modules/uuid/LICENSE.md +9 -0
  195. package/node_modules/uuid/README.md +510 -0
  196. package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
  197. package/node_modules/uuid/dist/cjs/index.js +31 -0
  198. package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
  199. package/node_modules/uuid/dist/cjs/max.js +3 -0
  200. package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
  201. package/node_modules/uuid/dist/cjs/md5.js +13 -0
  202. package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
  203. package/node_modules/uuid/dist/cjs/native.js +4 -0
  204. package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
  205. package/node_modules/uuid/dist/cjs/nil.js +3 -0
  206. package/node_modules/uuid/dist/cjs/package.json +1 -0
  207. package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
  208. package/node_modules/uuid/dist/cjs/parse.js +11 -0
  209. package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
  210. package/node_modules/uuid/dist/cjs/regex.js +3 -0
  211. package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
  212. package/node_modules/uuid/dist/cjs/rng.js +13 -0
  213. package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
  214. package/node_modules/uuid/dist/cjs/sha1.js +13 -0
  215. package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
  216. package/node_modules/uuid/dist/cjs/stringify.js +39 -0
  217. package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
  218. package/node_modules/uuid/dist/cjs/types.js +2 -0
  219. package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
  220. package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
  221. package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
  222. package/node_modules/uuid/dist/cjs/v1.js +87 -0
  223. package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
  224. package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
  225. package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
  226. package/node_modules/uuid/dist/cjs/v3.js +14 -0
  227. package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
  228. package/node_modules/uuid/dist/cjs/v35.js +41 -0
  229. package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
  230. package/node_modules/uuid/dist/cjs/v4.js +29 -0
  231. package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
  232. package/node_modules/uuid/dist/cjs/v5.js +14 -0
  233. package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
  234. package/node_modules/uuid/dist/cjs/v6.js +19 -0
  235. package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
  236. package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
  237. package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
  238. package/node_modules/uuid/dist/cjs/v7.js +69 -0
  239. package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
  240. package/node_modules/uuid/dist/cjs/validate.js +7 -0
  241. package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
  242. package/node_modules/uuid/dist/cjs/version.js +10 -0
  243. package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
  244. package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
  245. package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
  246. package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
  247. package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
  248. package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
  249. package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
  250. package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
  251. package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
  252. package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
  253. package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
  254. package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
  255. package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
  256. package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
  257. package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
  258. package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
  259. package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
  260. package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
  261. package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
  262. package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
  263. package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
  264. package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
  265. package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
  266. package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
  267. package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
  268. package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
  269. package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
  270. package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
  271. package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
  272. package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
  273. package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
  274. package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
  275. package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
  276. package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
  277. package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
  278. package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
  279. package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
  280. package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
  281. package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
  282. package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
  283. package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
  284. package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
  285. package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
  286. package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
  287. package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
  288. package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
  289. package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
  290. package/node_modules/uuid/dist/esm/bin/uuid +2 -0
  291. package/node_modules/uuid/dist/esm/index.d.ts +15 -0
  292. package/node_modules/uuid/dist/esm/index.js +14 -0
  293. package/node_modules/uuid/dist/esm/max.d.ts +2 -0
  294. package/node_modules/uuid/dist/esm/max.js +1 -0
  295. package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
  296. package/node_modules/uuid/dist/esm/md5.js +11 -0
  297. package/node_modules/uuid/dist/esm/native.d.ts +6 -0
  298. package/node_modules/uuid/dist/esm/native.js +2 -0
  299. package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
  300. package/node_modules/uuid/dist/esm/nil.js +1 -0
  301. package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
  302. package/node_modules/uuid/dist/esm/parse.js +9 -0
  303. package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
  304. package/node_modules/uuid/dist/esm/regex.js +1 -0
  305. package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
  306. package/node_modules/uuid/dist/esm/rng.js +10 -0
  307. package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
  308. package/node_modules/uuid/dist/esm/sha1.js +11 -0
  309. package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
  310. package/node_modules/uuid/dist/esm/stringify.js +35 -0
  311. package/node_modules/uuid/dist/esm/types.d.ts +21 -0
  312. package/node_modules/uuid/dist/esm/types.js +1 -0
  313. package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
  314. package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
  315. package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
  316. package/node_modules/uuid/dist/esm/v1.js +83 -0
  317. package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
  318. package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
  319. package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
  320. package/node_modules/uuid/dist/esm/v3.js +9 -0
  321. package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
  322. package/node_modules/uuid/dist/esm/v35.js +36 -0
  323. package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
  324. package/node_modules/uuid/dist/esm/v4.js +27 -0
  325. package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
  326. package/node_modules/uuid/dist/esm/v5.js +9 -0
  327. package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
  328. package/node_modules/uuid/dist/esm/v6.js +17 -0
  329. package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
  330. package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
  331. package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
  332. package/node_modules/uuid/dist/esm/v7.js +65 -0
  333. package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
  334. package/node_modules/uuid/dist/esm/validate.js +5 -0
  335. package/node_modules/uuid/dist/esm/version.d.ts +2 -0
  336. package/node_modules/uuid/dist/esm/version.js +8 -0
  337. package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
  338. package/node_modules/uuid/dist/esm-browser/index.js +14 -0
  339. package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
  340. package/node_modules/uuid/dist/esm-browser/max.js +1 -0
  341. package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
  342. package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
  343. package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
  344. package/node_modules/uuid/dist/esm-browser/native.js +2 -0
  345. package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
  346. package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
  347. package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
  348. package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
  349. package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
  350. package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  351. package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
  352. package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
  353. package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
  354. package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
  355. package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
  356. package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
  357. package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
  358. package/node_modules/uuid/dist/esm-browser/types.js +1 -0
  359. package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
  360. package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
  361. package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
  362. package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
  363. package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
  364. package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
  365. package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
  366. package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
  367. package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
  368. package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
  369. package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
  370. package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
  371. package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
  372. package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
  373. package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
  374. package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
  375. package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
  376. package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
  377. package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
  378. package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
  379. package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
  380. package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
  381. package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
  382. package/node_modules/uuid/dist/esm-browser/version.js +8 -0
  383. package/node_modules/uuid/package.json +132 -0
  384. package/package.json +17 -12
  385. package/scripts/cleanup-test-resources.ts +369 -0
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PublicIPAddress = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Azure Public IP Address implementation using AzapiResource framework
8
+ *
9
+ * This class provides a unified implementation for Azure Public IP Addresses that
10
+ * automatically handles version management, schema validation, and property
11
+ * transformation across all supported API versions.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2024-07-01 (Active)
15
+ * - 2024-10-01 (Active)
16
+ * - 2025-01-01 (Active, Latest)
17
+ *
18
+ * Features:
19
+ * - Automatic latest version resolution when no version is specified
20
+ * - Explicit version pinning for stability requirements
21
+ * - Schema-driven validation and transformation
22
+ * - Full backward compatibility
23
+ * - JSII compliance for multi-language support
24
+ */
25
+ const cdktf = require("cdktf");
26
+ const public_ip_address_schemas_1 = require("./public-ip-address-schemas");
27
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
28
+ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
29
+ /**
30
+ * Azure Public IP Address implementation
31
+ *
32
+ * This class provides a single, version-aware implementation that replaces
33
+ * version-specific Public IP Address classes. It automatically handles version
34
+ * resolution, schema validation, and property transformation while maintaining
35
+ * full backward compatibility.
36
+ *
37
+ * @example
38
+ * // Basic usage with automatic version resolution (Standard Static IP):
39
+ * const publicIp = new PublicIPAddress(this, "publicIp", {
40
+ * name: "my-public-ip",
41
+ * location: "eastus",
42
+ * sku: {
43
+ * name: "Standard",
44
+ * tier: "Regional"
45
+ * },
46
+ * publicIPAllocationMethod: "Static"
47
+ * });
48
+ *
49
+ * @example
50
+ * // Basic Dynamic IP:
51
+ * const publicIp = new PublicIPAddress(this, "publicIp", {
52
+ * name: "my-public-ip",
53
+ * location: "eastus",
54
+ * sku: {
55
+ * name: "Basic"
56
+ * },
57
+ * publicIPAllocationMethod: "Dynamic"
58
+ * });
59
+ *
60
+ * @example
61
+ * // Public IP with DNS label:
62
+ * const publicIp = new PublicIPAddress(this, "publicIp", {
63
+ * name: "my-public-ip",
64
+ * location: "eastus",
65
+ * sku: {
66
+ * name: "Standard"
67
+ * },
68
+ * publicIPAllocationMethod: "Static",
69
+ * dnsSettings: {
70
+ * domainNameLabel: "myapp"
71
+ * }
72
+ * });
73
+ *
74
+ * @example
75
+ * // Zonal Public IP:
76
+ * const publicIp = new PublicIPAddress(this, "publicIp", {
77
+ * name: "my-public-ip",
78
+ * location: "eastus",
79
+ * sku: {
80
+ * name: "Standard"
81
+ * },
82
+ * publicIPAllocationMethod: "Static",
83
+ * zones: ["1"]
84
+ * });
85
+ *
86
+ * @stability stable
87
+ */
88
+ class PublicIPAddress extends azapi_resource_1.AzapiResource {
89
+ /**
90
+ * Ensures that Public IP Address schemas are registered with the ApiVersionManager
91
+ * This is called once during the first PublicIPAddress instantiation
92
+ */
93
+ static ensureSchemasRegistered() {
94
+ if (PublicIPAddress.schemasRegistered) {
95
+ return;
96
+ }
97
+ const apiVersionManager = api_version_manager_1.ApiVersionManager.instance();
98
+ try {
99
+ // Register all Public IP Address versions
100
+ apiVersionManager.registerResourceType(public_ip_address_schemas_1.PUBLIC_IP_ADDRESS_TYPE, public_ip_address_schemas_1.ALL_PUBLIC_IP_ADDRESS_VERSIONS);
101
+ PublicIPAddress.schemasRegistered = true;
102
+ console.log(`Registered ${public_ip_address_schemas_1.ALL_PUBLIC_IP_ADDRESS_VERSIONS.length} API versions for ${public_ip_address_schemas_1.PUBLIC_IP_ADDRESS_TYPE}`);
103
+ }
104
+ catch (error) {
105
+ console.warn(`Failed to register Public IP Address schemas: ${error}. ` +
106
+ `This may indicate the schemas are already registered or there's a configuration issue.`);
107
+ // Don't throw here as the schemas might already be registered
108
+ PublicIPAddress.schemasRegistered = true;
109
+ }
110
+ }
111
+ /**
112
+ * Creates a new Azure Public IP Address using the AzapiResource framework
113
+ *
114
+ * The constructor automatically handles version resolution, schema registration,
115
+ * validation, and resource creation. It maintains full backward compatibility
116
+ * with existing Public IP Address implementations.
117
+ *
118
+ * @param scope - The scope in which to define this construct
119
+ * @param id - The unique identifier for this instance
120
+ * @param props - Configuration properties for the Public IP Address
121
+ */
122
+ constructor(scope, id, props) {
123
+ // Ensure schemas are registered before calling super
124
+ PublicIPAddress.ensureSchemasRegistered();
125
+ // Call the parent constructor with the props
126
+ super(scope, id, props);
127
+ this.props = props;
128
+ // Extract properties from the AZAPI resource outputs using Terraform interpolation
129
+ this.id = `\${${this.terraformResource.fqn}.id}`;
130
+ this.tags = props.tags || {};
131
+ // Create Terraform outputs for easy access and referencing from other resources
132
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
133
+ value: this.id,
134
+ description: "The ID of the Public IP Address",
135
+ });
136
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
137
+ value: `\${${this.terraformResource.fqn}.name}`,
138
+ description: "The name of the Public IP Address",
139
+ });
140
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
141
+ value: `\${${this.terraformResource.fqn}.location}`,
142
+ description: "The location of the Public IP Address",
143
+ });
144
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
145
+ value: `\${${this.terraformResource.fqn}.tags}`,
146
+ description: "The tags assigned to the Public IP Address",
147
+ });
148
+ // Override logical IDs to match original naming convention
149
+ this.idOutput.overrideLogicalId("id");
150
+ this.nameOutput.overrideLogicalId("name");
151
+ this.locationOutput.overrideLogicalId("location");
152
+ this.tagsOutput.overrideLogicalId("tags");
153
+ // Apply ignore changes if specified
154
+ this._applyIgnoreChanges();
155
+ }
156
+ // =============================================================================
157
+ // REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
158
+ // =============================================================================
159
+ /**
160
+ * Gets the default API version to use when no explicit version is specified
161
+ * Returns the most recent stable version as the default
162
+ */
163
+ defaultVersion() {
164
+ return "2024-10-01";
165
+ }
166
+ /**
167
+ * Gets the Azure resource type for Public IP Addresses
168
+ */
169
+ resourceType() {
170
+ return public_ip_address_schemas_1.PUBLIC_IP_ADDRESS_TYPE;
171
+ }
172
+ /**
173
+ * Gets the API schema for the resolved version
174
+ * Uses the framework's schema resolution to get the appropriate schema
175
+ */
176
+ apiSchema() {
177
+ return this.resolveSchema();
178
+ }
179
+ /**
180
+ * Creates the resource body for the Azure API call
181
+ * Transforms the input properties into the JSON format expected by Azure REST API
182
+ */
183
+ createResourceBody(props) {
184
+ const typedProps = props;
185
+ return {
186
+ location: typedProps.location || "eastus",
187
+ tags: typedProps.tags || {},
188
+ sku: typedProps.sku,
189
+ zones: typedProps.zones,
190
+ properties: {
191
+ publicIPAllocationMethod: typedProps.publicIPAllocationMethod || "Dynamic",
192
+ publicIPAddressVersion: typedProps.publicIPAddressVersion || "IPv4",
193
+ dnsSettings: typedProps.dnsSettings,
194
+ idleTimeoutInMinutes: typedProps.idleTimeoutInMinutes,
195
+ },
196
+ };
197
+ }
198
+ // =============================================================================
199
+ // PUBLIC METHODS FOR PUBLIC IP ADDRESS OPERATIONS
200
+ // =============================================================================
201
+ /**
202
+ * Get the subscription ID from the Public IP Address ID
203
+ * Extracts the subscription ID from the Azure resource ID format
204
+ */
205
+ get subscriptionId() {
206
+ const idParts = this.id.split("/");
207
+ const subscriptionIndex = idParts.indexOf("subscriptions");
208
+ if (subscriptionIndex !== -1 && subscriptionIndex + 1 < idParts.length) {
209
+ return idParts[subscriptionIndex + 1];
210
+ }
211
+ throw new Error("Unable to extract subscription ID from Public IP Address ID");
212
+ }
213
+ /**
214
+ * Get the full resource identifier for use in other Azure resources
215
+ * Alias for the id property to match original interface
216
+ */
217
+ get resourceId() {
218
+ return this.id;
219
+ }
220
+ /**
221
+ * Get the IP address output value
222
+ * Returns the Terraform interpolation string for the IP address
223
+ */
224
+ get ipAddress() {
225
+ return `\${${this.terraformResource.fqn}.output.properties.ipAddress}`;
226
+ }
227
+ /**
228
+ * Add a tag to the Public IP Address
229
+ * Note: This modifies the construct props but requires a new deployment to take effect
230
+ */
231
+ addTag(key, value) {
232
+ if (!this.props.tags) {
233
+ this.props.tags = {};
234
+ }
235
+ this.props.tags[key] = value;
236
+ }
237
+ /**
238
+ * Remove a tag from the Public IP Address
239
+ * Note: This modifies the construct props but requires a new deployment to take effect
240
+ */
241
+ removeTag(key) {
242
+ if (this.props.tags && this.props.tags[key]) {
243
+ delete this.props.tags[key];
244
+ }
245
+ }
246
+ // =============================================================================
247
+ // PRIVATE HELPER METHODS
248
+ // =============================================================================
249
+ /**
250
+ * Applies ignore changes lifecycle rules if specified in props
251
+ */
252
+ _applyIgnoreChanges() {
253
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
254
+ this.terraformResource.addOverride("lifecycle", {
255
+ ignore_changes: this.props.ignoreChanges,
256
+ });
257
+ }
258
+ }
259
+ }
260
+ exports.PublicIPAddress = PublicIPAddress;
261
+ _a = JSII_RTTI_SYMBOL_1;
262
+ PublicIPAddress[_a] = { fqn: "@microsoft/terraform-cdk-constructs.PublicIPAddress", version: "1.2.0" };
263
+ /**
264
+ * Static initialization flag to ensure schemas are registered only once
265
+ */
266
+ PublicIPAddress.schemasRegistered = false;
267
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWlwLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHVibGljaXBhZGRyZXNzL2xpYi9wdWJsaWMtaXAtYWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCwrQkFBK0I7QUFFL0IsMkVBR3FDO0FBQ3JDLDhFQUdtRDtBQUNuRCxrR0FBNkY7QUEyRzdGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMERHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLDhCQUFhO0lBTWhEOzs7T0FHRztJQUNLLE1BQU0sQ0FBQyx1QkFBdUI7UUFDcEMsSUFBSSxlQUFlLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN0QyxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQUcsdUNBQWlCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFdkQsSUFBSSxDQUFDO1lBQ0gsMENBQTBDO1lBQzFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUNwQyxrREFBc0IsRUFDdEIsMERBQThCLENBQy9CLENBQUM7WUFFRixlQUFlLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBRXpDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsY0FBYywwREFBOEIsQ0FBQyxNQUFNLHFCQUFxQixrREFBc0IsRUFBRSxDQUNqRyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUNWLGlEQUFpRCxLQUFLLElBQUk7Z0JBQ3hELHdGQUF3RixDQUMzRixDQUFDO1lBQ0YsOERBQThEO1lBQzlELGVBQWUsQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFpQkQ7Ozs7Ozs7Ozs7T0FVRztJQUNILFlBQVksS0FBZ0IsRUFBRSxF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SUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0ZBQWdGO0lBQ2hGLHlCQUF5QjtJQUN6QixnRkFBZ0Y7SUFFaEY7O09BRUc7SUFDSyxtQkFBbUI7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWE7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7O0FBbE9ILDBDQW1PQzs7O0FBbE9DOztHQUVHO0FBQ1ksaUNBQWlCLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBenVyZSBQdWJsaWMgSVAgQWRkcmVzcyBpbXBsZW1lbnRhdGlvbiB1c2luZyBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB1bmlmaWVkIGltcGxlbWVudGF0aW9uIGZvciBBenVyZSBQdWJsaWMgSVAgQWRkcmVzc2VzIHRoYXRcbiAqIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHlcbiAqIHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDI0LTA3LTAxIChBY3RpdmUpXG4gKiAtIDIwMjQtMTAtMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNS0wMS0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gRnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiAtIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICovXG5cbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFMTF9QVUJMSUNfSVBfQUREUkVTU19WRVJTSU9OUyxcbiAgUFVCTElDX0lQX0FERFJFU1NfVFlQRSxcbn0gZnJvbSBcIi4vcHVibGljLWlwLWFkZHJlc3Mtc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgQXphcGlSZXNvdXJjZSxcbiAgQXphcGlSZXNvdXJjZVByb3BzLFxufSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvYXphcGktcmVzb3VyY2VcIjtcbmltcG9ydCB7IEFwaVZlcnNpb25NYW5hZ2VyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9hcGktdmVyc2lvbi1tYW5hZ2VyXCI7XG5pbXBvcnQgeyBBcGlTY2hlbWEgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogU0tVIGNvbmZpZ3VyYXRpb24gZm9yIFB1YmxpYyBJUCBBZGRyZXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljSVBBZGRyZXNzU2t1IHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFNLVVxuICAgKiBAZXhhbXBsZSBcIkJhc2ljXCIsIFwiU3RhbmRhcmRcIlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaWVyIG9mIHRoZSBTS1VcbiAgICogQGV4YW1wbGUgXCJSZWdpb25hbFwiLCBcIkdsb2JhbFwiXG4gICAqL1xuICByZWFkb25seSB0aWVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEROUyBzZXR0aW5ncyBjb25maWd1cmF0aW9uIGZvciBQdWJsaWMgSVAgQWRkcmVzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0lQQWRkcmVzc0Ruc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gbmFtZSBsYWJlbFxuICAgKiBUaGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZG9tYWluIG5hbWUgbGFiZWwgYW5kIHJlZ2lvbmFsaXplZCBETlMgem9uZVxuICAgKiBtYWtlIHVwIHRoZSBmdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUgKEZRRE4pIGFzc29jaWF0ZWQgd2l0aCB0aGUgcHVibGljIElQXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBGdWxseSBRdWFsaWZpZWQgRG9tYWluIE5hbWVcbiAgICogVGhpcyBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgZG9tYWluTmFtZUxhYmVsIGFuZCB0aGUgcmVnaW9uYWxpemVkIEROUyB6b25lXG4gICAqL1xuICByZWFkb25seSBmcWRuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmV2ZXJzZSBGUUROXG4gICAqIEEgdXNlci12aXNpYmxlLCBmdWxseSBxdWFsaWZpZWQgZG9tYWluIG5hbWUgdGhhdCByZXNvbHZlcyB0byB0aGlzIHB1YmxpYyBJUCBhZGRyZXNzXG4gICAqL1xuICByZWFkb25seSByZXZlcnNlRnFkbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciB0aGUgQXp1cmUgUHVibGljIElQIEFkZHJlc3NcbiAqXG4gKiBFeHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB3aXRoIFB1YmxpYyBJUCBBZGRyZXNzIHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaWNJUEFkZHJlc3NQcm9wcyBleHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBTS1Ugb2YgdGhlIHB1YmxpYyBJUCBhZGRyZXNzXG4gICAqIFN0YW5kYXJkIFNLVSBzdXBwb3J0cyB6b25lcyBhbmQgaGFzIFNMQSBndWFyYW50ZWVzXG4gICAqIEJhc2ljIFNLVSBkb2VzIG5vdCBzdXBwb3J0IHpvbmVzXG4gICAqL1xuICByZWFkb25seSBza3U/OiBQdWJsaWNJUEFkZHJlc3NTa3U7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBJUCBhbGxvY2F0aW9uIG1ldGhvZFxuICAgKiAtIFN0YXRpYzogSVAgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgaW1tZWRpYXRlbHkgYW5kIGRvZXNuJ3QgY2hhbmdlXG4gICAqIC0gRHluYW1pYzogSVAgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgd2hlbiBhc3NvY2lhdGVkIHdpdGggYSByZXNvdXJjZVxuICAgKiBOb3RlOiBTdGFuZGFyZCBTS1UgcmVxdWlyZXMgU3RhdGljIGFsbG9jYXRpb25cbiAgICogQGRlZmF1bHRWYWx1ZSBcIkR5bmFtaWNcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgSVAgYWRkcmVzcyB2ZXJzaW9uXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJJUHY0XCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY0lQQWRkcmVzc1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEROUyBzZXR0aW5ncyBmb3IgdGhlIHB1YmxpYyBJUCBhZGRyZXNzXG4gICAqIE9wdGlvbmFsIC0gY29uZmlndXJlcyBETlMgbGFiZWwgZm9yIHRoZSBwdWJsaWMgSVBcbiAgICovXG4gIHJlYWRvbmx5IGRuc1NldHRpbmdzPzogUHVibGljSVBBZGRyZXNzRG5zU2V0dGluZ3M7XG5cbiAgLyoqXG4gICAqIElkbGUgdGltZW91dCBpbiBtaW51dGVzXG4gICAqIFZhbGlkIHJhbmdlOiA0LTMwIG1pbnV0ZXNcbiAgICogQGRlZmF1bHRWYWx1ZSA0XG4gICAqL1xuICByZWFkb25seSBpZGxlVGltZW91dEluTWludXRlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQXZhaWxhYmlsaXR5IHpvbmVzIGZvciB0aGUgcHVibGljIElQIGFkZHJlc3NcbiAgICogT25seSBzdXBwb3J0ZWQgd2l0aCBTdGFuZGFyZCBTS1VcbiAgICogQGV4YW1wbGUgW1wiMVwiXSwgW1wiMlwiXSwgW1wiM1wiXSwgW1wiMVwiLCBcIjJcIiwgXCIzXCJdXG4gICAqL1xuICByZWFkb25seSB6b25lcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgUHVibGljIElQIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBPcHRpb25hbCAtIHdpbGwgdXNlIHRoZSBzdWJzY3JpcHRpb24gc2NvcGUgaWYgbm90IHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUdyb3VwSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgcnVsZXMgdG8gaWdub3JlIGNoYW5nZXNcbiAgICogVXNlZnVsIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIGV4dGVybmFsbHkgbWFuYWdlZFxuICAgKlxuICAgKiBAZXhhbXBsZSBbXCJ0YWdzXCJdXG4gICAqL1xuICByZWFkb25seSBpZ25vcmVDaGFuZ2VzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogQXp1cmUgUHVibGljIElQIEFkZHJlc3MgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2luZ2xlLCB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIHRoYXQgcmVwbGFjZXNcbiAqIHZlcnNpb24tc3BlY2lmaWMgUHVibGljIElQIEFkZHJlc3MgY2xhc3Nlcy4gSXQgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb25cbiAqIHJlc29sdXRpb24sIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHkgdHJhbnNmb3JtYXRpb24gd2hpbGUgbWFpbnRhaW5pbmdcbiAqIGZ1bGwgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uIChTdGFuZGFyZCBTdGF0aWMgSVApOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJTdGFuZGFyZFwiLFxuICogICAgIHRpZXI6IFwiUmVnaW9uYWxcIlxuICogICB9LFxuICogICBwdWJsaWNJUEFsbG9jYXRpb25NZXRob2Q6IFwiU3RhdGljXCJcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyBEeW5hbWljIElQOlxuICogY29uc3QgcHVibGljSXAgPSBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwicHVibGljSXBcIiwge1xuICogICBuYW1lOiBcIm15LXB1YmxpYy1pcFwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgc2t1OiB7XG4gKiAgICAgbmFtZTogXCJCYXNpY1wiXG4gKiAgIH0sXG4gKiAgIHB1YmxpY0lQQWxsb2NhdGlvbk1ldGhvZDogXCJEeW5hbWljXCJcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQdWJsaWMgSVAgd2l0aCBETlMgbGFiZWw6XG4gKiBjb25zdCBwdWJsaWNJcCA9IG5ldyBQdWJsaWNJUEFkZHJlc3ModGhpcywgXCJwdWJsaWNJcFwiLCB7XG4gKiAgIG5hbWU6IFwibXktcHVibGljLWlwXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICBza3U6IHtcbiAqICAgICBuYW1lOiBcIlN0YW5kYXJkXCJcbiAqICAgfSxcbiAqICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICogICBkbnNTZXR0aW5nczoge1xuICogICAgIGRvbWFpbk5hbWVMYWJlbDogXCJteWFwcFwiXG4gKiAgIH1cbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBab25hbCBQdWJsaWMgSVA6XG4gKiBjb25zdCBwdWJsaWNJcCA9IG5ldyBQdWJsaWNJUEFkZHJlc3ModGhpcywgXCJwdWJsaWNJcFwiLCB7XG4gKiAgIG5hbWU6IFwibXktcHVibGljLWlwXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICBza3U6IHtcbiAqICAgICBuYW1lOiBcIlN0YW5kYXJkXCJcbiAqICAgfSxcbiAqICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICogICB6b25lczogW1wiMVwiXVxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFB1YmxpY0lQQWRkcmVzcyBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICAvKipcbiAgICogU3RhdGljIGluaXRpYWxpemF0aW9uIGZsYWcgdG8gZW5zdXJlIHNjaGVtYXMgYXJlIHJlZ2lzdGVyZWQgb25seSBvbmNlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBzY2hlbWFzUmVnaXN0ZXJlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBFbnN1cmVzIHRoYXQgUHVibGljIElQIEFkZHJlc3Mgc2NoZW1hcyBhcmUgcmVnaXN0ZXJlZCB3aXRoIHRoZSBBcGlWZXJzaW9uTWFuYWdlclxuICAgKiBUaGlzIGlzIGNhbGxlZCBvbmNlIGR1cmluZyB0aGUgZmlyc3QgUHVibGljSVBBZGRyZXNzIGluc3RhbnRpYXRpb25cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGVuc3VyZVNjaGVtYXNSZWdpc3RlcmVkKCk6IHZvaWQge1xuICAgIGlmIChQdWJsaWNJUEFkZHJlc3Muc2NoZW1hc1JlZ2lzdGVyZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhcGlWZXJzaW9uTWFuYWdlciA9IEFwaVZlcnNpb25NYW5hZ2VyLmluc3RhbmNlKCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUmVnaXN0ZXIgYWxsIFB1YmxpYyBJUCBBZGRyZXNzIHZlcnNpb25zXG4gICAgICBhcGlWZXJzaW9uTWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgUFVCTElDX0lQX0FERFJFU1NfVFlQRSxcbiAgICAgICAgQUxMX1BVQkxJQ19JUF9BRERSRVNTX1ZFUlNJT05TLFxuICAgICAgKTtcblxuICAgICAgUHVibGljSVBBZGRyZXNzLnNjaGVtYXNSZWdpc3RlcmVkID0gdHJ1ZTtcblxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBSZWdpc3RlcmVkICR7QUxMX1BVQkxJQ19JUF9BRERSRVNTX1ZFUlNJT05TLmxlbmd0aH0gQVBJIHZlcnNpb25zIGZvciAke1BVQkxJQ19JUF9BRERSRVNTX1RZUEV9YCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEZhaWxlZCB0byByZWdpc3RlciBQdWJsaWMgSVAgQWRkcmVzcyBzY2hlbWFzOiAke2Vycm9yfS4gYCArXG4gICAgICAgICAgYFRoaXMgbWF5IGluZGljYXRlIHRoZSBzY2hlbWFzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgb3IgdGhlcmUncyBhIGNvbmZpZ3VyYXRpb24gaXNzdWUuYCxcbiAgICAgICk7XG4gICAgICAvLyBEb24ndCB0aHJvdyBoZXJlIGFzIHRoZSBzY2hlbWFzIG1pZ2h0IGFscmVhZHkgYmUgcmVnaXN0ZXJlZFxuICAgICAgUHVibGljSVBBZGRyZXNzLnNjaGVtYXNSZWdpc3RlcmVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgUHVibGljIElQIEFkZHJlc3MgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogUHVibGljSVBBZGRyZXNzUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLy8gUHVibGljIHByb3BlcnRpZXMgdGhhdCBtYXRjaCB0aGUgb3JpZ2luYWwgUHVibGljSVBBZGRyZXNzIGludGVyZmFjZVxuICBwdWJsaWMgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgUHVibGljIElQIEFkZHJlc3MgdXNpbmcgdGhlIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIFRoZSBjb25zdHJ1Y3RvciBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgcmVnaXN0cmF0aW9uLFxuICAgKiB2YWxpZGF0aW9uLCBhbmQgcmVzb3VyY2UgY3JlYXRpb24uIEl0IG1haW50YWlucyBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgICogd2l0aCBleGlzdGluZyBQdWJsaWMgSVAgQWRkcmVzcyBpbXBsZW1lbnRhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFB1YmxpYyBJUCBBZGRyZXNzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGljSVBBZGRyZXNzUHJvcHMpIHtcbiAgICAvLyBFbnN1cmUgc2NoZW1hcyBhcmUgcmVnaXN0ZXJlZCBiZWZvcmUgY2FsbGluZyBzdXBlclxuICAgIFB1YmxpY0lQQWRkcmVzcy5lbnN1cmVTY2hlbWFzUmVnaXN0ZXJlZCgpO1xuXG4gICAgLy8gQ2FsbCB0aGUgcGFyZW50IGNvbnN0cnVjdG9yIHdpdGggdGhlIHByb3BzXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBFeHRyYWN0IHByb3BlcnRpZXMgZnJvbSB0aGUgQVpBUEkgcmVzb3VyY2Ugb3V0cHV0cyB1c2luZyBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvblxuICAgIHRoaXMuaWQgPSBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmlkfWA7XG4gICAgdGhpcy50YWdzID0gcHJvcHMudGFncyB8fCB7fTtcblxuICAgIC8vIENyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0cyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nIGZyb20gb3RoZXIgcmVzb3VyY2VzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgUHVibGljIElQIEFkZHJlc3NcIixcbiAgICB9KTtcblxuICAgIHRoaXMubmFtZU91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJuYW1lXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm5hbWV9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBuYW1lIG9mIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1wiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJsb2NhdGlvblwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5sb2NhdGlvbn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvY2F0aW9uIG9mIHRoZSBQdWJsaWMgSVAgQWRkcmVzc1wiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIFB1YmxpYyBJUCBBZGRyZXNzXCIsXG4gICAgfSk7XG5cbiAgICAvLyBPdmVycmlkZSBsb2dpY2FsIElEcyB0byBtYXRjaCBvcmlnaW5hbCBuYW1pbmcgY29udmVudGlvblxuICAgIHRoaXMuaWRPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJpZFwiKTtcbiAgICB0aGlzLm5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lXCIpO1xuICAgIHRoaXMubG9jYXRpb25PdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJsb2NhdGlvblwiKTtcbiAgICB0aGlzLnRhZ3NPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJ0YWdzXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqIFJldHVybnMgdGhlIG1vc3QgcmVjZW50IHN0YWJsZSB2ZXJzaW9uIGFzIHRoZSBkZWZhdWx0XG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI0LTEwLTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgUHVibGljIElQIEFkZHJlc3Nlc1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlc291cmNlVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBQVUJMSUNfSVBfQUREUkVTU19UWVBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFQSSBzY2hlbWEgZm9yIHRoZSByZXNvbHZlZCB2ZXJzaW9uXG4gICAqIFVzZXMgdGhlIGZyYW1ld29yaydzIHNjaGVtYSByZXNvbHV0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBpU2NoZW1hKCk6IEFwaVNjaGVtYSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNjaGVtYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGludG8gdGhlIEpTT04gZm9ybWF0IGV4cGVjdGVkIGJ5IEF6dXJlIFJFU1QgQVBJXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBQdWJsaWNJUEFkZHJlc3NQcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb246IHR5cGVkUHJvcHMubG9jYXRpb24gfHwgXCJlYXN0dXNcIixcbiAgICAgIHRhZ3M6IHR5cGVkUHJvcHMudGFncyB8fCB7fSxcbiAgICAgIHNrdTogdHlwZWRQcm9wcy5za3UsXG4gICAgICB6b25lczogdHlwZWRQcm9wcy56b25lcyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOlxuICAgICAgICAgIHR5cGVkUHJvcHMucHVibGljSVBBbGxvY2F0aW9uTWV0aG9kIHx8IFwiRHluYW1pY1wiLFxuICAgICAgICBwdWJsaWNJUEFkZHJlc3NWZXJzaW9uOiB0eXBlZFByb3BzLnB1YmxpY0lQQWRkcmVzc1ZlcnNpb24gfHwgXCJJUHY0XCIsXG4gICAgICAgIGRuc1NldHRpbmdzOiB0eXBlZFByb3BzLmRuc1NldHRpbmdzLFxuICAgICAgICBpZGxlVGltZW91dEluTWludXRlczogdHlwZWRQcm9wcy5pZGxlVGltZW91dEluTWludXRlcyxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBVQkxJQyBNRVRIT0RTIEZPUiBQVUJMSUMgSVAgQUREUkVTUyBPUEVSQVRJT05TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3Vic2NyaXB0aW9uIElEIGZyb20gdGhlIFB1YmxpYyBJUCBBZGRyZXNzIElEXG4gICAqIEV4dHJhY3RzIHRoZSBzdWJzY3JpcHRpb24gSUQgZnJvbSB0aGUgQXp1cmUgcmVzb3VyY2UgSUQgZm9ybWF0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1YnNjcmlwdGlvbklkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgaWRQYXJ0cyA9IHRoaXMuaWQuc3BsaXQoXCIvXCIpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbkluZGV4ID0gaWRQYXJ0cy5pbmRleE9mKFwic3Vic2NyaXB0aW9uc1wiKTtcbiAgICBpZiAoc3Vic2NyaXB0aW9uSW5kZXggIT09IC0xICYmIHN1YnNjcmlwdGlvbkluZGV4ICsgMSA8IGlkUGFydHMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaWRQYXJ0c1tzdWJzY3JpcHRpb25JbmRleCArIDFdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIlVuYWJsZSB0byBleHRyYWN0IHN1YnNjcmlwdGlvbiBJRCBmcm9tIFB1YmxpYyBJUCBBZGRyZXNzIElEXCIsXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgcmVzb3VyY2UgaWRlbnRpZmllciBmb3IgdXNlIGluIG90aGVyIEF6dXJlIHJlc291cmNlc1xuICAgKiBBbGlhcyBmb3IgdGhlIGlkIHByb3BlcnR5IHRvIG1hdGNoIG9yaWdpbmFsIGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBJUCBhZGRyZXNzIG91dHB1dCB2YWx1ZVxuICAgKiBSZXR1cm5zIHRoZSBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvbiBzdHJpbmcgZm9yIHRoZSBJUCBhZGRyZXNzXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlwQWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmlwQWRkcmVzc31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgUHVibGljIElQIEFkZHJlc3NcbiAgICogTm90ZTogVGhpcyBtb2RpZmllcyB0aGUgY29uc3RydWN0IHByb3BzIGJ1dCByZXF1aXJlcyBhIG5ldyBkZXBsb3ltZW50IHRvIHRha2UgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgYWRkVGFnKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRhZ3MpIHtcbiAgICAgICh0aGlzLnByb3BzIGFzIGFueSkudGFncyA9IHt9O1xuICAgIH1cbiAgICB0aGlzLnByb3BzLnRhZ3MhW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSB0YWcgZnJvbSB0aGUgUHVibGljIElQIEFkZHJlc3NcbiAgICogTm90ZTogVGhpcyBtb2RpZmllcyB0aGUgY29uc3RydWN0IHByb3BzIGJ1dCByZXF1aXJlcyBhIG5ldyBkZXBsb3ltZW50IHRvIHRha2UgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFnKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMudGFncyAmJiB0aGlzLnByb3BzLnRhZ3Nba2V5XSkge1xuICAgICAgZGVsZXRlIHRoaXMucHJvcHMudGFnc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBwbGllcyBpZ25vcmUgY2hhbmdlcyBsaWZlY3ljbGUgcnVsZXMgaWYgc3BlY2lmaWVkIGluIHByb3BzXG4gICAqL1xuICBwcml2YXRlIF9hcHBseUlnbm9yZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcyAmJiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5hZGRPdmVycmlkZShcImxpZmVjeWNsZVwiLCB7XG4gICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Public IP Address
3
+ *
4
+ * This test demonstrates basic usage of the PublicIPAddress construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure Public IP Address
4
+ *
5
+ * This test demonstrates basic usage of the PublicIPAddress construct
6
+ * and validates deployment, idempotency, and cleanup.
7
+ *
8
+ * Run with: npm run integration:nostream
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const cdktf_1 = require("cdktf");
12
+ require("cdktf/lib/testing/adapters/jest");
13
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
14
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
15
+ const testing_1 = require("../../testing");
16
+ const public_ip_address_1 = require("../lib/public-ip-address");
17
+ /**
18
+ * Example stack demonstrating Public IP Address usage
19
+ */
20
+ class PublicIPAddressExampleStack extends cdktf_1.TerraformStack {
21
+ constructor(scope, id) {
22
+ super(scope, id);
23
+ // Configure AZAPI provider
24
+ new provider_1.AzapiProvider(this, "azapi", {});
25
+ // Create a resource group
26
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "example-rg", {
27
+ name: "publicip-example-rg",
28
+ location: "eastus",
29
+ tags: {
30
+ environment: "example",
31
+ purpose: "integration-test",
32
+ },
33
+ });
34
+ // Example 1: Basic Standard Static Public IP
35
+ new public_ip_address_1.PublicIPAddress(this, "basic-public-ip", {
36
+ name: "pip-basic-example",
37
+ location: resourceGroup.props.location,
38
+ resourceGroupId: resourceGroup.id,
39
+ sku: {
40
+ name: "Standard",
41
+ },
42
+ publicIPAllocationMethod: "Static",
43
+ tags: {
44
+ example: "basic",
45
+ },
46
+ });
47
+ // Example 2: Public IP with specific version
48
+ new public_ip_address_1.PublicIPAddress(this, "versioned-public-ip", {
49
+ name: "pip-versioned-example",
50
+ location: resourceGroup.props.location,
51
+ resourceGroupId: resourceGroup.id,
52
+ sku: {
53
+ name: "Standard",
54
+ },
55
+ publicIPAllocationMethod: "Static",
56
+ apiVersion: "2024-07-01",
57
+ tags: {
58
+ example: "versioned",
59
+ },
60
+ });
61
+ }
62
+ }
63
+ describe("Public IP Address Integration Test", () => {
64
+ it("should deploy, validate idempotency, and cleanup public IP address resources", () => {
65
+ const app = cdktf_1.Testing.app();
66
+ const stack = new PublicIPAddressExampleStack(app, "test-public-ip-address");
67
+ const synthesized = cdktf_1.Testing.fullSynth(stack);
68
+ // This will:
69
+ // 1. Run terraform apply to deploy resources
70
+ // 2. Run terraform plan to check idempotency (no changes expected)
71
+ // 3. Run terraform destroy to cleanup resources
72
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
73
+ }, 600000); // 10 minute timeout for deployment and cleanup
74
+ });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWlwLWFkZHJlc3MuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcHVibGljaXBhZGRyZXNzL3Rlc3QvcHVibGljLWlwLWFkZHJlc3MuaW50ZWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBRUgsaUNBQWdEO0FBRWhELDJDQUF5QztBQUN6QyxtRUFBMEQ7QUFDMUQsa0ZBQW9GO0FBQ3BGLDJDQUE4RDtBQUM5RCxnRUFBMkQ7QUFFM0Q7O0dBRUc7QUFDSCxNQUFNLDJCQUE0QixTQUFRLHNCQUFjO0lBQ3RELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsMkJBQTJCO1FBQzNCLElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLDBCQUEwQjtRQUMxQixNQUFNLGFBQWEsR0FBRyxJQUFJLG1DQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUMxRCxJQUFJLEVBQUUscUJBQXFCO1lBQzNCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRTtnQkFDSixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUVILDZDQUE2QztRQUM3QyxJQUFJLG1DQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNDLElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSxVQUFVO2FBQ2pCO1lBQ0Qsd0JBQXdCLEVBQUUsUUFBUTtZQUNsQyxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLE9BQU87YUFDakI7U0FDRixDQUFDLENBQUM7UUFFSCw2Q0FBNkM7UUFDN0MsSUFBSSxtQ0FBZSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMvQyxJQUFJLEVBQUUsdUJBQXVCO1lBQzdCLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVM7WUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLEdBQUcsRUFBRTtnQkFDSCxJQUFJLEVBQUUsVUFBVTthQUNqQjtZQUNELHdCQUF3QixFQUFFLFFBQVE7WUFDbEMsVUFBVSxFQUFFLFlBQVk7WUFDeEIsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxXQUFXO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRTtJQUNsRCxFQUFFLENBQUMsOEVBQThFLEVBQUUsR0FBRyxFQUFFO1FBQ3RGLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDJCQUEyQixDQUMzQyxHQUFHLEVBQ0gsd0JBQXdCLENBQ3pCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgUHVibGljIElQIEFkZHJlc3NcbiAqXG4gKiBUaGlzIHRlc3QgZGVtb25zdHJhdGVzIGJhc2ljIHVzYWdlIG9mIHRoZSBQdWJsaWNJUEFkZHJlc3MgY29uc3RydWN0XG4gKiBhbmQgdmFsaWRhdGVzIGRlcGxveW1lbnQsIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cC5cbiAqXG4gKiBSdW4gd2l0aDogbnBtIHJ1biBpbnRlZ3JhdGlvbjpub3N0cmVhbVxuICovXG5cbmltcG9ydCB7IFRlc3RpbmcsIFRlcnJhZm9ybVN0YWNrIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCIuLi8uLi9henVyZS1yZXNvdXJjZWdyb3VwXCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgUHVibGljSVBBZGRyZXNzIH0gZnJvbSBcIi4uL2xpYi9wdWJsaWMtaXAtYWRkcmVzc1wiO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBQdWJsaWMgSVAgQWRkcmVzcyB1c2FnZVxuICovXG5jbGFzcyBQdWJsaWNJUEFkZHJlc3NFeGFtcGxlU3RhY2sgZXh0ZW5kcyBUZXJyYWZvcm1TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgLy8gQ29uZmlndXJlIEFaQVBJIHByb3ZpZGVyXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICAvLyBDcmVhdGUgYSByZXNvdXJjZSBncm91cFxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcImV4YW1wbGUtcmdcIiwge1xuICAgICAgbmFtZTogXCJwdWJsaWNpcC1leGFtcGxlLXJnXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6IFwiZXhhbXBsZVwiLFxuICAgICAgICBwdXJwb3NlOiBcImludGVncmF0aW9uLXRlc3RcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDE6IEJhc2ljIFN0YW5kYXJkIFN0YXRpYyBQdWJsaWMgSVBcbiAgICBuZXcgUHVibGljSVBBZGRyZXNzKHRoaXMsIFwiYmFzaWMtcHVibGljLWlwXCIsIHtcbiAgICAgIG5hbWU6IFwicGlwLWJhc2ljLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBcIlN0YW5kYXJkXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICBleGFtcGxlOiBcImJhc2ljXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gRXhhbXBsZSAyOiBQdWJsaWMgSVAgd2l0aCBzcGVjaWZpYyB2ZXJzaW9uXG4gICAgbmV3IFB1YmxpY0lQQWRkcmVzcyh0aGlzLCBcInZlcnNpb25lZC1wdWJsaWMtaXBcIiwge1xuICAgICAgbmFtZTogXCJwaXAtdmVyc2lvbmVkLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBcIlN0YW5kYXJkXCIsXG4gICAgICB9LFxuICAgICAgcHVibGljSVBBbGxvY2F0aW9uTWV0aG9kOiBcIlN0YXRpY1wiLFxuICAgICAgYXBpVmVyc2lvbjogXCIyMDI0LTA3LTAxXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGV4YW1wbGU6IFwidmVyc2lvbmVkXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiUHVibGljIElQIEFkZHJlc3MgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIHB1YmxpYyBJUCBhZGRyZXNzIHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBQdWJsaWNJUEFkZHJlc3NFeGFtcGxlU3RhY2soXG4gICAgICBhcHAsXG4gICAgICBcInRlc3QtcHVibGljLWlwLWFkZHJlc3NcIixcbiAgICApO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgLy8gVGhpcyB3aWxsOlxuICAgIC8vIDEuIFJ1biB0ZXJyYWZvcm0gYXBwbHkgdG8gZGVwbG95IHJlc291cmNlc1xuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXNcbiAgICBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveShzeW50aGVzaXplZCk7XG4gIH0sIDYwMDAwMCk7IC8vIDEwIG1pbnV0ZSB0aW1lb3V0IGZvciBkZXBsb3ltZW50IGFuZCBjbGVhbnVwXG59KTtcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Unit tests for Azure Public IP Address construct
3
+ *
4
+ * Tests cover:
5
+ * - Resource type validation
6
+ * - API version support (2024-07-01, 2024-10-01)
7
+ * - Basic creation scenarios
8
+ * - SKU configurations (Standard, Basic)
9
+ * - Allocation methods (Static, Dynamic)
10
+ * - DNS settings
11
+ * - Availability zones
12
+ * - IPv4/IPv6 support
13
+ * - Tags management
14
+ */
15
+ export {};