@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,254 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Subnet = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Azure Subnet implementation using AzapiResource framework
8
+ *
9
+ * This class provides a unified implementation for Azure Subnets 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
+ * - Child resource with proper parent ID construction
25
+ */
26
+ const cdktf = require("cdktf");
27
+ const subnet_schemas_1 = require("./subnet-schemas");
28
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
29
+ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
30
+ /**
31
+ * Azure Subnet implementation
32
+ *
33
+ * This class provides a single, version-aware implementation that replaces
34
+ * version-specific Subnet classes. It automatically handles version
35
+ * resolution, schema validation, and property transformation while maintaining
36
+ * full backward compatibility.
37
+ *
38
+ * **Child Resource Pattern**: Subnets are child resources of Virtual Networks.
39
+ * This implementation overrides the `resolveParentId()` method to properly
40
+ * construct the Virtual Network ID as the parent, following the enhanced base
41
+ * class pattern for child resources.
42
+ *
43
+ * @example
44
+ * // Basic usage with automatic version resolution:
45
+ * const subnet = new Subnet(this, "subnet", {
46
+ * name: "my-subnet",
47
+ * virtualNetworkName: "my-vnet",
48
+ * resourceGroupId: resourceGroup.id,
49
+ * addressPrefix: "10.0.1.0/24"
50
+ * });
51
+ *
52
+ * @example
53
+ * // Usage with network security group:
54
+ * const subnet = new Subnet(this, "subnet", {
55
+ * name: "my-subnet",
56
+ * virtualNetworkName: "my-vnet",
57
+ * resourceGroupId: resourceGroup.id,
58
+ * addressPrefix: "10.0.1.0/24",
59
+ * networkSecurityGroup: { id: nsg.id }
60
+ * });
61
+ *
62
+ * @stability stable
63
+ */
64
+ class Subnet extends azapi_resource_1.AzapiResource {
65
+ /**
66
+ * Ensures that Subnet schemas are registered with the ApiVersionManager
67
+ * This is called once during the first Subnet instantiation
68
+ */
69
+ static ensureSchemasRegistered() {
70
+ if (Subnet.schemasRegistered) {
71
+ return;
72
+ }
73
+ const apiVersionManager = api_version_manager_1.ApiVersionManager.instance();
74
+ try {
75
+ // Register all Subnet versions
76
+ apiVersionManager.registerResourceType(subnet_schemas_1.SUBNET_TYPE, subnet_schemas_1.ALL_SUBNET_VERSIONS);
77
+ Subnet.schemasRegistered = true;
78
+ console.log(`Registered ${subnet_schemas_1.ALL_SUBNET_VERSIONS.length} API versions for ${subnet_schemas_1.SUBNET_TYPE}`);
79
+ }
80
+ catch (error) {
81
+ console.warn(`Failed to register Subnet schemas: ${error}. ` +
82
+ `This may indicate the schemas are already registered or there's a configuration issue.`);
83
+ // Don't throw here as the schemas might already be registered
84
+ Subnet.schemasRegistered = true;
85
+ }
86
+ }
87
+ /**
88
+ * Creates a new Azure Subnet using the AzapiResource framework
89
+ *
90
+ * The constructor automatically handles version resolution, schema registration,
91
+ * validation, and resource creation. It maintains full backward compatibility
92
+ * with existing Subnet implementations.
93
+ *
94
+ * **Parent ID Resolution**: Subnets are child resources of Virtual Networks.
95
+ * The resolveParentId() method is overridden to return the Virtual Network ID
96
+ * instead of the Resource Group ID, establishing the proper parent-child hierarchy.
97
+ *
98
+ * @param scope - The scope in which to define this construct
99
+ * @param id - The unique identifier for this instance
100
+ * @param props - Configuration properties for the Subnet
101
+ */
102
+ constructor(scope, id, props) {
103
+ // Ensure schemas are registered before calling super
104
+ Subnet.ensureSchemasRegistered();
105
+ // Call the parent constructor with the original props
106
+ // Parent ID resolution is now handled by the overridden resolveParentId method
107
+ super(scope, id, props);
108
+ // Store the props
109
+ this.props = props;
110
+ // Extract properties from the AZAPI resource outputs using Terraform interpolation
111
+ this.id = `\${${this.terraformResource.fqn}.id}`;
112
+ // Create Terraform outputs for easy access and referencing from other resources
113
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
114
+ value: this.id,
115
+ description: "The ID of the Subnet",
116
+ });
117
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
118
+ value: `\${${this.terraformResource.fqn}.name}`,
119
+ description: "The name of the Subnet",
120
+ });
121
+ this.addressPrefixOutput = new cdktf.TerraformOutput(this, "addressPrefix", {
122
+ value: this.props.addressPrefix,
123
+ description: "The address prefix of the Subnet",
124
+ });
125
+ // Override logical IDs to match original naming convention
126
+ this.idOutput.overrideLogicalId("id");
127
+ this.nameOutput.overrideLogicalId("name");
128
+ this.addressPrefixOutput.overrideLogicalId("addressPrefix");
129
+ // Azure automatically expands service endpoint locations for high availability,
130
+ // adding paired regions for disaster recovery. Ignore these changes to prevent drift.
131
+ if (props.serviceEndpoints && props.serviceEndpoints.length > 0) {
132
+ this.terraformResource.addOverride("lifecycle", {
133
+ ignore_changes: ["body.properties.serviceEndpoints[0].locations"],
134
+ });
135
+ }
136
+ // Apply additional ignore changes if specified
137
+ this._applyIgnoreChanges();
138
+ }
139
+ // =============================================================================
140
+ // REQUIRED ABSTRACT METHODS FROM AzapiResource
141
+ // =============================================================================
142
+ /**
143
+ * Gets the default API version to use when no explicit version is specified
144
+ * Returns the most recent stable version as the default
145
+ */
146
+ defaultVersion() {
147
+ return "2024-10-01";
148
+ }
149
+ /**
150
+ * Gets the Azure resource type for Subnets
151
+ */
152
+ resourceType() {
153
+ return subnet_schemas_1.SUBNET_TYPE;
154
+ }
155
+ /**
156
+ * Gets the API schema for the resolved version
157
+ * Uses the framework's schema resolution to get the appropriate schema
158
+ */
159
+ apiSchema() {
160
+ return this.resolveSchema();
161
+ }
162
+ /**
163
+ * Creates the resource body for the Azure API call
164
+ * Transforms the input properties into the JSON format expected by Azure REST API
165
+ */
166
+ createResourceBody(props) {
167
+ const typedProps = props;
168
+ return {
169
+ properties: {
170
+ addressPrefix: typedProps.addressPrefix,
171
+ networkSecurityGroup: typedProps.networkSecurityGroup,
172
+ routeTable: typedProps.routeTable,
173
+ serviceEndpoints: typedProps.serviceEndpoints,
174
+ delegations: typedProps.delegations,
175
+ privateEndpointNetworkPolicies: typedProps.privateEndpointNetworkPolicies || "Disabled",
176
+ privateLinkServiceNetworkPolicies: typedProps.privateLinkServiceNetworkPolicies || "Enabled",
177
+ natGateway: typedProps.natGateway,
178
+ ipAllocations: typedProps.ipAllocations,
179
+ },
180
+ };
181
+ }
182
+ /**
183
+ * Resolves the parent ID for the Subnet resource.
184
+ *
185
+ * Subnets are child resources of Virtual Networks. This method overrides
186
+ * the default parent ID resolution to return the Virtual Network ID instead
187
+ * of the Resource Group ID.
188
+ *
189
+ * @param props - The resource properties
190
+ * @returns The Virtual Network ID (parent resource ID)
191
+ */
192
+ resolveParentId(props) {
193
+ const typedProps = props;
194
+ // If virtualNetworkId is provided, use it (creates Terraform dependency)
195
+ // Otherwise construct it from resourceGroupId and virtualNetworkName (string concatenation)
196
+ return (typedProps.virtualNetworkId ||
197
+ `${typedProps.resourceGroupId}/providers/Microsoft.Network/virtualNetworks/${typedProps.virtualNetworkName}`);
198
+ }
199
+ /**
200
+ * Override createAzapiResource to explicitly prevent location from being added
201
+ * Subnets are child resources and inherit location from their parent VNet
202
+ */
203
+ createAzapiResource(properties, parentId, name, _location) {
204
+ // Call parent implementation but pass undefined for location
205
+ // This prevents the base class from adding location to the config
206
+ return super.createAzapiResource(properties, parentId, name, undefined);
207
+ }
208
+ // =============================================================================
209
+ // PUBLIC METHODS FOR SUBNET OPERATIONS
210
+ // =============================================================================
211
+ /**
212
+ * Get the full resource identifier for use in other Azure resources
213
+ * Alias for the id property to match original interface
214
+ */
215
+ get resourceId() {
216
+ return this.id;
217
+ }
218
+ /**
219
+ * Get the address prefix value
220
+ * Returns the address prefix from the input props since Azure API doesn't return it in output
221
+ */
222
+ get addressPrefix() {
223
+ return this.props.addressPrefix;
224
+ }
225
+ /**
226
+ * Get the parent Virtual Network ID
227
+ * Constructs the VNet resource ID from the subnet's parent reference
228
+ */
229
+ get virtualNetworkId() {
230
+ const typedProps = this.props;
231
+ return `${typedProps.resourceGroupId}/providers/Microsoft.Network/virtualNetworks/${typedProps.virtualNetworkName}`;
232
+ }
233
+ // =============================================================================
234
+ // PRIVATE HELPER METHODS
235
+ // =============================================================================
236
+ /**
237
+ * Applies ignore changes lifecycle rules if specified in props
238
+ */
239
+ _applyIgnoreChanges() {
240
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
241
+ this.terraformResource.addOverride("lifecycle", {
242
+ ignore_changes: this.props.ignoreChanges,
243
+ });
244
+ }
245
+ }
246
+ }
247
+ exports.Subnet = Subnet;
248
+ _a = JSII_RTTI_SYMBOL_1;
249
+ Subnet[_a] = { fqn: "@microsoft/terraform-cdk-constructs.Subnet", version: "1.2.0" };
250
+ /**
251
+ * Static initialization flag to ensure schemas are registered only once
252
+ */
253
+ Subnet.schemasRegistered = false;
254
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXN1Ym5ldC9saWIvc3VibmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFFSCwrQkFBK0I7QUFFL0IscURBQW9FO0FBQ3BFLDhFQUdtRDtBQUNuRCxrR0FBNkY7QUFrSzdGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFDSCxNQUFhLE1BQU8sU0FBUSw4QkFBYTtJQU12Qzs7O09BR0c7SUFDSyxNQUFNLENBQUMsdUJBQXVCO1FBQ3BDLElBQUksTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDN0IsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZELElBQUksQ0FBQztZQUNILCtCQUErQjtZQUMvQixpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyw0QkFBVyxFQUFFLG9DQUFtQixDQUFDLENBQUM7WUFFekUsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUVoQyxPQUFPLENBQUMsR0FBRyxDQUNULGNBQWMsb0NBQW1CLENBQUMsTUFBTSxxQkFBcUIsNEJBQVcsRUFBRSxDQUMzRSxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsSUFBSSxDQUNWLHNDQUFzQyxLQUFLLElBQUk7Z0JBQzdDLHdGQUF3RixDQUMzRixDQUFDO1lBQ0YsOERBQThEO1lBQzlELE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFlRDs7Ozs7Ozs7Ozs7Ozs7T0FjRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQscURBQXFEO1FBQ3JELE1BQU0sQ0FBQyx1QkFBdUIsRUFBRSxD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V0FBVyxFQUFFO2dCQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2FBQ3pDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWxQSCx3QkFtUEM7OztBQWxQQzs7R0FFRztBQUNZLHdCQUFpQixHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXp1cmUgU3VibmV0IGltcGxlbWVudGF0aW9uIHVzaW5nIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHVuaWZpZWQgaW1wbGVtZW50YXRpb24gZm9yIEF6dXJlIFN1Ym5ldHMgdGhhdFxuICogYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gbWFuYWdlbWVudCwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eVxuICogdHJhbnNmb3JtYXRpb24gYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMjQtMDctMDEgKEFjdGl2ZSlcbiAqIC0gMjAyNC0xMC0wMSAoQWN0aXZlKVxuICogLSAyMDI1LTAxLTAxIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKiAtIENoaWxkIHJlc291cmNlIHdpdGggcHJvcGVyIHBhcmVudCBJRCBjb25zdHJ1Y3Rpb25cbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBTExfU1VCTkVUX1ZFUlNJT05TLCBTVUJORVRfVFlQRSB9IGZyb20gXCIuL3N1Ym5ldC1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpVmVyc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2FwaS12ZXJzaW9uLW1hbmFnZXJcIjtcbmltcG9ydCB7IEFwaVNjaGVtYSB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLyoqXG4gKiBOZXR3b3JrIFNlY3VyaXR5IEdyb3VwIHJlZmVyZW5jZSBmb3IgU3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TlNHUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIE5ldHdvcmsgU2VjdXJpdHkgR3JvdXAgcmVzb3VyY2UgSURcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUm91dGUgVGFibGUgcmVmZXJlbmNlIGZvciBTdWJuZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRSb3V0ZVRhYmxlUmVmZXJlbmNlIHtcbiAgLyoqXG4gICAqIFJvdXRlIFRhYmxlIHJlc291cmNlIElEXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE5BVCBHYXRld2F5IHJlZmVyZW5jZSBmb3IgU3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TkFUR2F0ZXdheVJlZmVyZW5jZSB7XG4gIC8qKlxuICAgKiBOQVQgR2F0ZXdheSByZXNvdXJjZSBJRFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGVuZHBvaW50IGNvbmZpZ3VyYXRpb24gZm9yIFN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFNlcnZpY2VFbmRwb2ludCB7XG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBlbmRwb2ludCBpZGVudGlmaWVyXG4gICAqIEBleGFtcGxlIFwiTWljcm9zb2Z0LlN0b3JhZ2VcIlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBsb2NhdGlvbnMgd2hlcmUgdGhlIHNlcnZpY2UgZW5kcG9pbnQgaXMgYXZhaWxhYmxlXG4gICAqIEBleGFtcGxlIFtcImVhc3R1c1wiLCBcIndlc3R1c1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogRGVsZWdhdGlvbiBjb25maWd1cmF0aW9uIGZvciBTdWJuZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXREZWxlZ2F0aW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRlbGVnYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNlcnZpY2UgbmFtZSB0byBkZWxlZ2F0ZSB0b1xuICAgKiBAZXhhbXBsZSBcIk1pY3Jvc29mdC5TcWwvbWFuYWdlZEluc3RhbmNlc1wiXG4gICAqL1xuICByZWFkb25seSBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBhY3Rpb25zIGFsbG93ZWQgZm9yIHRoZSBkZWxlZ2F0aW9uXG4gICAqL1xuICByZWFkb25seSBhY3Rpb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIEF6dXJlIFN1Ym5ldFxuICpcbiAqIEV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHdpdGggU3VibmV0IHNwZWNpZmljIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRQcm9wcyBleHRlbmRzIEF6YXBpUmVzb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBBZGRyZXNzIHByZWZpeCBmb3IgdGhlIHN1Ym5ldCBpbiBDSURSIG5vdGF0aW9uXG4gICAqIE11c3QgYmUgd2l0aGluIHRoZSBwYXJlbnQgVk5ldCdzIGFkZHJlc3Mgc3BhY2VcbiAgICogQGV4YW1wbGUgXCIxMC4wLjEuMC8yNFwiXG4gICAqL1xuICByZWFkb25seSBhZGRyZXNzUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHBhcmVudCB2aXJ0dWFsIG5ldHdvcmtcbiAgICogUmVxdWlyZWQgZm9yIGNvbnN0cnVjdGluZyB0aGUgcGFyZW50IElEXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsTmV0d29ya05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWw6IEZ1bGwgcmVzb3VyY2UgSUQgb2YgdGhlIHBhcmVudCBWaXJ0dWFsIE5ldHdvcmtcbiAgICogV2hlbiBwcm92aWRlZCwgY3JlYXRlcyBhIHByb3BlciBUZXJyYWZvcm0gZGVwZW5kZW5jeSBvbiB0aGUgVk5ldFxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHRoZSBwYXJlbnQgSUQgd2lsbCBiZSBjb25zdHJ1Y3RlZCBmcm9tIHJlc291cmNlR3JvdXBJZCBhbmQgdmlydHVhbE5ldHdvcmtOYW1lXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsTmV0d29ya0lkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOZXR3b3JrIHNlY3VyaXR5IGdyb3VwIHJlZmVyZW5jZVxuICAgKiBPcHRpb25hbCAtIGNhbiBiZSBhdHRhY2hlZCBsYXRlclxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1NlY3VyaXR5R3JvdXA/OiBTdWJuZXROU0dSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFJvdXRlIHRhYmxlIHJlZmVyZW5jZVxuICAgKiBPcHRpb25hbCAtIGNhbiBiZSBhdHRhY2hlZCBsYXRlclxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZT86IFN1Ym5ldFJvdXRlVGFibGVSZWZlcmVuY2U7XG5cbiAgLyoqXG4gICAqIFNlcnZpY2UgZW5kcG9pbnRzIGZvciB0aGUgc3VibmV0XG4gICAqIEVuYWJsZXMgcHJpdmF0ZSBhY2Nlc3MgdG8gQXp1cmUgc2VydmljZXNcbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VFbmRwb2ludHM/OiBTdWJuZXRTZXJ2aWNlRW5kcG9pbnRbXTtcblxuICAvKipcbiAgICogU3VibmV0IGRlbGVnYXRpb25zXG4gICAqIERlbGVnYXRlcyBzdWJuZXQgdG8gc3BlY2lmaWMgQXp1cmUgc2VydmljZXNcbiAgICovXG4gIHJlYWRvbmx5IGRlbGVnYXRpb25zPzogU3VibmV0RGVsZWdhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBQcml2YXRlIGVuZHBvaW50IG5ldHdvcmsgcG9saWNpZXNcbiAgICogQ29udHJvbHMgd2hldGhlciBuZXR3b3JrIHBvbGljaWVzIGFwcGx5IHRvIHByaXZhdGUgZW5kcG9pbnRzXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJEaXNhYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlRW5kcG9pbnROZXR3b3JrUG9saWNpZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFByaXZhdGUgbGluayBzZXJ2aWNlIG5ldHdvcmsgcG9saWNpZXNcbiAgICogQ29udHJvbHMgd2hldGhlciBuZXR3b3JrIHBvbGljaWVzIGFwcGx5IHRvIHByaXZhdGUgbGluayBzZXJ2aWNlc1xuICAgKiBAZGVmYXVsdFZhbHVlIFwiRW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlTGlua1NlcnZpY2VOZXR3b3JrUG9saWNpZXM/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5BVCBnYXRld2F5IHJlZmVyZW5jZVxuICAgKiBPcHRpb25hbCAtIGZvciBvdXRib3VuZCBpbnRlcm5ldCBjb25uZWN0aXZpdHlcbiAgICovXG4gIHJlYWRvbmx5IG5hdEdhdGV3YXk/OiBTdWJuZXROQVRHYXRld2F5UmVmZXJlbmNlO1xuXG4gIC8qKlxuICAgKiBJUCBhbGxvY2F0aW9ucyBmb3IgdGhlIHN1Ym5ldFxuICAgKiBPcHRpb25hbCAtIGZvciBjdXN0b20gSVAgYWxsb2NhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaXBBbGxvY2F0aW9ucz86IGFueVtdO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBncm91cCBJRCB3aGVyZSB0aGUgcGFyZW50IFZOZXQgZXhpc3RzXG4gICAqIFJlcXVpcmVkIGZvciBjb25zdHJ1Y3RpbmcgdGhlIHBhcmVudCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgcnVsZXMgdG8gaWdub3JlIGNoYW5nZXNcbiAgICogVXNlZnVsIGZvciBwcm9wZXJ0aWVzIHRoYXQgYXJlIGV4dGVybmFsbHkgbWFuYWdlZFxuICAgKlxuICAgKiBAZXhhbXBsZSBbXCJuZXR3b3JrU2VjdXJpdHlHcm91cFwiLCBcInJvdXRlVGFibGVcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBenVyZSBTdWJuZXQgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2luZ2xlLCB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIHRoYXQgcmVwbGFjZXNcbiAqIHZlcnNpb24tc3BlY2lmaWMgU3VibmV0IGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogKipDaGlsZCBSZXNvdXJjZSBQYXR0ZXJuKio6IFN1Ym5ldHMgYXJlIGNoaWxkIHJlc291cmNlcyBvZiBWaXJ0dWFsIE5ldHdvcmtzLlxuICogVGhpcyBpbXBsZW1lbnRhdGlvbiBvdmVycmlkZXMgdGhlIGByZXNvbHZlUGFyZW50SWQoKWAgbWV0aG9kIHRvIHByb3Blcmx5XG4gKiBjb25zdHJ1Y3QgdGhlIFZpcnR1YWwgTmV0d29yayBJRCBhcyB0aGUgcGFyZW50LCBmb2xsb3dpbmcgdGhlIGVuaGFuY2VkIGJhc2VcbiAqIGNsYXNzIHBhdHRlcm4gZm9yIGNoaWxkIHJlc291cmNlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgdXNhZ2Ugd2l0aCBhdXRvbWF0aWMgdmVyc2lvbiByZXNvbHV0aW9uOlxuICogY29uc3Qgc3VibmV0ID0gbmV3IFN1Ym5ldCh0aGlzLCBcInN1Ym5ldFwiLCB7XG4gKiAgIG5hbWU6IFwibXktc3VibmV0XCIsXG4gKiAgIHZpcnR1YWxOZXR3b3JrTmFtZTogXCJteS12bmV0XCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjEuMC8yNFwiXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNhZ2Ugd2l0aCBuZXR3b3JrIHNlY3VyaXR5IGdyb3VwOlxuICogY29uc3Qgc3VibmV0ID0gbmV3IFN1Ym5ldCh0aGlzLCBcInN1Ym5ldFwiLCB7XG4gKiAgIG5hbWU6IFwibXktc3VibmV0XCIsXG4gKiAgIHZpcnR1YWxOZXR3b3JrTmFtZTogXCJteS12bmV0XCIsXG4gKiAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAqICAgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjEuMC8yNFwiLFxuICogICBuZXR3b3JrU2VjdXJpdHlHcm91cDogeyBpZDogbnNnLmlkIH1cbiAqIH0pO1xuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJuZXQgZXh0ZW5kcyBBemFwaVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFN0YXRpYyBpbml0aWFsaXphdGlvbiBmbGFnIHRvIGVuc3VyZSBzY2hlbWFzIGFyZSByZWdpc3RlcmVkIG9ubHkgb25jZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgc2NoZW1hc1JlZ2lzdGVyZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogRW5zdXJlcyB0aGF0IFN1Ym5ldCBzY2hlbWFzIGFyZSByZWdpc3RlcmVkIHdpdGggdGhlIEFwaVZlcnNpb25NYW5hZ2VyXG4gICAqIFRoaXMgaXMgY2FsbGVkIG9uY2UgZHVyaW5nIHRoZSBmaXJzdCBTdWJuZXQgaW5zdGFudGlhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZW5zdXJlU2NoZW1hc1JlZ2lzdGVyZWQoKTogdm9pZCB7XG4gICAgaWYgKFN1Ym5ldC5zY2hlbWFzUmVnaXN0ZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFwaVZlcnNpb25NYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBSZWdpc3RlciBhbGwgU3VibmV0IHZlcnNpb25zXG4gICAgICBhcGlWZXJzaW9uTWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShTVUJORVRfVFlQRSwgQUxMX1NVQk5FVF9WRVJTSU9OUyk7XG5cbiAgICAgIFN1Ym5ldC5zY2hlbWFzUmVnaXN0ZXJlZCA9IHRydWU7XG5cbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgUmVnaXN0ZXJlZCAke0FMTF9TVUJORVRfVkVSU0lPTlMubGVuZ3RofSBBUEkgdmVyc2lvbnMgZm9yICR7U1VCTkVUX1RZUEV9YCxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEZhaWxlZCB0byByZWdpc3RlciBTdWJuZXQgc2NoZW1hczogJHtlcnJvcn0uIGAgK1xuICAgICAgICAgIGBUaGlzIG1heSBpbmRpY2F0ZSB0aGUgc2NoZW1hcyBhcmUgYWxyZWFkeSByZWdpc3RlcmVkIG9yIHRoZXJlJ3MgYSBjb25maWd1cmF0aW9uIGlzc3VlLmAsXG4gICAgICApO1xuICAgICAgLy8gRG9uJ3QgdGhyb3cgaGVyZSBhcyB0aGUgc2NoZW1hcyBtaWdodCBhbHJlYWR5IGJlIHJlZ2lzdGVyZWRcbiAgICAgIFN1Ym5ldC5zY2hlbWFzUmVnaXN0ZXJlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGlzIFN1Ym5ldCBpbnN0YW5jZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByb3BzOiBTdWJuZXRQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkcmVzc1ByZWZpeE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8vIFB1YmxpYyBwcm9wZXJ0aWVzIHRoYXQgbWF0Y2ggdGhlIG9yaWdpbmFsIFN1Ym5ldCBpbnRlcmZhY2VcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgU3VibmV0IHVzaW5nIHRoZSBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICAgKlxuICAgKiBUaGUgY29uc3RydWN0b3IgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gcmVzb2x1dGlvbiwgc2NoZW1hIHJlZ2lzdHJhdGlvbixcbiAgICogdmFsaWRhdGlvbiwgYW5kIHJlc291cmNlIGNyZWF0aW9uLiBJdCBtYWludGFpbnMgZnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAqIHdpdGggZXhpc3RpbmcgU3VibmV0IGltcGxlbWVudGF0aW9ucy5cbiAgICpcbiAgICogKipQYXJlbnQgSUQgUmVzb2x1dGlvbioqOiBTdWJuZXRzIGFyZSBjaGlsZCByZXNvdXJjZXMgb2YgVmlydHVhbCBOZXR3b3Jrcy5cbiAgICogVGhlIHJlc29sdmVQYXJlbnRJZCgpIG1ldGhvZCBpcyBvdmVycmlkZGVuIHRvIHJldHVybiB0aGUgVmlydHVhbCBOZXR3b3JrIElEXG4gICAqIGluc3RlYWQgb2YgdGhlIFJlc291cmNlIEdyb3VwIElELCBlc3RhYmxpc2hpbmcgdGhlIHByb3BlciBwYXJlbnQtY2hpbGQgaGllcmFyY2h5LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBTdWJuZXRcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdWJuZXRQcm9wcykge1xuICAgIC8vIEVuc3VyZSBzY2hlbWFzIGFyZSByZWdpc3RlcmVkIGJlZm9yZSBjYWxsaW5nIHN1cGVyXG4gICAgU3VibmV0LmVuc3VyZVNjaGVtYXNSZWdpc3RlcmVkKCk7XG5cbiAgICAvLyBDYWxsIHRoZSBwYXJlbnQgY29uc3RydWN0b3Igd2l0aCB0aGUgb3JpZ2luYWwgcHJvcHNcbiAgICAvLyBQYXJlbnQgSUQgcmVzb2x1dGlvbiBpcyBub3cgaGFuZGxlZCBieSB0aGUgb3ZlcnJpZGRlbiByZXNvbHZlUGFyZW50SWQgbWV0aG9kXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBTdG9yZSB0aGUgcHJvcHNcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBFeHRyYWN0IHByb3BlcnRpZXMgZnJvbSB0aGUgQVpBUEkgcmVzb3VyY2Ugb3V0cHV0cyB1c2luZyBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvblxuICAgIHRoaXMuaWQgPSBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmlkfWA7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFN1Ym5ldFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIm5hbWVcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubmFtZX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgb2YgdGhlIFN1Ym5ldFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5hZGRyZXNzUHJlZml4T3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBcImFkZHJlc3NQcmVmaXhcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMuYWRkcmVzc1ByZWZpeCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGFkZHJlc3MgcHJlZml4IG9mIHRoZSBTdWJuZXRcIixcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIE92ZXJyaWRlIGxvZ2ljYWwgSURzIHRvIG1hdGNoIG9yaWdpbmFsIG5hbWluZyBjb252ZW50aW9uXG4gICAgdGhpcy5pZE91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImlkXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy5hZGRyZXNzUHJlZml4T3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiYWRkcmVzc1ByZWZpeFwiKTtcblxuICAgIC8vIEF6dXJlIGF1dG9tYXRpY2FsbHkgZXhwYW5kcyBzZXJ2aWNlIGVuZHBvaW50IGxvY2F0aW9ucyBmb3IgaGlnaCBhdmFpbGFiaWxpdHksXG4gICAgLy8gYWRkaW5nIHBhaXJlZCByZWdpb25zIGZvciBkaXNhc3RlciByZWNvdmVyeS4gSWdub3JlIHRoZXNlIGNoYW5nZXMgdG8gcHJldmVudCBkcmlmdC5cbiAgICBpZiAocHJvcHMuc2VydmljZUVuZHBvaW50cyAmJiBwcm9wcy5zZXJ2aWNlRW5kcG9pbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogW1wiYm9keS5wcm9wZXJ0aWVzLnNlcnZpY2VFbmRwb2ludHNbMF0ubG9jYXRpb25zXCJdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWRkaXRpb25hbCBpZ25vcmUgY2hhbmdlcyBpZiBzcGVjaWZpZWRcbiAgICB0aGlzLl9hcHBseUlnbm9yZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICogUmV0dXJucyB0aGUgbW9zdCByZWNlbnQgc3RhYmxlIHZlcnNpb24gYXMgdGhlIGRlZmF1bHRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMjQtMTAtMDFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBTdWJuZXRzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb3VyY2VUeXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNVQk5FVF9UWVBFO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEFQSSBzY2hlbWEgZm9yIHRoZSByZXNvbHZlZCB2ZXJzaW9uXG4gICAqIFVzZXMgdGhlIGZyYW1ld29yaydzIHNjaGVtYSByZXNvbHV0aW9uIHRvIGdldCB0aGUgYXBwcm9wcmlhdGUgc2NoZW1hXG4gICAqL1xuICBwcm90ZWN0ZWQgYXBpU2NoZW1hKCk6IEFwaVNjaGVtYSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVNjaGVtYSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKiBUcmFuc2Zvcm1zIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGludG8gdGhlIEpTT04gZm9ybWF0IGV4cGVjdGVkIGJ5IEF6dXJlIFJFU1QgQVBJXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBTdWJuZXRQcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhZGRyZXNzUHJlZml4OiB0eXBlZFByb3BzLmFkZHJlc3NQcmVmaXgsXG4gICAgICAgIG5ldHdvcmtTZWN1cml0eUdyb3VwOiB0eXBlZFByb3BzLm5ldHdvcmtTZWN1cml0eUdyb3VwLFxuICAgICAgICByb3V0ZVRhYmxlOiB0eXBlZFByb3BzLnJvdXRlVGFibGUsXG4gICAgICAgIHNlcnZpY2VFbmRwb2ludHM6IHR5cGVkUHJvcHMuc2VydmljZUVuZHBvaW50cyxcbiAgICAgICAgZGVsZWdhdGlvbnM6IHR5cGVkUHJvcHMuZGVsZWdhdGlvbnMsXG4gICAgICAgIHByaXZhdGVFbmRwb2ludE5ldHdvcmtQb2xpY2llczpcbiAgICAgICAgICB0eXBlZFByb3BzLnByaXZhdGVFbmRwb2ludE5ldHdvcmtQb2xpY2llcyB8fCBcIkRpc2FibGVkXCIsXG4gICAgICAgIHByaXZhdGVMaW5rU2VydmljZU5ldHdvcmtQb2xpY2llczpcbiAgICAgICAgICB0eXBlZFByb3BzLnByaXZhdGVMaW5rU2VydmljZU5ldHdvcmtQb2xpY2llcyB8fCBcIkVuYWJsZWRcIixcbiAgICAgICAgbmF0R2F0ZXdheTogdHlwZWRQcm9wcy5uYXRHYXRld2F5LFxuICAgICAgICBpcEFsbG9jYXRpb25zOiB0eXBlZFByb3BzLmlwQWxsb2NhdGlvbnMsXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIHBhcmVudCBJRCBmb3IgdGhlIFN1Ym5ldCByZXNvdXJjZS5cbiAgICpcbiAgICogU3VibmV0cyBhcmUgY2hpbGQgcmVzb3VyY2VzIG9mIFZpcnR1YWwgTmV0d29ya3MuIFRoaXMgbWV0aG9kIG92ZXJyaWRlc1xuICAgKiB0aGUgZGVmYXVsdCBwYXJlbnQgSUQgcmVzb2x1dGlvbiB0byByZXR1cm4gdGhlIFZpcnR1YWwgTmV0d29yayBJRCBpbnN0ZWFkXG4gICAqIG9mIHRoZSBSZXNvdXJjZSBHcm91cCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIC0gVGhlIHJlc291cmNlIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgVGhlIFZpcnR1YWwgTmV0d29yayBJRCAocGFyZW50IHJlc291cmNlIElEKVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlc29sdmVQYXJlbnRJZChwcm9wczogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlZFByb3BzID0gcHJvcHMgYXMgU3VibmV0UHJvcHM7XG4gICAgLy8gSWYgdmlydHVhbE5ldHdvcmtJZCBpcyBwcm92aWRlZCwgdXNlIGl0IChjcmVhdGVzIFRlcnJhZm9ybSBkZXBlbmRlbmN5KVxuICAgIC8vIE90aGVyd2lzZSBjb25zdHJ1Y3QgaXQgZnJvbSByZXNvdXJjZUdyb3VwSWQgYW5kIHZpcnR1YWxOZXR3b3JrTmFtZSAoc3RyaW5nIGNvbmNhdGVuYXRpb24pXG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVkUHJvcHMudmlydHVhbE5ldHdvcmtJZCB8fFxuICAgICAgYCR7dHlwZWRQcm9wcy5yZXNvdXJjZUdyb3VwSWR9L3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3MvJHt0eXBlZFByb3BzLnZpcnR1YWxOZXR3b3JrTmFtZX1gXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSBjcmVhdGVBemFwaVJlc291cmNlIHRvIGV4cGxpY2l0bHkgcHJldmVudCBsb2NhdGlvbiBmcm9tIGJlaW5nIGFkZGVkXG4gICAqIFN1Ym5ldHMgYXJlIGNoaWxkIHJlc291cmNlcyBhbmQgaW5oZXJpdCBsb2NhdGlvbiBmcm9tIHRoZWlyIHBhcmVudCBWTmV0XG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlQXphcGlSZXNvdXJjZShcbiAgICBwcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIHBhcmVudElkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIF9sb2NhdGlvbj86IHN0cmluZyxcbiAgKTogY2RrdGYuVGVycmFmb3JtUmVzb3VyY2Uge1xuICAgIC8vIENhbGwgcGFyZW50IGltcGxlbWVudGF0aW9uIGJ1dCBwYXNzIHVuZGVmaW5lZCBmb3IgbG9jYXRpb25cbiAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSBiYXNlIGNsYXNzIGZyb20gYWRkaW5nIGxvY2F0aW9uIHRvIHRoZSBjb25maWdcbiAgICByZXR1cm4gc3VwZXIuY3JlYXRlQXphcGlSZXNvdXJjZShwcm9wZXJ0aWVzLCBwYXJlbnRJZCwgbmFtZSwgdW5kZWZpbmVkKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBVQkxJQyBNRVRIT0RTIEZPUiBTVUJORVQgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgcmVzb3VyY2UgaWRlbnRpZmllciBmb3IgdXNlIGluIG90aGVyIEF6dXJlIHJlc291cmNlc1xuICAgKiBBbGlhcyBmb3IgdGhlIGlkIHByb3BlcnR5IHRvIG1hdGNoIG9yaWdpbmFsIGludGVyZmFjZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhZGRyZXNzIHByZWZpeCB2YWx1ZVxuICAgKiBSZXR1cm5zIHRoZSBhZGRyZXNzIHByZWZpeCBmcm9tIHRoZSBpbnB1dCBwcm9wcyBzaW5jZSBBenVyZSBBUEkgZG9lc24ndCByZXR1cm4gaXQgaW4gb3V0cHV0XG4gICAqL1xuICBwdWJsaWMgZ2V0IGFkZHJlc3NQcmVmaXgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5hZGRyZXNzUHJlZml4O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcGFyZW50IFZpcnR1YWwgTmV0d29yayBJRFxuICAgKiBDb25zdHJ1Y3RzIHRoZSBWTmV0IHJlc291cmNlIElEIGZyb20gdGhlIHN1Ym5ldCdzIHBhcmVudCByZWZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgdmlydHVhbE5ldHdvcmtJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSB0aGlzLnByb3BzIGFzIFN1Ym5ldFByb3BzO1xuICAgIHJldHVybiBgJHt0eXBlZFByb3BzLnJlc291cmNlR3JvdXBJZH0vcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy8ke3R5cGVkUHJvcHMudmlydHVhbE5ldHdvcmtOYW1lfWA7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Integration test for Azure Subnet construct
3
+ *
4
+ * This test demonstrates basic usage of the Subnet construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ * It also demonstrates the parent-child relationship between
7
+ * Virtual Network and Subnet.
8
+ *
9
+ * Run with: npm run integration:nostream
10
+ */
11
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure Subnet construct
4
+ *
5
+ * This test demonstrates basic usage of the Subnet construct
6
+ * and validates deployment, idempotency, and cleanup.
7
+ * It also demonstrates the parent-child relationship between
8
+ * Virtual Network and Subnet.
9
+ *
10
+ * Run with: npm run integration:nostream
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ const cdktf_1 = require("cdktf");
14
+ require("cdktf/lib/testing/adapters/jest");
15
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
16
+ const azure_virtualnetwork_1 = require("../../azure-virtualnetwork");
17
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
18
+ const testing_1 = require("../../testing");
19
+ const subnet_1 = require("../lib/subnet");
20
+ /**
21
+ * Example stack demonstrating Subnet usage with parent Virtual Network
22
+ */
23
+ class SubnetExampleStack extends cdktf_1.TerraformStack {
24
+ constructor(scope, id) {
25
+ super(scope, id);
26
+ // Configure AZAPI provider
27
+ new provider_1.AzapiProvider(this, "azapi", {});
28
+ // Create resource group
29
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "rg", {
30
+ name: "rg-subnet-example",
31
+ location: "eastus",
32
+ tags: {
33
+ environment: "example",
34
+ purpose: "integration-test",
35
+ },
36
+ });
37
+ // Create virtual network (parent resource)
38
+ const vnet = new azure_virtualnetwork_1.VirtualNetwork(this, "vnet", {
39
+ name: "vnet-subnet-example",
40
+ location: "eastus",
41
+ resourceGroupId: resourceGroup.id,
42
+ addressSpace: {
43
+ addressPrefixes: ["10.0.0.0/16"],
44
+ },
45
+ tags: {
46
+ environment: "example",
47
+ },
48
+ });
49
+ // Subnet with service endpoints and specific API version
50
+ new subnet_1.Subnet(this, "subnet", {
51
+ name: "subnet-example",
52
+ virtualNetworkName: vnet.name,
53
+ resourceGroupId: resourceGroup.id,
54
+ apiVersion: "2024-07-01",
55
+ addressPrefix: "10.0.1.0/24",
56
+ serviceEndpoints: [
57
+ {
58
+ service: "Microsoft.Storage",
59
+ locations: ["eastus"],
60
+ },
61
+ ],
62
+ privateEndpointNetworkPolicies: "Disabled",
63
+ // Pass vnet.id to create proper Terraform dependency
64
+ virtualNetworkId: vnet.id,
65
+ });
66
+ }
67
+ }
68
+ describe("Subnet Integration Test", () => {
69
+ it("should deploy, validate idempotency, and cleanup subnet resources", () => {
70
+ const app = cdktf_1.Testing.app();
71
+ const stack = new SubnetExampleStack(app, "test-subnet");
72
+ const synthesized = cdktf_1.Testing.fullSynth(stack);
73
+ // This will:
74
+ // 1. Run terraform apply to deploy resources
75
+ // 2. Run terraform plan to check idempotency (no changes expected)
76
+ // 3. Run terraform destroy to cleanup resources
77
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
78
+ }, 600000); // 10 minute timeout for deployment and cleanup
79
+ });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LmludGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXN1Ym5ldC90ZXN0L3N1Ym5ldC5pbnRlZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOztBQUVILGlDQUFnRDtBQUVoRCwyQ0FBeUM7QUFDekMsbUVBQTBEO0FBQzFELHFFQUE0RDtBQUM1RCxrRkFBb0Y7QUFDcEYsMkNBQThEO0FBQzlELDBDQUF1QztBQUV2Qzs7R0FFRztBQUNILE1BQU0sa0JBQW1CLFNBQVEsc0JBQWM7SUFDN0MsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwyQkFBMkI7UUFDM0IsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsd0JBQXdCO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLElBQUksbUNBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ2xELElBQUksRUFBRSxtQkFBbUI7WUFDekIsUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLFdBQVcsRUFBRSxTQUFTO2dCQUN0QixPQUFPLEVBQUUsa0JBQWtCO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMkNBQTJDO1FBQzNDLE1BQU0sSUFBSSxHQUFHLElBQUkscUNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQzVDLElBQUksRUFBRSxxQkFBcUI7WUFDM0IsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLFlBQVksRUFBRTtnQkFDWixlQUFlLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDakM7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLFNBQVM7YUFDdkI7U0FDRixDQUFDLENBQUM7UUFFSCx5REFBeUQ7UUFDekQsSUFBSSxlQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN6QixJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxJQUFJO1lBQzdCLGVBQWUsRUFBRSxhQUFhLENBQUMsRUFBRTtZQUNqQyxVQUFVLEVBQUUsWUFBWTtZQUN4QixhQUFhLEVBQUUsYUFBYTtZQUM1QixnQkFBZ0IsRUFBRTtnQkFDaEI7b0JBQ0UsT0FBTyxFQUFFLG1CQUFtQjtvQkFDNUIsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2lCQUN0QjthQUNGO1lBQ0QsOEJBQThCLEVBQUUsVUFBVTtZQUMxQyxxREFBcUQ7WUFDckQsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHlCQUF5QixFQUFFLEdBQUcsRUFBRTtJQUN2QyxFQUFFLENBQUMsbUVBQW1FLEVBQUUsR0FBRyxFQUFFO1FBQzNFLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN6RCxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYiw2Q0FBNkM7UUFDN0MsbUVBQW1FO1FBQ25FLGdEQUFnRDtRQUNoRCxJQUFBLHVDQUE2QixFQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgU3VibmV0IGNvbnN0cnVjdFxuICpcbiAqIFRoaXMgdGVzdCBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNhZ2Ugb2YgdGhlIFN1Ym5ldCBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICogSXQgYWxzbyBkZW1vbnN0cmF0ZXMgdGhlIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXAgYmV0d2VlblxuICogVmlydHVhbCBOZXR3b3JrIGFuZCBTdWJuZXQuXG4gKlxuICogUnVuIHdpdGg6IG5wbSBydW4gaW50ZWdyYXRpb246bm9zdHJlYW1cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nLCBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCBcImNka3RmL2xpYi90ZXN0aW5nL2FkYXB0ZXJzL2plc3RcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcmVzb3VyY2Vncm91cFwiO1xuaW1wb3J0IHsgVmlydHVhbE5ldHdvcmsgfSBmcm9tIFwiLi4vLi4vYXp1cmUtdmlydHVhbG5ldHdvcmtcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBTdWJuZXQgfSBmcm9tIFwiLi4vbGliL3N1Ym5ldFwiO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBTdWJuZXQgdXNhZ2Ugd2l0aCBwYXJlbnQgVmlydHVhbCBOZXR3b3JrXG4gKi9cbmNsYXNzIFN1Ym5ldEV4YW1wbGVTdGFjayBleHRlbmRzIFRlcnJhZm9ybVN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAvLyBDb25maWd1cmUgQVpBUEkgcHJvdmlkZXJcbiAgICBuZXcgQXphcGlQcm92aWRlcih0aGlzLCBcImF6YXBpXCIsIHt9KTtcblxuICAgIC8vIENyZWF0ZSByZXNvdXJjZSBncm91cFxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInJnXCIsIHtcbiAgICAgIG5hbWU6IFwicmctc3VibmV0LWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgdGFnczoge1xuICAgICAgICBlbnZpcm9ubWVudDogXCJleGFtcGxlXCIsXG4gICAgICAgIHB1cnBvc2U6IFwiaW50ZWdyYXRpb24tdGVzdFwiLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIENyZWF0ZSB2aXJ0dWFsIG5ldHdvcmsgKHBhcmVudCByZXNvdXJjZSlcbiAgICBjb25zdCB2bmV0ID0gbmV3IFZpcnR1YWxOZXR3b3JrKHRoaXMsIFwidm5ldFwiLCB7XG4gICAgICBuYW1lOiBcInZuZXQtc3VibmV0LWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgYWRkcmVzc1NwYWNlOiB7XG4gICAgICAgIGFkZHJlc3NQcmVmaXhlczogW1wiMTAuMC4wLjAvMTZcIl0sXG4gICAgICB9LFxuICAgICAgdGFnczoge1xuICAgICAgICBlbnZpcm9ubWVudDogXCJleGFtcGxlXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gU3VibmV0IHdpdGggc2VydmljZSBlbmRwb2ludHMgYW5kIHNwZWNpZmljIEFQSSB2ZXJzaW9uXG4gICAgbmV3IFN1Ym5ldCh0aGlzLCBcInN1Ym5ldFwiLCB7XG4gICAgICBuYW1lOiBcInN1Ym5ldC1leGFtcGxlXCIsXG4gICAgICB2aXJ0dWFsTmV0d29ya05hbWU6IHZuZXQubmFtZSxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIGFwaVZlcnNpb246IFwiMjAyNC0wNy0wMVwiLFxuICAgICAgYWRkcmVzc1ByZWZpeDogXCIxMC4wLjEuMC8yNFwiLFxuICAgICAgc2VydmljZUVuZHBvaW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgc2VydmljZTogXCJNaWNyb3NvZnQuU3RvcmFnZVwiLFxuICAgICAgICAgIGxvY2F0aW9uczogW1wiZWFzdHVzXCJdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByaXZhdGVFbmRwb2ludE5ldHdvcmtQb2xpY2llczogXCJEaXNhYmxlZFwiLFxuICAgICAgLy8gUGFzcyB2bmV0LmlkIHRvIGNyZWF0ZSBwcm9wZXIgVGVycmFmb3JtIGRlcGVuZGVuY3lcbiAgICAgIHZpcnR1YWxOZXR3b3JrSWQ6IHZuZXQuaWQsXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJTdWJuZXQgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIHN1Ym5ldCByZXNvdXJjZXNcIiwgKCkgPT4ge1xuICAgIGNvbnN0IGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgY29uc3Qgc3RhY2sgPSBuZXcgU3VibmV0RXhhbXBsZVN0YWNrKGFwcCwgXCJ0ZXN0LXN1Ym5ldFwiKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXNcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQpO1xuICB9LCA2MDAwMDApOyAvLyAxMCBtaW51dGUgdGltZW91dCBmb3IgZGVwbG95bWVudCBhbmQgY2xlYW51cFxufSk7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Comprehensive tests for the Subnet implementation
3
+ *
4
+ * This test suite validates the Subnet class using the AzapiResource framework.
5
+ * Tests cover automatic version resolution, explicit version pinning, schema validation,
6
+ * property transformation, and resource creation including parent-child relationship.
7
+ */
8
+ export {};