@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,78 @@
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 resource_group_1 = require("../../azure-resourcegroup/lib/resource-group");
6
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
7
+ const testing_1 = require("../../testing");
8
+ const metadata_1 = require("../../testing/lib/metadata");
9
+ const data_explorer_cluster_1 = require("../lib/data-explorer-cluster");
10
+ const data_explorer_database_1 = require("../lib/data-explorer-database");
11
+ const data_explorer_table_1 = require("../lib/data-explorer-table");
12
+ const testMetadata = new metadata_1.TestRunMetadata("dataexplorer-integration", {
13
+ maxAgeHours: 6,
14
+ });
15
+ class DataExplorerExampleStack extends testing_1.BaseTestStack {
16
+ constructor(scope, id) {
17
+ super(scope, id, {
18
+ testRunOptions: {
19
+ maxAgeHours: testMetadata.maxAgeHours,
20
+ autoCleanup: testMetadata.autoCleanup,
21
+ cleanupPolicy: testMetadata.cleanupPolicy,
22
+ },
23
+ });
24
+ new provider_1.AzapiProvider(this, "azapi", {});
25
+ const resourceGroupName = this.generateResourceName("Microsoft.Resources/resourceGroups", "adx");
26
+ const clusterName = this.generateResourceName("Microsoft.Kusto/clusters", "adxcluster");
27
+ const databaseName = this.generateResourceName("Microsoft.Kusto/clusters/databases", "adxdb");
28
+ const scriptName = this.generateResourceName("Microsoft.Kusto/clusters/databases/scripts", "adxtable");
29
+ const resourceGroup = new resource_group_1.ResourceGroup(this, "test-rg", {
30
+ name: resourceGroupName,
31
+ location: "centralus",
32
+ tags: {
33
+ ...this.systemTags(),
34
+ purpose: "data-explorer-testing",
35
+ },
36
+ });
37
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(this, "adx-cluster", {
38
+ name: clusterName,
39
+ location: "centralus",
40
+ resourceGroupId: resourceGroup.id,
41
+ sku: {
42
+ name: "Dev(No SLA)_Standard_E2a_v4",
43
+ capacity: 1,
44
+ tier: "Basic",
45
+ },
46
+ enableStreamingIngest: false,
47
+ enablePurge: true,
48
+ tags: {
49
+ ...this.systemTags(),
50
+ purpose: "data-explorer-cluster",
51
+ },
52
+ });
53
+ const database = new data_explorer_database_1.DataExplorerDatabase(this, "adx-database", {
54
+ name: databaseName,
55
+ clusterId: cluster.id,
56
+ location: "centralus",
57
+ kind: "ReadWrite",
58
+ softDeletePeriod: "P365D",
59
+ hotCachePeriod: "P31D",
60
+ });
61
+ new data_explorer_table_1.DataExplorerScript(this, "adx-script", {
62
+ name: scriptName,
63
+ databaseId: database.id,
64
+ scriptContent: ".create table TestTable (Column1: string, Column2: int)",
65
+ forceUpdateTag: testMetadata.runId,
66
+ continueOnErrors: false,
67
+ });
68
+ }
69
+ }
70
+ describe("DataExplorer Integration Test", () => {
71
+ it("should deploy ADX cluster, database, and script, validate idempotency, and cleanup", () => {
72
+ const app = cdktn_1.Testing.app();
73
+ const stack = new DataExplorerExampleStack(app, "test-dataexplorer");
74
+ const synthesized = cdktn_1.Testing.fullSynth(stack);
75
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized, { verifyCleanup: true });
76
+ }, 1800000);
77
+ });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBsb3Jlci5pbnRlZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9henVyZS1kYXRhZXhwbG9yZXIvdGVzdC9kYXRhLWV4cGxvcmVyLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsaUNBQWdDO0FBRWhDLDJDQUF5QztBQUN6QyxpRkFBNkU7QUFDN0Usa0ZBQW9GO0FBQ3BGLDJDQUE2RTtBQUM3RSx5REFBNkQ7QUFDN0Qsd0VBQW1FO0FBQ25FLDBFQUFxRTtBQUNyRSxvRUFBZ0U7QUFFaEUsTUFBTSxZQUFZLEdBQUcsSUFBSSwwQkFBZSxDQUFDLDBCQUEwQixFQUFFO0lBQ25FLFdBQVcsRUFBRSxDQUFDO0NBQ2YsQ0FBQyxDQUFDO0FBRUgsTUFBTSx3QkFBeUIsU0FBUSx1QkFBYTtJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLGNBQWMsRUFBRTtnQkFDZCxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7Z0JBQ3JDLFdBQVcsRUFBRSxZQUFZLENBQUMsV0FBVztnQkFDckMsYUFBYSxFQUFFLFlBQVksQ0FBQyxhQUFhO2FBQzFDO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2pELG9DQUFvQyxFQUNwQyxLQUFLLENBQ04sQ0FBQztRQUNGLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDM0MsMEJBQTBCLEVBQzFCLFlBQVksQ0FDYixDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUM1QyxvQ0FBb0MsRUFDcEMsT0FBTyxDQUNSLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQzFDLDRDQUE0QyxFQUM1QyxVQUFVLENBQ1gsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQ3ZELElBQUksRUFBRSxpQkFBaUI7WUFDdkIsUUFBUSxFQUFFLFdBQVc7WUFDckIsSUFBSSxFQUFFO2dCQUNKLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsT0FBTyxFQUFFLHVCQUF1QjthQUNqQztTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0sT0FBTyxHQUFHLElBQUksMkNBQW1CLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUMzRCxJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsV0FBVztZQUNyQixlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsR0FBRyxFQUFFO2dCQUNILElBQUksRUFBRSw2QkFBNkI7Z0JBQ25DLFFBQVEsRUFBRSxDQUFDO2dCQUNYLElBQUksRUFBRSxPQUFPO2FBQ2Q7WUFDRCxxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLElBQUksRUFBRTtnQkFDSixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3BCLE9BQU8sRUFBRSx1QkFBdUI7YUFDakM7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLDZDQUFvQixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDOUQsSUFBSSxFQUFFLFlBQVk7WUFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsRUFBRSxXQUFXO1lBQ3JCLElBQUksRUFBRSxXQUFXO1lBQ2pCLGdCQUFnQixFQUFFLE9BQU87WUFDekIsY0FBYyxFQUFFLE1BQU07U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSx3Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQ3pDLElBQUksRUFBRSxVQUFVO1lBQ2hCLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtZQUN2QixhQUFhLEVBQUUseURBQXlEO1lBQ3hFLGNBQWMsRUFBRSxZQUFZLENBQUMsS0FBSztZQUNsQyxnQkFBZ0IsRUFBRSxLQUFLO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxHQUFHLEVBQUU7SUFDN0MsRUFBRSxDQUFDLG9GQUFvRixFQUFFLEdBQUcsRUFBRTtRQUM1RixNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztRQUNyRSxNQUFNLFdBQVcsR0FBRyxlQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdDLElBQUEsdUNBQTZCLEVBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2QsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZXN0aW5nIH0gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IFwiY2RrdG4vbGliL3Rlc3RpbmcvYWRhcHRlcnMvamVzdFwiO1xuaW1wb3J0IHsgUmVzb3VyY2VHcm91cCB9IGZyb20gXCIuLi8uLi9henVyZS1yZXNvdXJjZWdyb3VwL2xpYi9yZXNvdXJjZS1ncm91cFwiO1xuaW1wb3J0IHsgQXphcGlQcm92aWRlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9wcm92aWRlcnMtYXphcGkvcHJvdmlkZXJcIjtcbmltcG9ydCB7IEJhc2VUZXN0U3RhY2ssIFRlcnJhZm9ybUFwcGx5Q2hlY2tBbmREZXN0cm95IH0gZnJvbSBcIi4uLy4uL3Rlc3RpbmdcIjtcbmltcG9ydCB7IFRlc3RSdW5NZXRhZGF0YSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nL2xpYi9tZXRhZGF0YVwiO1xuaW1wb3J0IHsgRGF0YUV4cGxvcmVyQ2x1c3RlciB9IGZyb20gXCIuLi9saWIvZGF0YS1leHBsb3Jlci1jbHVzdGVyXCI7XG5pbXBvcnQgeyBEYXRhRXhwbG9yZXJEYXRhYmFzZSB9IGZyb20gXCIuLi9saWIvZGF0YS1leHBsb3Jlci1kYXRhYmFzZVwiO1xuaW1wb3J0IHsgRGF0YUV4cGxvcmVyU2NyaXB0IH0gZnJvbSBcIi4uL2xpYi9kYXRhLWV4cGxvcmVyLXRhYmxlXCI7XG5cbmNvbnN0IHRlc3RNZXRhZGF0YSA9IG5ldyBUZXN0UnVuTWV0YWRhdGEoXCJkYXRhZXhwbG9yZXItaW50ZWdyYXRpb25cIiwge1xuICBtYXhBZ2VIb3VyczogNixcbn0pO1xuXG5jbGFzcyBEYXRhRXhwbG9yZXJFeGFtcGxlU3RhY2sgZXh0ZW5kcyBCYXNlVGVzdFN0YWNrIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdGVzdFJ1bk9wdGlvbnM6IHtcbiAgICAgICAgbWF4QWdlSG91cnM6IHRlc3RNZXRhZGF0YS5tYXhBZ2VIb3VycyxcbiAgICAgICAgYXV0b0NsZWFudXA6IHRlc3RNZXRhZGF0YS5hdXRvQ2xlYW51cCxcbiAgICAgICAgY2xlYW51cFBvbGljeTogdGVzdE1ldGFkYXRhLmNsZWFudXBQb2xpY3ksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgbmV3IEF6YXBpUHJvdmlkZXIodGhpcywgXCJhemFwaVwiLCB7fSk7XG5cbiAgICBjb25zdCByZXNvdXJjZUdyb3VwTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHNcIixcbiAgICAgIFwiYWR4XCIsXG4gICAgKTtcbiAgICBjb25zdCBjbHVzdGVyTmFtZSA9IHRoaXMuZ2VuZXJhdGVSZXNvdXJjZU5hbWUoXG4gICAgICBcIk1pY3Jvc29mdC5LdXN0by9jbHVzdGVyc1wiLFxuICAgICAgXCJhZHhjbHVzdGVyXCIsXG4gICAgKTtcbiAgICBjb25zdCBkYXRhYmFzZU5hbWUgPSB0aGlzLmdlbmVyYXRlUmVzb3VyY2VOYW1lKFxuICAgICAgXCJNaWNyb3NvZnQuS3VzdG8vY2x1c3RlcnMvZGF0YWJhc2VzXCIsXG4gICAgICBcImFkeGRiXCIsXG4gICAgKTtcbiAgICBjb25zdCBzY3JpcHROYW1lID0gdGhpcy5nZW5lcmF0ZVJlc291cmNlTmFtZShcbiAgICAgIFwiTWljcm9zb2Z0Lkt1c3RvL2NsdXN0ZXJzL2RhdGFiYXNlcy9zY3JpcHRzXCIsXG4gICAgICBcImFkeHRhYmxlXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlR3JvdXAgPSBuZXcgUmVzb3VyY2VHcm91cCh0aGlzLCBcInRlc3QtcmdcIiwge1xuICAgICAgbmFtZTogcmVzb3VyY2VHcm91cE5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJjZW50cmFsdXNcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwiZGF0YS1leHBsb3Jlci10ZXN0aW5nXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgY2x1c3RlciA9IG5ldyBEYXRhRXhwbG9yZXJDbHVzdGVyKHRoaXMsIFwiYWR4LWNsdXN0ZXJcIiwge1xuICAgICAgbmFtZTogY2x1c3Rlck5hbWUsXG4gICAgICBsb2NhdGlvbjogXCJjZW50cmFsdXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHNrdToge1xuICAgICAgICBuYW1lOiBcIkRldihObyBTTEEpX1N0YW5kYXJkX0UyYV92NFwiLFxuICAgICAgICBjYXBhY2l0eTogMSxcbiAgICAgICAgdGllcjogXCJCYXNpY1wiLFxuICAgICAgfSxcbiAgICAgIGVuYWJsZVN0cmVhbWluZ0luZ2VzdDogZmFsc2UsXG4gICAgICBlbmFibGVQdXJnZTogdHJ1ZSxcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgLi4udGhpcy5zeXN0ZW1UYWdzKCksXG4gICAgICAgIHB1cnBvc2U6IFwiZGF0YS1leHBsb3Jlci1jbHVzdGVyXCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YWJhc2UgPSBuZXcgRGF0YUV4cGxvcmVyRGF0YWJhc2UodGhpcywgXCJhZHgtZGF0YWJhc2VcIiwge1xuICAgICAgbmFtZTogZGF0YWJhc2VOYW1lLFxuICAgICAgY2x1c3RlcklkOiBjbHVzdGVyLmlkLFxuICAgICAgbG9jYXRpb246IFwiY2VudHJhbHVzXCIsXG4gICAgICBraW5kOiBcIlJlYWRXcml0ZVwiLFxuICAgICAgc29mdERlbGV0ZVBlcmlvZDogXCJQMzY1RFwiLFxuICAgICAgaG90Q2FjaGVQZXJpb2Q6IFwiUDMxRFwiLFxuICAgIH0pO1xuXG4gICAgbmV3IERhdGFFeHBsb3JlclNjcmlwdCh0aGlzLCBcImFkeC1zY3JpcHRcIiwge1xuICAgICAgbmFtZTogc2NyaXB0TmFtZSxcbiAgICAgIGRhdGFiYXNlSWQ6IGRhdGFiYXNlLmlkLFxuICAgICAgc2NyaXB0Q29udGVudDogXCIuY3JlYXRlIHRhYmxlIFRlc3RUYWJsZSAoQ29sdW1uMTogc3RyaW5nLCBDb2x1bW4yOiBpbnQpXCIsXG4gICAgICBmb3JjZVVwZGF0ZVRhZzogdGVzdE1ldGFkYXRhLnJ1bklkLFxuICAgICAgY29udGludWVPbkVycm9yczogZmFsc2UsXG4gICAgfSk7XG4gIH1cbn1cblxuZGVzY3JpYmUoXCJEYXRhRXhwbG9yZXIgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSBBRFggY2x1c3RlciwgZGF0YWJhc2UsIGFuZCBzY3JpcHQsIHZhbGlkYXRlIGlkZW1wb3RlbmN5LCBhbmQgY2xlYW51cFwiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBEYXRhRXhwbG9yZXJFeGFtcGxlU3RhY2soYXBwLCBcInRlc3QtZGF0YWV4cGxvcmVyXCIpO1xuICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5mdWxsU3ludGgoc3RhY2spO1xuXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQsIHsgdmVyaWZ5Q2xlYW51cDogdHJ1ZSB9KTtcbiAgfSwgMTgwMDAwMCk7XG59KTtcbiJdfQ==
@@ -0,0 +1,248 @@
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 data_explorer_cluster_1 = require("../lib/data-explorer-cluster");
8
+ const data_explorer_cluster_schemas_1 = require("../lib/data-explorer-cluster-schemas");
9
+ const data_explorer_database_1 = require("../lib/data-explorer-database");
10
+ const data_explorer_database_schemas_1 = require("../lib/data-explorer-database-schemas");
11
+ const data_explorer_table_1 = require("../lib/data-explorer-table");
12
+ const data_explorer_table_schemas_1 = require("../lib/data-explorer-table-schemas");
13
+ describe("DataExplorer - Unified Implementation", () => {
14
+ let app;
15
+ let stack;
16
+ let manager;
17
+ beforeEach(() => {
18
+ app = cdktn_1.Testing.app();
19
+ stack = new cdktn.TerraformStack(app, "TestStack");
20
+ manager = api_version_manager_1.ApiVersionManager.instance();
21
+ try {
22
+ manager.registerResourceType(data_explorer_cluster_schemas_1.DATA_EXPLORER_CLUSTER_TYPE, data_explorer_cluster_schemas_1.ALL_DATA_EXPLORER_CLUSTER_VERSIONS);
23
+ }
24
+ catch (error) {
25
+ // Ignore if already registered
26
+ }
27
+ try {
28
+ manager.registerResourceType(data_explorer_database_schemas_1.DATA_EXPLORER_DATABASE_TYPE, data_explorer_database_schemas_1.ALL_DATA_EXPLORER_DATABASE_VERSIONS);
29
+ }
30
+ catch (error) {
31
+ // Ignore if already registered
32
+ }
33
+ try {
34
+ manager.registerResourceType(data_explorer_table_schemas_1.DATA_EXPLORER_SCRIPT_TYPE, data_explorer_table_schemas_1.ALL_DATA_EXPLORER_SCRIPT_VERSIONS);
35
+ }
36
+ catch (error) {
37
+ // Ignore if already registered
38
+ }
39
+ });
40
+ describe("DataExplorerCluster", () => {
41
+ const clusterProps = {
42
+ name: "test-cluster",
43
+ location: "eastus",
44
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
45
+ sku: {
46
+ name: "Dev(No SLA)_Standard_E2a_v4",
47
+ capacity: 1,
48
+ tier: "Basic",
49
+ },
50
+ };
51
+ it("should create cluster with automatic latest version resolution", () => {
52
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "TestCluster", clusterProps);
53
+ expect(cluster).toBeInstanceOf(data_explorer_cluster_1.DataExplorerCluster);
54
+ expect(cluster.resolvedApiVersion).toBe("2024-04-13");
55
+ expect(cluster.props).toBe(clusterProps);
56
+ expect(cluster.location).toBe("eastus");
57
+ });
58
+ it("should create cluster with all optional properties", () => {
59
+ const props = {
60
+ ...clusterProps,
61
+ tags: { environment: "test" },
62
+ identity: { type: "SystemAssigned" },
63
+ trustedExternalTenants: [
64
+ { value: "11111111-1111-1111-1111-111111111111" },
65
+ ],
66
+ optimizedAutoscale: {
67
+ version: 1,
68
+ isEnabled: true,
69
+ minimum: 1,
70
+ maximum: 2,
71
+ },
72
+ enableDiskEncryption: true,
73
+ enableStreamingIngest: true,
74
+ enablePurge: true,
75
+ };
76
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "FullCluster", props);
77
+ expect(cluster.props.identity).toEqual({ type: "SystemAssigned" });
78
+ expect(cluster.props.enablePurge).toBe(true);
79
+ expect(cluster.props.optimizedAutoscale?.maximum).toBe(2);
80
+ });
81
+ it("should require location to be provided", () => {
82
+ expect(() => {
83
+ new data_explorer_cluster_1.DataExplorerCluster(stack, "MissingLocation", {
84
+ name: "test-cluster",
85
+ sku: clusterProps.sku,
86
+ });
87
+ }).toThrow("Location is required for Microsoft.Kusto/clusters");
88
+ });
89
+ it("should support framework version metadata", () => {
90
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "FrameworkCluster", clusterProps);
91
+ expect(cluster.latestVersion()).toBe("2024-04-13");
92
+ expect(cluster.supportedVersions()).toEqual(["2024-04-13"]);
93
+ expect(cluster.schema.resourceType).toBe(data_explorer_cluster_schemas_1.DATA_EXPLORER_CLUSTER_TYPE);
94
+ expect(cluster.versionConfig.supportLevel).toBe(version_interfaces_1.VersionSupportLevel.ACTIVE);
95
+ });
96
+ it("should resolve parent ID from resource group", () => {
97
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "ParentCluster", clusterProps);
98
+ const parentId = cluster.resolveParentId(clusterProps);
99
+ expect(parentId).toBe(clusterProps.resourceGroupId);
100
+ });
101
+ it("should create the expected resource body", () => {
102
+ const props = {
103
+ ...clusterProps,
104
+ enableStreamingIngest: true,
105
+ };
106
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "BodyCluster", props);
107
+ const body = cluster.createResourceBody(props);
108
+ expect(body.sku).toEqual(clusterProps.sku);
109
+ expect(body.properties.enableStreamingIngest).toBe(true);
110
+ });
111
+ it("should expose outputs and URIs", () => {
112
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "OutputCluster", clusterProps);
113
+ expect(cluster.idOutput).toBeDefined();
114
+ expect(cluster.locationOutput).toBeDefined();
115
+ expect(cluster.nameOutput).toBeDefined();
116
+ expect(cluster.tagsOutput).toBeDefined();
117
+ expect(cluster.uriOutput).toBeDefined();
118
+ expect(cluster.uri).toContain("output.properties.uri");
119
+ expect(cluster.dataIngestionUri).toContain("output.properties.dataIngestionUri");
120
+ });
121
+ });
122
+ describe("DataExplorerDatabase", () => {
123
+ const databaseProps = {
124
+ name: "test-db",
125
+ location: "eastus",
126
+ clusterId: "/subscriptions/test-sub/resourceGroups/test-rg/providers/Microsoft.Kusto/clusters/test-cluster",
127
+ kind: "ReadWrite",
128
+ };
129
+ it("should create database with automatic latest version resolution", () => {
130
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "TestDatabase", databaseProps);
131
+ expect(database).toBeInstanceOf(data_explorer_database_1.DataExplorerDatabase);
132
+ expect(database.resolvedApiVersion).toBe("2024-04-13");
133
+ expect(database.props).toBe(databaseProps);
134
+ });
135
+ it("should default kind to ReadWrite", () => {
136
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "DefaultKind", {
137
+ name: "default-kind-db",
138
+ location: "eastus",
139
+ clusterId: databaseProps.clusterId,
140
+ });
141
+ const body = database.createResourceBody(database.props);
142
+ expect(body.kind).toBe("ReadWrite");
143
+ });
144
+ it("should support framework version metadata", () => {
145
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "FrameworkDatabase", databaseProps);
146
+ expect(database.latestVersion()).toBe("2024-04-13");
147
+ expect(database.supportedVersions()).toEqual(["2024-04-13"]);
148
+ expect(database.schema.resourceType).toBe(data_explorer_database_schemas_1.DATA_EXPLORER_DATABASE_TYPE);
149
+ expect(database.versionConfig.supportLevel).toBe(version_interfaces_1.VersionSupportLevel.ACTIVE);
150
+ });
151
+ it("should require location and should resolve parent ID correctly", () => {
152
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "ParentDatabase", databaseProps);
153
+ expect(database.requiresLocation()).toBe(true);
154
+ expect(database.resolveParentId(databaseProps)).toBe(databaseProps.clusterId);
155
+ });
156
+ it("should create the expected resource body", () => {
157
+ const props = {
158
+ ...databaseProps,
159
+ softDeletePeriod: "P365D",
160
+ hotCachePeriod: "P31D",
161
+ };
162
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "BodyDatabase", props);
163
+ const body = database.createResourceBody(props);
164
+ expect(body.kind).toBe("ReadWrite");
165
+ expect(body.properties.softDeletePeriod).toBe("P365D");
166
+ expect(body.properties.hotCachePeriod).toBe("P31D");
167
+ });
168
+ it("should expose outputs", () => {
169
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "OutputDatabase", databaseProps);
170
+ expect(database.idOutput).toBeDefined();
171
+ expect(database.nameOutput).toBeDefined();
172
+ expect(database.resourceId).toBe(database.id);
173
+ });
174
+ });
175
+ describe("DataExplorerScript", () => {
176
+ const scriptProps = {
177
+ name: "test-table-script",
178
+ databaseId: "/subscriptions/test-sub/resourceGroups/test-rg/providers/Microsoft.Kusto/clusters/test-cluster/databases/test-db",
179
+ scriptContent: ".create table TestTable (Column1: string, Column2: int)",
180
+ };
181
+ it("should create script with automatic latest version resolution", () => {
182
+ const script = new data_explorer_table_1.DataExplorerScript(stack, "TestScript", scriptProps);
183
+ expect(script).toBeInstanceOf(data_explorer_table_1.DataExplorerScript);
184
+ expect(script.resolvedApiVersion).toBe("2024-04-13");
185
+ expect(script.props).toBe(scriptProps);
186
+ });
187
+ it("should support framework version metadata", () => {
188
+ const script = new data_explorer_table_1.DataExplorerScript(stack, "FrameworkScript", scriptProps);
189
+ expect(script.latestVersion()).toBe("2024-04-13");
190
+ expect(script.supportedVersions()).toEqual(["2024-04-13"]);
191
+ expect(script.schema.resourceType).toBe(data_explorer_table_schemas_1.DATA_EXPLORER_SCRIPT_TYPE);
192
+ expect(script.versionConfig.supportLevel).toBe(version_interfaces_1.VersionSupportLevel.ACTIVE);
193
+ });
194
+ it("should not require location and should resolve parent ID correctly", () => {
195
+ const script = new data_explorer_table_1.DataExplorerScript(stack, "ParentScript", scriptProps);
196
+ expect(script.requiresLocation()).toBe(false);
197
+ expect(script.resolveParentId(scriptProps)).toBe(scriptProps.databaseId);
198
+ });
199
+ it("should create the expected resource body", () => {
200
+ const props = {
201
+ ...scriptProps,
202
+ forceUpdateTag: "test-run",
203
+ };
204
+ const script = new data_explorer_table_1.DataExplorerScript(stack, "BodyScript", props);
205
+ const body = script.createResourceBody(props);
206
+ expect(body.properties.scriptContent).toBe(scriptProps.scriptContent);
207
+ expect(body.properties.forceUpdateTag).toBe("test-run");
208
+ expect(body.properties.continueOnErrors).toBe(false);
209
+ });
210
+ it("should expose outputs", () => {
211
+ const script = new data_explorer_table_1.DataExplorerScript(stack, "OutputScript", scriptProps);
212
+ expect(script.idOutput).toBeDefined();
213
+ expect(script.nameOutput).toBeDefined();
214
+ expect(script.resourceId).toBe(script.id);
215
+ });
216
+ });
217
+ describe("CDK Terraform Integration", () => {
218
+ it("should synthesize all ADX resources in one stack", () => {
219
+ const cluster = new data_explorer_cluster_1.DataExplorerCluster(stack, "SynthCluster", {
220
+ name: "synth-cluster",
221
+ location: "eastus",
222
+ resourceGroupId: "/subscriptions/test-sub/resourceGroups/test-rg",
223
+ sku: {
224
+ name: "Dev(No SLA)_Standard_E2a_v4",
225
+ capacity: 1,
226
+ tier: "Basic",
227
+ },
228
+ });
229
+ const database = new data_explorer_database_1.DataExplorerDatabase(stack, "SynthDatabase", {
230
+ name: "synth-db",
231
+ location: "eastus",
232
+ clusterId: cluster.id,
233
+ kind: "ReadWrite",
234
+ });
235
+ new data_explorer_table_1.DataExplorerScript(stack, "SynthScript", {
236
+ name: "synth-script",
237
+ databaseId: database.id,
238
+ scriptContent: ".create table TestTable (Column1: string, Column2: int)",
239
+ });
240
+ const synthesized = cdktn_1.Testing.synth(stack);
241
+ expect(synthesized).toContain("Microsoft.Kusto/clusters@2024-04-13");
242
+ expect(synthesized).toContain("Microsoft.Kusto/clusters/databases@2024-04-13");
243
+ expect(synthesized).toContain("Microsoft.Kusto/clusters/databases/scripts@2024-04-13");
244
+ expect(synthesized).toContain("TestTable");
245
+ });
246
+ });
247
+ });
248
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1leHBsb3Jlci5zcGVjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWRhdGFleHBsb3Jlci90ZXN0L2RhdGEtZXhwbG9yZXIuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlDQUFnQztBQUNoQywrQkFBK0I7QUFDL0Isa0dBQTZGO0FBQzdGLDJHQUF5RztBQUN6Ryx3RUFHc0M7QUFDdEMsd0ZBRzhDO0FBQzlDLDBFQUd1QztBQUN2QywwRkFHK0M7QUFDL0Msb0VBR29DO0FBQ3BDLG9GQUc0QztBQUU1QyxRQUFRLENBQUMsdUNBQXVDLEVBQUUsR0FBRyxFQUFFO0lBQ3JELElBQUksR0FBYyxDQUFDO0lBQ25CLElBQUksS0FBMkIsQ0FBQztJQUNoQyxJQUFJLE9BQTBCLENBQUM7SUFFL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtRQUNkLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDcEIsS0FBSyxHQUFHLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkQsT0FBTyxHQUFHLHVDQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXZDLElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxvQkFBb0IsQ0FDMUIsMERBQTBCLEVBQzFCLGtFQUFrQyxDQUNuQyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZiwrQkFBK0I7UUFDakMsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxvQkFBb0IsQ0FDMUIsNERBQTJCLEVBQzNCLG9FQUFtQyxDQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZiwrQkFBK0I7UUFDakMsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE9BQU8sQ0FBQyxvQkFBb0IsQ0FDMUIsdURBQXlCLEVBQ3pCLCtEQUFpQyxDQUNsQyxD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SSxFQUFFLDZCQUE2QjtvQkFDbkMsUUFBUSxFQUFFLENBQUM7b0JBQ1gsSUFBSSxFQUFFLE9BQU87aUJBQ2Q7YUFDRixDQUFDLENBQUM7WUFFSCxNQUFNLFFBQVEsR0FBRyxJQUFJLDZDQUFvQixDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUU7Z0JBQ2hFLElBQUksRUFBRSxVQUFVO2dCQUNoQixRQUFRLEVBQUUsUUFBUTtnQkFDbEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNyQixJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUM7WUFFSCxJQUFJLHdDQUFrQixDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUU7Z0JBQzNDLElBQUksRUFBRSxjQUFjO2dCQUNwQixVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7Z0JBQ3ZCLGFBQWEsRUFDWCx5REFBeUQ7YUFDNUQsQ0FBQyxDQUFDO1lBRUgsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7WUFDckUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FDM0IsK0NBQStDLENBQ2hELENBQUM7WUFDRixNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUMzQix1REFBdUQsQ0FDeEQsQ0FBQztZQUNGLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVzdGluZyB9IGZyb20gXCJjZGt0blwiO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBBcGlWZXJzaW9uTWFuYWdlciB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvYXBpLXZlcnNpb24tbWFuYWdlclwiO1xuaW1wb3J0IHsgVmVyc2lvblN1cHBvcnRMZXZlbCB9IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi92ZXJzaW9uLW1hbmFnZXIvaW50ZXJmYWNlcy92ZXJzaW9uLWludGVyZmFjZXNcIjtcbmltcG9ydCB7XG4gIERhdGFFeHBsb3JlckNsdXN0ZXIsXG4gIERhdGFFeHBsb3JlckNsdXN0ZXJQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9kYXRhLWV4cGxvcmVyLWNsdXN0ZXJcIjtcbmltcG9ydCB7XG4gIEFMTF9EQVRBX0VYUExPUkVSX0NMVVNURVJfVkVSU0lPTlMsXG4gIERBVEFfRVhQTE9SRVJfQ0xVU1RFUl9UWVBFLFxufSBmcm9tIFwiLi4vbGliL2RhdGEtZXhwbG9yZXItY2x1c3Rlci1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBEYXRhRXhwbG9yZXJEYXRhYmFzZSxcbiAgRGF0YUV4cGxvcmVyRGF0YWJhc2VQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9kYXRhLWV4cGxvcmVyLWRhdGFiYXNlXCI7XG5pbXBvcnQge1xuICBBTExfREFUQV9FWFBMT1JFUl9EQVRBQkFTRV9WRVJTSU9OUyxcbiAgREFUQV9FWFBMT1JFUl9EQVRBQkFTRV9UWVBFLFxufSBmcm9tIFwiLi4vbGliL2RhdGEtZXhwbG9yZXItZGF0YWJhc2Utc2NoZW1hc1wiO1xuaW1wb3J0IHtcbiAgRGF0YUV4cGxvcmVyU2NyaXB0LFxuICBEYXRhRXhwbG9yZXJTY3JpcHRQcm9wcyxcbn0gZnJvbSBcIi4uL2xpYi9kYXRhLWV4cGxvcmVyLXRhYmxlXCI7XG5pbXBvcnQge1xuICBBTExfREFUQV9FWFBMT1JFUl9TQ1JJUFRfVkVSU0lPTlMsXG4gIERBVEFfRVhQTE9SRVJfU0NSSVBUX1RZUEUsXG59IGZyb20gXCIuLi9saWIvZGF0YS1leHBsb3Jlci10YWJsZS1zY2hlbWFzXCI7XG5cbmRlc2NyaWJlKFwiRGF0YUV4cGxvcmVyIC0gVW5pZmllZCBJbXBsZW1lbnRhdGlvblwiLCAoKSA9PiB7XG4gIGxldCBhcHA6IGNka3RuLkFwcDtcbiAgbGV0IHN0YWNrOiBjZGt0bi5UZXJyYWZvcm1TdGFjaztcbiAgbGV0IG1hbmFnZXI6IEFwaVZlcnNpb25NYW5hZ2VyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGFwcCA9IFRlc3RpbmcuYXBwKCk7XG4gICAgc3RhY2sgPSBuZXcgY2RrdG4uVGVycmFmb3JtU3RhY2soYXBwLCBcIlRlc3RTdGFja1wiKTtcbiAgICBtYW5hZ2VyID0gQXBpVmVyc2lvbk1hbmFnZXIuaW5zdGFuY2UoKTtcblxuICAgIHRyeSB7XG4gICAgICBtYW5hZ2VyLnJlZ2lzdGVyUmVzb3VyY2VUeXBlKFxuICAgICAgICBEQVRBX0VYUExPUkVSX0NMVVNURVJfVFlQRSxcbiAgICAgICAgQUxMX0RBVEFfRVhQTE9SRVJfQ0xVU1RFUl9WRVJTSU9OUyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgREFUQV9FWFBMT1JFUl9EQVRBQkFTRV9UWVBFLFxuICAgICAgICBBTExfREFUQV9FWFBMT1JFUl9EQVRBQkFTRV9WRVJTSU9OUyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIElnbm9yZSBpZiBhbHJlYWR5IHJlZ2lzdGVyZWRcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgbWFuYWdlci5yZWdpc3RlclJlc291cmNlVHlwZShcbiAgICAgICAgREFUQV9FWFBMT1JFUl9TQ1JJUFRfVFlQRSxcbiAgICAgICAgQUxMX0RBVEFfRVhQTE9SRVJfU0NSSVBUX1ZFUlNJT05TLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gSWdub3JlIGlmIGFscmVhZHkgcmVnaXN0ZXJlZFxuICAgIH1cbiAgfSk7XG5cbiAgZGVzY3JpYmUoXCJEYXRhRXhwbG9yZXJDbHVzdGVyXCIsICgpID0+IHtcbiAgICBjb25zdCBjbHVzdGVyUHJvcHM6IERhdGFFeHBsb3JlckNsdXN0ZXJQcm9wcyA9IHtcbiAgICAgIG5hbWU6IFwidGVzdC1jbHVzdGVyXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICBza3U6IHtcbiAgICAgICAgbmFtZTogXCJEZXYoTm8gU0xBKV9TdGFuZGFyZF9FMmFfdjRcIixcbiAgICAgICAgY2FwYWNpdHk6IDEsXG4gICAgICAgIHRpZXI6IFwiQmFzaWNcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGl0KFwic2hvdWxkIGNyZWF0ZSBjbHVzdGVyIHdpdGggYXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb25cIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBEYXRhRXhwbG9yZXJDbHVzdGVyKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJUZXN0Q2x1c3RlclwiLFxuICAgICAgICBjbHVzdGVyUHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY2x1c3RlcikudG9CZUluc3RhbmNlT2YoRGF0YUV4cGxvcmVyQ2x1c3Rlcik7XG4gICAgICBleHBlY3QoY2x1c3Rlci5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA0LTEzXCIpO1xuICAgICAgZXhwZWN0KGNsdXN0ZXIucHJvcHMpLnRvQmUoY2x1c3RlclByb3BzKTtcbiAgICAgIGV4cGVjdChjbHVzdGVyLmxvY2F0aW9uKS50b0JlKFwiZWFzdHVzXCIpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIGNsdXN0ZXIgd2l0aCBhbGwgb3B0aW9uYWwgcHJvcGVydGllc1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBwcm9wczogRGF0YUV4cGxvcmVyQ2x1c3RlclByb3BzID0ge1xuICAgICAgICAuLi5jbHVzdGVyUHJvcHMsXG4gICAgICAgIHRhZ3M6IHsgZW52aXJvbm1lbnQ6IFwidGVzdFwiIH0sXG4gICAgICAgIGlkZW50aXR5OiB7IHR5cGU6IFwiU3lzdGVtQXNzaWduZWRcIiB9LFxuICAgICAgICB0cnVzdGVkRXh0ZXJuYWxUZW5hbnRzOiBbXG4gICAgICAgICAgeyB2YWx1ZTogXCIxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTFcIiB9LFxuICAgICAgICBdLFxuICAgICAgICBvcHRpbWl6ZWRBdXRvc2NhbGU6IHtcbiAgICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICAgIGlzRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICAgIG1heGltdW06IDIsXG4gICAgICAgIH0sXG4gICAgICAgIGVuYWJsZURpc2tFbmNyeXB0aW9uOiB0cnVlLFxuICAgICAgICBlbmFibGVTdHJlYW1pbmdJbmdlc3Q6IHRydWUsXG4gICAgICAgIGVuYWJsZVB1cmdlOiB0cnVlLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBEYXRhRXhwbG9yZXJDbHVzdGVyKHN0YWNrLCBcIkZ1bGxDbHVzdGVyXCIsIHByb3BzKTtcblxuICAgICAgZXhwZWN0KGNsdXN0ZXIucHJvcHMuaWRlbnRpdHkpLnRvRXF1YWwoeyB0eXBlOiBcIlN5c3RlbUFzc2lnbmVkXCIgfSk7XG4gICAgICBleHBlY3QoY2x1c3Rlci5wcm9wcy5lbmFibGVQdXJnZSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChjbHVzdGVyLnByb3BzLm9wdGltaXplZEF1dG9zY2FsZT8ubWF4aW11bSkudG9CZSgyKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHJlcXVpcmUgbG9jYXRpb24gdG8gYmUgcHJvdmlkZWRcIiwgKCkgPT4ge1xuICAgICAgZXhwZWN0KCgpID0+IHtcbiAgICAgICAgbmV3IERhdGFFeHBsb3JlckNsdXN0ZXIoc3RhY2ssIFwiTWlzc2luZ0xvY2F0aW9uXCIsIHtcbiAgICAgICAgICBuYW1lOiBcInRlc3QtY2x1c3RlclwiLFxuICAgICAgICAgIHNrdTogY2x1c3RlclByb3BzLnNrdSxcbiAgICAgICAgfSk7XG4gICAgICB9KS50b1Rocm93KFwiTG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIE1pY3Jvc29mdC5LdXN0by9jbHVzdGVyc1wiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgZnJhbWV3b3JrIHZlcnNpb24gbWV0YWRhdGFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgY2x1c3RlciA9IG5ldyBEYXRhRXhwbG9yZXJDbHVzdGVyKFxuICAgICAgICBzdGFjayxcbiAgICAgICAgXCJGcmFtZXdvcmtDbHVzdGVyXCIsXG4gICAgICAgIGNsdXN0ZXJQcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChjbHVzdGVyLmxhdGVzdFZlcnNpb24oKSkudG9CZShcIjIwMjQtMDQtMTNcIik7XG4gICAgICBleHBlY3QoY2x1c3Rlci5zdXBwb3J0ZWRWZXJzaW9ucygpKS50b0VxdWFsKFtcIjIwMjQtMDQtMTNcIl0pO1xuICAgICAgZXhwZWN0KGNsdXN0ZXIuc2NoZW1hLnJlc291cmNlVHlwZSkudG9CZShEQVRBX0VYUExPUkVSX0NMVVNURVJfVFlQRSk7XG4gICAgICBleHBlY3QoY2x1c3Rlci52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcmVzb2x2ZSBwYXJlbnQgSUQgZnJvbSByZXNvdXJjZSBncm91cFwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBjbHVzdGVyID0gbmV3IERhdGFFeHBsb3JlckNsdXN0ZXIoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIlBhcmVudENsdXN0ZXJcIixcbiAgICAgICAgY2x1c3RlclByb3BzLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBhcmVudElkID0gKGNsdXN0ZXIgYXMgYW55KS5yZXNvbHZlUGFyZW50SWQoY2x1c3RlclByb3BzKTtcblxuICAgICAgZXhwZWN0KHBhcmVudElkKS50b0JlKGNsdXN0ZXJQcm9wcy5yZXNvdXJjZUdyb3VwSWQpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHRoZSBleHBlY3RlZCByZXNvdXJjZSBib2R5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBEYXRhRXhwbG9yZXJDbHVzdGVyUHJvcHMgPSB7XG4gICAgICAgIC4uLmNsdXN0ZXJQcm9wcyxcbiAgICAgICAgZW5hYmxlU3RyZWFtaW5nSW5nZXN0OiB0cnVlLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgRGF0YUV4cGxvcmVyQ2x1c3RlcihzdGFjaywgXCJCb2R5Q2x1c3RlclwiLCBwcm9wcyk7XG4gICAgICBjb25zdCBib2R5ID0gKGNsdXN0ZXIgYXMgYW55KS5jcmVhdGVSZXNvdXJjZUJvZHkocHJvcHMpO1xuXG4gICAgICBleHBlY3QoYm9keS5za3UpLnRvRXF1YWwoY2x1c3RlclByb3BzLnNrdSk7XG4gICAgICBleHBlY3QoYm9keS5wcm9wZXJ0aWVzLmVuYWJsZVN0cmVhbWluZ0luZ2VzdCkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGV4cG9zZSBvdXRwdXRzIGFuZCBVUklzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgRGF0YUV4cGxvcmVyQ2x1c3RlcihcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiT3V0cHV0Q2x1c3RlclwiLFxuICAgICAgICBjbHVzdGVyUHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoY2x1c3Rlci5pZE91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChjbHVzdGVyLmxvY2F0aW9uT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGNsdXN0ZXIubmFtZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChjbHVzdGVyLnRhZ3NPdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoY2x1c3Rlci51cmlPdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QoY2x1c3Rlci51cmkpLnRvQ29udGFpbihcIm91dHB1dC5wcm9wZXJ0aWVzLnVyaVwiKTtcbiAgICAgIGV4cGVjdChjbHVzdGVyLmRhdGFJbmdlc3Rpb25VcmkpLnRvQ29udGFpbihcbiAgICAgICAgXCJvdXRwdXQucHJvcGVydGllcy5kYXRhSW5nZXN0aW9uVXJpXCIsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkRhdGFFeHBsb3JlckRhdGFiYXNlXCIsICgpID0+IHtcbiAgICBjb25zdCBkYXRhYmFzZVByb3BzOiBEYXRhRXhwbG9yZXJEYXRhYmFzZVByb3BzID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0LWRiXCIsXG4gICAgICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAgICAgIGNsdXN0ZXJJZDpcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuS3VzdG8vY2x1c3RlcnMvdGVzdC1jbHVzdGVyXCIsXG4gICAgICBraW5kOiBcIlJlYWRXcml0ZVwiLFxuICAgIH07XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgZGF0YWJhc2Ugd2l0aCBhdXRvbWF0aWMgbGF0ZXN0IHZlcnNpb24gcmVzb2x1dGlvblwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhYmFzZSA9IG5ldyBEYXRhRXhwbG9yZXJEYXRhYmFzZShcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiVGVzdERhdGFiYXNlXCIsXG4gICAgICAgIGRhdGFiYXNlUHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoZGF0YWJhc2UpLnRvQmVJbnN0YW5jZU9mKERhdGFFeHBsb3JlckRhdGFiYXNlKTtcbiAgICAgIGV4cGVjdChkYXRhYmFzZS5yZXNvbHZlZEFwaVZlcnNpb24pLnRvQmUoXCIyMDI0LTA0LTEzXCIpO1xuICAgICAgZXhwZWN0KGRhdGFiYXNlLnByb3BzKS50b0JlKGRhdGFiYXNlUHJvcHMpO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgZGVmYXVsdCBraW5kIHRvIFJlYWRXcml0ZVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhYmFzZSA9IG5ldyBEYXRhRXhwbG9yZXJEYXRhYmFzZShzdGFjaywgXCJEZWZhdWx0S2luZFwiLCB7XG4gICAgICAgIG5hbWU6IFwiZGVmYXVsdC1raW5kLWRiXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBjbHVzdGVySWQ6IGRhdGFiYXNlUHJvcHMuY2x1c3RlcklkLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBib2R5ID0gKGRhdGFiYXNlIGFzIGFueSkuY3JlYXRlUmVzb3VyY2VCb2R5KGRhdGFiYXNlLnByb3BzKTtcblxuICAgICAgZXhwZWN0KGJvZHkua2luZCkudG9CZShcIlJlYWRXcml0ZVwiKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgZnJhbWV3b3JrIHZlcnNpb24gbWV0YWRhdGFcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YWJhc2UgPSBuZXcgRGF0YUV4cGxvcmVyRGF0YWJhc2UoXG4gICAgICAgIHN0YWNrLFxuICAgICAgICBcIkZyYW1ld29ya0RhdGFiYXNlXCIsXG4gICAgICAgIGRhdGFiYXNlUHJvcHMsXG4gICAgICApO1xuXG4gICAgICBleHBlY3QoZGF0YWJhc2UubGF0ZXN0VmVyc2lvbigpKS50b0JlKFwiMjAyNC0wNC0xM1wiKTtcbiAgICAgIGV4cGVjdChkYXRhYmFzZS5zdXBwb3J0ZWRWZXJzaW9ucygpKS50b0VxdWFsKFtcIjIwMjQtMDQtMTNcIl0pO1xuICAgICAgZXhwZWN0KGRhdGFiYXNlLnNjaGVtYS5yZXNvdXJjZVR5cGUpLnRvQmUoREFUQV9FWFBMT1JFUl9EQVRBQkFTRV9UWVBFKTtcbiAgICAgIGV4cGVjdChkYXRhYmFzZS52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgcmVxdWlyZSBsb2NhdGlvbiBhbmQgc2hvdWxkIHJlc29sdmUgcGFyZW50IElEIGNvcnJlY3RseVwiLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhYmFzZSA9IG5ldyBEYXRhRXhwbG9yZXJEYXRhYmFzZShcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiUGFyZW50RGF0YWJhc2VcIixcbiAgICAgICAgZGF0YWJhc2VQcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdCgoZGF0YWJhc2UgYXMgYW55KS5yZXF1aXJlc0xvY2F0aW9uKCkpLnRvQmUodHJ1ZSk7XG4gICAgICBleHBlY3QoKGRhdGFiYXNlIGFzIGFueSkucmVzb2x2ZVBhcmVudElkKGRhdGFiYXNlUHJvcHMpKS50b0JlKFxuICAgICAgICBkYXRhYmFzZVByb3BzLmNsdXN0ZXJJZCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBjcmVhdGUgdGhlIGV4cGVjdGVkIHJlc291cmNlIGJvZHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcHJvcHM6IERhdGFFeHBsb3JlckRhdGFiYXNlUHJvcHMgPSB7XG4gICAgICAgIC4uLmRhdGFiYXNlUHJvcHMsXG4gICAgICAgIHNvZnREZWxldGVQZXJpb2Q6IFwiUDM2NURcIixcbiAgICAgICAgaG90Q2FjaGVQZXJpb2Q6IFwiUDMxRFwiLFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGRhdGFiYXNlID0gbmV3IERhdGFFeHBsb3JlckRhdGFiYXNlKHN0YWNrLCBcIkJvZHlEYXRhYmFzZVwiLCBwcm9wcyk7XG4gICAgICBjb25zdCBib2R5ID0gKGRhdGFiYXNlIGFzIGFueSkuY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzKTtcblxuICAgICAgZXhwZWN0KGJvZHkua2luZCkudG9CZShcIlJlYWRXcml0ZVwiKTtcbiAgICAgIGV4cGVjdChib2R5LnByb3BlcnRpZXMuc29mdERlbGV0ZVBlcmlvZCkudG9CZShcIlAzNjVEXCIpO1xuICAgICAgZXhwZWN0KGJvZHkucHJvcGVydGllcy5ob3RDYWNoZVBlcmlvZCkudG9CZShcIlAzMURcIik7XG4gICAgfSk7XG5cbiAgICBpdChcInNob3VsZCBleHBvc2Ugb3V0cHV0c1wiLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhYmFzZSA9IG5ldyBEYXRhRXhwbG9yZXJEYXRhYmFzZShcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiT3V0cHV0RGF0YWJhc2VcIixcbiAgICAgICAgZGF0YWJhc2VQcm9wcyxcbiAgICAgICk7XG5cbiAgICAgIGV4cGVjdChkYXRhYmFzZS5pZE91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChkYXRhYmFzZS5uYW1lT3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KGRhdGFiYXNlLnJlc291cmNlSWQpLnRvQmUoZGF0YWJhc2UuaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkRhdGFFeHBsb3JlclNjcmlwdFwiLCAoKSA9PiB7XG4gICAgY29uc3Qgc2NyaXB0UHJvcHM6IERhdGFFeHBsb3JlclNjcmlwdFByb3BzID0ge1xuICAgICAgbmFtZTogXCJ0ZXN0LXRhYmxlLXNjcmlwdFwiLFxuICAgICAgZGF0YWJhc2VJZDpcbiAgICAgICAgXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnL3Byb3ZpZGVycy9NaWNyb3NvZnQuS3VzdG8vY2x1c3RlcnMvdGVzdC1jbHVzdGVyL2RhdGFiYXNlcy90ZXN0LWRiXCIsXG4gICAgICBzY3JpcHRDb250ZW50OiBcIi5jcmVhdGUgdGFibGUgVGVzdFRhYmxlIChDb2x1bW4xOiBzdHJpbmcsIENvbHVtbjI6IGludClcIixcbiAgICB9O1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHNjcmlwdCB3aXRoIGF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IG5ldyBEYXRhRXhwbG9yZXJTY3JpcHQoc3RhY2ssIFwiVGVzdFNjcmlwdFwiLCBzY3JpcHRQcm9wcyk7XG5cbiAgICAgIGV4cGVjdChzY3JpcHQpLnRvQmVJbnN0YW5jZU9mKERhdGFFeHBsb3JlclNjcmlwdCk7XG4gICAgICBleHBlY3Qoc2NyaXB0LnJlc29sdmVkQXBpVmVyc2lvbikudG9CZShcIjIwMjQtMDQtMTNcIik7XG4gICAgICBleHBlY3Qoc2NyaXB0LnByb3BzKS50b0JlKHNjcmlwdFByb3BzKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIHN1cHBvcnQgZnJhbWV3b3JrIHZlcnNpb24gbWV0YWRhdGFcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gbmV3IERhdGFFeHBsb3JlclNjcmlwdChcbiAgICAgICAgc3RhY2ssXG4gICAgICAgIFwiRnJhbWV3b3JrU2NyaXB0XCIsXG4gICAgICAgIHNjcmlwdFByb3BzLFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHNjcmlwdC5sYXRlc3RWZXJzaW9uKCkpLnRvQmUoXCIyMDI0LTA0LTEzXCIpO1xuICAgICAgZXhwZWN0KHNjcmlwdC5zdXBwb3J0ZWRWZXJzaW9ucygpKS50b0VxdWFsKFtcIjIwMjQtMDQtMTNcIl0pO1xuICAgICAgZXhwZWN0KHNjcmlwdC5zY2hlbWEucmVzb3VyY2VUeXBlKS50b0JlKERBVEFfRVhQTE9SRVJfU0NSSVBUX1RZUEUpO1xuICAgICAgZXhwZWN0KHNjcmlwdC52ZXJzaW9uQ29uZmlnLnN1cHBvcnRMZXZlbCkudG9CZShcbiAgICAgICAgVmVyc2lvblN1cHBvcnRMZXZlbC5BQ1RJVkUsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgbm90IHJlcXVpcmUgbG9jYXRpb24gYW5kIHNob3VsZCByZXNvbHZlIHBhcmVudCBJRCBjb3JyZWN0bHlcIiwgKCkgPT4ge1xuICAgICAgY29uc3Qgc2NyaXB0ID0gbmV3IERhdGFFeHBsb3JlclNjcmlwdChzdGFjaywgXCJQYXJlbnRTY3JpcHRcIiwgc2NyaXB0UHJvcHMpO1xuXG4gICAgICBleHBlY3QoKHNjcmlwdCBhcyBhbnkpLnJlcXVpcmVzTG9jYXRpb24oKSkudG9CZShmYWxzZSk7XG4gICAgICBleHBlY3QoKHNjcmlwdCBhcyBhbnkpLnJlc29sdmVQYXJlbnRJZChzY3JpcHRQcm9wcykpLnRvQmUoXG4gICAgICAgIHNjcmlwdFByb3BzLmRhdGFiYXNlSWQsXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgaXQoXCJzaG91bGQgY3JlYXRlIHRoZSBleHBlY3RlZCByZXNvdXJjZSBib2R5XCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHByb3BzOiBEYXRhRXhwbG9yZXJTY3JpcHRQcm9wcyA9IHtcbiAgICAgICAgLi4uc2NyaXB0UHJvcHMsXG4gICAgICAgIGZvcmNlVXBkYXRlVGFnOiBcInRlc3QtcnVuXCIsXG4gICAgICB9O1xuICAgICAgY29uc3Qgc2NyaXB0ID0gbmV3IERhdGFFeHBsb3JlclNjcmlwdChzdGFjaywgXCJCb2R5U2NyaXB0XCIsIHByb3BzKTtcbiAgICAgIGNvbnN0IGJvZHkgPSAoc2NyaXB0IGFzIGFueSkuY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzKTtcblxuICAgICAgZXhwZWN0KGJvZHkucHJvcGVydGllcy5zY3JpcHRDb250ZW50KS50b0JlKHNjcmlwdFByb3BzLnNjcmlwdENvbnRlbnQpO1xuICAgICAgZXhwZWN0KGJvZHkucHJvcGVydGllcy5mb3JjZVVwZGF0ZVRhZykudG9CZShcInRlc3QtcnVuXCIpO1xuICAgICAgZXhwZWN0KGJvZHkucHJvcGVydGllcy5jb250aW51ZU9uRXJyb3JzKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KFwic2hvdWxkIGV4cG9zZSBvdXRwdXRzXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IHNjcmlwdCA9IG5ldyBEYXRhRXhwbG9yZXJTY3JpcHQoc3RhY2ssIFwiT3V0cHV0U2NyaXB0XCIsIHNjcmlwdFByb3BzKTtcblxuICAgICAgZXhwZWN0KHNjcmlwdC5pZE91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzY3JpcHQubmFtZU91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChzY3JpcHQucmVzb3VyY2VJZCkudG9CZShzY3JpcHQuaWQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZShcIkNESyBUZXJyYWZvcm0gSW50ZWdyYXRpb25cIiwgKCkgPT4ge1xuICAgIGl0KFwic2hvdWxkIHN5bnRoZXNpemUgYWxsIEFEWCByZXNvdXJjZXMgaW4gb25lIHN0YWNrXCIsICgpID0+IHtcbiAgICAgIGNvbnN0IGNsdXN0ZXIgPSBuZXcgRGF0YUV4cGxvcmVyQ2x1c3RlcihzdGFjaywgXCJTeW50aENsdXN0ZXJcIiwge1xuICAgICAgICBuYW1lOiBcInN5bnRoLWNsdXN0ZXJcIixcbiAgICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICAgIHJlc291cmNlR3JvdXBJZDogXCIvc3Vic2NyaXB0aW9ucy90ZXN0LXN1Yi9yZXNvdXJjZUdyb3Vwcy90ZXN0LXJnXCIsXG4gICAgICAgIHNrdToge1xuICAgICAgICAgIG5hbWU6IFwiRGV2KE5vIFNMQSlfU3RhbmRhcmRfRTJhX3Y0XCIsXG4gICAgICAgICAgY2FwYWNpdHk6IDEsXG4gICAgICAgICAgdGllcjogXCJCYXNpY1wiLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGRhdGFiYXNlID0gbmV3IERhdGFFeHBsb3JlckRhdGFiYXNlKHN0YWNrLCBcIlN5bnRoRGF0YWJhc2VcIiwge1xuICAgICAgICBuYW1lOiBcInN5bnRoLWRiXCIsXG4gICAgICAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICAgICAgICBjbHVzdGVySWQ6IGNsdXN0ZXIuaWQsXG4gICAgICAgIGtpbmQ6IFwiUmVhZFdyaXRlXCIsXG4gICAgICB9KTtcblxuICAgICAgbmV3IERhdGFFeHBsb3JlclNjcmlwdChzdGFjaywgXCJTeW50aFNjcmlwdFwiLCB7XG4gICAgICAgIG5hbWU6IFwic3ludGgtc2NyaXB0XCIsXG4gICAgICAgIGRhdGFiYXNlSWQ6IGRhdGFiYXNlLmlkLFxuICAgICAgICBzY3JpcHRDb250ZW50OlxuICAgICAgICAgIFwiLmNyZWF0ZSB0YWJsZSBUZXN0VGFibGUgKENvbHVtbjE6IHN0cmluZywgQ29sdW1uMjogaW50KVwiLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHN5bnRoZXNpemVkID0gVGVzdGluZy5zeW50aChzdGFjayk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcIk1pY3Jvc29mdC5LdXN0by9jbHVzdGVyc0AyMDI0LTA0LTEzXCIpO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oXG4gICAgICAgIFwiTWljcm9zb2Z0Lkt1c3RvL2NsdXN0ZXJzL2RhdGFiYXNlc0AyMDI0LTA0LTEzXCIsXG4gICAgICApO1xuICAgICAgZXhwZWN0KHN5bnRoZXNpemVkKS50b0NvbnRhaW4oXG4gICAgICAgIFwiTWljcm9zb2Z0Lkt1c3RvL2NsdXN0ZXJzL2RhdGFiYXNlcy9zY3JpcHRzQDIwMjQtMDQtMTNcIixcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc3ludGhlc2l6ZWQpLnRvQ29udGFpbihcIlRlc3RUYWJsZVwiKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -167,7 +167,7 @@ class DiagnosticSettings extends azapi_resource_1.AzapiResource {
167
167
  }
