@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.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 (291) hide show
  1. package/.jsii +54846 -26661
  2. package/API.md +72091 -23784
  3. package/lib/azure-actiongroup/index.d.ts +0 -10
  4. package/lib/azure-actiongroup/index.js +1 -11
  5. package/lib/azure-actiongroup/lib/action-group.d.ts +0 -10
  6. package/lib/azure-actiongroup/lib/action-group.js +6 -32
  7. package/lib/azure-actiongroup/lib/index.d.ts +1 -4
  8. package/lib/azure-actiongroup/lib/index.js +2 -5
  9. package/lib/azure-activitylogalert/index.d.ts +0 -10
  10. package/lib/azure-activitylogalert/index.js +1 -11
  11. package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +0 -10
  12. package/lib/azure-activitylogalert/lib/activity-log-alert.js +6 -32
  13. package/lib/azure-activitylogalert/lib/index.d.ts +1 -4
  14. package/lib/azure-activitylogalert/lib/index.js +2 -5
  15. package/lib/azure-aks/index.d.ts +0 -8
  16. package/lib/azure-aks/index.js +1 -11
  17. package/lib/azure-aks/lib/aks-cluster.d.ts +4 -13
  18. package/lib/azure-aks/lib/aks-cluster.js +13 -36
  19. package/lib/azure-aks/lib/index.d.ts +1 -10
  20. package/lib/azure-aks/lib/index.js +2 -21
  21. package/lib/azure-diagnosticsettings/index.d.ts +0 -6
  22. package/lib/azure-diagnosticsettings/index.js +1 -7
  23. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +0 -10
  24. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +6 -32
  25. package/lib/azure-diagnosticsettings/lib/index.d.ts +1 -7
  26. package/lib/azure-diagnosticsettings/lib/index.js +2 -8
  27. package/lib/azure-dnsforwardingruleset/index.d.ts +1 -0
  28. package/lib/azure-dnsforwardingruleset/index.js +18 -0
  29. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.d.ts +24 -0
  30. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset-schemas.js +206 -0
  31. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.d.ts +174 -0
  32. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +214 -0
  33. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.d.ts +24 -0
  34. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule-schemas.js +242 -0
  35. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.d.ts +193 -0
  36. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +193 -0
  37. package/lib/azure-dnsforwardingruleset/lib/index.d.ts +6 -0
  38. package/lib/azure-dnsforwardingruleset/lib/index.js +23 -0
  39. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.d.ts +24 -0
  40. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link-schemas.js +199 -0
  41. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.d.ts +160 -0
  42. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +178 -0
  43. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.d.ts +9 -0
  44. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.integ.js +133 -0
  45. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.d.ts +9 -0
  46. package/lib/azure-dnsforwardingruleset/test/dns-forwarding-ruleset.spec.js +350 -0
  47. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.d.ts +9 -0
  48. package/lib/azure-dnsforwardingruleset/test/forwarding-rule.spec.js +397 -0
  49. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.d.ts +9 -0
  50. package/lib/azure-dnsforwardingruleset/test/virtual-network-link.spec.js +285 -0
  51. package/lib/azure-dnsresolver/index.d.ts +1 -0
  52. package/lib/azure-dnsresolver/index.js +18 -0
  53. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.d.ts +24 -0
  54. package/lib/azure-dnsresolver/lib/dns-resolver-schemas.js +218 -0
  55. package/lib/azure-dnsresolver/lib/dns-resolver.d.ts +170 -0
  56. package/lib/azure-dnsresolver/lib/dns-resolver.js +236 -0
  57. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.d.ts +24 -0
  58. package/lib/azure-dnsresolver/lib/inbound-endpoint-schemas.js +261 -0
  59. package/lib/azure-dnsresolver/lib/inbound-endpoint.d.ts +189 -0
  60. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +243 -0
  61. package/lib/azure-dnsresolver/lib/index.d.ts +6 -0
  62. package/lib/azure-dnsresolver/lib/index.js +23 -0
  63. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.d.ts +24 -0
  64. package/lib/azure-dnsresolver/lib/outbound-endpoint-schemas.js +231 -0
  65. package/lib/azure-dnsresolver/lib/outbound-endpoint.d.ts +175 -0
  66. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +234 -0
  67. package/lib/azure-dnsresolver/test/dns-resolver.integ.d.ts +14 -0
  68. package/lib/azure-dnsresolver/test/dns-resolver.integ.js +117 -0
  69. package/lib/azure-dnsresolver/test/dns-resolver.spec.d.ts +9 -0
  70. package/lib/azure-dnsresolver/test/dns-resolver.spec.js +353 -0
  71. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.d.ts +9 -0
  72. package/lib/azure-dnsresolver/test/inbound-endpoint.integ.js +151 -0
  73. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.d.ts +9 -0
  74. package/lib/azure-dnsresolver/test/inbound-endpoint.spec.js +441 -0
  75. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.d.ts +9 -0
  76. package/lib/azure-dnsresolver/test/outbound-endpoint.integ.js +149 -0
  77. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.d.ts +9 -0
  78. package/lib/azure-dnsresolver/test/outbound-endpoint.spec.js +301 -0
  79. package/lib/azure-dnszone/index.d.ts +1 -0
  80. package/lib/azure-dnszone/index.js +18 -0
  81. package/lib/azure-dnszone/lib/dns-zone-schemas.d.ts +24 -0
  82. package/lib/azure-dnszone/lib/dns-zone-schemas.js +191 -0
  83. package/lib/azure-dnszone/lib/dns-zone.d.ts +182 -0
  84. package/lib/azure-dnszone/lib/dns-zone.js +228 -0
  85. package/lib/azure-dnszone/lib/index.d.ts +2 -0
  86. package/lib/azure-dnszone/lib/index.js +19 -0
  87. package/lib/azure-dnszone/test/dns-zone.integ.d.ts +9 -0
  88. package/lib/azure-dnszone/test/dns-zone.integ.js +85 -0
  89. package/lib/azure-dnszone/test/dns-zone.spec.d.ts +9 -0
  90. package/lib/azure-dnszone/test/dns-zone.spec.js +285 -0
  91. package/lib/azure-metricalert/index.d.ts +0 -10
  92. package/lib/azure-metricalert/index.js +1 -11
  93. package/lib/azure-metricalert/lib/index.d.ts +1 -4
  94. package/lib/azure-metricalert/lib/index.js +2 -5
  95. package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -10
  96. package/lib/azure-metricalert/lib/metric-alert.js +6 -32
  97. package/lib/azure-networkinterface/index.d.ts +0 -3
  98. package/lib/azure-networkinterface/index.js +1 -4
  99. package/lib/azure-networkinterface/lib/index.d.ts +1 -5
  100. package/lib/azure-networkinterface/lib/index.js +2 -5
  101. package/lib/azure-networkinterface/lib/network-interface.d.ts +4 -9
  102. package/lib/azure-networkinterface/lib/network-interface.js +14 -29
  103. package/lib/azure-networkinterface/test/network-interface.integ.js +20 -6
  104. package/lib/azure-networksecuritygroup/index.d.ts +0 -5
  105. package/lib/azure-networksecuritygroup/index.js +1 -6
  106. package/lib/azure-networksecuritygroup/lib/index.d.ts +2 -5
  107. package/lib/azure-networksecuritygroup/lib/index.js +17 -14
  108. package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +4 -13
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +14 -36
  110. package/lib/azure-policyassignment/index.d.ts +1 -0
  111. package/lib/azure-policyassignment/index.js +18 -0
  112. package/lib/azure-policyassignment/lib/index.d.ts +2 -0
  113. package/lib/azure-policyassignment/lib/index.js +19 -0
  114. package/lib/azure-policyassignment/lib/policy-assignment-schemas.d.ts +25 -0
  115. package/lib/azure-policyassignment/lib/policy-assignment-schemas.js +260 -0
  116. package/lib/azure-policyassignment/lib/policy-assignment.d.ts +342 -0
  117. package/lib/azure-policyassignment/lib/policy-assignment.js +228 -0
  118. package/lib/azure-policyassignment/test/policy-assignment.integ.d.ts +13 -0
  119. package/lib/azure-policyassignment/test/policy-assignment.integ.js +153 -0
  120. package/lib/azure-policyassignment/test/policy-assignment.spec.d.ts +9 -0
  121. package/lib/azure-policyassignment/test/policy-assignment.spec.js +651 -0
  122. package/lib/azure-policydefinition/index.d.ts +1 -0
  123. package/lib/azure-policydefinition/index.js +18 -0
  124. package/lib/azure-policydefinition/lib/index.d.ts +2 -0
  125. package/lib/azure-policydefinition/lib/index.js +19 -0
  126. package/lib/azure-policydefinition/lib/policy-definition-schemas.d.ts +25 -0
  127. package/lib/azure-policydefinition/lib/policy-definition-schemas.js +210 -0
  128. package/lib/azure-policydefinition/lib/policy-definition.d.ts +260 -0
  129. package/lib/azure-policydefinition/lib/policy-definition.js +199 -0
  130. package/lib/azure-policydefinition/test/policy-definition.integ.d.ts +9 -0
  131. package/lib/azure-policydefinition/test/policy-definition.integ.js +137 -0
  132. package/lib/azure-policydefinition/test/policy-definition.spec.d.ts +9 -0
  133. package/lib/azure-policydefinition/test/policy-definition.spec.js +596 -0
  134. package/lib/azure-privatednszone/index.d.ts +1 -0
  135. package/lib/azure-privatednszone/index.js +18 -0
  136. package/lib/azure-privatednszone/lib/index.d.ts +2 -0
  137. package/lib/azure-privatednszone/lib/index.js +19 -0
  138. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.d.ts +24 -0
  139. package/lib/azure-privatednszone/lib/private-dns-zone-schemas.js +254 -0
  140. package/lib/azure-privatednszone/lib/private-dns-zone.d.ts +178 -0
  141. package/lib/azure-privatednszone/lib/private-dns-zone.js +272 -0
  142. package/lib/azure-privatednszone/test/private-dns-zone.integ.d.ts +9 -0
  143. package/lib/azure-privatednszone/test/private-dns-zone.integ.js +84 -0
  144. package/lib/azure-privatednszone/test/private-dns-zone.spec.d.ts +9 -0
  145. package/lib/azure-privatednszone/test/private-dns-zone.spec.js +341 -0
  146. package/lib/azure-privatednszonelink/index.d.ts +1 -0
  147. package/lib/azure-privatednszonelink/index.js +18 -0
  148. package/lib/azure-privatednszonelink/lib/index.d.ts +2 -0
  149. package/lib/azure-privatednszonelink/lib/index.js +19 -0
  150. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.d.ts +24 -0
  151. package/lib/azure-privatednszonelink/lib/private-dns-zone-link-schemas.js +262 -0
  152. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.d.ts +202 -0
  153. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +250 -0
  154. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.d.ts +9 -0
  155. package/lib/azure-privatednszonelink/test/private-dns-zone-link.integ.js +110 -0
  156. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.d.ts +9 -0
  157. package/lib/azure-privatednszonelink/test/private-dns-zone-link.spec.js +465 -0
  158. package/lib/azure-publicipaddress/index.d.ts +0 -5
  159. package/lib/azure-publicipaddress/index.js +1 -6
  160. package/lib/azure-publicipaddress/lib/index.d.ts +2 -9
  161. package/lib/azure-publicipaddress/lib/index.js +17 -17
  162. package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +4 -13
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +14 -36
  164. package/lib/azure-resourcegroup/index.d.ts +0 -37
  165. package/lib/azure-resourcegroup/index.js +1 -39
  166. package/lib/azure-resourcegroup/lib/index.d.ts +1 -44
  167. package/lib/azure-resourcegroup/lib/index.js +2 -43
  168. package/lib/azure-resourcegroup/lib/resource-group.d.ts +9 -23
  169. package/lib/azure-resourcegroup/lib/resource-group.js +23 -56
  170. package/lib/azure-resourcegroup/test/resource-group.spec.js +13 -19
  171. package/lib/azure-roleassignment/index.d.ts +1 -0
  172. package/lib/azure-roleassignment/index.js +18 -0
  173. package/lib/azure-roleassignment/lib/index.d.ts +2 -0
  174. package/lib/azure-roleassignment/lib/index.js +19 -0
  175. package/lib/azure-roleassignment/lib/role-assignment-schemas.d.ts +25 -0
  176. package/lib/azure-roleassignment/lib/role-assignment-schemas.js +238 -0
  177. package/lib/azure-roleassignment/lib/role-assignment.d.ts +294 -0
  178. package/lib/azure-roleassignment/lib/role-assignment.js +257 -0
  179. package/lib/azure-roleassignment/test/role-assignment.integ.d.ts +12 -0
  180. package/lib/azure-roleassignment/test/role-assignment.integ.js +101 -0
  181. package/lib/azure-roleassignment/test/role-assignment.spec.d.ts +9 -0
  182. package/lib/azure-roleassignment/test/role-assignment.spec.js +633 -0
  183. package/lib/azure-roledefinition/index.d.ts +1 -0
  184. package/lib/azure-roledefinition/index.js +18 -0
  185. package/lib/azure-roledefinition/lib/index.d.ts +2 -0
  186. package/lib/azure-roledefinition/lib/index.js +19 -0
  187. package/lib/azure-roledefinition/lib/role-definition-schemas.d.ts +25 -0
  188. package/lib/azure-roledefinition/lib/role-definition-schemas.js +195 -0
  189. package/lib/azure-roledefinition/lib/role-definition.d.ts +236 -0
  190. package/lib/azure-roledefinition/lib/role-definition.js +192 -0
  191. package/lib/azure-roledefinition/test/role-definition.integ.d.ts +12 -0
  192. package/lib/azure-roledefinition/test/role-definition.integ.js +142 -0
  193. package/lib/azure-roledefinition/test/role-definition.spec.d.ts +9 -0
  194. package/lib/azure-roledefinition/test/role-definition.spec.js +946 -0
  195. package/lib/azure-storageaccount/index.d.ts +0 -19
  196. package/lib/azure-storageaccount/index.js +1 -20
  197. package/lib/azure-storageaccount/lib/index.d.ts +1 -7
  198. package/lib/azure-storageaccount/lib/index.js +2 -8
  199. package/lib/azure-storageaccount/lib/storage-account.d.ts +4 -9
  200. package/lib/azure-storageaccount/lib/storage-account.js +15 -29
  201. package/lib/azure-subnet/index.d.ts +0 -3
  202. package/lib/azure-subnet/index.js +1 -4
  203. package/lib/azure-subnet/lib/index.d.ts +1 -4
  204. package/lib/azure-subnet/lib/index.js +2 -5
  205. package/lib/azure-subnet/lib/subnet.d.ts +3 -14
  206. package/lib/azure-subnet/lib/subnet.js +28 -47
  207. package/lib/azure-subnet/test/subnet.integ.js +19 -7
  208. package/lib/azure-subnet/test/subnet.spec.js +1 -2
  209. package/lib/azure-virtualmachine/index.d.ts +0 -6
  210. package/lib/azure-virtualmachine/index.js +1 -7
  211. package/lib/azure-virtualmachine/lib/index.d.ts +1 -10
  212. package/lib/azure-virtualmachine/lib/index.js +2 -21
  213. package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +4 -13
  214. package/lib/azure-virtualmachine/lib/virtual-machine.js +15 -36
  215. package/lib/azure-virtualnetwork/index.d.ts +0 -9
  216. package/lib/azure-virtualnetwork/index.js +1 -11
  217. package/lib/azure-virtualnetwork/lib/index.d.ts +2 -9
  218. package/lib/azure-virtualnetwork/lib/index.js +17 -20
  219. package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +4 -13
  220. package/lib/azure-virtualnetwork/lib/virtual-network.js +15 -36
  221. package/lib/azure-virtualnetworkmanager/index.d.ts +1 -0
  222. package/lib/azure-virtualnetworkmanager/index.js +18 -0
  223. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.d.ts +48 -0
  224. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration-schemas.js +265 -0
  225. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.d.ts +185 -0
  226. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +206 -0
  227. package/lib/azure-virtualnetworkmanager/lib/index.d.ts +14 -0
  228. package/lib/azure-virtualnetworkmanager/lib/index.js +31 -0
  229. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.d.ts +32 -0
  230. package/lib/azure-virtualnetworkmanager/lib/network-group-schemas.js +189 -0
  231. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.d.ts +32 -0
  232. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member-schemas.js +201 -0
  233. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.d.ts +135 -0
  234. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +163 -0
  235. package/lib/azure-virtualnetworkmanager/lib/network-group.d.ts +139 -0
  236. package/lib/azure-virtualnetworkmanager/lib/network-group.js +158 -0
  237. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.d.ts +32 -0
  238. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration-schemas.js +182 -0
  239. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.d.ts +144 -0
  240. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +164 -0
  241. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.d.ts +38 -0
  242. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection-schemas.js +206 -0
  243. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.d.ts +142 -0
  244. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +162 -0
  245. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.d.ts +39 -0
  246. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-schemas.js +359 -0
  247. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.d.ts +221 -0
  248. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +204 -0
  249. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.d.ts +32 -0
  250. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager-schemas.js +236 -0
  251. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.d.ts +337 -0
  252. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +283 -0
  253. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.d.ts +25 -0
  254. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.integ.js +402 -0
  255. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.d.ts +9 -0
  256. package/lib/azure-virtualnetworkmanager/test/virtual-network-manager.spec.js +1652 -0
  257. package/lib/azure-vmss/index.d.ts +0 -5
  258. package/lib/azure-vmss/index.js +1 -6
  259. package/lib/azure-vmss/lib/index.d.ts +0 -7
  260. package/lib/azure-vmss/lib/index.js +1 -21
  261. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +5 -13
  262. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +29 -53
  263. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.d.ts +10 -0
  264. package/lib/core-azure/lib/azapi/azapi-resource-tags.spec.js +218 -0
  265. package/lib/core-azure/lib/azapi/azapi-resource.d.ts +178 -26
  266. package/lib/core-azure/lib/azapi/azapi-resource.js +328 -90
  267. package/lib/core-azure/lib/azapi/azapi-resource.spec.js +2 -2
  268. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  269. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  270. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +5 -3
  271. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  272. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  273. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  274. package/lib/core-azure/lib/azapi/resource-schema-validator.d.ts +118 -0
  275. package/lib/core-azure/lib/azapi/resource-schema-validator.js +236 -0
  276. package/lib/core-azure/lib/azapi/resource-version-manager.d.ts +103 -0
  277. package/lib/core-azure/lib/azapi/resource-version-manager.js +168 -0
  278. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +11 -6
  279. package/lib/core-azure/lib/index.d.ts +2 -2
  280. package/lib/core-azure/lib/index.js +5 -5
  281. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  282. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  283. package/lib/index.d.ts +19 -0
  284. package/lib/index.js +21 -2
  285. package/lib/testing/index.js +2 -2
  286. package/lib/testing/lib/cleanup.d.ts +1 -0
  287. package/lib/testing/lib/cleanup.js +19 -12
  288. package/lib/testing/lib/metadata.js +19 -16
  289. package/package.json +1 -1
  290. package/scripts/cleanup-test-resources.ts +22 -4
  291. package/scripts/generate-index.js +25 -8
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PrivateDnsZoneLink = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Azure Private DNS Zone Virtual Network Link implementation using AzapiResource framework
8
+ *
9
+ * This class provides a unified implementation for linking virtual networks to private DNS zones.
10
+ * Virtual Network Links enable DNS resolution from VNets and optionally support auto-registration
11
+ * of VM records.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2024-06-01 (Active, Latest)
15
+ *
16
+ * Features:
17
+ * - Automatic latest version resolution when no version is specified
18
+ * - Explicit version pinning for stability requirements
19
+ * - Schema-driven validation and transformation
20
+ * - Full backward compatibility
21
+ * - JSII compliance for multi-language support
22
+ * - Auto-registration support for VM DNS records
23
+ * - Resolution policy configuration
24
+ */
25
+ const cdktf = require("cdktf");
26
+ const private_dns_zone_link_schemas_1 = require("./private-dns-zone-link-schemas");
27
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
28
+ /**
29
+ * Azure Private DNS Zone Virtual Network Link implementation
30
+ *
31
+ * Virtual Network Links connect private DNS zones to virtual networks, enabling DNS
32
+ * resolution from those VNets. They support auto-registration of VM DNS records and
33
+ * configurable resolution policies.
34
+ *
35
+ * @example
36
+ * // Basic virtual network link:
37
+ * const link = new PrivateDnsZoneLink(this, "vnet-link", {
38
+ * name: "my-vnet-link",
39
+ * privateDnsZoneId: privateDnsZone.id,
40
+ * virtualNetworkId: vnet.id,
41
+ * location: "global"
42
+ * });
43
+ *
44
+ * @example
45
+ * // Virtual network link with auto-registration:
46
+ * const link = new PrivateDnsZoneLink(this, "vnet-link", {
47
+ * name: "my-vnet-link",
48
+ * privateDnsZoneId: privateDnsZone.id,
49
+ * virtualNetworkId: vnet.id,
50
+ * registrationEnabled: true,
51
+ * location: "global"
52
+ * });
53
+ *
54
+ * @example
55
+ * // Virtual network link with resolution policy:
56
+ * const link = new PrivateDnsZoneLink(this, "vnet-link", {
57
+ * name: "my-vnet-link",
58
+ * privateDnsZoneId: privateDnsZone.id,
59
+ * virtualNetworkId: vnet.id,
60
+ * resolutionPolicy: "NxDomainRedirect",
61
+ * location: "global",
62
+ * apiVersion: "2024-06-01"
63
+ * });
64
+ *
65
+ * @stability stable
66
+ */
67
+ class PrivateDnsZoneLink extends azapi_resource_1.AzapiResource {
68
+ // Public properties
69
+ /**
70
+ * Creates a new Azure Private DNS Zone Virtual Network Link using the AzapiResource framework
71
+ *
72
+ * @param scope - The scope in which to define this construct
73
+ * @param id - The unique identifier for this instance
74
+ * @param props - Configuration properties for the Virtual Network Link
75
+ */
76
+ constructor(scope, id, props) {
77
+ super(scope, id, props);
78
+ this.props = props;
79
+ // Extract properties from the AZAPI resource outputs using Terraform interpolation
80
+ // Create Terraform outputs for easy access and referencing from other resources
81
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
82
+ value: this.id,
83
+ description: "The ID of the Virtual Network Link",
84
+ });
85
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
86
+ value: `\${${this.terraformResource.fqn}.name}`,
87
+ description: "The name of the Virtual Network Link",
88
+ });
89
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
90
+ value: `\${${this.terraformResource.fqn}.location}`,
91
+ description: "The location of the Virtual Network Link",
92
+ });
93
+ this.provisioningStateOutput = new cdktf.TerraformOutput(this, "provisioning_state", {
94
+ value: `\${${this.terraformResource.fqn}.output.properties.provisioningState}`,
95
+ description: "The provisioning state of the Virtual Network Link",
96
+ });
97
+ this.virtualNetworkLinkStateOutput = new cdktf.TerraformOutput(this, "virtual_network_link_state", {
98
+ value: `\${${this.terraformResource.fqn}.output.properties.virtualNetworkLinkState}`,
99
+ description: "The state of the Virtual Network Link",
100
+ });
101
+ // Override logical IDs to match naming convention
102
+ // Override logical IDs to match naming convention
103
+ this.idOutput.overrideLogicalId("id");
104
+ this.nameOutput.overrideLogicalId("name");
105
+ this.locationOutput.overrideLogicalId("location");
106
+ this.provisioningStateOutput.overrideLogicalId("provisioning_state");
107
+ this.virtualNetworkLinkStateOutput.overrideLogicalId("virtual_network_link_state");
108
+ // Apply ignore changes if specified
109
+ this._applyIgnoreChanges();
110
+ }
111
+ // =============================================================================
112
+ // REQUIRED ABSTRACT METHODS FROM AzapiResource
113
+ // =============================================================================
114
+ /**
115
+ * Gets the default location for this resource type
116
+ * Private DNS Zone Links use "global" location
117
+ */
118
+ defaultLocation() {
119
+ return "global";
120
+ }
121
+ /**
122
+ * Resolves the parent resource ID for the Virtual Network Link
123
+ * Virtual Network Links are child resources of Private DNS Zones
124
+ */
125
+ resolveParentId(props) {
126
+ const typedProps = props;
127
+ return typedProps.privateDnsZoneId;
128
+ }
129
+ /**
130
+ * Gets the default API version to use when no explicit version is specified
131
+ */
132
+ defaultVersion() {
133
+ return "2024-06-01";
134
+ }
135
+ /**
136
+ * Gets the Azure resource type for Virtual Network Links
137
+ */
138
+ resourceType() {
139
+ return private_dns_zone_link_schemas_1.PRIVATE_DNS_ZONE_LINK_TYPE;
140
+ }
141
+ /**
142
+ * Gets the API schema for the resolved version
143
+ */
144
+ apiSchema() {
145
+ return this.resolveSchema();
146
+ }
147
+ /**
148
+ * Creates the resource body for the Azure API call
149
+ */
150
+ createResourceBody(props) {
151
+ const typedProps = props;
152
+ // Determine if resolution policy should be included
153
+ let includeResolutionPolicy = false;
154
+ if (typedProps.resolutionPolicy) {
155
+ // Extract zone name from the privateDnsZoneId to determine if it's a Private Link zone
156
+ const zoneNameMatch = typedProps.privateDnsZoneId.match(/\/privateDnsZones\/([^/]+)$/);
157
+ const zoneName = zoneNameMatch ? zoneNameMatch[1] : "";
158
+ includeResolutionPolicy = zoneName.includes("privatelink.");
159
+ }
160
+ // Build the body with all properties inline to avoid readonly issues
161
+ const body = {
162
+ location: this.location,
163
+ // Tags are passed separately to createAzapiResource() for proper idempotency
164
+ // Do not include tags in the body
165
+ properties: {
166
+ virtualNetwork: {
167
+ id: typedProps.virtualNetworkId,
168
+ },
169
+ registrationEnabled: typedProps.registrationEnabled ?? false,
170
+ ...(includeResolutionPolicy && {
171
+ resolutionPolicy: typedProps.resolutionPolicy,
172
+ }),
173
+ },
174
+ };
175
+ return body;
176
+ }
177
+ // =============================================================================
178
+ // PUBLIC METHODS FOR VIRTUAL NETWORK LINK OPERATIONS
179
+ // =============================================================================
180
+ /**
181
+ * Get the Virtual Network ID
182
+ * Note: This returns the input value as Azure API doesn't return it in output
183
+ */
184
+ get virtualNetworkId() {
185
+ return this.props.virtualNetworkId;
186
+ }
187
+ /**
188
+ * Get whether auto-registration is enabled
189
+ * Returns a Terraform interpolation string for JSII compliance
190
+ */
191
+ get registrationEnabled() {
192
+ return `\${${this.terraformResource.fqn}.output.properties.registrationEnabled}`;
193
+ }
194
+ /**
195
+ * Get the resolution policy
196
+ * Returns a Terraform interpolation string for JSII compliance
197
+ */
198
+ get resolutionPolicy() {
199
+ return `\${${this.terraformResource.fqn}.output.properties.resolutionPolicy}`;
200
+ }
201
+ /**
202
+ * Get the provisioning state of the Virtual Network Link
203
+ */
204
+ get provisioningState() {
205
+ return `\${${this.terraformResource.fqn}.output.properties.provisioningState}`;
206
+ }
207
+ /**
208
+ * Get the state of the Virtual Network Link
209
+ */
210
+ get virtualNetworkLinkState() {
211
+ return `\${${this.terraformResource.fqn}.output.properties.virtualNetworkLinkState}`;
212
+ }
213
+ /**
214
+ * Add a tag to the Virtual Network Link
215
+ */
216
+ addTag(key, value) {
217
+ if (!this.props.tags) {
218
+ this.props.tags = {};
219
+ }
220
+ this.props.tags[key] = value;
221
+ }
222
+ /**
223
+ * Remove a tag from the Virtual Network Link
224
+ */
225
+ removeTag(key) {
226
+ if (this.props.tags && this.props.tags[key]) {
227
+ delete this.props.tags[key];
228
+ }
229
+ }
230
+ // =============================================================================
231
+ // PRIVATE HELPER METHODS
232
+ // =============================================================================
233
+ /**
234
+ * Applies ignore changes lifecycle rules if specified in props
235
+ */
236
+ _applyIgnoreChanges() {
237
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
238
+ this.terraformResource.addOverride("lifecycle", {
239
+ ignore_changes: this.props.ignoreChanges,
240
+ });
241
+ }
242
+ }
243
+ }
244
+ exports.PrivateDnsZoneLink = PrivateDnsZoneLink;
245
+ _a = JSII_RTTI_SYMBOL_1;
246
+ PrivateDnsZoneLink[_a] = { fqn: "@microsoft/terraform-cdk-constructs.PrivateDnsZoneLink", version: "1.3.0" };
247
+ (() => {
248
+ azapi_resource_1.AzapiResource.registerSchemas(private_dns_zone_link_schemas_1.PRIVATE_DNS_ZONE_LINK_TYPE, private_dns_zone_link_schemas_1.ALL_PRIVATE_DNS_ZONE_LINK_VERSIONS);
249
+ })();
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kbnMtem9uZS1saW5rLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXByaXZhdGVkbnN6b25lbGluay9saWIvcHJpdmF0ZS1kbnMtem9uZS1saW5rLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILCtCQUErQjtBQUUvQixtRkFHeUM7QUFDekMsOEVBR21EO0FBcUVuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLDhCQUFhO0lBb0JuRCxvQkFBb0I7SUFFcEI7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE4QjtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixtRkFBbUY7UUFFbkYsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLG9DQUFvQztTQUNsRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLHNDQUFzQztTQUNwRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxp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SSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxnRkFBZ0Y7SUFDaEYseUJBQXlCO0lBQ3pCLGdGQUFnRjtJQUVoRjs7T0FFRztJQUNLLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDOUMsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTthQUN6QyxDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUE1T0gsZ0RBNk9DOzs7QUE1T0M7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0IsMERBQTBCLEVBQzFCLGtFQUFrQyxDQUNuQyxDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEF6dXJlIFByaXZhdGUgRE5TIFpvbmUgVmlydHVhbCBOZXR3b3JrIExpbmsgaW1wbGVtZW50YXRpb24gdXNpbmcgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgdW5pZmllZCBpbXBsZW1lbnRhdGlvbiBmb3IgbGlua2luZyB2aXJ0dWFsIG5ldHdvcmtzIHRvIHByaXZhdGUgRE5TIHpvbmVzLlxuICogVmlydHVhbCBOZXR3b3JrIExpbmtzIGVuYWJsZSBETlMgcmVzb2x1dGlvbiBmcm9tIFZOZXRzIGFuZCBvcHRpb25hbGx5IHN1cHBvcnQgYXV0by1yZWdpc3RyYXRpb25cbiAqIG9mIFZNIHJlY29yZHMuXG4gKlxuICogU3VwcG9ydGVkIEFQSSBWZXJzaW9uczpcbiAqIC0gMjAyNC0wNi0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gRnVsbCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gKiAtIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICogLSBBdXRvLXJlZ2lzdHJhdGlvbiBzdXBwb3J0IGZvciBWTSBETlMgcmVjb3Jkc1xuICogLSBSZXNvbHV0aW9uIHBvbGljeSBjb25maWd1cmF0aW9uXG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX1BSSVZBVEVfRE5TX1pPTkVfTElOS19WRVJTSU9OUyxcbiAgUFJJVkFURV9ETlNfWk9ORV9MSU5LX1RZUEUsXG59IGZyb20gXCIuL3ByaXZhdGUtZG5zLXpvbmUtbGluay1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBBenVyZSBQcml2YXRlIEROUyBab25lIFZpcnR1YWwgTmV0d29yayBMaW5rXG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBWaXJ0dWFsIE5ldHdvcmsgTGluayBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogUmVzb3VyY2UgSUQgb2YgdGhlIHBhcmVudCBQcml2YXRlIEROUyBab25lXG4gICAqIEBleGFtcGxlIFwiL3N1YnNjcmlwdGlvbnMvMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwL3Jlc291cmNlR3JvdXBzL3JnL3Byb3ZpZGVycy9NaWNyb3NvZnQuTmV0d29yay9wcml2YXRlRG5zWm9uZXMvaW50ZXJuYWwuY29udG9zby5jb21cIlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpdmF0ZURuc1pvbmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXNvdXJjZSBJRCBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIHRvIGxpbmtcbiAgICogQGV4YW1wbGUgXCIvc3Vic2NyaXB0aW9ucy8wMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAvcmVzb3VyY2VHcm91cHMvcmcvcHJvdmlkZXJzL01pY3Jvc29mdC5OZXR3b3JrL3ZpcnR1YWxOZXR3b3Jrcy92bmV0MVwiXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsTmV0d29ya0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYXV0by1yZWdpc3RyYXRpb24gb2YgdmlydHVhbCBtYWNoaW5lIHJlY29yZHMgaXMgZW5hYmxlZFxuICAgKiBXaGVuIGVuYWJsZWQsIFZNcyBpbiB0aGUgVk5ldCB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnaXN0ZXIgRE5TIHJlY29yZHNcbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaXN0cmF0aW9uRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvbHV0aW9uIHBvbGljeSBmb3IgdGhlIHZpcnR1YWwgbmV0d29yayBsaW5rXG4gICAqIE9ubHkgYXBwbGljYWJsZSB0byBQcml2YXRlIExpbmsgem9uZXMgKHpvbmVzIGNvbnRhaW5pbmcgXCJwcml2YXRlbGluay5cIiBpbiB0aGUgbmFtZSlcbiAgICogLSBcIkRlZmF1bHRcIjogU3RhbmRhcmQgRE5TIHJlc29sdXRpb25cbiAgICogLSBcIk54RG9tYWluUmVkaXJlY3RcIjogRmFsbGJhY2sgdG8gQXp1cmUgRE5TIGZvciB1bnJlc29sdmVkIHF1ZXJpZXNcbiAgICogTm90ZTogVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIHNpbGVudGx5IGlnbm9yZWQgaWYgdGhlIHpvbmUgaXMgbm90IGEgUHJpdmF0ZSBMaW5rIHpvbmVcbiAgICovXG4gIHJlYWRvbmx5IHJlc29sdXRpb25Qb2xpY3k/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaWZlY3ljbGUgcnVsZXMgdG8gaWdub3JlIGNoYW5nZXNcbiAgICogQGV4YW1wbGUgW1widGFnc1wiXVxuICAgKi9cbiAgcmVhZG9ubHkgaWdub3JlQ2hhbmdlcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFZpcnR1YWwgTmV0d29yayByZWZlcmVuY2UgZm9yIHRoZSBQcml2YXRlIEROUyBab25lIGxpbmtcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlRG5zWm9uZUxpbmtWaXJ0dWFsTmV0d29ya1JlZmVyZW5jZSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgVmlydHVhbCBOZXR3b3JrIExpbmsgYm9keVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByaXZhdGVEbnNab25lTGlua1Byb3BlcnRpZXMge1xuICByZWFkb25seSB2aXJ0dWFsTmV0d29yazogUHJpdmF0ZURuc1pvbmVMaW5rVmlydHVhbE5ldHdvcmtSZWZlcmVuY2U7XG4gIHJlYWRvbmx5IHJlZ2lzdHJhdGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuICByZWFkb25seSByZXNvbHV0aW9uUG9saWN5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSByZXNvdXJjZSBib2R5IGludGVyZmFjZSBmb3IgQXp1cmUgVmlydHVhbCBOZXR3b3JrIExpbmsgQVBJIGNhbGxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZURuc1pvbmVMaW5rQm9keSB7XG4gIHJlYWRvbmx5IGxvY2F0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBQcml2YXRlRG5zWm9uZUxpbmtQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEF6dXJlIFByaXZhdGUgRE5TIFpvbmUgVmlydHVhbCBOZXR3b3JrIExpbmsgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBWaXJ0dWFsIE5ldHdvcmsgTGlua3MgY29ubmVjdCBwcml2YXRlIEROUyB6b25lcyB0byB2aXJ0dWFsIG5ldHdvcmtzLCBlbmFibGluZyBETlNcbiAqIHJlc29sdXRpb24gZnJvbSB0aG9zZSBWTmV0cy4gVGhleSBzdXBwb3J0IGF1dG8tcmVnaXN0cmF0aW9uIG9mIFZNIEROUyByZWNvcmRzIGFuZFxuICogY29uZmlndXJhYmxlIHJlc29sdXRpb24gcG9saWNpZXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHZpcnR1YWwgbmV0d29yayBsaW5rOlxuICogY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsodGhpcywgXCJ2bmV0LWxpbmtcIiwge1xuICogICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICogICBwcml2YXRlRG5zWm9uZUlkOiBwcml2YXRlRG5zWm9uZS5pZCxcbiAqICAgdmlydHVhbE5ldHdvcmtJZDogdm5ldC5pZCxcbiAqICAgbG9jYXRpb246IFwiZ2xvYmFsXCJcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBWaXJ0dWFsIG5ldHdvcmsgbGluayB3aXRoIGF1dG8tcmVnaXN0cmF0aW9uOlxuICogY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsodGhpcywgXCJ2bmV0LWxpbmtcIiwge1xuICogICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICogICBwcml2YXRlRG5zWm9uZUlkOiBwcml2YXRlRG5zWm9uZS5pZCxcbiAqICAgdmlydHVhbE5ldHdvcmtJZDogdm5ldC5pZCxcbiAqICAgcmVnaXN0cmF0aW9uRW5hYmxlZDogdHJ1ZSxcbiAqICAgbG9jYXRpb246IFwiZ2xvYmFsXCJcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBWaXJ0dWFsIG5ldHdvcmsgbGluayB3aXRoIHJlc29sdXRpb24gcG9saWN5OlxuICogY29uc3QgbGluayA9IG5ldyBQcml2YXRlRG5zWm9uZUxpbmsodGhpcywgXCJ2bmV0LWxpbmtcIiwge1xuICogICBuYW1lOiBcIm15LXZuZXQtbGlua1wiLFxuICogICBwcml2YXRlRG5zWm9uZUlkOiBwcml2YXRlRG5zWm9uZS5pZCxcbiAqICAgdmlydHVhbE5ldHdvcmtJZDogdm5ldC5pZCxcbiAqICAgcmVzb2x1dGlvblBvbGljeTogXCJOeERvbWFpblJlZGlyZWN0XCIsXG4gKiAgIGxvY2F0aW9uOiBcImdsb2JhbFwiLFxuICogICBhcGlWZXJzaW9uOiBcIjIwMjQtMDYtMDFcIlxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFByaXZhdGVEbnNab25lTGluayBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKFxuICAgICAgUFJJVkFURV9ETlNfWk9ORV9MSU5LX1RZUEUsXG4gICAgICBBTExfUFJJVkFURV9ETlNfWk9ORV9MSU5LX1ZFUlNJT05TLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgVmlydHVhbCBOZXR3b3JrIExpbmsgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBwcm92aXNpb25pbmdTdGF0ZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgdmlydHVhbE5ldHdvcmtMaW5rU3RhdGVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcblxuICAvLyBQdWJsaWMgcHJvcGVydGllc1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIFByaXZhdGUgRE5TIFpvbmUgVmlydHVhbCBOZXR3b3JrIExpbmsgdXNpbmcgdGhlIEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIFZpcnR1YWwgTmV0d29yayBMaW5rXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJpdmF0ZURuc1pvbmVMaW5rUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIEV4dHJhY3QgcHJvcGVydGllcyBmcm9tIHRoZSBBWkFQSSByZXNvdXJjZSBvdXRwdXRzIHVzaW5nIFRlcnJhZm9ybSBpbnRlcnBvbGF0aW9uXG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIFZpcnR1YWwgTmV0d29yayBMaW5rXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIExpbmtcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIExpbmtcIixcbiAgICB9KTtcblxuICAgIHRoaXMucHJvdmlzaW9uaW5nU3RhdGVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwicHJvdmlzaW9uaW5nX3N0YXRlXCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLnByb3Zpc2lvbmluZ1N0YXRlfWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBwcm92aXNpb25pbmcgc3RhdGUgb2YgdGhlIFZpcnR1YWwgTmV0d29yayBMaW5rXCIsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLnZpcnR1YWxOZXR3b3JrTGlua1N0YXRlT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBcInZpcnR1YWxfbmV0d29ya19saW5rX3N0YXRlXCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLnZpcnR1YWxOZXR3b3JrTGlua1N0YXRlfWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBzdGF0ZSBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIExpbmtcIixcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIE92ZXJyaWRlIGxvZ2ljYWwgSURzIHRvIG1hdGNoIG5hbWluZyBjb252ZW50aW9uXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHMgdG8gbWF0Y2ggbmFtaW5nIGNvbnZlbnRpb25cbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9jYXRpb25cIik7XG4gICAgdGhpcy5wcm92aXNpb25pbmdTdGF0ZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcInByb3Zpc2lvbmluZ19zdGF0ZVwiKTtcbiAgICB0aGlzLnZpcnR1YWxOZXR3b3JrTGlua1N0YXRlT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFxuICAgICAgXCJ2aXJ0dWFsX25ldHdvcmtfbGlua19zdGF0ZVwiLFxuICAgICk7XG5cbiAgICAvLyBBcHBseSBpZ25vcmUgY2hhbmdlcyBpZiBzcGVjaWZpZWRcbiAgICB0aGlzLl9hcHBseUlnbm9yZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIHRoaXMgcmVzb3VyY2UgdHlwZVxuICAgKiBQcml2YXRlIEROUyBab25lIExpbmtzIHVzZSBcImdsb2JhbFwiIGxvY2F0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdExvY2F0aW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiZ2xvYmFsXCI7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZXMgdGhlIHBhcmVudCByZXNvdXJjZSBJRCBmb3IgdGhlIFZpcnR1YWwgTmV0d29yayBMaW5rXG4gICAqIFZpcnR1YWwgTmV0d29yayBMaW5rcyBhcmUgY2hpbGQgcmVzb3VyY2VzIG9mIFByaXZhdGUgRE5TIFpvbmVzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVBhcmVudElkKHByb3BzOiBhbnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBQcml2YXRlRG5zWm9uZUxpbmtQcm9wcztcbiAgICByZXR1cm4gdHlwZWRQcm9wcy5wcml2YXRlRG5zWm9uZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMjQtMDYtMDFcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBWaXJ0dWFsIE5ldHdvcmsgTGlua3NcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gUFJJVkFURV9ETlNfWk9ORV9MSU5LX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBQcml2YXRlRG5zWm9uZUxpbmtQcm9wcztcblxuICAgIC8vIERldGVybWluZSBpZiByZXNvbHV0aW9uIHBvbGljeSBzaG91bGQgYmUgaW5jbHVkZWRcbiAgICBsZXQgaW5jbHVkZVJlc29sdXRpb25Qb2xpY3kgPSBmYWxzZTtcbiAgICBpZiAodHlwZWRQcm9wcy5yZXNvbHV0aW9uUG9saWN5KSB7XG4gICAgICAvLyBFeHRyYWN0IHpvbmUgbmFtZSBmcm9tIHRoZSBwcml2YXRlRG5zWm9uZUlkIHRvIGRldGVybWluZSBpZiBpdCdzIGEgUHJpdmF0ZSBMaW5rIHpvbmVcbiAgICAgIGNvbnN0IHpvbmVOYW1lTWF0Y2ggPSB0eXBlZFByb3BzLnByaXZhdGVEbnNab25lSWQubWF0Y2goXG4gICAgICAgIC9cXC9wcml2YXRlRG5zWm9uZXNcXC8oW14vXSspJC8sXG4gICAgICApO1xuICAgICAgY29uc3Qgem9uZU5hbWUgPSB6b25lTmFtZU1hdGNoID8gem9uZU5hbWVNYXRjaFsxXSA6IFwiXCI7XG4gICAgICBpbmNsdWRlUmVzb2x1dGlvblBvbGljeSA9IHpvbmVOYW1lLmluY2x1ZGVzKFwicHJpdmF0ZWxpbmsuXCIpO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIHRoZSBib2R5IHdpdGggYWxsIHByb3BlcnRpZXMgaW5saW5lIHRvIGF2b2lkIHJlYWRvbmx5IGlzc3Vlc1xuICAgIGNvbnN0IGJvZHk6IFByaXZhdGVEbnNab25lTGlua0JvZHkgPSB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbiEsXG4gICAgICAvLyBUYWdzIGFyZSBwYXNzZWQgc2VwYXJhdGVseSB0byBjcmVhdGVBemFwaVJlc291cmNlKCkgZm9yIHByb3BlciBpZGVtcG90ZW5jeVxuICAgICAgLy8gRG8gbm90IGluY2x1ZGUgdGFncyBpbiB0aGUgYm9keVxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICB2aXJ0dWFsTmV0d29yazoge1xuICAgICAgICAgIGlkOiB0eXBlZFByb3BzLnZpcnR1YWxOZXR3b3JrSWQsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lzdHJhdGlvbkVuYWJsZWQ6IHR5cGVkUHJvcHMucmVnaXN0cmF0aW9uRW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgICAgLi4uKGluY2x1ZGVSZXNvbHV0aW9uUG9saWN5ICYmIHtcbiAgICAgICAgICByZXNvbHV0aW9uUG9saWN5OiB0eXBlZFByb3BzLnJlc29sdXRpb25Qb2xpY3ksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGJvZHk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgVklSVFVBTCBORVRXT1JLIExJTksgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFZpcnR1YWwgTmV0d29yayBJRFxuICAgKiBOb3RlOiBUaGlzIHJldHVybnMgdGhlIGlucHV0IHZhbHVlIGFzIEF6dXJlIEFQSSBkb2Vzbid0IHJldHVybiBpdCBpbiBvdXRwdXRcbiAgICovXG4gIHB1YmxpYyBnZXQgdmlydHVhbE5ldHdvcmtJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnZpcnR1YWxOZXR3b3JrSWQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHdoZXRoZXIgYXV0by1yZWdpc3RyYXRpb24gaXMgZW5hYmxlZFxuICAgKiBSZXR1cm5zIGEgVGVycmFmb3JtIGludGVycG9sYXRpb24gc3RyaW5nIGZvciBKU0lJIGNvbXBsaWFuY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgcmVnaXN0cmF0aW9uRW5hYmxlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLnJlZ2lzdHJhdGlvbkVuYWJsZWR9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHJlc29sdXRpb24gcG9saWN5XG4gICAqIFJldHVybnMgYSBUZXJyYWZvcm0gaW50ZXJwb2xhdGlvbiBzdHJpbmcgZm9yIEpTSUkgY29tcGxpYW5jZVxuICAgKi9cbiAgcHVibGljIGdldCByZXNvbHV0aW9uUG9saWN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMucmVzb2x1dGlvblBvbGljeX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHJvdmlzaW9uaW5nIHN0YXRlIG9mIHRoZSBWaXJ0dWFsIE5ldHdvcmsgTGlua1xuICAgKi9cbiAgcHVibGljIGdldCBwcm92aXNpb25pbmdTdGF0ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLnByb3Zpc2lvbmluZ1N0YXRlfWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgVmlydHVhbCBOZXR3b3JrIExpbmtcbiAgICovXG4gIHB1YmxpYyBnZXQgdmlydHVhbE5ldHdvcmtMaW5rU3RhdGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy52aXJ0dWFsTmV0d29ya0xpbmtTdGF0ZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRhZyB0byB0aGUgVmlydHVhbCBOZXR3b3JrIExpbmtcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBWaXJ0dWFsIE5ldHdvcmsgTGlua1xuICAgKi9cbiAgcHVibGljIHJlbW92ZVRhZyhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLnRhZ3MgJiYgdGhpcy5wcm9wcy50YWdzW2tleV0pIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnByb3BzLnRhZ3Nba2V5XTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQUklWQVRFIEhFTFBFUiBNRVRIT0RTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgaWdub3JlIGNoYW5nZXMgbGlmZWN5Y2xlIHJ1bGVzIGlmIHNwZWNpZmllZCBpbiBwcm9wc1xuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlJZ25vcmVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMgJiYgdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGVycmFmb3JtUmVzb3VyY2UuYWRkT3ZlcnJpZGUoXCJsaWZlY3ljbGVcIiwge1xuICAgICAgICBpZ25vcmVfY2hhbmdlczogdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Private DNS Zone Virtual Network Link
3
+ *
4
+ * This test demonstrates basic usage of the PrivateDnsZoneLink construct
5
+ * and validates deployment, idempotency, and cleanup for child resources.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure Private DNS Zone Virtual Network Link
4
+ *
5
+ * This test demonstrates basic usage of the PrivateDnsZoneLink construct
6
+ * and validates deployment, idempotency, and cleanup for child resources.
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 private_dns_zone_1 = require("../../azure-privatednszone/lib/private-dns-zone");
14
+ const resource_group_1 = require("../../azure-resourcegroup/lib/resource-group");
15
+ const virtual_network_1 = require("../../azure-virtualnetwork/lib/virtual-network");
16
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
17
+ const testing_1 = require("../../testing");
18
+ const metadata_1 = require("../../testing/lib/metadata");
19
+ const private_dns_zone_link_1 = require("../lib/private-dns-zone-link");
20
+ // Generate unique test run metadata for this test suite
21
+ const testMetadata = new metadata_1.TestRunMetadata("privatednszonelink-integration", {
22
+ maxAgeHours: 4,
23
+ });
24
+ /**
25
+ * Example stack demonstrating Private DNS Zone Virtual Network Link usage
26
+ */
27
+ class PrivateDnsZoneLinkExampleStack extends testing_1.BaseTestStack {
28
+ constructor(scope, id) {
29
+ super(scope, id, {
30
+ testRunOptions: {
31
+ maxAgeHours: testMetadata.maxAgeHours,
32
+ autoCleanup: testMetadata.autoCleanup,
33
+ cleanupPolicy: testMetadata.cleanupPolicy,
34
+ },
35
+ });
36
+ // Configure AZAPI provider
37
+ new provider_1.AzapiProvider(this, "azapi", {});
38
+ // Generate unique names
39
+ const resourceGroupName = this.generateResourceName("Microsoft.Resources/resourceGroups", "pdnszlink");
40
+ const privateDnsZoneName = this.generateResourceName("Microsoft.Network/privateDnsZones", "link");
41
+ const vnetName = this.generateResourceName("Microsoft.Network/virtualNetworks", "link");
42
+ // Create resource group
43
+ const resourceGroup = new resource_group_1.ResourceGroup(this, "test-rg", {
44
+ name: resourceGroupName,
45
+ location: "eastus",
46
+ tags: {
47
+ ...this.systemTags(),
48
+ purpose: "private-dns-zone-link-testing",
49
+ },
50
+ });
51
+ // Create Private DNS Zone
52
+ const privateDnsZone = new private_dns_zone_1.PrivateDnsZone(this, "private-dns-zone", {
53
+ name: `${privateDnsZoneName}.internal`,
54
+ location: "global",
55
+ resourceGroupId: resourceGroup.id,
56
+ tags: {
57
+ ...this.systemTags(),
58
+ purpose: "testing-vnet-links",
59
+ },
60
+ });
61
+ // Create Virtual Network
62
+ const vnet = new virtual_network_1.VirtualNetwork(this, "test-vnet", {
63
+ name: vnetName,
64
+ location: "eastus",
65
+ resourceGroupId: resourceGroup.id,
66
+ addressSpace: {
67
+ addressPrefixes: ["10.0.0.0/16"],
68
+ },
69
+ tags: {
70
+ ...this.systemTags(),
71
+ purpose: "private-dns-link-testing",
72
+ },
73
+ });
74
+ // Create a single virtual network link with basic configuration
75
+ // This minimal test validates the core functionality of linking a VNet to a Private DNS Zone
76
+ new private_dns_zone_link_1.PrivateDnsZoneLink(this, "basic-link", {
77
+ name: "basic-vnet-link",
78
+ location: "global",
79
+ privateDnsZoneId: privateDnsZone.id,
80
+ virtualNetworkId: vnet.id,
81
+ registrationEnabled: false,
82
+ tags: {
83
+ ...this.systemTags(),
84
+ example: "basic-link",
85
+ },
86
+ // IMPORTANT: Add explicit dependency on VNet to ensure proper destroy ordering.
87
+ // The AZAPI provider may not track references within the JSON body for dependency
88
+ // ordering. This ensures the link is destroyed before the VNet during terraform destroy.
89
+ dependsOn: [vnet.resource],
90
+ });
91
+ // Note: The PrivateDnsZoneLink automatically establishes proper dependency order
92
+ // through the parentId (privateDnsZoneId) for parent-child relationships.
93
+ // However, the virtualNetworkId reference requires explicit dependsOn to ensure
94
+ // proper destroy ordering, as references within the AZAPI body may not be tracked
95
+ // by Terraform for dependency graph construction.
96
+ }
97
+ }
98
+ describe("PrivateDnsZoneLink Integration Test", () => {
99
+ it("should deploy, validate idempotency, and cleanup resources", () => {
100
+ const app = cdktf_1.Testing.app();
101
+ const stack = new PrivateDnsZoneLinkExampleStack(app, "test-privatednszonelink");
102
+ const synthesized = cdktf_1.Testing.fullSynth(stack);
103
+ // This will:
104
+ // 1. Run terraform apply to deploy resources (including parent-child relationships)
105
+ // 2. Run terraform plan to check idempotency (no changes expected)
106
+ // 3. Run terraform destroy to cleanup resources (child resources cleanup before parent)
107
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
108
+ }, 600000); // 10 minute timeout for deployment and cleanup
109
+ });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1kbnMtem9uZS1saW5rLmludGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLXByaXZhdGVkbnN6b25lbGluay90ZXN0L3ByaXZhdGUtZG5zLXpvbmUtbGluay5pbnRlZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUFFSCxpQ0FBZ0M7QUFFaEMsMkNBQXlDO0FBQ3pDLHNGQUFpRjtBQUNqRixpRkFBNkU7QUFDN0Usb0ZBQWdGO0FBQ2hGLGtGQUFvRjtBQUNwRiwyQ0FBNkU7QUFDN0UseURBQTZEO0FBQzdELHdFQUFrRTtBQUVsRSx3REFBd0Q7QUFDeEQsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLGdDQUFnQyxFQUFFO0lBQ3pFLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUg7O0dBRUc7QUFDSCxNQUFNLDhCQUErQixTQUFRLHVCQUFhO0lBQ3hELFlBQVksS0FBZ0IsRUFBRSxFQUFVO1FBQ3RDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsY0FBYyxFQUFFO2dCQUNkLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxhQUFhLEVBQUUsWUFBWSxDQUFDLGFBQWE7YUFDMUM7U0FDRixDQUFDLENBQUM7UUFFSCwyQkFBMkI7UUFDM0IsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsd0JBQXdCO1FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUNqRCxvQ0FBb0MsRUFDcEMsV0FBVyxDQUNaLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDbEQsbUNBQW1DLEVBQ25DLE1BQU0sQ0FDUCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUN4QyxtQ0FBbUMsRUFDbkMsTUFBTSxDQUNQLENBQUM7UUFFRix3QkFBd0I7UUFDeEIsTUFBTSxhQUFhLEdBQUcsSUFBSSw4QkFBYSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDdkQsSUFBSSxFQUFFLGlCQUFpQjtZQUN2QixRQUFRLEVBQUUsUUFBUTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2dCQUNwQixPQUFPLEVBQUUsK0JBQStCO2FBQ3pDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsMEJBQTBCO1FBQzFCLE1BQU0sY0FBYyxHQUFHLElBQUksaUNBQWMsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7WUFDbEUsSUFBSSxFQUFFLEdBQUcsa0JBQWtCLFdBQVc7WUFDdEMsUUFBUSxFQUFFLFFBQVE7WUFDbEIsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSxvQkFBb0I7YUFDOUI7U0FDRixDQUFDLENBQUM7UUFFSCx5QkFBeUI7UUFDekIsTUFBTSxJQUFJLEdBQUcsSUFBSSxnQ0FBYyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDakQsSUFBSSxFQUFFLFFBQVE7WUFDZCxRQUFRLEVBQUUsUUFBUTtZQUNsQixlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsWUFBWSxFQUFFO2dCQUNaLGVBQWUsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUNqQztZQUNELElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSwwQkFBMEI7YUFDcEM7U0FDRixDQUFDLENBQUM7UUFFSCxnRUFBZ0U7UUFDaEUsNkZBQTZGO1FBQzdGLElBQUksMENBQWtCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUN6QyxJQUFJLEVBQUUsaUJBQWlCO1lBQ3ZCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQ25DLGdCQUFnQixFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ3pCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLFlBQVk7YUFDdEI7WUFDRCxnRkFBZ0Y7WUFDaEYsa0ZBQWtGO1lBQ2xGLHlGQUF5RjtZQUN6RixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzNCLENBQUMsQ0FBQztRQUVILGlGQUFpRjtRQUNqRiwwRUFBMEU7UUFDMUUsZ0ZBQWdGO1FBQ2hGLGtGQUFrRjtRQUNsRixrREFBa0Q7SUFDcEQsQ0FBQztDQUNGO0FBRUQsUUFBUSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRTtJQUNuRCxFQUFFLENBQUMsNERBQTRELEVBQUUsR0FBRyxFQUFFO1FBQ3BFLE1BQU0sR0FBRyxHQUFHLGVBQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLDhCQUE4QixDQUM5QyxHQUFHLEVBQ0gseUJBQXlCLENBQzFCLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLGFBQWE7UUFDYixvRkFBb0Y7UUFDcEYsbUVBQW1FO1FBQ25FLHdGQUF3RjtRQUN4RixJQUFBLHVDQUE2QixFQUFDLFdBQVcsRUFBRSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLCtDQUErQztBQUM3RCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSW50ZWdyYXRpb24gdGVzdCBmb3IgQXp1cmUgUHJpdmF0ZSBETlMgWm9uZSBWaXJ0dWFsIE5ldHdvcmsgTGlua1xuICpcbiAqIFRoaXMgdGVzdCBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNhZ2Ugb2YgdGhlIFByaXZhdGVEbnNab25lTGluayBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIGZvciBjaGlsZCByZXNvdXJjZXMuXG4gKlxuICogUnVuIHdpdGg6IG5wbSBydW4gaW50ZWdyYXRpb246bm9zdHJlYW1cbiAqL1xuXG5pbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdGYvbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUHJpdmF0ZURuc1pvbmUgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcHJpdmF0ZWRuc3pvbmUvbGliL3ByaXZhdGUtZG5zLXpvbmVcIjtcbmltcG9ydCB7IFJlc291cmNlR3JvdXAgfSBmcm9tIFwiLi4vLi4vYXp1cmUtcmVzb3VyY2Vncm91cC9saWIvcmVzb3VyY2UtZ3JvdXBcIjtcbmltcG9ydCB7IFZpcnR1YWxOZXR3b3JrIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXZpcnR1YWxuZXR3b3JrL2xpYi92aXJ0dWFsLW5ldHdvcmtcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBCYXNlVGVzdFN0YWNrLCBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBUZXN0UnVuTWV0YWRhdGEgfSBmcm9tIFwiLi4vLi4vdGVzdGluZy9saWIvbWV0YWRhdGFcIjtcbmltcG9ydCB7IFByaXZhdGVEbnNab25lTGluayB9IGZyb20gXCIuLi9saWIvcHJpdmF0ZS1kbnMtem9uZS1saW5rXCI7XG5cbi8vIEdlbmVyYXRlIHVuaXF1ZSB0ZXN0IHJ1biBtZXRhZGF0YSBmb3IgdGhpcyB0ZXN0IHN1aXRlXG5jb25zdCB0ZXN0TWV0YWRhdGEgPSBuZXcgVGVzdFJ1bk1ldGFkYXRhKFwicHJpdmF0ZWRuc3pvbmVsaW5rLWludGVncmF0aW9uXCIsIHtcbiAgbWF4QWdlSG91cnM6IDQsXG59KTtcblxuLyoqXG4gKiBFeGFtcGxlIHN0YWNrIGRlbW9uc3RyYXRpbmcgUHJpdmF0ZSBETlMgWm9uZSBWaXJ0dWFsIE5ldHdvcmsgTGluayB1c2FnZVxuICovXG5jbGFzcyBQcml2YXRlRG5zWm9uZUxpbmtFeGFtcGxlU3RhY2sgZXh0ZW5kcyBCYXNlVGVzdFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVzdFJ1bk9wdGlvbnM6IHtcbiAgICAgICAgbWF4QWdlSG91cnM6IHRlc3RNZXRhZGF0YS5tYXhBZ2VIb3VycyxcbiAgICAgICAgYXV0b0NsZWFudXA6IHRlc3RNZXRhZGF0YS5hdXRvQ2xlYW51cCxcbiAgICAgICAgY2xlYW51cFBvbGljeTogdGVzdE1ldGFkYXRhLmNsZWFudXBQb2xpY3ksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ29uZmlndXJlIEFaQVBJIHByb3ZpZGVyXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICAvLyBHZW5lcmF0ZSB1bmlxdWUgbmFtZXNcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwicGRuc3psaW5rXCIsXG4gICAgKTtcbiAgICBjb25zdCBwcml2YXRlRG5zWm9uZU5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuTmV0d29yay9wcml2YXRlRG5zWm9uZXNcIixcbiAgICAgIFwibGlua1wiLFxuICAgICk7XG4gICAgY29uc3Qgdm5ldE5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuTmV0d29yay92aXJ0dWFsTmV0d29ya3NcIixcbiAgICAgIFwibGlua1wiLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJ0ZXN0LXJnXCIsIHtcbiAgICAgIG5hbWU6IHJlc291cmNlR3JvdXBOYW1lLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgICBwdXJwb3NlOiBcInByaXZhdGUtZG5zLXpvbmUtbGluay10ZXN0aW5nXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFByaXZhdGUgRE5TIFpvbmVcbiAgICBjb25zdCBwcml2YXRlRG5zWm9uZSA9IG5ldyBQcml2YXRlRG5zWm9uZSh0aGlzLCBcInByaXZhdGUtZG5zLXpvbmVcIiwge1xuICAgICAgbmFtZTogYCR7cHJpdmF0ZURuc1pvbmVOYW1lfS5pbnRlcm5hbGAsXG4gICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwidGVzdGluZy12bmV0LWxpbmtzXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIFZpcnR1YWwgTmV0d29ya1xuICAgIGNvbnN0IHZuZXQgPSBuZXcgVmlydHVhbE5ldHdvcmsodGhpcywgXCJ0ZXN0LXZuZXRcIiwge1xuICAgICAgbmFtZTogdm5ldE5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIGFkZHJlc3NTcGFjZToge1xuICAgICAgICBhZGRyZXNzUHJlZml4ZXM6IFtcIjEwLjAuMC4wLzE2XCJdLFxuICAgICAgfSxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwicHJpdmF0ZS1kbnMtbGluay10ZXN0aW5nXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgc2luZ2xlIHZpcnR1YWwgbmV0d29yayBsaW5rIHdpdGggYmFzaWMgY29uZmlndXJhdGlvblxuICAgIC8vIFRoaXMgbWluaW1hbCB0ZXN0IHZhbGlkYXRlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIGxpbmtpbmcgYSBWTmV0IHRvIGEgUHJpdmF0ZSBETlMgWm9uZVxuICAgIG5ldyBQcml2YXRlRG5zWm9uZUxpbmsodGhpcywgXCJiYXNpYy1saW5rXCIsIHtcbiAgICAgIG5hbWU6IFwiYmFzaWMtdm5ldC1saW5rXCIsXG4gICAgICBsb2NhdGlvbjogXCJnbG9iYWxcIixcbiAgICAgIHByaXZhdGVEbnNab25lSWQ6IHByaXZhdGVEbnNab25lLmlkLFxuICAgICAgdmlydHVhbE5ldHdvcmtJZDogdm5ldC5pZCxcbiAgICAgIHJlZ2lzdHJhdGlvbkVuYWJsZWQ6IGZhbHNlLFxuICAgICAgdGFnczoge1xuICAgICAgICAuLi50aGlzLnN5c3RlbVRhZ3MoKSxcbiAgICAgICAgZXhhbXBsZTogXCJiYXNpYy1saW5rXCIsXG4gICAgICB9LFxuICAgICAgLy8gSU1QT1JUQU5UOiBBZGQgZXhwbGljaXQgZGVwZW5kZW5jeSBvbiBWTmV0IHRvIGVuc3VyZSBwcm9wZXIgZGVzdHJveSBvcmRlcmluZy5cbiAgICAgIC8vIFRoZSBBWkFQSSBwcm92aWRlciBtYXkgbm90IHRyYWNrIHJlZmVyZW5jZXMgd2l0aGluIHRoZSBKU09OIGJvZHkgZm9yIGRlcGVuZGVuY3lcbiAgICAgIC8vIG9yZGVyaW5nLiBUaGlzIGVuc3VyZXMgdGhlIGxpbmsgaXMgZGVzdHJveWVkIGJlZm9yZSB0aGUgVk5ldCBkdXJpbmcgdGVycmFmb3JtIGRlc3Ryb3kuXG4gICAgICBkZXBlbmRzT246IFt2bmV0LnJlc291cmNlXSxcbiAgICB9KTtcblxuICAgIC8vIE5vdGU6IFRoZSBQcml2YXRlRG5zWm9uZUxpbmsgYXV0b21hdGljYWxseSBlc3RhYmxpc2hlcyBwcm9wZXIgZGVwZW5kZW5jeSBvcmRlclxuICAgIC8vIHRocm91Z2ggdGhlIHBhcmVudElkIChwcml2YXRlRG5zWm9uZUlkKSBmb3IgcGFyZW50LWNoaWxkIHJlbGF0aW9uc2hpcHMuXG4gICAgLy8gSG93ZXZlciwgdGhlIHZpcnR1YWxOZXR3b3JrSWQgcmVmZXJlbmNlIHJlcXVpcmVzIGV4cGxpY2l0IGRlcGVuZHNPbiB0byBlbnN1cmVcbiAgICAvLyBwcm9wZXIgZGVzdHJveSBvcmRlcmluZywgYXMgcmVmZXJlbmNlcyB3aXRoaW4gdGhlIEFaQVBJIGJvZHkgbWF5IG5vdCBiZSB0cmFja2VkXG4gICAgLy8gYnkgVGVycmFmb3JtIGZvciBkZXBlbmRlbmN5IGdyYXBoIGNvbnN0cnVjdGlvbi5cbiAgfVxufVxuXG5kZXNjcmliZShcIlByaXZhdGVEbnNab25lTGluayBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IFByaXZhdGVEbnNab25lTGlua0V4YW1wbGVTdGFjayhcbiAgICAgIGFwcCxcbiAgICAgIFwidGVzdC1wcml2YXRlZG5zem9uZWxpbmtcIixcbiAgICApO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgLy8gVGhpcyB3aWxsOlxuICAgIC8vIDEuIFJ1biB0ZXJyYWZvcm0gYXBwbHkgdG8gZGVwbG95IHJlc291cmNlcyAoaW5jbHVkaW5nIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzKVxuICAgIC8vIDIuIFJ1biB0ZXJyYWZvcm0gcGxhbiB0byBjaGVjayBpZGVtcG90ZW5jeSAobm8gY2hhbmdlcyBleHBlY3RlZClcbiAgICAvLyAzLiBSdW4gdGVycmFmb3JtIGRlc3Ryb3kgdG8gY2xlYW51cCByZXNvdXJjZXMgKGNoaWxkIHJlc291cmNlcyBjbGVhbnVwIGJlZm9yZSBwYXJlbnQpXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQsIHsgdmVyaWZ5Q2xlYW51cDogdHJ1ZSB9KTtcbiAgfSwgNjAwMDAwKTsgLy8gMTAgbWludXRlIHRpbWVvdXQgZm9yIGRlcGxveW1lbnQgYW5kIGNsZWFudXBcbn0pO1xuIl19
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Comprehensive tests for the PrivateDnsZoneLink implementation
3
+ *
4
+ * This test suite validates the PrivateDnsZoneLink class using the
5
+ * AzapiResource framework. Tests cover automatic version resolution,
6
+ * explicit version pinning, schema validation, property transformation,
7
+ * parent-child resource relationships, and full backward compatibility.
8
+ */
9
+ export {};