@microsoft/terraform-cdk-constructs 1.2.0 → 1.3.1

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 +54630 -26185
  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 +349 -0
  117. package/lib/azure-policyassignment/lib/policy-assignment.js +237 -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 +281 -0
  129. package/lib/azure-policydefinition/lib/policy-definition.js +236 -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 +806 -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 +206 -26
  266. package/lib/core-azure/lib/azapi/azapi-resource.js +379 -91
  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 @@
1
+ export * from "./lib";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtcm9sZWRlZmluaXRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xpYlwiO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./role-definition-schemas";
2
+ export * from "./role-definition";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./role-definition-schemas"), exports);
18
+ __exportStar(require("./role-definition"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWRlZmluaXRpb24vbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBMEM7QUFDMUMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vcm9sZS1kZWZpbml0aW9uLXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3JvbGUtZGVmaW5pdGlvblwiO1xuIl19
@@ -0,0 +1,25 @@
1
+ /**
2
+ * API schemas for Azure Role Definition across all supported versions
3
+ *
4
+ * This file defines the complete API schemas for Microsoft.Authorization/roleDefinitions
5
+ * across all supported API versions. The schemas are used by the VersionedAzapiResource
6
+ * framework for validation, transformation, and version management.
7
+ */
8
+ import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
9
+ /**
10
+ * API Schema for Role Definition version 2022-04-01
11
+ * This is the latest stable API version for role definitions
12
+ */
13
+ export declare const ROLE_DEFINITION_SCHEMA_2022_04_01: ApiSchema;
14
+ /**
15
+ * Version configuration for Role Definition 2022-04-01
16
+ */
17
+ export declare const ROLE_DEFINITION_VERSION_2022_04_01: VersionConfig;
18
+ /**
19
+ * All supported Role Definition versions for registration
20
+ */
21
+ export declare const ALL_ROLE_DEFINITION_VERSIONS: VersionConfig[];
22
+ /**
23
+ * Resource type constant
24
+ */
25
+ export declare const ROLE_DEFINITION_TYPE = "Microsoft.Authorization/roleDefinitions";
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * API schemas for Azure Role Definition across all supported versions
4
+ *
5
+ * This file defines the complete API schemas for Microsoft.Authorization/roleDefinitions
6
+ * across all supported API versions. The schemas are used by the VersionedAzapiResource
7
+ * framework for validation, transformation, and version management.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ROLE_DEFINITION_TYPE = exports.ALL_ROLE_DEFINITION_VERSIONS = exports.ROLE_DEFINITION_VERSION_2022_04_01 = exports.ROLE_DEFINITION_SCHEMA_2022_04_01 = void 0;
11
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
12
+ // =============================================================================
13
+ // COMMON PROPERTY DEFINITIONS
14
+ // =============================================================================
15
+ /**
16
+ * Common property definitions shared across all Role Definition versions
17
+ */
18
+ const COMMON_PROPERTIES = {
19
+ name: {
20
+ dataType: version_interfaces_1.PropertyType.STRING,
21
+ required: false,
22
+ description: "The name of the role definition resource. Automatically generated as a GUID by Terraform's guid() function",
23
+ validation: [
24
+ // Note: No pattern validation here because the name will be a Terraform function
25
+ // guid() that gets evaluated at apply time, not synthesis time.
26
+ // Azure will validate the final GUID format when the resource is created.
27
+ ],
28
+ },
29
+ roleName: {
30
+ dataType: version_interfaces_1.PropertyType.STRING,
31
+ required: true,
32
+ description: "The name of the role definition. This is the display name shown in the Azure portal",
33
+ validation: [
34
+ {
35
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
36
+ message: "Role name is required for role definitions",
37
+ },
38
+ {
39
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
40
+ value: { minLength: 1, maxLength: 128 },
41
+ message: "Role name must be between 1 and 128 characters",
42
+ },
43
+ ],
44
+ },
45
+ description: {
46
+ dataType: version_interfaces_1.PropertyType.STRING,
47
+ required: false,
48
+ description: "The role definition description. Provides detailed information about what the role allows",
49
+ validation: [
50
+ {
51
+ ruleType: version_interfaces_1.ValidationRuleType.VALUE_RANGE,
52
+ value: { minLength: 0, maxLength: 1024 },
53
+ message: "Description must not exceed 1024 characters",
54
+ },
55
+ ],
56
+ },
57
+ type: {
58
+ dataType: version_interfaces_1.PropertyType.STRING,
59
+ required: false,
60
+ defaultValue: "CustomRole",
61
+ description: "The type of role definition. Valid values: BuiltInRole, CustomRole",
62
+ validation: [
63
+ {
64
+ ruleType: version_interfaces_1.ValidationRuleType.PATTERN_MATCH,
65
+ value: "^(BuiltInRole|CustomRole)$",
66
+ message: "Role type must be either BuiltInRole or CustomRole",
67
+ },
68
+ ],
69
+ },
70
+ permissions: {
71
+ dataType: version_interfaces_1.PropertyType.ARRAY,
72
+ required: true,
73
+ description: "An array of permissions objects that define what actions the role can perform",
74
+ validation: [
75
+ {
76
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
77
+ message: "Permissions are required for role definitions",
78
+ },
79
+ {
80
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
81
+ value: version_interfaces_1.PropertyType.ARRAY,
82
+ message: "Permissions must be an array of permission objects",
83
+ },
84
+ ],
85
+ },
86
+ assignableScopes: {
87
+ dataType: version_interfaces_1.PropertyType.ARRAY,
88
+ required: true,
89
+ description: "An array of scopes where this role can be assigned (subscription, resource group, or management group)",
90
+ validation: [
91
+ {
92
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
93
+ message: "Assignable scopes are required for role definitions",
94
+ },
95
+ {
96
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
97
+ value: version_interfaces_1.PropertyType.ARRAY,
98
+ message: "Assignable scopes must be an array of scope strings",
99
+ },
100
+ ],
101
+ },
102
+ ignoreChanges: {
103
+ dataType: version_interfaces_1.PropertyType.ARRAY,
104
+ required: false,
105
+ description: "Array of property names to ignore during updates",
106
+ validation: [
107
+ {
108
+ ruleType: version_interfaces_1.ValidationRuleType.TYPE_CHECK,
109
+ value: version_interfaces_1.PropertyType.ARRAY,
110
+ message: "IgnoreChanges must be an array of strings",
111
+ },
112
+ ],
113
+ },
114
+ };
115
+ // =============================================================================
116
+ // VERSION-SPECIFIC SCHEMAS
117
+ // =============================================================================
118
+ /**
119
+ * API Schema for Role Definition version 2022-04-01
120
+ * This is the latest stable API version for role definitions
121
+ */
122
+ exports.ROLE_DEFINITION_SCHEMA_2022_04_01 = {
123
+ resourceType: "Microsoft.Authorization/roleDefinitions",
124
+ version: "2022-04-01",
125
+ properties: {
126
+ ...COMMON_PROPERTIES,
127
+ },
128
+ required: ["roleName", "permissions", "assignableScopes"],
129
+ optional: ["name", "description", "type", "ignoreChanges"],
130
+ deprecated: [],
131
+ transformationRules: {},
132
+ validationRules: [
133
+ {
134
+ property: "roleName",
135
+ rules: [
136
+ {
137
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
138
+ message: "Role name is required for role definitions",
139
+ },
140
+ ],
141
+ },
142
+ {
143
+ property: "permissions",
144
+ rules: [
145
+ {
146
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
147
+ message: "Permissions are required for role definitions",
148
+ },
149
+ ],
150
+ },
151
+ {
152
+ property: "assignableScopes",
153
+ rules: [
154
+ {
155
+ ruleType: version_interfaces_1.ValidationRuleType.REQUIRED,
156
+ message: "Assignable scopes are required for role definitions",
157
+ },
158
+ ],
159
+ },
160
+ ],
161
+ };
162
+ // =============================================================================
163
+ // VERSION CONFIGURATIONS
164
+ // =============================================================================
165
+ /**
166
+ * Version configuration for Role Definition 2022-04-01
167
+ */
168
+ exports.ROLE_DEFINITION_VERSION_2022_04_01 = {
169
+ version: "2022-04-01",
170
+ schema: exports.ROLE_DEFINITION_SCHEMA_2022_04_01,
171
+ supportLevel: version_interfaces_1.VersionSupportLevel.ACTIVE,
172
+ releaseDate: "2022-04-01",
173
+ deprecationDate: undefined,
174
+ sunsetDate: undefined,
175
+ breakingChanges: [],
176
+ migrationGuide: "/docs/role-definition/migration-2022-04-01",
177
+ changeLog: [
178
+ {
179
+ changeType: "added",
180
+ description: "Stable release of Role Definition API with full support for custom RBAC roles",
181
+ breaking: false,
182
+ },
183
+ ],
184
+ };
185
+ /**
186
+ * All supported Role Definition versions for registration
187
+ */
188
+ exports.ALL_ROLE_DEFINITION_VERSIONS = [
189
+ exports.ROLE_DEFINITION_VERSION_2022_04_01,
190
+ ];
191
+ /**
192
+ * Resource type constant
193
+ */
194
+ exports.ROLE_DEFINITION_TYPE = "Microsoft.Authorization/roleDefinitions";
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS1kZWZpbml0aW9uLXNjaGVtYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtcm9sZWRlZmluaXRpb24vbGliL3JvbGUtZGVmaW5pdGlvbi1zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILDJHQU80RTtBQUU1RSxnRkFBZ0Y7QUFDaEYsOEJBQThCO0FBQzlCLGdGQUFnRjtBQUVoRjs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQTBDO0lBQy9ELElBQUksRUFBRTtRQUNKLFFBQVEsRUFBRSxpQ0FBWSxDQUFDLE1BQU07UUFDN0IsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQ1QsNEdBQTRHO1FBQzlHLFVBQVUsRUFBRTtRQUNWLGlGQUFpRjtRQUNqRixnRUFBZ0U7UUFDaEUsMEVBQTBFO1NBQzNFO0tBQ0Y7SUFDRCxRQUFRLEVBQUU7UUFDUixRQUFRLEVBQUUsaUNBQVksQ0FBQyxNQUFNO1FBQzdCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsV0FBVyxFQUNULHFGQUFxRjtRQUN2RixVQUFVLEVBQUU7WUFDVjtnQkFDRSxRQUFRLEVBQUUsdUNBQWtCLENBQUMsUUFBUTtnQkFDckMsT0FBTyxFQUFFLDRDQUE0QzthQUN0RDtZQUNEO2dCQUNFLFFBQVEsRUFBRSx1Q0FBa0IsQ0FBQyxXQUFXO2dCQUN4QyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3ZDLE9BQU8sRUFBRSxnREFBZ0Q7YUFDMUQ7U0FDRjtLQUNGO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsUUFBUSxFQUFFLGlDQUFZLENBQUMsTUFBTTtRQUM3QixRQUFRLEVBQUUsS0FBSztRQUNmLFdBQVcsRUFDVCwyRkFBMkY7UUFDN0YsVUFBVSxFQUFFO1lBQ1Y7Z0JBQ0UsUUFBUSxFQUFFLHVDQUFrQixDQUFDLFdBQVc7Z0JBQ3hDLEtBQUssRUFBRSxF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RjtLQUNGO0NBQ0YsQ0FBQztBQUVGLGdGQUFnRjtBQUNoRix5QkFBeUI7QUFDekIsZ0ZBQWdGO0FBRWhGOztHQUVHO0FBQ1UsUUFBQSxrQ0FBa0MsR0FBa0I7SUFDL0QsT0FBTyxFQUFFLFlBQVk7SUFDckIsTUFBTSxFQUFFLHlDQUFpQztJQUN6QyxZQUFZLEVBQUUsd0NBQW1CLENBQUMsTUFBTTtJQUN4QyxXQUFXLEVBQUUsWUFBWTtJQUN6QixlQUFlLEVBQUUsU0FBUztJQUMxQixVQUFVLEVBQUUsU0FBUztJQUNyQixlQUFlLEVBQUUsRUFBRTtJQUNuQixjQUFjLEVBQUUsNENBQTRDO0lBQzVELFNBQVMsRUFBRTtRQUNUO1lBQ0UsVUFBVSxFQUFFLE9BQU87WUFDbkIsV0FBVyxFQUNULCtFQUErRTtZQUNqRixRQUFRLEVBQUUsS0FBSztTQUNoQjtLQUNGO0NBQ0YsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBb0I7SUFDM0QsMENBQWtDO0NBQ25DLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsb0JBQW9CLEdBQUcseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFQSSBzY2hlbWFzIGZvciBBenVyZSBSb2xlIERlZmluaXRpb24gYWNyb3NzIGFsbCBzdXBwb3J0ZWQgdmVyc2lvbnNcbiAqXG4gKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgY29tcGxldGUgQVBJIHNjaGVtYXMgZm9yIE1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVEZWZpbml0aW9uc1xuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLiBUaGUgc2NoZW1hcyBhcmUgdXNlZCBieSB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICogZnJhbWV3b3JrIGZvciB2YWxpZGF0aW9uLCB0cmFuc2Zvcm1hdGlvbiwgYW5kIHZlcnNpb24gbWFuYWdlbWVudC5cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgUHJvcGVydHlUeXBlLFxuICBWYWxpZGF0aW9uUnVsZVR5cGUsXG4gIFZlcnNpb25Db25maWcsXG4gIFZlcnNpb25TdXBwb3J0TGV2ZWwsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTU1PTiBQUk9QRVJUWSBERUZJTklUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydHkgZGVmaW5pdGlvbnMgc2hhcmVkIGFjcm9zcyBhbGwgUm9sZSBEZWZpbml0aW9uIHZlcnNpb25zXG4gKi9cbmNvbnN0IENPTU1PTl9QUk9QRVJUSUVTOiB7IFtrZXk6IHN0cmluZ106IFByb3BlcnR5RGVmaW5pdGlvbiB9ID0ge1xuICBuYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgbmFtZSBvZiB0aGUgcm9sZSBkZWZpbml0aW9uIHJlc291cmNlLiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBhcyBhIEdVSUQgYnkgVGVycmFmb3JtJ3MgZ3VpZCgpIGZ1bmN0aW9uXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAgLy8gTm90ZTogTm8gcGF0dGVybiB2YWxpZGF0aW9uIGhlcmUgYmVjYXVzZSB0aGUgbmFtZSB3aWxsIGJlIGEgVGVycmFmb3JtIGZ1bmN0aW9uXG4gICAgICAvLyBndWlkKCkgdGhhdCBnZXRzIGV2YWx1YXRlZCBhdCBhcHBseSB0aW1lLCBub3Qgc3ludGhlc2lzIHRpbWUuXG4gICAgICAvLyBBenVyZSB3aWxsIHZhbGlkYXRlIHRoZSBmaW5hbCBHVUlEIGZvcm1hdCB3aGVuIHRoZSByZXNvdXJjZSBpcyBjcmVhdGVkLlxuICAgIF0sXG4gIH0sXG4gIHJvbGVOYW1lOiB7XG4gICAgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSBuYW1lIG9mIHRoZSByb2xlIGRlZmluaXRpb24uIFRoaXMgaXMgdGhlIGRpc3BsYXkgbmFtZSBzaG93biBpbiB0aGUgQXp1cmUgcG9ydGFsXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlJvbGUgbmFtZSBpcyByZXF1aXJlZCBmb3Igcm9sZSBkZWZpbml0aW9uc1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5WQUxVRV9SQU5HRSxcbiAgICAgICAgdmFsdWU6IHsgbWluTGVuZ3RoOiAxLCBtYXhMZW5ndGg6IDEyOCB9LFxuICAgICAgICBtZXNzYWdlOiBcIlJvbGUgbmFtZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTI4IGNoYXJhY3RlcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgZGVzY3JpcHRpb246IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIlRoZSByb2xlIGRlZmluaXRpb24gZGVzY3JpcHRpb24uIFByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdGhlIHJvbGUgYWxsb3dzXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFLFxuICAgICAgICB2YWx1ZTogeyBtaW5MZW5ndGg6IDAsIG1heExlbmd0aDogMTAyNCB9LFxuICAgICAgICBtZXNzYWdlOiBcIkRlc2NyaXB0aW9uIG11c3Qgbm90IGV4Y2VlZCAxMDI0IGNoYXJhY3RlcnNcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgdHlwZToge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZWZhdWx0VmFsdWU6IFwiQ3VzdG9tUm9sZVwiLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJUaGUgdHlwZSBvZiByb2xlIGRlZmluaXRpb24uIFZhbGlkIHZhbHVlczogQnVpbHRJblJvbGUsIEN1c3RvbVJvbGVcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUEFUVEVSTl9NQVRDSCxcbiAgICAgICAgdmFsdWU6IFwiXihCdWlsdEluUm9sZXxDdXN0b21Sb2xlKSRcIixcbiAgICAgICAgbWVzc2FnZTogXCJSb2xlIHR5cGUgbXVzdCBiZSBlaXRoZXIgQnVpbHRJblJvbGUgb3IgQ3VzdG9tUm9sZVwiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBwZXJtaXNzaW9uczoge1xuICAgIGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICBcIkFuIGFycmF5IG9mIHBlcm1pc3Npb25zIG9iamVjdHMgdGhhdCBkZWZpbmUgd2hhdCBhY3Rpb25zIHRoZSByb2xlIGNhbiBwZXJmb3JtXCIsXG4gICAgdmFsaWRhdGlvbjogW1xuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVELFxuICAgICAgICBtZXNzYWdlOiBcIlBlcm1pc3Npb25zIGFyZSByZXF1aXJlZCBmb3Igcm9sZSBkZWZpbml0aW9uc1wiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5UWVBFX0NIRUNLLFxuICAgICAgICB2YWx1ZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgICAgICBtZXNzYWdlOiBcIlBlcm1pc3Npb25zIG11c3QgYmUgYW4gYXJyYXkgb2YgcGVybWlzc2lvbiBvYmplY3RzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGFzc2lnbmFibGVTY29wZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgXCJBbiBhcnJheSBvZiBzY29wZXMgd2hlcmUgdGhpcyByb2xlIGNhbiBiZSBhc3NpZ25lZCAoc3Vic2NyaXB0aW9uLCByZXNvdXJjZSBncm91cCwgb3IgbWFuYWdlbWVudCBncm91cClcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgIG1lc3NhZ2U6IFwiQXNzaWduYWJsZSBzY29wZXMgYXJlIHJlcXVpcmVkIGZvciByb2xlIGRlZmluaXRpb25zXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBydWxlVHlwZTogVmFsaWRhdGlvblJ1bGVUeXBlLlRZUEVfQ0hFQ0ssXG4gICAgICAgIHZhbHVlOiBQcm9wZXJ0eVR5cGUuQVJSQVksXG4gICAgICAgIG1lc3NhZ2U6IFwiQXNzaWduYWJsZSBzY29wZXMgbXVzdCBiZSBhbiBhcnJheSBvZiBzY29wZSBzdHJpbmdzXCIsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIGlnbm9yZUNoYW5nZXM6IHtcbiAgICBkYXRhVHlwZTogUHJvcGVydHlUeXBlLkFSUkFZLFxuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBkZXNjcmlwdGlvbjogXCJBcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyB0byBpZ25vcmUgZHVyaW5nIHVwZGF0ZXNcIixcbiAgICB2YWxpZGF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSyxcbiAgICAgICAgdmFsdWU6IFByb3BlcnR5VHlwZS5BUlJBWSxcbiAgICAgICAgbWVzc2FnZTogXCJJZ25vcmVDaGFuZ2VzIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nc1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04tU1BFQ0lGSUMgU0NIRU1BU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBUEkgU2NoZW1hIGZvciBSb2xlIERlZmluaXRpb24gdmVyc2lvbiAyMDIyLTA0LTAxXG4gKiBUaGlzIGlzIHRoZSBsYXRlc3Qgc3RhYmxlIEFQSSB2ZXJzaW9uIGZvciByb2xlIGRlZmluaXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBST0xFX0RFRklOSVRJT05fU0NIRU1BXzIwMjJfMDRfMDE6IEFwaVNjaGVtYSA9IHtcbiAgcmVzb3VyY2VUeXBlOiBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVEZWZpbml0aW9uc1wiLFxuICB2ZXJzaW9uOiBcIjIwMjItMDQtMDFcIixcbiAgcHJvcGVydGllczoge1xuICAgIC4uLkNPTU1PTl9QUk9QRVJUSUVTLFxuICB9LFxuICByZXF1aXJlZDogW1wicm9sZU5hbWVcIiwgXCJwZXJtaXNzaW9uc1wiLCBcImFzc2lnbmFibGVTY29wZXNcIl0sXG4gIG9wdGlvbmFsOiBbXCJuYW1lXCIsIFwiZGVzY3JpcHRpb25cIiwgXCJ0eXBlXCIsIFwiaWdub3JlQ2hhbmdlc1wiXSxcbiAgZGVwcmVjYXRlZDogW10sXG4gIHRyYW5zZm9ybWF0aW9uUnVsZXM6IHt9LFxuICB2YWxpZGF0aW9uUnVsZXM6IFtcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJyb2xlTmFtZVwiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJSb2xlIG5hbWUgaXMgcmVxdWlyZWQgZm9yIHJvbGUgZGVmaW5pdGlvbnNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJwZXJtaXNzaW9uc1wiLFxuICAgICAgcnVsZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHJ1bGVUeXBlOiBWYWxpZGF0aW9uUnVsZVR5cGUuUkVRVUlSRUQsXG4gICAgICAgICAgbWVzc2FnZTogXCJQZXJtaXNzaW9ucyBhcmUgcmVxdWlyZWQgZm9yIHJvbGUgZGVmaW5pdGlvbnNcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm9wZXJ0eTogXCJhc3NpZ25hYmxlU2NvcGVzXCIsXG4gICAgICBydWxlczogW1xuICAgICAgICB7XG4gICAgICAgICAgcnVsZVR5cGU6IFZhbGlkYXRpb25SdWxlVHlwZS5SRVFVSVJFRCxcbiAgICAgICAgICBtZXNzYWdlOiBcIkFzc2lnbmFibGUgc2NvcGVzIGFyZSByZXF1aXJlZCBmb3Igcm9sZSBkZWZpbml0aW9uc1wiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFZFUlNJT04gQ09ORklHVVJBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogVmVyc2lvbiBjb25maWd1cmF0aW9uIGZvciBSb2xlIERlZmluaXRpb24gMjAyMi0wNC0wMVxuICovXG5leHBvcnQgY29uc3QgUk9MRV9ERUZJTklUSU9OX1ZFUlNJT05fMjAyMl8wNF8wMTogVmVyc2lvbkNvbmZpZyA9IHtcbiAgdmVyc2lvbjogXCIyMDIyLTA0LTAxXCIsXG4gIHNjaGVtYTogUk9MRV9ERUZJTklUSU9OX1NDSEVNQV8yMDIyXzA0XzAxLFxuICBzdXBwb3J0TGV2ZWw6IFZlcnNpb25TdXBwb3J0TGV2ZWwuQUNUSVZFLFxuICByZWxlYXNlRGF0ZTogXCIyMDIyLTA0LTAxXCIsXG4gIGRlcHJlY2F0aW9uRGF0ZTogdW5kZWZpbmVkLFxuICBzdW5zZXREYXRlOiB1bmRlZmluZWQsXG4gIGJyZWFraW5nQ2hhbmdlczogW10sXG4gIG1pZ3JhdGlvbkd1aWRlOiBcIi9kb2NzL3JvbGUtZGVmaW5pdGlvbi9taWdyYXRpb24tMjAyMi0wNC0wMVwiLFxuICBjaGFuZ2VMb2c6IFtcbiAgICB7XG4gICAgICBjaGFuZ2VUeXBlOiBcImFkZGVkXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJTdGFibGUgcmVsZWFzZSBvZiBSb2xlIERlZmluaXRpb24gQVBJIHdpdGggZnVsbCBzdXBwb3J0IGZvciBjdXN0b20gUkJBQyByb2xlc1wiLFxuICAgICAgYnJlYWtpbmc6IGZhbHNlLFxuICAgIH0sXG4gIF0sXG59O1xuXG4vKipcbiAqIEFsbCBzdXBwb3J0ZWQgUm9sZSBEZWZpbml0aW9uIHZlcnNpb25zIGZvciByZWdpc3RyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFMTF9ST0xFX0RFRklOSVRJT05fVkVSU0lPTlM6IFZlcnNpb25Db25maWdbXSA9IFtcbiAgUk9MRV9ERUZJTklUSU9OX1ZFUlNJT05fMjAyMl8wNF8wMSxcbl07XG5cbi8qKlxuICogUmVzb3VyY2UgdHlwZSBjb25zdGFudFxuICovXG5leHBvcnQgY29uc3QgUk9MRV9ERUZJTklUSU9OX1RZUEUgPSBcIk1pY3Jvc29mdC5BdXRob3JpemF0aW9uL3JvbGVEZWZpbml0aW9uc1wiO1xuIl19
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Unified Azure Role Definition implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a version-aware implementation for managing Azure Role Definitions
5
+ * using the AZAPI provider. Role definitions define custom RBAC roles with specific
6
+ * permissions that can be assigned to users, groups, or service principals.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2022-04-01 (Active, Latest)
10
+ *
11
+ * Features:
12
+ * - Automatic latest version resolution when no version is specified
13
+ * - Explicit version pinning for stability requirements
14
+ * - Schema-driven validation and transformation
15
+ * - Support for custom role permissions (actions, notActions, dataActions, notDataActions)
16
+ * - Assignable scopes configuration (subscription, resource group, management group)
17
+ * - JSII compliance for multi-language support
18
+ */
19
+ import * as cdktf from "cdktf";
20
+ import { Construct } from "constructs";
21
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
22
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
23
+ /**
24
+ * Permission configuration for role definitions
25
+ * Defines what actions the role can perform on control plane and data plane
26
+ */
27
+ export interface RoleDefinitionPermission {
28
+ /**
29
+ * Array of allowed control plane actions
30
+ * Actions are operations that can be performed on Azure resources
31
+ *
32
+ * @example ["Microsoft.Compute/virtualMachines/read", "Microsoft.Compute/virtualMachines/start/action"]
33
+ */
34
+ readonly actions?: string[];
35
+ /**
36
+ * Array of excluded control plane actions
37
+ * Actions that are explicitly denied even if included in actions array
38
+ *
39
+ * @example ["Microsoft.Compute/virtualMachines/delete"]
40
+ */
41
+ readonly notActions?: string[];
42
+ /**
43
+ * Array of allowed data plane actions
44
+ * Data actions are operations that can be performed on data within resources
45
+ *
46
+ * @example ["Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"]
47
+ */
48
+ readonly dataActions?: string[];
49
+ /**
50
+ * Array of excluded data plane actions
51
+ * Data actions that are explicitly denied
52
+ *
53
+ * @example ["Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete"]
54
+ */
55
+ readonly notDataActions?: string[];
56
+ }
57
+ /**
58
+ * Properties for the unified Azure Role Definition
59
+ *
60
+ * Extends AzapiResourceProps with Role Definition specific properties
61
+ */
62
+ export interface RoleDefinitionProps extends AzapiResourceProps {
63
+ /**
64
+ * The name of the role definition
65
+ * This is the display name shown in the Azure portal
66
+ * Required property
67
+ *
68
+ * @example "Virtual Machine Reader"
69
+ */
70
+ readonly roleName: string;
71
+ /**
72
+ * The role definition description
73
+ * Provides detailed information about what the role allows
74
+ *
75
+ * @example "Can view virtual machines and their properties"
76
+ */
77
+ readonly description?: string;
78
+ /**
79
+ * The type of role definition
80
+ * @default "CustomRole"
81
+ * @example "CustomRole", "BuiltInRole"
82
+ */
83
+ readonly type?: string;
84
+ /**
85
+ * An array of permissions objects that define what actions the role can perform
86
+ * Required property
87
+ *
88
+ * @example
89
+ * [
90
+ * {
91
+ * actions: ["Microsoft.Compute/virtualMachines/read"],
92
+ * notActions: [],
93
+ * dataActions: [],
94
+ * notDataActions: []
95
+ * }
96
+ * ]
97
+ */
98
+ readonly permissions: RoleDefinitionPermission[];
99
+ /**
100
+ * An array of scopes where this role can be assigned
101
+ * Can include subscription, resource group, or management group scopes
102
+ * Required property
103
+ *
104
+ * @example ["/subscriptions/00000000-0000-0000-0000-000000000000"]
105
+ * @example ["/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-name"]
106
+ */
107
+ readonly assignableScopes: string[];
108
+ /**
109
+ * The lifecycle rules to ignore changes
110
+ * @example ["description"]
111
+ */
112
+ readonly ignoreChanges?: string[];
113
+ }
114
+ /**
115
+ * Properties interface for Azure Role Definition
116
+ * This is required for JSII compliance to support multi-language code generation
117
+ */
118
+ export interface RoleDefinitionProperties {
119
+ /**
120
+ * The name of the role definition
121
+ */
122
+ readonly roleName: string;
123
+ /**
124
+ * The role definition description
125
+ */
126
+ readonly description?: string;
127
+ /**
128
+ * The type of role definition
129
+ */
130
+ readonly type?: string;
131
+ /**
132
+ * An array of permissions objects
133
+ */
134
+ readonly permissions: RoleDefinitionPermission[];
135
+ /**
136
+ * An array of assignable scopes
137
+ */
138
+ readonly assignableScopes: string[];
139
+ }
140
+ /**
141
+ * The resource body interface for Azure Role Definition API calls
142
+ * This matches the Azure REST API schema for role definitions
143
+ */
144
+ export interface RoleDefinitionBody {
145
+ /**
146
+ * The properties of the role definition
147
+ */
148
+ readonly properties: RoleDefinitionProperties;
149
+ }
150
+ /**
151
+ * Unified Azure Role Definition implementation
152
+ *
153
+ * This class provides a single, version-aware implementation for managing Azure
154
+ * Role Definitions. It automatically handles version resolution, schema validation,
155
+ * and property transformation.
156
+ *
157
+ * Note: Role definitions are tenant-specific resources deployed at subscription or
158
+ * management group scope. Unlike most Azure resources, they do not have a location
159
+ * property as they are not region-specific.
160
+ *
161
+ * @example
162
+ * Basic custom role definition for read-only access to compute resources
163
+ *
164
+ * Advanced features like data plane actions and complex permissions are supported
165
+ *
166
+ * @stability stable
167
+ */
168
+ export declare class RoleDefinition extends AzapiResource {
169
+ /**
170
+ * The input properties for this Role Definition instance
171
+ */
172
+ readonly props: RoleDefinitionProps;
173
+ readonly idOutput: cdktf.TerraformOutput;
174
+ readonly nameOutput: cdktf.TerraformOutput;
175
+ /**
176
+ * Creates a new Azure Role Definition using the VersionedAzapiResource framework
177
+ *
178
+ * The constructor automatically handles version resolution, schema registration,
179
+ * validation, and resource creation.
180
+ *
181
+ * @param scope - The scope in which to define this construct
182
+ * @param id - The unique identifier for this instance
183
+ * @param props - Configuration properties for the Role Definition
184
+ */
185
+ constructor(scope: Construct, id: string, props: RoleDefinitionProps);
186
+ /**
187
+ * Gets the default API version to use when no explicit version is specified
188
+ * Returns the most recent stable version as the default
189
+ */
190
+ protected defaultVersion(): string;
191
+ /**
192
+ * Gets the Azure resource type for Role Definitions
193
+ */
194
+ protected resourceType(): string;
195
+ /**
196
+ * Gets the API schema for the resolved version
197
+ * Uses the framework's schema resolution to get the appropriate schema
198
+ */
199
+ protected apiSchema(): ApiSchema;
200
+ /**
201
+ * Overrides the name resolution to generate deterministic GUIDs for role definitions
202
+ *
203
+ * Role definitions require GUID format IDs. This implementation generates a deterministic
204
+ * UUID based on the role definition's key properties to ensure:
205
+ * - Same GUID is generated on re-deployments with same parameters
206
+ * - Idempotent deployments (no duplicate role definitions)
207
+ * - Consistent behavior across deployment runs
208
+ */
209
+ protected resolveName(props: AzapiResourceProps): string;
210
+ /**
211
+ * Creates the resource body for the Azure API call
212
+ * Transforms the input properties into the JSON format expected by Azure REST API
213
+ *
214
+ * Note: Role definitions do not have a location property as they are
215
+ * tenant-specific resources deployed at subscription or management group scope.
216
+ */
217
+ protected createResourceBody(props: any): any;
218
+ /**
219
+ * Get the full resource identifier for use in other Azure resources
220
+ * Alias for the id property
221
+ */
222
+ get resourceId(): string;
223
+ /**
224
+ * Get the role name
225
+ */
226
+ get roleName(): string;
227
+ /**
228
+ * Get the role type
229
+ */
230
+ get roleType(): string;
231
+ /**
232
+ * Applies ignore changes lifecycle rules if specified in props
233
+ * Always includes body.properties.assignableScopes to handle Azure API format normalization
234
+ */
235
+ private _applyIgnoreChanges;
236
+ }