168
168
  exports.DiagnosticSettings = DiagnosticSettings;
169
169
  _a = JSII_RTTI_SYMBOL_1;
170
- DiagnosticSettings[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DiagnosticSettings", version: "2.2.0" };
170
+ DiagnosticSettings[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DiagnosticSettings", version: "2.5.1" };
171
171
  (() => {
172
172
  azapi_resource_1.AzapiResource.registerSchemas(diagnostic_settings_schemas_1.DIAGNOSTIC_SETTINGS_TYPE, diagnostic_settings_schemas_1.ALL_DIAGNOSTIC_SETTINGS_VERSIONS);
173
173
  })();
@@ -207,7 +207,7 @@ class DnsForwardingRuleset extends azapi_resource_1.AzapiResource {
207
207
  }
208
208
  exports.DnsForwardingRuleset = DnsForwardingRuleset;
209
209
  _a = JSII_RTTI_SYMBOL_1;
210
- DnsForwardingRuleset[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRuleset", version: "2.2.0" };
210
+ DnsForwardingRuleset[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRuleset", version: "2.5.1" };
211
211
  (() => {
212
212
  azapi_resource_1.AzapiResource.registerSchemas(dns_forwarding_ruleset_schemas_1.DNS_FORWARDING_RULESET_TYPE, dns_forwarding_ruleset_schemas_1.ALL_DNS_FORWARDING_RULESET_VERSIONS);
213
213
  })();
@@ -186,7 +186,7 @@ class ForwardingRule extends azapi_resource_1.AzapiResource {
186
186
  }
187
187
  exports.ForwardingRule = ForwardingRule;
188
188
  _a = JSII_RTTI_SYMBOL_1;
189
- ForwardingRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ForwardingRule", version: "2.2.0" };
189
+ ForwardingRule[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ForwardingRule", version: "2.5.1" };
190
190
  (() => {
191
191
  azapi_resource_1.AzapiResource.registerSchemas(forwarding_rule_schemas_1.FORWARDING_RULE_TYPE, forwarding_rule_schemas_1.ALL_FORWARDING_RULE_VERSIONS);
192
192
  })();
@@ -171,7 +171,7 @@ class DnsForwardingRulesetVirtualNetworkLink extends azapi_resource_1.AzapiResou
171
171
  }
172
172
  exports.DnsForwardingRulesetVirtualNetworkLink = DnsForwardingRulesetVirtualNetworkLink;
173
173
  _a = JSII_RTTI_SYMBOL_1;
174
- DnsForwardingRulesetVirtualNetworkLink[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRulesetVirtualNetworkLink", version: "2.2.0" };
174
+ DnsForwardingRulesetVirtualNetworkLink[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsForwardingRulesetVirtualNetworkLink", version: "2.5.1" };
175
175
  (() => {
176
176
  azapi_resource_1.AzapiResource.registerSchemas(virtual_network_link_schemas_1.VIRTUAL_NETWORK_LINK_TYPE, virtual_network_link_schemas_1.ALL_VIRTUAL_NETWORK_LINK_VERSIONS);
177
177
  })();
@@ -229,7 +229,7 @@ class DnsResolver extends azapi_resource_1.AzapiResource {
229
229
  }
230
230
  exports.DnsResolver = DnsResolver;
231
231
  _a = JSII_RTTI_SYMBOL_1;
232
- DnsResolver[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolver", version: "2.2.0" };
232
+ DnsResolver[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolver", version: "2.5.1" };
233
233
  (() => {
234
234
  azapi_resource_1.AzapiResource.registerSchemas(dns_resolver_schemas_1.DNS_RESOLVER_TYPE, dns_resolver_schemas_1.ALL_DNS_RESOLVER_VERSIONS);
235
235
  })();
@@ -236,7 +236,7 @@ class DnsResolverInboundEndpoint extends azapi_resource_1.AzapiResource {
236
236
  }
237
237
  exports.DnsResolverInboundEndpoint = DnsResolverInboundEndpoint;
238
238
  _a = JSII_RTTI_SYMBOL_1;
239
- DnsResolverInboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverInboundEndpoint", version: "2.2.0" };
239
+ DnsResolverInboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverInboundEndpoint", version: "2.5.1" };
240
240
  (() => {
241
241
  azapi_resource_1.AzapiResource.registerSchemas(inbound_endpoint_schemas_1.DNS_RESOLVER_INBOUND_ENDPOINT_TYPE, inbound_endpoint_schemas_1.ALL_DNS_RESOLVER_INBOUND_ENDPOINT_VERSIONS);
242
242
  })();
@@ -227,7 +227,7 @@ class DnsResolverOutboundEndpoint extends azapi_resource_1.AzapiResource {
227
227
  }
228
228
  exports.DnsResolverOutboundEndpoint = DnsResolverOutboundEndpoint;
229
229
  _a = JSII_RTTI_SYMBOL_1;
230
- DnsResolverOutboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverOutboundEndpoint", version: "2.2.0" };
230
+ DnsResolverOutboundEndpoint[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsResolverOutboundEndpoint", version: "2.5.1" };
231
231
  (() => {
232
232
  azapi_resource_1.AzapiResource.registerSchemas(outbound_endpoint_schemas_1.DNS_RESOLVER_OUTBOUND_ENDPOINT_TYPE, outbound_endpoint_schemas_1.ALL_DNS_RESOLVER_OUTBOUND_ENDPOINT_VERSIONS);
233
233
  })();
@@ -221,7 +221,7 @@ class DnsZone extends azapi_resource_1.AzapiResource {
221
221
  }
222
222
  exports.DnsZone = DnsZone;
223
223
  _a = JSII_RTTI_SYMBOL_1;
224
- DnsZone[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsZone", version: "2.2.0" };
224
+ DnsZone[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsZone", version: "2.5.1" };
225
225
  (() => {
226
226
  azapi_resource_1.AzapiResource.registerSchemas(dns_zone_schemas_1.DNS_ZONE_TYPE, dns_zone_schemas_1.ALL_DNS_ZONE_VERSIONS);
227
227
  })();
@@ -123,7 +123,7 @@ class DnsARecord extends azapi_resource_1.AzapiResource {
123
123
  }
124
124
  exports.DnsARecord = DnsARecord;
125
125
  _a = JSII_RTTI_SYMBOL_1;
126
- DnsARecord[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsARecord", version: "2.2.0" };
126
+ DnsARecord[_a] = { fqn: "@microsoft/terraform-cdk-constructs.DnsARecord", version: "2.5.1" };
127
127
  (() => {
128
128
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_A_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_A_RECORD_VERSIONS);
129
129
  })();
@@ -212,7 +212,7 @@ class DnsAaaaRecord extends azapi_resource_1.AzapiResource {
212
212
  }
213
213
  exports.DnsAaaaRecord = DnsAaaaRecord;
214
214
  _b = JSII_RTTI_SYMBOL_1;
215
- DnsAaaaRecord[_b] = { fqn: "@microsoft/terraform-cdk-constructs.DnsAaaaRecord", version: "2.2.0" };
215
+ DnsAaaaRecord[_b] = { fqn: "@microsoft/terraform-cdk-constructs.DnsAaaaRecord", version: "2.5.1" };
216
216
  (() => {
217
217
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_AAAA_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_AAAA_RECORD_VERSIONS);
218
218
  })();
@@ -300,7 +300,7 @@ class DnsCaaRecord extends azapi_resource_1.AzapiResource {
300
300
  }
301
301
  exports.DnsCaaRecord = DnsCaaRecord;
302
302
  _c = JSII_RTTI_SYMBOL_1;
303
- DnsCaaRecord[_c] = { fqn: "@microsoft/terraform-cdk-constructs.DnsCaaRecord", version: "2.2.0" };
303
+ DnsCaaRecord[_c] = { fqn: "@microsoft/terraform-cdk-constructs.DnsCaaRecord", version: "2.5.1" };
304
304
  (() => {
305
305
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_CAA_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_CAA_RECORD_VERSIONS);
306
306
  })();
@@ -386,7 +386,7 @@ class DnsCnameRecord extends azapi_resource_1.AzapiResource {
386
386
  }
387
387
  exports.DnsCnameRecord = DnsCnameRecord;
388
388
  _d = JSII_RTTI_SYMBOL_1;
389
- DnsCnameRecord[_d] = { fqn: "@microsoft/terraform-cdk-constructs.DnsCnameRecord", version: "2.2.0" };
389
+ DnsCnameRecord[_d] = { fqn: "@microsoft/terraform-cdk-constructs.DnsCnameRecord", version: "2.5.1" };
390
390
  (() => {
391
391
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_CNAME_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_CNAME_RECORD_VERSIONS);
392
392
  })();
@@ -471,7 +471,7 @@ class DnsMxRecord extends azapi_resource_1.AzapiResource {
471
471
  }
472
472
  exports.DnsMxRecord = DnsMxRecord;
473
473
  _e = JSII_RTTI_SYMBOL_1;
474
- DnsMxRecord[_e] = { fqn: "@microsoft/terraform-cdk-constructs.DnsMxRecord", version: "2.2.0" };
474
+ DnsMxRecord[_e] = { fqn: "@microsoft/terraform-cdk-constructs.DnsMxRecord", version: "2.5.1" };
475
475
  (() => {
476
476
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_MX_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_MX_RECORD_VERSIONS);
477
477
  })();
@@ -556,7 +556,7 @@ class DnsNsRecord extends azapi_resource_1.AzapiResource {
556
556
  }
557
557
  exports.DnsNsRecord = DnsNsRecord;
558
558
  _f = JSII_RTTI_SYMBOL_1;
559
- DnsNsRecord[_f] = { fqn: "@microsoft/terraform-cdk-constructs.DnsNsRecord", version: "2.2.0" };
559
+ DnsNsRecord[_f] = { fqn: "@microsoft/terraform-cdk-constructs.DnsNsRecord", version: "2.5.1" };
560
560
  (() => {
561
561
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_NS_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_NS_RECORD_VERSIONS);
562
562
  })();
@@ -639,7 +639,7 @@ class DnsPtrRecord extends azapi_resource_1.AzapiResource {
639
639
  }
640
640
  exports.DnsPtrRecord = DnsPtrRecord;
641
641
  _g = JSII_RTTI_SYMBOL_1;
642
- DnsPtrRecord[_g] = { fqn: "@microsoft/terraform-cdk-constructs.DnsPtrRecord", version: "2.2.0" };
642
+ DnsPtrRecord[_g] = { fqn: "@microsoft/terraform-cdk-constructs.DnsPtrRecord", version: "2.5.1" };
643
643
  (() => {
644
644
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_PTR_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_PTR_RECORD_VERSIONS);
645
645
  })();
@@ -747,7 +747,7 @@ class DnsSoaRecord extends azapi_resource_1.AzapiResource {
747
747
  }
748
748
  exports.DnsSoaRecord = DnsSoaRecord;
749
749
  _h = JSII_RTTI_SYMBOL_1;
750
- DnsSoaRecord[_h] = { fqn: "@microsoft/terraform-cdk-constructs.DnsSoaRecord", version: "2.2.0" };
750
+ DnsSoaRecord[_h] = { fqn: "@microsoft/terraform-cdk-constructs.DnsSoaRecord", version: "2.5.1" };
751
751
  (() => {
752
752
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_SOA_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_SOA_RECORD_VERSIONS);
753
753
  })();
@@ -834,7 +834,7 @@ class DnsSrvRecord extends azapi_resource_1.AzapiResource {
834
834
  }
835
835
  exports.DnsSrvRecord = DnsSrvRecord;
836
836
  _j = JSII_RTTI_SYMBOL_1;
837
- DnsSrvRecord[_j] = { fqn: "@microsoft/terraform-cdk-constructs.DnsSrvRecord", version: "2.2.0" };
837
+ DnsSrvRecord[_j] = { fqn: "@microsoft/terraform-cdk-constructs.DnsSrvRecord", version: "2.5.1" };
838
838
  (() => {
839
839
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_SRV_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_SRV_RECORD_VERSIONS);
840
840
  })();
@@ -917,7 +917,7 @@ class DnsTxtRecord extends azapi_resource_1.AzapiResource {
917
917
  }
918
918
  exports.DnsTxtRecord = DnsTxtRecord;
919
919
  _k = JSII_RTTI_SYMBOL_1;
920
- DnsTxtRecord[_k] = { fqn: "@microsoft/terraform-cdk-constructs.DnsTxtRecord", version: "2.2.0" };
920
+ DnsTxtRecord[_k] = { fqn: "@microsoft/terraform-cdk-constructs.DnsTxtRecord", version: "2.5.1" };
921
921
  (() => {
922
922
  azapi_resource_1.AzapiResource.registerSchemas(dns_record_schemas_1.DNS_TXT_RECORD_TYPE, dns_record_schemas_1.ALL_DNS_TXT_RECORD_VERSIONS);
923
923
  })();
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXp1cmUtZXZlbnRncmlkZXZlbnRzdWJzY3JpcHRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xpYlwiO1xuIl19
@@ -0,0 +1,5 @@
1
+ import { ApiSchema, VersionConfig } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
2
+ export declare const EVENT_SUBSCRIPTION_SCHEMA_2025_02_15: ApiSchema;
3
+ export declare const EVENT_SUBSCRIPTION_VERSION_2025_02_15: VersionConfig;
4
+ export declare const ALL_EVENT_SUBSCRIPTION_VERSIONS: VersionConfig[];
5
+ export declare const EVENT_SUBSCRIPTION_TYPE = "Microsoft.EventGrid/systemTopics/eventSubscriptions";