@microsoft/terraform-cdk-constructs 2.2.0 → 2.5.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 (259) hide show
  1. package/.jsii +64029 -35477
  2. package/API.md +89314 -49618
  3. package/README.md +15 -0
  4. package/cdktf.json +1 -1
  5. package/docs/azure-api-version-update-pipeline.md +271 -0
  6. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  7. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  8. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  9. package/lib/azure-applicationinsights/index.d.ts +7 -0
  10. package/lib/azure-applicationinsights/index.js +24 -0
  11. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  12. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  13. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  14. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  15. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  16. package/lib/azure-applicationinsights/lib/index.js +22 -0
  17. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  18. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  19. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  20. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +1 -1
  22. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +2 -2
  23. package/lib/azure-containerapps/lib/container-app-environment.js +1 -1
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +1 -1
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +2 -2
  26. package/lib/azure-containerapps/lib/container-app.js +1 -1
  27. package/lib/azure-containerapps/lib/container-apps-job-schemas.d.ts +8 -0
  28. package/lib/azure-containerapps/lib/container-apps-job-schemas.js +179 -0
  29. package/lib/azure-containerapps/lib/container-apps-job.d.ts +128 -0
  30. package/lib/azure-containerapps/lib/container-apps-job.js +81 -0
  31. package/lib/azure-containerapps/lib/index.d.ts +2 -0
  32. package/lib/azure-containerapps/lib/index.js +3 -1
  33. package/lib/azure-containerapps/test/container-apps-job.integ.d.ts +6 -0
  34. package/lib/azure-containerapps/test/container-apps-job.integ.js +95 -0
  35. package/lib/azure-containerapps/test/container-apps-job.spec.d.ts +1 -0
  36. package/lib/azure-containerapps/test/container-apps-job.spec.js +261 -0
  37. package/lib/azure-containerregistry/index.d.ts +1 -0
  38. package/lib/azure-containerregistry/index.js +18 -0
  39. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  40. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  41. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  42. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  43. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  44. package/lib/azure-containerregistry/lib/index.js +19 -0
  45. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  46. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  47. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  48. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  49. package/lib/azure-cosmosdb/index.d.ts +1 -0
  50. package/lib/azure-cosmosdb/index.js +18 -0
  51. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  52. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  53. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  54. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  55. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  56. package/lib/azure-cosmosdb/lib/index.js +19 -0
  57. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  58. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  59. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  60. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  61. package/lib/azure-dataexplorer/index.d.ts +1 -0
  62. package/lib/azure-dataexplorer/index.js +18 -0
  63. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.d.ts +5 -0
  64. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.js +131 -0
  65. package/lib/azure-dataexplorer/lib/data-explorer-cluster.d.ts +54 -0
  66. package/lib/azure-dataexplorer/lib/data-explorer-cluster.js +91 -0
  67. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.d.ts +5 -0
  68. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.js +78 -0
  69. package/lib/azure-dataexplorer/lib/data-explorer-database.d.ts +24 -0
  70. package/lib/azure-dataexplorer/lib/data-explorer-database.js +68 -0
  71. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.d.ts +5 -0
  72. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.js +94 -0
  73. package/lib/azure-dataexplorer/lib/data-explorer-table.d.ts +25 -0
  74. package/lib/azure-dataexplorer/lib/data-explorer-table.js +62 -0
  75. package/lib/azure-dataexplorer/lib/index.d.ts +6 -0
  76. package/lib/azure-dataexplorer/lib/index.js +23 -0
  77. package/lib/azure-dataexplorer/test/data-explorer.integ.d.ts +1 -0
  78. package/lib/azure-dataexplorer/test/data-explorer.integ.js +78 -0
  79. package/lib/azure-dataexplorer/test/data-explorer.spec.d.ts +1 -0
  80. package/lib/azure-dataexplorer/test/data-explorer.spec.js +248 -0
  81. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  82. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  83. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  84. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  85. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  86. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  87. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  88. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  89. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  90. package/lib/azure-eventgrideventsubscription/index.d.ts +1 -0
  91. package/lib/azure-eventgrideventsubscription/index.js +18 -0
  92. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.d.ts +5 -0
  93. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.js +151 -0
  94. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.d.ts +59 -0
  95. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.js +67 -0
  96. package/lib/azure-eventgrideventsubscription/lib/index.d.ts +2 -0
  97. package/lib/azure-eventgrideventsubscription/lib/index.js +19 -0
  98. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.d.ts +1 -0
  99. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.js +100 -0
  100. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.d.ts +1 -0
  101. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.js +242 -0
  102. package/lib/azure-eventgridsystemtopic/index.d.ts +1 -0
  103. package/lib/azure-eventgridsystemtopic/index.js +18 -0
  104. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.d.ts +5 -0
  105. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.js +164 -0
  106. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.d.ts +46 -0
  107. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.js +68 -0
  108. package/lib/azure-eventgridsystemtopic/lib/index.d.ts +2 -0
  109. package/lib/azure-eventgridsystemtopic/lib/index.js +19 -0
  110. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.d.ts +1 -0
  111. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.js +64 -0
  112. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.d.ts +1 -0
  113. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.js +241 -0
  114. package/lib/azure-eventhub/index.d.ts +7 -0
  115. package/lib/azure-eventhub/index.js +24 -0
  116. package/lib/azure-eventhub/lib/event-hub-namespace.d.ts +204 -0
  117. package/lib/azure-eventhub/lib/event-hub-namespace.js +178 -0
  118. package/lib/azure-eventhub/lib/event-hub-schemas.d.ts +63 -0
  119. package/lib/azure-eventhub/lib/event-hub-schemas.js +370 -0
  120. package/lib/azure-eventhub/lib/event-hub.d.ts +153 -0
  121. package/lib/azure-eventhub/lib/event-hub.js +171 -0
  122. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  123. package/lib/azure-eventhub/lib/index.js +23 -0
  124. package/lib/azure-eventhub/test/event-hub.integ.d.ts +9 -0
  125. package/lib/azure-eventhub/test/event-hub.integ.js +113 -0
  126. package/lib/azure-eventhub/test/event-hub.spec.d.ts +8 -0
  127. package/lib/azure-eventhub/test/event-hub.spec.js +438 -0
  128. package/lib/azure-functionapp/index.d.ts +1 -0
  129. package/lib/azure-functionapp/index.js +18 -0
  130. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  131. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  132. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  133. package/lib/azure-functionapp/lib/function-app.js +223 -0
  134. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  135. package/lib/azure-functionapp/lib/index.js +19 -0
  136. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  137. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  138. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  139. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  140. package/lib/azure-keyvault/index.d.ts +1 -0
  141. package/lib/azure-keyvault/index.js +18 -0
  142. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  143. package/lib/azure-keyvault/lib/index.js +19 -0
  144. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  145. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  146. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  147. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  148. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  149. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  150. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  151. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  152. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
  153. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  154. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  155. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  156. package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
  157. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  158. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  159. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
  160. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  161. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  162. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  163. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  164. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  165. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  166. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  167. package/lib/azure-sreagent/index.d.ts +1 -0
  168. package/lib/azure-sreagent/index.js +18 -0
  169. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  170. package/lib/azure-sreagent/lib/index.js +19 -0
  171. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  172. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  173. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  174. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  175. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  176. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  177. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  178. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  179. package/lib/azure-staticwebapp/index.d.ts +1 -0
  180. package/lib/azure-staticwebapp/index.js +18 -0
  181. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  182. package/lib/azure-staticwebapp/lib/index.js +19 -0
  183. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  184. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  185. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  186. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  187. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  188. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  189. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  190. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  191. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  192. package/lib/azure-storageblobcontainer/index.d.ts +1 -0
  193. package/lib/azure-storageblobcontainer/index.js +18 -0
  194. package/lib/azure-storageblobcontainer/lib/index.d.ts +2 -0
  195. package/lib/azure-storageblobcontainer/lib/index.js +19 -0
  196. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.d.ts +5 -0
  197. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.js +108 -0
  198. package/lib/azure-storageblobcontainer/lib/storage-blob-container.d.ts +37 -0
  199. package/lib/azure-storageblobcontainer/lib/storage-blob-container.js +63 -0
  200. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.d.ts +1 -0
  201. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.js +60 -0
  202. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.d.ts +1 -0
  203. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.js +172 -0
  204. package/lib/azure-subnet/lib/subnet.js +1 -1
  205. package/lib/azure-userassignedidentity/index.d.ts +1 -0
  206. package/lib/azure-userassignedidentity/index.js +18 -0
  207. package/lib/azure-userassignedidentity/lib/index.d.ts +2 -0
  208. package/lib/azure-userassignedidentity/lib/index.js +19 -0
  209. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.d.ts +8 -0
  210. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.js +107 -0
  211. package/lib/azure-userassignedidentity/lib/user-assigned-identity.d.ts +37 -0
  212. package/lib/azure-userassignedidentity/lib/user-assigned-identity.js +85 -0
  213. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.d.ts +1 -0
  214. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.js +64 -0
  215. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.d.ts +1 -0
  216. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.js +241 -0
  217. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  218. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  219. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  220. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  221. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  222. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  223. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  224. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  225. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  226. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  227. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  228. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  229. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  230. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +66 -1
  231. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +141 -2
  232. package/lib/azure-vmss/lib/vmss-schemas.d.ts +195 -0
  233. package/lib/azure-vmss/lib/vmss-schemas.js +33 -1
  234. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +463 -1
  235. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  236. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +4 -4
  237. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +7 -7
  238. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +2 -2
  239. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +2 -2
  240. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +2 -2
  241. package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +2 -2
  242. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +3 -3
  243. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +7 -7
  244. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +5 -5
  245. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +5 -5
  246. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  247. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  248. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  249. package/lib/index.d.ts +39 -0
  250. package/lib/index.js +41 -2
  251. package/lib/testing/index.js +20 -3
  252. package/lib/testing/lib/cleanup.js +1 -1
  253. package/lib/testing/lib/metadata.js +12 -4
  254. package/lib/testing/lib/naming.js +57 -1
  255. package/package.json +1 -1
  256. package/scripts/azure-version-updater/create-issue.ts +189 -0
  257. package/scripts/azure-version-updater/discover.ts +382 -0
  258. package/scripts/azure-version-updater/spec-mapping.ts +164 -0
  259. package/scripts/azure-version-updater/tsconfig.json +11 -0
@@ -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("./event-grid-system-topic-schemas"), exports);
18
+ __exportStar(require("./event-grid-system-topic"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZXZlbnRncmlkc3lzdGVtdG9waWMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvRUFBa0Q7QUFDbEQsNERBQTBDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWMtc2NoZW1hc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWNcIjtcbiJdfQ==
@@ -0,0 +1 @@
1
+ import "cdktn/lib/testing/adapters/jest";
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cdktn_1 = require("cdktn");
4
+ require("cdktn/lib/testing/adapters/jest");
5
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
6
+ const azure_storageaccount_1 = require("../../azure-storageaccount");
7
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
8
+ const testing_1 = require("../../testing");
9
+ const metadata_1 = require("../../testing/lib/metadata");
10
+ const event_grid_system_topic_1 = require("../lib/event-grid-system-topic");
11
+ const testMetadata = new metadata_1.TestRunMetadata("event-grid-system-topic-integration", {
12
+ maxAgeHours: 4,
13
+ });
14
+ class EventGridSystemTopicExampleStack extends testing_1.BaseTestStack {
15
+ constructor(scope, id) {
16
+ super(scope, id, {
17
+ testRunOptions: {
18
+ maxAgeHours: testMetadata.maxAgeHours,
19
+ autoCleanup: testMetadata.autoCleanup,
20
+ cleanupPolicy: testMetadata.cleanupPolicy,
21
+ },
22
+ });
23
+ new provider_1.AzapiProvider(this, "azapi", {});
24
+ const rgName = this.generateResourceName("Microsoft.Resources/resourceGroups", "egsystopic");
25
+ const storageName = this.generateResourceName("Microsoft.Storage/storageAccounts", "egsource");
26
+ const systemTopicName = this.generateResourceName("Microsoft.EventGrid/systemTopics", "systopic");
27
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "example-rg", {
28
+ name: rgName,
29
+ location: "eastus",
30
+ tags: {
31
+ ...this.systemTags(),
32
+ },
33
+ });
34
+ const storageAccount = new azure_storageaccount_1.StorageAccount(this, "example-storage", {
35
+ name: storageName,
36
+ location: resourceGroup.props.location,
37
+ resourceGroupId: resourceGroup.id,
38
+ sku: { name: "Standard_LRS" },
39
+ tags: {
40
+ ...this.systemTags(),
41
+ },
42
+ });
43
+ new event_grid_system_topic_1.EventGridSystemTopic(this, "example-system-topic", {
44
+ name: systemTopicName,
45
+ location: resourceGroup.props.location,
46
+ resourceGroupId: resourceGroup.id,
47
+ source: storageAccount.id,
48
+ topicType: "Microsoft.Storage.StorageAccounts",
49
+ tags: {
50
+ ...this.systemTags(),
51
+ example: "basic",
52
+ },
53
+ });
54
+ }
55
+ }
56
+ describe("Event Grid System Topic Integration Test", () => {
57
+ it("should deploy, validate idempotency, and cleanup event grid system topic resources", () => {
58
+ const app = cdktn_1.Testing.app();
59
+ const stack = new EventGridSystemTopicExampleStack(app, "test-event-grid-system-topic");
60
+ const synthesized = cdktn_1.Testing.fullSynth(stack);
61
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
62
+ }, 600000);
63
+ });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWMuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZXZlbnRncmlkc3lzdGVtdG9waWMvdGVzdC9ldmVudC1ncmlkLXN5c3RlbS10b3BpYy5pbnRlZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFnQztBQUVoQywyQ0FBeUM7QUFDekMsbUVBQTBEO0FBQzFELHFFQUE0RDtBQUM1RCxrRkFBb0Y7QUFDcEYsMkNBQTZFO0FBQzdFLHlEQUE2RDtBQUM3RCw0RUFBc0U7QUFFdEUsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUN0QyxxQ0FBcUMsRUFDckM7SUFDRSxXQUFXLEVBQUUsQ0FBQztDQUNmLENBQ0YsQ0FBQztBQUVGLE1BQU0sZ0NBQWlDLFNBQVEsdUJBQWE7SUFDMUQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixjQUFjLEVBQUU7Z0JBQ2QsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2dCQUNyQyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLGFBQWEsRUFBRSxZQUFZLENBQUMsYUFBYTthQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksd0JBQWEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDdEMsb0NBQW9DLEVBQ3BDLFlBQVksQ0FDYixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUMzQyxtQ0FBbUMsRUFDbkMsVUFBVSxDQUNYLENBQUM7UUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQy9DLGtDQUFrQyxFQUNsQyxVQUFVLENBQ1gsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksbUNBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzFELElBQUksRUFBRSxNQUFNO1lBQ1osUUFBUSxFQUFFLFFBQVE7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTthQUNyQjtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sY0FBYyxHQUFHLElBQUkscUNBQWMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDakUsSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUM3QixJQUFJLEVBQUU7Z0JBQ0osR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSw4Q0FBb0IsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7WUFDckQsSUFBSSxFQUFFLGVBQWU7WUFDckIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQ3pCLFNBQVMsRUFBRSxtQ0FBbUM7WUFDOUMsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLE9BQU87YUFDakI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxRQUFRLENBQUMsMENBQTBDLEVBQUUsR0FBRyxFQUFFO0lBQ3hELEVBQUUsQ0FBQyxvRkFBb0YsRUFBRSxHQUFHLEVBQUU7UUFDNUYsTUFBTSxHQUFHLEdBQUcsZUFBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzFCLE1BQU0sS0FBSyxHQUFHLElBQUksZ0NBQWdDLENBQ2hELEdBQUcsRUFDSCw4QkFBOEIsQ0FDL0IsQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLGVBQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBQSx1Q0FBNkIsRUFBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDYixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0bi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXJlc291cmNlZ3JvdXBcIjtcbmltcG9ydCB7IFN0b3JhZ2VBY2NvdW50IH0gZnJvbSBcIi4uLy4uL2F6dXJlLXN0b3JhZ2VhY2NvdW50XCI7XG5pbXBvcnQgeyBBemFwaVByb3ZpZGVyIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL3Byb3ZpZGVycy1hemFwaS9wcm92aWRlclwiO1xuaW1wb3J0IHsgQmFzZVRlc3RTdGFjaywgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3kgfSBmcm9tIFwiLi4vLi4vdGVzdGluZ1wiO1xuaW1wb3J0IHsgVGVzdFJ1bk1ldGFkYXRhIH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmcvbGliL21ldGFkYXRhXCI7XG5pbXBvcnQgeyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyB9IGZyb20gXCIuLi9saWIvZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWNcIjtcblxuY29uc3QgdGVzdE1ldGFkYXRhID0gbmV3IFRlc3RSdW5NZXRhZGF0YShcbiAgXCJldmVudC1ncmlkLXN5c3RlbS10b3BpYy1pbnRlZ3JhdGlvblwiLFxuICB7XG4gICAgbWF4QWdlSG91cnM6IDQsXG4gIH0sXG4pO1xuXG5jbGFzcyBFdmVudEdyaWRTeXN0ZW1Ub3BpY0V4YW1wbGVTdGFjayBleHRlbmRzIEJhc2VUZXN0U3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXN0UnVuT3B0aW9uczoge1xuICAgICAgICBtYXhBZ2VIb3VyczogdGVzdE1ldGFkYXRhLm1heEFnZUhvdXJzLFxuICAgICAgICBhdXRvQ2xlYW51cDogdGVzdE1ldGFkYXRhLmF1dG9DbGVhbnVwLFxuICAgICAgICBjbGVhbnVwUG9saWN5OiB0ZXN0TWV0YWRhdGEuY2xlYW51cFBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBuZXcgQXphcGlQcm92aWRlcih0aGlzLCBcImF6YXBpXCIsIHt9KTtcblxuICAgIGNvbnN0IHJnTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwiZWdzeXN0b3BpY1wiLFxuICAgICk7XG4gICAgY29uc3Qgc3RvcmFnZU5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHNcIixcbiAgICAgIFwiZWdzb3VyY2VcIixcbiAgICApO1xuICAgIGNvbnN0IHN5c3RlbVRvcGljTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5FdmVudEdyaWQvc3lzdGVtVG9waWNzXCIsXG4gICAgICBcInN5c3RvcGljXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcImV4YW1wbGUtcmdcIiwge1xuICAgICAgbmFtZTogcmdOYW1lLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIC4uLnRoaXMuc3lzdGVtVGFncygpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0b3JhZ2VBY2NvdW50ID0gbmV3IFN0b3JhZ2VBY2NvdW50KHRoaXMsIFwiZXhhbXBsZS1zdG9yYWdlXCIsIHtcbiAgICAgIG5hbWU6IHN0b3JhZ2VOYW1lLFxuICAgICAgbG9jYXRpb246IHJlc291cmNlR3JvdXAucHJvcHMubG9jYXRpb24hLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgc2t1OiB7IG5hbWU6IFwiU3RhbmRhcmRfTFJTXCIgfSxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKHRoaXMsIFwiZXhhbXBsZS1zeXN0ZW0tdG9waWNcIiwge1xuICAgICAgbmFtZTogc3lzdGVtVG9waWNOYW1lLFxuICAgICAgbG9jYXRpb246IHJlc291cmNlR3JvdXAucHJvcHMubG9jYXRpb24hLFxuICAgICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICAgICAgc291cmNlOiBzdG9yYWdlQWNjb3VudC5pZCxcbiAgICAgIHRvcGljVHlwZTogXCJNaWNyb3NvZnQuU3RvcmFnZS5TdG9yYWdlQWNjb3VudHNcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIGV4YW1wbGU6IFwiYmFzaWNcIixcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJFdmVudCBHcmlkIFN5c3RlbSBUb3BpYyBJbnRlZ3JhdGlvbiBUZXN0XCIsICgpID0+IHtcbiAgaXQoXCJzaG91bGQgZGVwbG95LCB2YWxpZGF0ZSBpZGVtcG90ZW5jeSwgYW5kIGNsZWFudXAgZXZlbnQgZ3JpZCBzeXN0ZW0gdG9waWMgcmVzb3VyY2VzXCIsICgpID0+IHtcbiAgICBjb25zdCBhcHAgPSBUZXN0aW5nLmFwcCgpO1xuICAgIGNvbnN0IHN0YWNrID0gbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljRXhhbXBsZVN0YWNrKFxuICAgICAgYXBwLFxuICAgICAgXCJ0ZXN0LWV2ZW50LWdyaWQtc3lzdGVtLXRvcGljXCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95KHN5bnRoZXNpemVkLCB7IHZlcmlmeUNsZWFudXA6IHRydWUgfSk7XG4gIH0sIDYwMDAwMCk7XG59KTtcbiJdfQ==
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cdktn_1 = require("cdktn");
4
+ const cdktn = require("cdktn");
5
+ const api_version_manager_1 = require("../../core-azure/lib/version-manager/api-version-manager");
6
+ const version_interfaces_1 = require("../../core-azure/lib/version-manager/interfaces/version-interfaces");
7
+ const event_grid_system_topic_1 = require("../lib/event-grid-system-topic");
8
+ const event_grid_system_topic_schemas_1 = require("../lib/event-grid-system-topic-schemas");
9
+ describe("EventGridSystemTopic - Unified Implementation", () => {
10
+ let app;
11
+ let stack;
12
+ let manager;
13
+ const source = "/subscriptions/test-sub/resourceGroups/test-rg/providers/Microsoft.Storage/storageAccounts/teststorage";
14
+ const topicType = "Microsoft.Storage.StorageAccounts";
15
+ const resourceGroupId = "/subscriptions/test-sub/resourceGroups/test-rg";
16
+ beforeEach(() => {
17
+ app = cdktn_1.Testing.app();
18
+ stack = new cdktn.TerraformStack(app, "TestStack");
19
+ manager = api_version_manager_1.ApiVersionManager.instance();
20
+ try {
21
+ manager.registerResourceType(event_grid_system_topic_schemas_1.SYSTEM_TOPIC_TYPE, event_grid_system_topic_schemas_1.ALL_SYSTEM_TOPIC_VERSIONS);
22
+ }
23
+ catch (error) {
24
+ // Ignore if already registered
25
+ }
26
+ });
27
+ describe("Constructor and Basic Properties", () => {
28
+ it("should create system topic with automatic latest version resolution", () => {
29
+ const props = {
30
+ name: "test-system-topic",
31
+ location: "eastus",
32
+ source,
33
+ topicType,
34
+ resourceGroupId,
35
+ };
36
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "TestSystemTopic", props);
37
+ expect(systemTopic).toBeInstanceOf(event_grid_system_topic_1.EventGridSystemTopic);
38
+ expect(systemTopic.resolvedApiVersion).toBe("2025-02-15");
39
+ expect(systemTopic.props).toBe(props);
40
+ expect(systemTopic.name).toBe("test-system-topic");
41
+ expect(systemTopic.location).toBe("eastus");
42
+ });
43
+ it("should create system topic with explicit version pinning", () => {
44
+ const props = {
45
+ name: "test-system-topic-pinned",
46
+ location: "westus",
47
+ source,
48
+ topicType,
49
+ resourceGroupId,
50
+ apiVersion: "2025-02-15",
51
+ };
52
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "PinnedSystemTopic", props);
53
+ expect(systemTopic.resolvedApiVersion).toBe("2025-02-15");
54
+ });
55
+ it("should create system topic with all optional properties", () => {
56
+ const props = {
57
+ name: "test-system-topic-full",
58
+ location: "centralus",
59
+ source,
60
+ topicType,
61
+ resourceGroupId,
62
+ identity: {
63
+ type: "SystemAssigned",
64
+ },
65
+ tags: {
66
+ environment: "production",
67
+ project: "terraform-cdk-constructs",
68
+ },
69
+ };
70
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "FullSystemTopic", props);
71
+ expect(systemTopic.props.identity).toEqual(props.identity);
72
+ expect(systemTopic.props.tags).toEqual(props.tags);
73
+ });
74
+ it("should require location to be provided", () => {
75
+ const props = {
76
+ name: "test-system-topic",
77
+ source,
78
+ topicType,
79
+ resourceGroupId,
80
+ };
81
+ expect(() => {
82
+ new event_grid_system_topic_1.EventGridSystemTopic(stack, "MissingLocation", props);
83
+ }).toThrow("Location is required for Microsoft.EventGrid/systemTopics");
84
+ });
85
+ });
86
+ describe("Framework Integration", () => {
87
+ it("should resolve latest API version automatically", () => {
88
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "TestSystemTopic", {
89
+ name: "test-system-topic",
90
+ location: "eastus",
91
+ source,
92
+ topicType,
93
+ resourceGroupId,
94
+ });
95
+ expect(systemTopic.resolvedApiVersion).toBe("2025-02-15");
96
+ expect(systemTopic.latestVersion()).toBe("2025-02-15");
97
+ });
98
+ it("should support all registered API versions", () => {
99
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "TestSystemTopic", {
100
+ name: "test-system-topic",
101
+ location: "eastus",
102
+ source,
103
+ topicType,
104
+ resourceGroupId,
105
+ });
106
+ expect(systemTopic.supportedVersions()).toEqual(["2025-02-15"]);
107
+ });
108
+ it("should validate version support", () => {
109
+ expect(() => {
110
+ new event_grid_system_topic_1.EventGridSystemTopic(stack, "ValidVersion", {
111
+ name: "test-system-topic",
112
+ location: "eastus",
113
+ source,
114
+ topicType,
115
+ resourceGroupId,
116
+ apiVersion: "2025-02-15",
117
+ });
118
+ }).not.toThrow();
119
+ expect(() => {
120
+ new event_grid_system_topic_1.EventGridSystemTopic(stack, "InvalidVersion", {
121
+ name: "test-system-topic",
122
+ location: "eastus",
123
+ source,
124
+ topicType,
125
+ resourceGroupId,
126
+ apiVersion: "2026-01-01",
127
+ });
128
+ }).toThrow("Unsupported API version '2026-01-01'");
129
+ });
130
+ it("should load correct schema for resolved version", () => {
131
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "TestSystemTopic", {
132
+ name: "test-system-topic",
133
+ location: "eastus",
134
+ source,
135
+ topicType,
136
+ resourceGroupId,
137
+ });
138
+ expect(systemTopic.schema).toBeDefined();
139
+ expect(systemTopic.schema.resourceType).toBe(event_grid_system_topic_schemas_1.SYSTEM_TOPIC_TYPE);
140
+ expect(systemTopic.schema.version).toBe("2025-02-15");
141
+ expect(systemTopic.schema.properties).toBeDefined();
142
+ });
143
+ it("should load version configuration correctly", () => {
144
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "TestSystemTopic", {
145
+ name: "test-system-topic",
146
+ location: "eastus",
147
+ source,
148
+ topicType,
149
+ resourceGroupId,
150
+ });
151
+ expect(systemTopic.versionConfig).toBeDefined();
152
+ expect(systemTopic.versionConfig.version).toBe("2025-02-15");
153
+ expect(systemTopic.versionConfig.supportLevel).toBe(version_interfaces_1.VersionSupportLevel.ACTIVE);
154
+ });
155
+ });
156
+ describe("Property Validation", () => {
157
+ it("should validate properties when validation is enabled", () => {
158
+ const props = {
159
+ name: "test-system-topic",
160
+ location: "eastus",
161
+ source,
162
+ topicType,
163
+ resourceGroupId,
164
+ enableValidation: true,
165
+ };
166
+ expect(() => {
167
+ new event_grid_system_topic_1.EventGridSystemTopic(stack, "ValidatedSystemTopic", props);
168
+ }).not.toThrow();
169
+ });
170
+ it("should have validation results for valid properties", () => {
171
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "ValidatedSystemTopic", {
172
+ name: "valid-system-topic",
173
+ location: "eastus",
174
+ source,
175
+ topicType,
176
+ resourceGroupId,
177
+ enableValidation: true,
178
+ });
179
+ expect(systemTopic.validationResult).toBeDefined();
180
+ expect(systemTopic.validationResult.valid).toBe(true);
181
+ expect(systemTopic.validationResult.errors).toHaveLength(0);
182
+ });
183
+ it("should create Terraform outputs", () => {
184
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "OutputsSystemTopic", {
185
+ name: "outputs-system-topic",
186
+ location: "eastus",
187
+ source,
188
+ topicType,
189
+ resourceGroupId,
190
+ });
191
+ expect(systemTopic.idOutput).toBeInstanceOf(cdktn.TerraformOutput);
192
+ expect(systemTopic.locationOutput).toBeInstanceOf(cdktn.TerraformOutput);
193
+ expect(systemTopic.nameOutput).toBeInstanceOf(cdktn.TerraformOutput);
194
+ expect(systemTopic.tagsOutput).toBeInstanceOf(cdktn.TerraformOutput);
195
+ });
196
+ });
197
+ describe("Version Compatibility", () => {
198
+ it("should work with all supported API versions", () => {
199
+ const versions = ["2025-02-15"];
200
+ versions.forEach((version) => {
201
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, `SystemTopic-${version.replace(/-/g, "")}`, {
202
+ name: `test-system-topic-${version}`,
203
+ location: "eastus",
204
+ source,
205
+ topicType,
206
+ resourceGroupId,
207
+ apiVersion: version,
208
+ });
209
+ expect(systemTopic.resolvedApiVersion).toBe(version);
210
+ expect(systemTopic.schema.version).toBe(version);
211
+ });
212
+ });
213
+ it("should expose required schema properties", () => {
214
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "SchemaSystemTopic", {
215
+ name: "schema-system-topic",
216
+ location: "eastus",
217
+ source,
218
+ topicType,
219
+ resourceGroupId,
220
+ });
221
+ expect(systemTopic.schema.properties.location).toBeDefined();
222
+ expect(systemTopic.schema.properties.name).toBeDefined();
223
+ expect(systemTopic.schema.properties.source).toBeDefined();
224
+ expect(systemTopic.schema.properties.topicType).toBeDefined();
225
+ expect(systemTopic.schema.properties.identity).toBeDefined();
226
+ });
227
+ });
228
+ describe("Public Methods and Properties", () => {
229
+ it("should have resourceId property matching id", () => {
230
+ const systemTopic = new event_grid_system_topic_1.EventGridSystemTopic(stack, "ResourceIdSystemTopic", {
231
+ name: "resource-id-system-topic",
232
+ location: "eastus",
233
+ source,
234
+ topicType,
235
+ resourceGroupId,
236
+ });
237
+ expect(systemTopic.resourceId).toBe(systemTopic.id);
238
+ });
239
+ });
240
+ });
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWMuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1ldmVudGdyaWRzeXN0ZW10b3BpYy90ZXN0L2V2ZW50LWdyaWQtc3lzdGVtLXRvcGljLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxpQ0FBZ0M7QUFDaEMsK0JBQStCO0FBQy9CLGtHQUE2RjtBQUM3RiwyR0FBeUc7QUFDekcsNEVBR3dDO0FBQ3hDLDRGQUdnRDtBQUVoRCxRQUFRLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO0lBQzdELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsTUFBTSxNQUFNLEdBQ1Ysd0dBQXdHLENBQUM7SUFDM0csTUFBTSxTQUFTLEdBQUcsbUNBQW1DLENBQUM7SUFDdEQsTUFBTSxlQUFlLEdBQUcsZ0RBQWdELENBQUM7SUFFekUsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxvQkFBb0IsQ0FDMUIsbURBQWlCLEVBQ2pCLDJEQUF5QixDQUMxQixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZiwrQkFBK0I7UUFDakMsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLGtDQUFrQyxFQUFFLEdBQUcsRUFBRTtRQUNoRCxFQUFFLENBQUMscUVBQXFFLEVBQUUsR0FBRyxFQUFFO1lBQzdFLE1BQU0sS0FBSyxHQUE4QjtnQkFDdkMsSUFB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LFFBQVEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO1FBQzdDLEVBQUUsQ0FBQyw2Q0FBNkMsRUFBRSxHQUFHLEVBQUU7WUFDckQsTUFBTSxXQUFXLEdBQUcsSUFBSSw4Q0FBb0IsQ0FDMUMsS0FBSyxFQUNMLHVCQUF1QixFQUN2QjtnQkFDRSxJQUFJLEVBQUUsMEJBQTBCO2dCQUNoQyxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsTUFBTTtnQkFDTixTQUFTO2dCQUNULGVBQWU7YUFDaEIsQ0FDRixDQUFDO1lBRUYsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRlc3RpbmcgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCAqIGFzIGNka3RuIGZyb20gXCJjZGt0blwiO1xuaW1wb3J0IHsgQXBpVmVyc2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2FwaS12ZXJzaW9uLW1hbmFnZXJcIjtcbmltcG9ydCB7IFZlcnNpb25TdXBwb3J0TGV2ZWwgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5pbXBvcnQge1xuICBFdmVudEdyaWRTeXN0ZW1Ub3BpYyxcbiAgRXZlbnRHcmlkU3lzdGVtVG9waWNQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9ldmVudC1ncmlkLXN5c3RlbS10b3BpY1wiO1xuaW1wb3J0IHtcbiAgQUxMX1NZU1RFTV9UT1BJQ19WRVJTSU9OUyxcbiAgU1lTVEVNX1RPUElDX1RZUEUsXG59IGZyb20gXCIuLi9saWIvZXZlbnQtZ3JpZC1zeXN0ZW0tdG9waWMtc2NoZW1hc1wiO1xuXG5kZXNjcmliZShcIkV2ZW50R3JpZFN5c3RlbVRvcGljIC0gVW5pZmllZCBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RuLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0bi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IEFwaVZlcnNpb25NYW5hZ2VyO1xuXG4gIGNvbnN0IHNvdXJjZSA9XG4gICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuU3RvcmFnZS9zdG9yYWdlQWNjb3VudHMvdGVzdHN0b3JhZ2VcIjtcbiAgY29uc3QgdG9waWNUeXBlID0gXCJNaWNyb3NvZnQuU3RvcmFnZS5TdG9yYWdlQWNjb3VudHNcIjtcbiAgY29uc3QgcmVzb3VyY2VHcm91cElkID0gXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBzdGFjayA9IG5ldyBjZGt0bi5UZXJyYWZvcm1TdGFjayhhcHAsIFwiVGVzdFN0YWNrXCIpO1xuICAgIG1hbmFnZXIgPSBBcGlWZXJzaW9uTWFuYWdlci5pbnN0YW5jZSgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIG1hbmFnZXIucmVnaXN0ZXJSZXNvdXJjZVR5cGUoXG4gICAgICAgIFNZU1RFTV9UT1BJQ19UWVBFLFxuICAgICAgICBBTExfU1lTVEVNX1RPUElDX1ZFUlNJT05TLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgIH1cbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJDb25zdHJ1Y3RvciBhbmQgQmFzaWMgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHN5c3RlbSB0b3BpYyB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBFdmVudEdyaWRTeXN0ZW1Ub3BpY1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtc3lzdGVtLXRvcGljXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc3lzdGVtVG9waWMgPSBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlRlc3RTeXN0ZW1Ub3BpY1wiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYykudG9CZUluc3RhbmNlT2YoRXZlbnRHcmlkU3lzdGVtVG9waWMpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjUtMDItMTVcIik7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMucHJvcHMpLnRvQmUocHJvcHMpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLm5hbWUpLnRvQmUoXCJ0ZXN0LXN5c3RlbS10b3BpY1wiKTtcbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5sb2NhdGlvbikudG9CZShcImVhc3R1c1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBzeXN0ZW0gdG9waWMgd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmdcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IEV2ZW50R3JpZFN5c3RlbVRvcGljUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1zeXN0ZW0tdG9waWMtcGlubmVkXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcIndlc3R1c1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjUtMDItMTVcIixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHN5c3RlbVRvcGljID0gbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJQaW5uZWRTeXN0ZW1Ub3BpY1wiLFxuICAgICAgICBwcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI1LTAyLTE1XCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHN5c3RlbSB0b3BpYyB3aXRoIGFsbCBvcHRpb25hbCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBFdmVudEdyaWRTeXN0ZW1Ub3BpY1Byb3BzID0ge1xuICAgICAgICBuYW1lOiBcInRlc3Qtc3lzdGVtLXRvcGljLWZ1bGxcIixcbiAgICAgICAgbG9jYXRpb246IFwiY2VudHJhbHVzXCIsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICAgIGlkZW50aXR5OiB7XG4gICAgICAgICAgdHlwZTogXCJTeXN0ZW1Bc3NpZ25lZFwiLFxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiB7XG4gICAgICAgICAgZW52aXJvbm1lbnQ6IFwicHJvZHVjdGlvblwiLFxuICAgICAgICAgIHByb2plY3Q6IFwidGVycmFmb3JtLWNkay1jb25zdHJ1Y3RzXCIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBzeXN0ZW1Ub3BpYyA9IG5ldyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyhcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiRnVsbFN5c3RlbVRvcGljXCIsXG4gICAgICAgIHByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnByb3BzLmlkZW50aXR5KS50b0VxdWFsKHByb3BzLmlkZW50aXR5KTtcbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5wcm9wcy50YWdzKS50b0VxdWFsKHByb3BzLnRhZ3MpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcmVxdWlyZSBsb2NhdGlvbiB0byBiZSBwcm92aWRlZFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogRXZlbnRHcmlkU3lzdGVtVG9waWNQcm9wcyA9IHtcbiAgICAgICAgbmFtZTogXCJ0ZXN0LXN5c3RlbS10b3BpY1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgfTtcblxuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKHN0YWNrLCBcIk1pc3NpbmdMb2NhdGlvblwiLCBwcm9wcyk7XG4gICAgICB9KS50b1Rocm93KFwiTG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIE1pY3Jvc29mdC5FdmVudEdyaWQvc3lzdGVtVG9waWNzXCIpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkZyYW1ld29yayBJbnRlZ3JhdGlvblwiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBsYXRlc3QgQVBJIHZlcnNpb24gYXV0b21hdGljYWxseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBzeXN0ZW1Ub3BpYyA9IG5ldyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyhzdGFjaywgXCJUZXN0U3lzdGVtVG9waWNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtc3lzdGVtLXRvcGljXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI1LTAyLTE1XCIpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLmxhdGVzdFZlcnNpb24oKSkudG9CZShcIjIwMjUtMDItMTVcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBzdXBwb3J0IGFsbCByZWdpc3RlcmVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBzeXN0ZW1Ub3BpYyA9IG5ldyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyhzdGFjaywgXCJUZXN0U3lzdGVtVG9waWNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtc3lzdGVtLXRvcGljXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5zdXBwb3J0ZWRWZXJzaW9ucygpKS50b0VxdWFsKFtcIjIwMjUtMDItMTVcIl0pO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgdmFsaWRhdGUgdmVyc2lvbiBzdXBwb3J0XCIsICgpID0+IHtcbiAgICAgIGV4cGVjdCgoKSA9PiB7XG4gICAgICAgIG5ldyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyhzdGFjaywgXCJWYWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICAgIHJlc291cmNlR3JvdXBJZCxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjUtMDItMTVcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS5ub3QudG9UaHJvdygpO1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoc3RhY2ssIFwiSW52YWxpZFZlcnNpb25cIiwge1xuICAgICAgICAgIG5hbWU6IFwidGVzdC1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICAgIHJlc291cmNlR3JvdXBJZCxcbiAgICAgICAgICBhcGlWZXJzaW9uOiBcIjIwMjYtMDEtMDFcIixcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiVW5zdXBwb3J0ZWQgQVBJIHZlcnNpb24gJzIwMjYtMDEtMDEnXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCBjb3JyZWN0IHNjaGVtYSBmb3IgcmVzb2x2ZWQgdmVyc2lvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBzeXN0ZW1Ub3BpYyA9IG5ldyBFdmVudEdyaWRTeXN0ZW1Ub3BpYyhzdGFjaywgXCJUZXN0U3lzdGVtVG9waWNcIiwge1xuICAgICAgICBuYW1lOiBcInRlc3Qtc3lzdGVtLXRvcGljXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBzb3VyY2UsXG4gICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgfSk7XG5cbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5zY2hlbWEpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMuc2NoZW1hLnJlc291cmNlVHlwZSkudG9CZShTWVNURU1fVE9QSUNfVFlQRSk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMuc2NoZW1hLnZlcnNpb24pLnRvQmUoXCIyMDI1LTAyLTE1XCIpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnNjaGVtYS5wcm9wZXJ0aWVzKS50b0JlRGVmaW5lZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbG9hZCB2ZXJzaW9uIGNvbmZpZ3VyYXRpb24gY29ycmVjdGx5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN5c3RlbVRvcGljID0gbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKHN0YWNrLCBcIlRlc3RTeXN0ZW1Ub3BpY1wiLCB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnZlcnNpb25Db25maWcpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMudmVyc2lvbkNvbmZpZy52ZXJzaW9uKS50b0JlKFwiMjAyNS0wMi0xNVwiKTtcbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIlByb3BlcnR5IFZhbGlkYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHZhbGlkYXRlIHByb3BlcnRpZXMgd2hlbiB2YWxpZGF0aW9uIGlzIGVuYWJsZWRcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IEV2ZW50R3JpZFN5c3RlbVRvcGljUHJvcHMgPSB7XG4gICAgICAgIG5hbWU6IFwidGVzdC1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICAgIGVuYWJsZVZhbGlkYXRpb246IHRydWUsXG4gICAgICB9O1xuXG4gICAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgICBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoc3RhY2ssIFwiVmFsaWRhdGVkU3lzdGVtVG9waWNcIiwgcHJvcHMpO1xuICAgICAgfSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGhhdmUgdmFsaWRhdGlvbiByZXN1bHRzIGZvciB2YWxpZCBwcm9wZXJ0aWVzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN5c3RlbVRvcGljID0gbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJWYWxpZGF0ZWRTeXN0ZW1Ub3BpY1wiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJ2YWxpZC1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICAgIHJlc291cmNlR3JvdXBJZCxcbiAgICAgICAgICBlbmFibGVWYWxpZGF0aW9uOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnZhbGlkYXRpb25SZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMudmFsaWRhdGlvblJlc3VsdCEudmFsaWQpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMudmFsaWRhdGlvblJlc3VsdCEuZXJyb3JzKS50b0hhdmVMZW5ndGgoMCk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3lzdGVtVG9waWMgPSBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIk91dHB1dHNTeXN0ZW1Ub3BpY1wiLFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJvdXRwdXRzLXN5c3RlbS10b3BpY1wiLFxuICAgICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICB0b3BpY1R5cGUsXG4gICAgICAgICAgcmVzb3VyY2VHcm91cElkLFxuICAgICAgICB9LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLmlkT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLmxvY2F0aW9uT3V0cHV0KS50b0JlSW5zdGFuY2VPZihjZGt0bi5UZXJyYWZvcm1PdXRwdXQpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLm5hbWVPdXRwdXQpLnRvQmVJbnN0YW5jZU9mKGNka3RuLlRlcnJhZm9ybU91dHB1dCk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMudGFnc091dHB1dCkudG9CZUluc3RhbmNlT2YoY2RrdG4uVGVycmFmb3JtT3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJWZXJzaW9uIENvbXBhdGliaWxpdHlcIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHdvcmsgd2l0aCBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9uc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCB2ZXJzaW9ucyA9IFtcIjIwMjUtMDItMTVcIl07XG5cbiAgICAgIHZlcnNpb25zLmZvckVhY2goKHZlcnNpb24pID0+IHtcbiAgICAgICAgY29uc3Qgc3lzdGVtVG9waWMgPSBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoXG4gICAgICAgICAgc3RhY2ssXG4gICAgICAgICAgYFN5c3RlbVRvcGljLSR7dmVyc2lvbi5yZXBsYWNlKC8tL2csIFwiXCIpfWAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogYHRlc3Qtc3lzdGVtLXRvcGljLSR7dmVyc2lvbn1gLFxuICAgICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgICBzb3VyY2UsXG4gICAgICAgICAgICB0b3BpY1R5cGUsXG4gICAgICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICAgICAgICBhcGlWZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnJlc29sdmVkQXBpVmVyc2lvbikudG9CZSh2ZXJzaW9uKTtcbiAgICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnNjaGVtYS52ZXJzaW9uKS50b0JlKHZlcnNpb24pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBleHBvc2UgcmVxdWlyZWQgc2NoZW1hIHByb3BlcnRpZXNcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgc3lzdGVtVG9waWMgPSBuZXcgRXZlbnRHcmlkU3lzdGVtVG9waWMoc3RhY2ssIFwiU2NoZW1hU3lzdGVtVG9waWNcIiwge1xuICAgICAgICBuYW1lOiBcInNjaGVtYS1zeXN0ZW0tdG9waWNcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHNvdXJjZSxcbiAgICAgICAgdG9waWNUeXBlLFxuICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnNjaGVtYS5wcm9wZXJ0aWVzLmxvY2F0aW9uKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnNjaGVtYS5wcm9wZXJ0aWVzLm5hbWUpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMuc2NoZW1hLnByb3BlcnRpZXMuc291cmNlKS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHN5c3RlbVRvcGljLnNjaGVtYS5wcm9wZXJ0aWVzLnRvcGljVHlwZSkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzeXN0ZW1Ub3BpYy5zY2hlbWEucHJvcGVydGllcy5pZGVudGl0eSkudG9CZURlZmluZWQoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJQdWJsaWMgTWV0aG9kcyBhbmQgUHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgaXQoXCJzaG91bGQgaGF2ZSByZXNvdXJjZUlkIHByb3BlcnR5IG1hdGNoaW5nIGlkXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHN5c3RlbVRvcGljID0gbmV3IEV2ZW50R3JpZFN5c3RlbVRvcGljKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJSZXNvdXJjZUlkU3lzdGVtVG9waWNcIixcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwicmVzb3VyY2UtaWQtc3lzdGVtLXRvcGljXCIsXG4gICAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgICAgc291cmNlLFxuICAgICAgICAgIHRvcGljVHlwZSxcbiAgICAgICAgICByZXNvdXJjZUdyb3VwSWQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBleHBlY3Qoc3lzdGVtVG9waWMucmVzb3VyY2VJZCkudG9CZShzeXN0ZW1Ub3BpYy5pZCk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Azure Event Hubs module
3
+ *
4
+ * This module provides constructs for creating and managing Azure Event Hubs
5
+ * Namespaces and Event Hubs (entities).
6
+ */
7
+ export * from "./lib";
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Azure Event Hubs module
4
+ *
5
+ * This module provides constructs for creating and managing Azure Event Hubs
6
+ * Namespaces and Event Hubs (entities).
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ __exportStar(require("./lib"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtZXZlbnRodWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBenVyZSBFdmVudCBIdWJzIG1vZHVsZVxuICpcbiAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNvbnN0cnVjdHMgZm9yIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBBenVyZSBFdmVudCBIdWJzXG4gKiBOYW1lc3BhY2VzIGFuZCBFdmVudCBIdWJzIChlbnRpdGllcykuXG4gKi9cblxuZXhwb3J0ICogZnJvbSBcIi4vbGliXCI7XG4iXX0=
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Azure Event Hubs Namespace implementation using the AzapiResource framework
3
+ *
4
+ * This class provides a version-aware implementation for Azure Event Hubs
5
+ * Namespaces (Microsoft.EventHub/namespaces) that automatically handles version
6
+ * management, schema validation, and property transformation across all
7
+ * supported API versions.
8
+ *
9
+ * Supported API Versions:
10
+ * - 2024-01-01 (Active, Latest)
11
+ * - 2021-11-01 (Active, Backward Compatibility)
12
+ *
13
+ * Features:
14
+ * - Automatic latest version resolution when no version is specified
15
+ * - Explicit version pinning for stability requirements
16
+ * - Schema-driven validation and transformation
17
+ * - Full JSII compliance for multi-language support
18
+ * - SKU management (Basic, Standard, Premium)
19
+ * - Auto-inflate throughput configuration
20
+ * - Public network access and minimum TLS controls
21
+ * - Managed identity support
22
+ */
23
+ import * as cdktn from "cdktn";
24
+ import { Construct } from "constructs";
25
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
26
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
27
+ /**
28
+ * SKU configuration for an Event Hubs Namespace
29
+ */
30
+ export interface EventhubNamespaceSku {
31
+ /**
32
+ * The SKU name for the namespace
33
+ *
34
+ * Available options:
35
+ * - "Basic" - Basic tier (1 consumer group, 100 brokered connections)
36
+ * - "Standard" - Standard tier (20 consumer groups, auto-inflate support)
37
+ * - "Premium" - Premium tier (dedicated capacity, higher limits)
38
+ *
39
+ * @defaultValue "Standard"
40
+ */
41
+ readonly name: "Basic" | "Standard" | "Premium";
42
+ /**
43
+ * The billing tier of the namespace
44
+ *
45
+ * If not provided, defaults to the same value as `name`.
46
+ */
47
+ readonly tier?: "Basic" | "Standard" | "Premium";
48
+ /**
49
+ * The number of throughput units (Standard) or capacity units (Premium)
50
+ *
51
+ * Only applicable to Standard and Premium tiers.
52
+ */
53
+ readonly capacity?: number;
54
+ }
55
+ /**
56
+ * Managed identity configuration for the namespace
57
+ */
58
+ export interface EventhubNamespaceIdentity {
59
+ /**
60
+ * Type of managed identity
61
+ */
62
+ readonly type: "SystemAssigned" | "UserAssigned" | "SystemAssigned,UserAssigned" | "None";
63
+ /**
64
+ * User-assigned identity resource IDs
65
+ * Required when type includes UserAssigned
66
+ */
67
+ readonly userAssignedIdentities?: {
68
+ [key: string]: any;
69
+ };
70
+ }
71
+ /**
72
+ * Properties for the Azure Event Hubs Namespace
73
+ *
74
+ * Extends AzapiResourceProps with Event Hubs Namespace specific properties
75
+ */
76
+ export interface EventhubNamespaceProps extends AzapiResourceProps {
77
+ /**
78
+ * Resource Group ID where the namespace will be created
79
+ */
80
+ readonly resourceGroupId: string;
81
+ /**
82
+ * SKU configuration for the namespace
83
+ *
84
+ * @defaultValue { name: "Standard" }
85
+ */
86
+ readonly sku?: EventhubNamespaceSku;
87
+ /**
88
+ * Whether to enable zone redundancy for the namespace
89
+ */
90
+ readonly zoneRedundant?: boolean;
91
+ /**
92
+ * Whether auto-inflate is enabled for the namespace (Standard tier)
93
+ *
94
+ * When enabled, throughput units automatically scale up to
95
+ * `maximumThroughputUnits` based on load.
96
+ */
97
+ readonly isAutoInflateEnabled?: boolean;
98
+ /**
99
+ * The upper limit of throughput units when auto-inflate is enabled
100
+ *
101
+ * Valid values are between 0 and 40.
102
+ */
103
+ readonly maximumThroughputUnits?: number;
104
+ /**
105
+ * The minimum TLS version supported by the namespace
106
+ *
107
+ * @defaultValue "1.2"
108
+ */
109
+ readonly minimumTlsVersion?: "1.0" | "1.1" | "1.2";
110
+ /**
111
+ * Whether public network access is allowed for the namespace
112
+ *
113
+ * @defaultValue "Enabled"
114
+ */
115
+ readonly publicNetworkAccess?: "Enabled" | "Disabled";
116
+ /**
117
+ * Whether to disable SAS (local) authentication
118
+ *
119
+ * When enabled, only Azure AD authentication is allowed.
120
+ */
121
+ readonly disableLocalAuth?: boolean;
122
+ /**
123
+ * Managed identity configuration for the namespace
124
+ */
125
+ readonly identity?: EventhubNamespaceIdentity;
126
+ }
127
+ /**
128
+ * Azure Event Hubs Namespace implementation
129
+ *
130
+ * This class provides a single, version-aware implementation that automatically
131
+ * handles version resolution, schema validation, and property transformation
132
+ * while maintaining full JSII compliance.
133
+ *
134
+ * An Event Hubs Namespace is a management container for Event Hubs. It provides
135
+ * DNS-integrated network endpoints and a range of access control and network
136
+ * integration management features.
137
+ *
138
+ * @example
139
+ * // Basic Event Hubs Namespace with default settings:
140
+ * const namespace = new EventhubNamespace(this, "my-namespace", {
141
+ * name: "my-eventhub-ns",
142
+ * location: "eastus",
143
+ * resourceGroupId: resourceGroup.id,
144
+ * });
145
+ *
146
+ * @example
147
+ * // Standard namespace with auto-inflate:
148
+ * const namespace = new EventhubNamespace(this, "production-namespace", {
149
+ * name: "prod-eventhub-ns",
150
+ * location: "eastus",
151
+ * resourceGroupId: resourceGroup.id,
152
+ * sku: { name: "Standard", capacity: 2 },
153
+ * isAutoInflateEnabled: true,
154
+ * maximumThroughputUnits: 10,
155
+ * });
156
+ *
157
+ * @stability stable
158
+ */
159
+ export declare class EventhubNamespace extends AzapiResource {
160
+ /**
161
+ * The input properties for this Event Hubs Namespace instance
162
+ */
163
+ readonly props: EventhubNamespaceProps;
164
+ readonly idOutput: cdktn.TerraformOutput;
165
+ readonly nameOutput: cdktn.TerraformOutput;
166
+ /**
167
+ * Creates a new Azure Event Hubs Namespace using the AzapiResource framework
168
+ *
169
+ * @param scope - The scope in which to define this construct
170
+ * @param id - The unique identifier for this instance
171
+ * @param props - Configuration properties for the Event Hubs Namespace
172
+ */
173
+ constructor(scope: Construct, id: string, props: EventhubNamespaceProps);
174
+ /**
175
+ * Gets the default API version to use when no explicit version is specified
176
+ * Returns the latest stable version as the default
177
+ */
178
+ protected defaultVersion(): string;
179
+ /**
180
+ * Gets the Azure resource type for Event Hubs Namespaces
181
+ */
182
+ protected resourceType(): string;
183
+ /**
184
+ * Gets the API schema for the resolved version
185
+ */
186
+ protected apiSchema(): ApiSchema;
187
+ /**
188
+ * Indicates that this resource type requires a location
189
+ */
190
+ protected requiresLocation(): boolean;
191
+ /**
192
+ * Creates the resource body for the Azure API call
193
+ * Transforms the input properties into the JSON format expected by Azure REST API
194
+ */
195
+ protected createResourceBody(props: any): any;
196
+ /**
197
+ * Resolves the parent resource ID for the Event Hubs Namespace
198
+ * Event Hubs Namespaces are top-level resources within a resource group
199
+ *
200
+ * @param props - The resource properties
201
+ * @returns The parent resource ID (the resource group)
202
+ */
203
+ protected resolveParentId(props: any): string;
204
+ }