@microsoft/terraform-cdk-constructs 2.2.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/.jsii +64029 -35477
  2. package/API.md +89314 -49618
  3. package/README.md +15 -0
  4. package/docs/azure-api-version-update-pipeline.md +271 -0
  5. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  6. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  7. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  8. package/lib/azure-applicationinsights/index.d.ts +7 -0
  9. package/lib/azure-applicationinsights/index.js +24 -0
  10. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  11. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  12. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  13. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  14. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  15. package/lib/azure-applicationinsights/lib/index.js +22 -0
  16. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  17. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  18. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  19. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  20. package/lib/azure-containerapps/lib/container-app-environment.js +1 -1
  21. package/lib/azure-containerapps/lib/container-app.js +1 -1
  22. package/lib/azure-containerapps/lib/container-apps-job-schemas.d.ts +8 -0
  23. package/lib/azure-containerapps/lib/container-apps-job-schemas.js +179 -0
  24. package/lib/azure-containerapps/lib/container-apps-job.d.ts +128 -0
  25. package/lib/azure-containerapps/lib/container-apps-job.js +81 -0
  26. package/lib/azure-containerapps/lib/index.d.ts +2 -0
  27. package/lib/azure-containerapps/lib/index.js +3 -1
  28. package/lib/azure-containerapps/test/container-apps-job.integ.d.ts +6 -0
  29. package/lib/azure-containerapps/test/container-apps-job.integ.js +95 -0
  30. package/lib/azure-containerapps/test/container-apps-job.spec.d.ts +1 -0
  31. package/lib/azure-containerapps/test/container-apps-job.spec.js +261 -0
  32. package/lib/azure-containerregistry/index.d.ts +1 -0
  33. package/lib/azure-containerregistry/index.js +18 -0
  34. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  35. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  36. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  37. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  38. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  39. package/lib/azure-containerregistry/lib/index.js +19 -0
  40. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  41. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  42. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  43. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  44. package/lib/azure-cosmosdb/index.d.ts +1 -0
  45. package/lib/azure-cosmosdb/index.js +18 -0
  46. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  47. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  48. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  49. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  50. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  51. package/lib/azure-cosmosdb/lib/index.js +19 -0
  52. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  53. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  54. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  55. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  56. package/lib/azure-dataexplorer/index.d.ts +1 -0
  57. package/lib/azure-dataexplorer/index.js +18 -0
  58. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.d.ts +5 -0
  59. package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.js +131 -0
  60. package/lib/azure-dataexplorer/lib/data-explorer-cluster.d.ts +54 -0
  61. package/lib/azure-dataexplorer/lib/data-explorer-cluster.js +91 -0
  62. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.d.ts +5 -0
  63. package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.js +78 -0
  64. package/lib/azure-dataexplorer/lib/data-explorer-database.d.ts +24 -0
  65. package/lib/azure-dataexplorer/lib/data-explorer-database.js +68 -0
  66. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.d.ts +5 -0
  67. package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.js +94 -0
  68. package/lib/azure-dataexplorer/lib/data-explorer-table.d.ts +25 -0
  69. package/lib/azure-dataexplorer/lib/data-explorer-table.js +62 -0
  70. package/lib/azure-dataexplorer/lib/index.d.ts +6 -0
  71. package/lib/azure-dataexplorer/lib/index.js +23 -0
  72. package/lib/azure-dataexplorer/test/data-explorer.integ.d.ts +1 -0
  73. package/lib/azure-dataexplorer/test/data-explorer.integ.js +78 -0
  74. package/lib/azure-dataexplorer/test/data-explorer.spec.d.ts +1 -0
  75. package/lib/azure-dataexplorer/test/data-explorer.spec.js +248 -0
  76. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  77. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  78. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  79. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  80. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  81. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  82. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  83. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  84. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  85. package/lib/azure-eventgrideventsubscription/index.d.ts +1 -0
  86. package/lib/azure-eventgrideventsubscription/index.js +18 -0
  87. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.d.ts +5 -0
  88. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.js +151 -0
  89. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.d.ts +59 -0
  90. package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.js +67 -0
  91. package/lib/azure-eventgrideventsubscription/lib/index.d.ts +2 -0
  92. package/lib/azure-eventgrideventsubscription/lib/index.js +19 -0
  93. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.d.ts +1 -0
  94. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.js +100 -0
  95. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.d.ts +1 -0
  96. package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.js +242 -0
  97. package/lib/azure-eventgridsystemtopic/index.d.ts +1 -0
  98. package/lib/azure-eventgridsystemtopic/index.js +18 -0
  99. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.d.ts +5 -0
  100. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.js +164 -0
  101. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.d.ts +46 -0
  102. package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.js +68 -0
  103. package/lib/azure-eventgridsystemtopic/lib/index.d.ts +2 -0
  104. package/lib/azure-eventgridsystemtopic/lib/index.js +19 -0
  105. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.d.ts +1 -0
  106. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.js +64 -0
  107. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.d.ts +1 -0
  108. package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.js +241 -0
  109. package/lib/azure-eventhub/index.d.ts +7 -0
  110. package/lib/azure-eventhub/index.js +24 -0
  111. package/lib/azure-eventhub/lib/event-hub-namespace.d.ts +204 -0
  112. package/lib/azure-eventhub/lib/event-hub-namespace.js +178 -0
  113. package/lib/azure-eventhub/lib/event-hub-schemas.d.ts +63 -0
  114. package/lib/azure-eventhub/lib/event-hub-schemas.js +370 -0
  115. package/lib/azure-eventhub/lib/event-hub.d.ts +153 -0
  116. package/lib/azure-eventhub/lib/event-hub.js +171 -0
  117. package/lib/azure-eventhub/lib/index.d.ts +6 -0
  118. package/lib/azure-eventhub/lib/index.js +23 -0
  119. package/lib/azure-eventhub/test/event-hub.integ.d.ts +9 -0
  120. package/lib/azure-eventhub/test/event-hub.integ.js +113 -0
  121. package/lib/azure-eventhub/test/event-hub.spec.d.ts +8 -0
  122. package/lib/azure-eventhub/test/event-hub.spec.js +438 -0
  123. package/lib/azure-functionapp/index.d.ts +1 -0
  124. package/lib/azure-functionapp/index.js +18 -0
  125. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  126. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  127. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  128. package/lib/azure-functionapp/lib/function-app.js +223 -0
  129. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  130. package/lib/azure-functionapp/lib/index.js +19 -0
  131. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  132. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  133. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  134. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  135. package/lib/azure-keyvault/index.d.ts +1 -0
  136. package/lib/azure-keyvault/index.js +18 -0
  137. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  138. package/lib/azure-keyvault/lib/index.js +19 -0
  139. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  140. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  141. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  142. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  143. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  144. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  145. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  146. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  147. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
  148. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  149. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  150. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  151. package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
  152. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  153. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  154. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
  155. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  156. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  157. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  158. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  159. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  160. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  161. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  162. package/lib/azure-sreagent/index.d.ts +1 -0
  163. package/lib/azure-sreagent/index.js +18 -0
  164. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  165. package/lib/azure-sreagent/lib/index.js +19 -0
  166. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  167. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  168. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  169. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  170. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  171. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  172. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  173. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  174. package/lib/azure-staticwebapp/index.d.ts +1 -0
  175. package/lib/azure-staticwebapp/index.js +18 -0
  176. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  177. package/lib/azure-staticwebapp/lib/index.js +19 -0
  178. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  179. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  180. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  181. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  182. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  183. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  184. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  185. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  186. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  187. package/lib/azure-storageblobcontainer/index.d.ts +1 -0
  188. package/lib/azure-storageblobcontainer/index.js +18 -0
  189. package/lib/azure-storageblobcontainer/lib/index.d.ts +2 -0
  190. package/lib/azure-storageblobcontainer/lib/index.js +19 -0
  191. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.d.ts +5 -0
  192. package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.js +108 -0
  193. package/lib/azure-storageblobcontainer/lib/storage-blob-container.d.ts +37 -0
  194. package/lib/azure-storageblobcontainer/lib/storage-blob-container.js +63 -0
  195. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.d.ts +1 -0
  196. package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.js +60 -0
  197. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.d.ts +1 -0
  198. package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.js +172 -0
  199. package/lib/azure-subnet/lib/subnet.js +1 -1
  200. package/lib/azure-userassignedidentity/index.d.ts +1 -0
  201. package/lib/azure-userassignedidentity/index.js +18 -0
  202. package/lib/azure-userassignedidentity/lib/index.d.ts +2 -0
  203. package/lib/azure-userassignedidentity/lib/index.js +19 -0
  204. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.d.ts +8 -0
  205. package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.js +107 -0
  206. package/lib/azure-userassignedidentity/lib/user-assigned-identity.d.ts +37 -0
  207. package/lib/azure-userassignedidentity/lib/user-assigned-identity.js +85 -0
  208. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.d.ts +1 -0
  209. package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.js +64 -0
  210. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.d.ts +1 -0
  211. package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.js +241 -0
  212. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  213. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  214. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  215. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  216. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  217. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  218. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  219. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  220. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  221. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  222. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  223. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  224. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  225. package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +66 -1
  226. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +141 -2
  227. package/lib/azure-vmss/lib/vmss-schemas.d.ts +195 -0
  228. package/lib/azure-vmss/lib/vmss-schemas.js +33 -1
  229. package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +463 -1
  230. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  231. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  232. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  233. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  234. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  235. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  236. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  237. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  238. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  239. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  240. package/lib/index.d.ts +39 -0
  241. package/lib/index.js +41 -2
  242. package/lib/testing/index.js +20 -3
  243. package/lib/testing/lib/cleanup.js +1 -1
  244. package/lib/testing/lib/metadata.js +12 -4
  245. package/lib/testing/lib/naming.js +57 -1
  246. package/package.json +1 -1
  247. package/scripts/azure-version-updater/create-issue.ts +189 -0
  248. package/scripts/azure-version-updater/discover.ts +382 -0
  249. package/scripts/azure-version-updater/spec-mapping.ts +164 -0
  250. package/scripts/azure-version-updater/tsconfig.json +11 -0
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Unified Azure Application Insights implementation using AzapiResource framework
3
+ *
4
+ * This class provides a version-aware implementation for Azure Application Insights
5
+ * components that automatically handles version management, schema validation, and
6
+ * property transformation across all supported API versions.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2020-02-02 (Active, Latest)
10
+ *
11
+ * Features:
12
+ * - Automatic latest version resolution when no version is specified
13
+ * - Explicit version pinning for stability requirements
14
+ * - Schema-driven validation and transformation
15
+ * - Full JSII compliance for multi-language support
16
+ * - Workspace-based Application Insights (classic mode is retired)
17
+ * - Configurable sampling, retention, IP masking, and network access
18
+ */
19
+ import * as cdktn from "cdktn";
20
+ import { Construct } from "constructs";
21
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
22
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
23
+ /**
24
+ * Supported Application Insights application types
25
+ *
26
+ * Determines how telemetry is processed and visualized.
27
+ */
28
+ export type ApplicationInsightsApplicationType = "web" | "other" | "java" | "MobileCenter" | "Node.JS" | "ios" | "store";
29
+ /**
30
+ * Allowed retention values (in days) for Application Insights
31
+ */
32
+ export declare const APPLICATION_INSIGHTS_VALID_RETENTION_DAYS: number[];
33
+ /**
34
+ * Properties for the unified Azure Application Insights component
35
+ *
36
+ * Extends AzapiResourceProps with Application Insights specific properties
37
+ */
38
+ export interface ApplicationInsightsProps extends AzapiResourceProps {
39
+ /**
40
+ * Resource Group ID where the Application Insights component will be created
41
+ * The component will be created as a child of this resource group
42
+ */
43
+ readonly resourceGroupId: string;
44
+ /**
45
+ * Resource ID of the Log Analytics workspace to associate with this component
46
+ *
47
+ * Required for workspace-based Application Insights (the only supported mode
48
+ * since the classic mode was retired on February 29, 2024).
49
+ */
50
+ readonly workspaceResourceId: string;
51
+ /**
52
+ * Type of application being monitored
53
+ *
54
+ * Determines how telemetry data is processed and visualized.
55
+ *
56
+ * @defaultValue "web"
57
+ */
58
+ readonly applicationType?: ApplicationInsightsApplicationType;
59
+ /**
60
+ * Telemetry data retention period in days
61
+ *
62
+ * Allowed values: 30, 60, 90, 120, 180, 270, 365, 550, 730.
63
+ *
64
+ * @defaultValue 90
65
+ */
66
+ readonly retentionInDays?: number;
67
+ /**
68
+ * Telemetry sampling percentage
69
+ *
70
+ * Value between 0 and 100. When set below 100, only a subset of telemetry is
71
+ * captured to reduce ingestion volume and cost.
72
+ */
73
+ readonly samplingPercentage?: number;
74
+ /**
75
+ * Whether IP address masking is disabled
76
+ *
77
+ * When false (default), Application Insights masks the last octet of client
78
+ * IP addresses to protect end-user privacy.
79
+ *
80
+ * @defaultValue false
81
+ */
82
+ readonly disableIpMasking?: boolean;
83
+ /**
84
+ * Public network access for data ingestion
85
+ *
86
+ * @defaultValue "Enabled"
87
+ */
88
+ readonly publicNetworkAccessForIngestion?: "Enabled" | "Disabled";
89
+ /**
90
+ * Public network access for querying telemetry
91
+ *
92
+ * @defaultValue "Enabled"
93
+ */
94
+ readonly publicNetworkAccessForQuery?: "Enabled" | "Disabled";
95
+ /**
96
+ * Whether local (instrumentation key based) authentication is disabled
97
+ *
98
+ * When true, only Microsoft Entra ID (Azure AD) authentication can be used to
99
+ * ingest and query telemetry.
100
+ *
101
+ * @defaultValue false
102
+ */
103
+ readonly disableLocalAuth?: boolean;
104
+ /**
105
+ * Force the use of a customer-provided storage account for the profiler and
106
+ * snapshot debugger.
107
+ *
108
+ * @defaultValue false
109
+ */
110
+ readonly forceCustomerStorageForProfiler?: boolean;
111
+ }
112
+ /**
113
+ * Unified Azure Application Insights implementation
114
+ *
115
+ * This class provides a single, version-aware implementation that automatically
116
+ * handles version resolution, schema validation, and property transformation
117
+ * while maintaining full JSII compliance.
118
+ *
119
+ * Application Insights is an extensible Application Performance Management (APM)
120
+ * service that helps you monitor live web applications. It automatically detects
121
+ * performance anomalies and includes powerful analytics tools to help diagnose
122
+ * issues and understand application usage.
123
+ *
124
+ * Workspace-based Application Insights resources send telemetry to a Log
125
+ * Analytics workspace, where you can use the full power of Kusto Query Language
126
+ * (KQL) to analyze your data.
127
+ *
128
+ * @example
129
+ * // Basic Application Insights component:
130
+ * const appInsights = new ApplicationInsights(this, "my-appinsights", {
131
+ * name: "my-application-insights",
132
+ * location: "eastus",
133
+ * resourceGroupId: resourceGroup.id,
134
+ * workspaceResourceId: workspace.id,
135
+ * });
136
+ *
137
+ * @example
138
+ * // Application Insights with custom retention and sampling:
139
+ * const appInsights = new ApplicationInsights(this, "production-ai", {
140
+ * name: "production-ai",
141
+ * location: "eastus",
142
+ * resourceGroupId: resourceGroup.id,
143
+ * workspaceResourceId: workspace.id,
144
+ * applicationType: "web",
145
+ * retentionInDays: 365,
146
+ * samplingPercentage: 50,
147
+ * tags: {
148
+ * environment: "production"
149
+ * }
150
+ * });
151
+ *
152
+ * @stability stable
153
+ */
154
+ export declare class ApplicationInsights extends AzapiResource {
155
+ /**
156
+ * The input properties for this Application Insights instance
157
+ */
158
+ readonly props: ApplicationInsightsProps;
159
+ readonly idOutput: cdktn.TerraformOutput;
160
+ readonly nameOutput: cdktn.TerraformOutput;
161
+ readonly instrumentationKeyOutput: cdktn.TerraformOutput;
162
+ readonly connectionStringOutput: cdktn.TerraformOutput;
163
+ readonly appIdOutput: cdktn.TerraformOutput;
164
+ /**
165
+ * Creates a new Azure Application Insights component using the AzapiResource framework
166
+ *
167
+ * The constructor automatically handles version resolution, schema registration,
168
+ * validation, and resource creation.
169
+ *
170
+ * @param scope - The scope in which to define this construct
171
+ * @param id - The unique identifier for this instance
172
+ * @param props - Configuration properties for the Application Insights component
173
+ */
174
+ constructor(scope: Construct, id: string, props: ApplicationInsightsProps);
175
+ /**
176
+ * Gets the default API version to use when no explicit version is specified
177
+ * Returns the latest stable version as the default
178
+ */
179
+ protected defaultVersion(): string;
180
+ /**
181
+ * Gets the Azure resource type for Application Insights
182
+ */
183
+ protected resourceType(): string;
184
+ /**
185
+ * Gets the API schema for the resolved version
186
+ * Uses the framework's schema resolution to get the appropriate schema
187
+ */
188
+ protected apiSchema(): ApiSchema;
189
+ /**
190
+ * Indicates that this resource type requires a location
191
+ */
192
+ protected requiresLocation(): boolean;
193
+ /**
194
+ * Creates the resource body for the Azure API call
195
+ * Transforms the input properties into the JSON format expected by Azure REST API
196
+ */
197
+ protected createResourceBody(props: any): any;
198
+ /**
199
+ * Resolves the parent resource ID for Application Insights
200
+ * Application Insights is a top-level resource within a resource group
201
+ *
202
+ * @param props - The resource properties
203
+ * @returns The parent resource ID (the resource group)
204
+ */
205
+ protected resolveParentId(props: any): string;
206
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ApplicationInsights = exports.APPLICATION_INSIGHTS_VALID_RETENTION_DAYS = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Unified Azure Application Insights implementation using AzapiResource framework
8
+ *
9
+ * This class provides a version-aware implementation for Azure Application Insights
10
+ * components that automatically handles version management, schema validation, and
11
+ * property transformation across all supported API versions.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2020-02-02 (Active, Latest)
15
+ *
16
+ * Features:
17
+ * - Automatic latest version resolution when no version is specified
18
+ * - Explicit version pinning for stability requirements
19
+ * - Schema-driven validation and transformation
20
+ * - Full JSII compliance for multi-language support
21
+ * - Workspace-based Application Insights (classic mode is retired)
22
+ * - Configurable sampling, retention, IP masking, and network access
23
+ */
24
+ const cdktn = require("cdktn");
25
+ const application_insights_schemas_1 = require("./application-insights-schemas");
26
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
27
+ /**
28
+ * Allowed retention values (in days) for Application Insights
29
+ */
30
+ exports.APPLICATION_INSIGHTS_VALID_RETENTION_DAYS = [
31
+ 30, 60, 90, 120, 180, 270, 365, 550, 730,
32
+ ];
33
+ /**
34
+ * Unified Azure Application Insights implementation
35
+ *
36
+ * This class provides a single, version-aware implementation that automatically
37
+ * handles version resolution, schema validation, and property transformation
38
+ * while maintaining full JSII compliance.
39
+ *
40
+ * Application Insights is an extensible Application Performance Management (APM)
41
+ * service that helps you monitor live web applications. It automatically detects
42
+ * performance anomalies and includes powerful analytics tools to help diagnose
43
+ * issues and understand application usage.
44
+ *
45
+ * Workspace-based Application Insights resources send telemetry to a Log
46
+ * Analytics workspace, where you can use the full power of Kusto Query Language
47
+ * (KQL) to analyze your data.
48
+ *
49
+ * @example
50
+ * // Basic Application Insights component:
51
+ * const appInsights = new ApplicationInsights(this, "my-appinsights", {
52
+ * name: "my-application-insights",
53
+ * location: "eastus",
54
+ * resourceGroupId: resourceGroup.id,
55
+ * workspaceResourceId: workspace.id,
56
+ * });
57
+ *
58
+ * @example
59
+ * // Application Insights with custom retention and sampling:
60
+ * const appInsights = new ApplicationInsights(this, "production-ai", {
61
+ * name: "production-ai",
62
+ * location: "eastus",
63
+ * resourceGroupId: resourceGroup.id,
64
+ * workspaceResourceId: workspace.id,
65
+ * applicationType: "web",
66
+ * retentionInDays: 365,
67
+ * samplingPercentage: 50,
68
+ * tags: {
69
+ * environment: "production"
70
+ * }
71
+ * });
72
+ *
73
+ * @stability stable
74
+ */
75
+ class ApplicationInsights extends azapi_resource_1.AzapiResource {
76
+ /**
77
+ * Creates a new Azure Application Insights component using the AzapiResource framework
78
+ *
79
+ * The constructor automatically handles version resolution, schema registration,
80
+ * validation, and resource creation.
81
+ *
82
+ * @param scope - The scope in which to define this construct
83
+ * @param id - The unique identifier for this instance
84
+ * @param props - Configuration properties for the Application Insights component
85
+ */
86
+ constructor(scope, id, props) {
87
+ // Validate retention days if provided
88
+ if (props.retentionInDays !== undefined) {
89
+ if (!exports.APPLICATION_INSIGHTS_VALID_RETENTION_DAYS.includes(props.retentionInDays)) {
90
+ throw new Error(`retentionInDays must be one of ${exports.APPLICATION_INSIGHTS_VALID_RETENTION_DAYS.join(", ")} days`);
91
+ }
92
+ }
93
+ // Validate sampling percentage if provided
94
+ if (props.samplingPercentage !== undefined) {
95
+ if (props.samplingPercentage < 0 || props.samplingPercentage > 100) {
96
+ throw new Error("samplingPercentage must be between 0 and 100");
97
+ }
98
+ }
99
+ super(scope, id, props);
100
+ this.props = props;
101
+ // Create Terraform outputs for easy access and referencing from other resources
102
+ this.idOutput = new cdktn.TerraformOutput(this, "id", {
103
+ value: this.id,
104
+ description: "The ID of the Application Insights component",
105
+ });
106
+ this.nameOutput = new cdktn.TerraformOutput(this, "name", {
107
+ value: `\${${this.terraformResource.fqn}.name}`,
108
+ description: "The name of the Application Insights component",
109
+ });
110
+ this.instrumentationKeyOutput = new cdktn.TerraformOutput(this, "instrumentation_key", {
111
+ value: `\${${this.terraformResource.fqn}.output.properties.InstrumentationKey}`,
112
+ description: "The instrumentation key of the Application Insights component",
113
+ sensitive: true,
114
+ });
115
+ this.connectionStringOutput = new cdktn.TerraformOutput(this, "connection_string", {
116
+ value: `\${${this.terraformResource.fqn}.output.properties.ConnectionString}`,
117
+ description: "The connection string of the Application Insights component",
118
+ sensitive: true,
119
+ });
120
+ this.appIdOutput = new cdktn.TerraformOutput(this, "app_id", {
121
+ value: `\${${this.terraformResource.fqn}.output.properties.AppId}`,
122
+ description: "The App ID of the Application Insights component",
123
+ });
124
+ // Override logical IDs
125
+ this.idOutput.overrideLogicalId("id");
126
+ this.nameOutput.overrideLogicalId("name");
127
+ this.instrumentationKeyOutput.overrideLogicalId("instrumentation_key");
128
+ this.connectionStringOutput.overrideLogicalId("connection_string");
129
+ this.appIdOutput.overrideLogicalId("app_id");
130
+ }
131
+ // =============================================================================
132
+ // REQUIRED ABSTRACT METHODS FROM AzapiResource
133
+ // =============================================================================
134
+ /**
135
+ * Gets the default API version to use when no explicit version is specified
136
+ * Returns the latest stable version as the default
137
+ */
138
+ defaultVersion() {
139
+ return "2020-02-02";
140
+ }
141
+ /**
142
+ * Gets the Azure resource type for Application Insights
143
+ */
144
+ resourceType() {
145
+ return application_insights_schemas_1.APPLICATION_INSIGHTS_TYPE;
146
+ }
147
+ /**
148
+ * Gets the API schema for the resolved version
149
+ * Uses the framework's schema resolution to get the appropriate schema
150
+ */
151
+ apiSchema() {
152
+ return this.resolveSchema();
153
+ }
154
+ /**
155
+ * Indicates that this resource type requires a location
156
+ */
157
+ requiresLocation() {
158
+ return true;
159
+ }
160
+ /**
161
+ * Creates the resource body for the Azure API call
162
+ * Transforms the input properties into the JSON format expected by Azure REST API
163
+ */
164
+ createResourceBody(props) {
165
+ const typedProps = props;
166
+ const body = {
167
+ kind: "web",
168
+ properties: {
169
+ Application_Type: typedProps.applicationType ?? "web",
170
+ WorkspaceResourceId: typedProps.workspaceResourceId,
171
+ RetentionInDays: typedProps.retentionInDays ?? 90,
172
+ publicNetworkAccessForIngestion: typedProps.publicNetworkAccessForIngestion ?? "Enabled",
173
+ publicNetworkAccessForQuery: typedProps.publicNetworkAccessForQuery ?? "Enabled",
174
+ },
175
+ };
176
+ // Add optional properties only if specified
177
+ if (typedProps.samplingPercentage !== undefined) {
178
+ body.properties.SamplingPercentage = typedProps.samplingPercentage;
179
+ }
180
+ if (typedProps.disableIpMasking !== undefined) {
181
+ body.properties.DisableIpMasking = typedProps.disableIpMasking;
182
+ }
183
+ if (typedProps.disableLocalAuth !== undefined) {
184
+ body.properties.DisableLocalAuth = typedProps.disableLocalAuth;
185
+ }
186
+ if (typedProps.forceCustomerStorageForProfiler !== undefined) {
187
+ body.properties.ForceCustomerStorageForProfiler =
188
+ typedProps.forceCustomerStorageForProfiler;
189
+ }
190
+ return body;
191
+ }
192
+ /**
193
+ * Resolves the parent resource ID for Application Insights
194
+ * Application Insights is a top-level resource within a resource group
195
+ *
196
+ * @param props - The resource properties
197
+ * @returns The parent resource ID (the resource group)
198
+ */
199
+ resolveParentId(props) {
200
+ return props.resourceGroupId;
201
+ }
202
+ }
203
+ exports.ApplicationInsights = ApplicationInsights;
204
+ _a = JSII_RTTI_SYMBOL_1;
205
+ ApplicationInsights[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ApplicationInsights", version: "2.5.0" };
206
+ (() => {
207
+ azapi_resource_1.AzapiResource.registerSchemas(application_insights_schemas_1.APPLICATION_INSIGHTS_TYPE, application_insights_schemas_1.ALL_APPLICATION_INSIGHTS_VERSIONS);
208
+ })();
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24taW5zaWdodHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtYXBwbGljYXRpb25pbnNpZ2h0cy9saWIvYXBwbGljYXRpb24taW5zaWdodHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFFSCwrQkFBK0I7QUFFL0IsaUZBR3dDO0FBQ3hDLDhFQUdtRDtBQWlCbkQ7O0dBRUc7QUFDVSxRQUFBLHlDQUF5QyxHQUFhO0lBQ2pFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRztDQUN6QyxDQUFDO0FBMkZGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlDRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsOEJBQWE7SUFvQnBEOzs7Ozs7Ozs7T0FTRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsc0NBQXNDO1FBQ3RDLElBQUksS0FBSyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxJQUNFLENBQUMsaURBQXlDLENBQUMsUUFBUSxDQUNqRCxLQUFLLENBQUMsZUFBZSxDQUN0QixFQUNELENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixrQ0FBa0MsaURBQXlDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQzlGLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELDJDQUEyQztRQUMzQyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUNuRSxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixnRkFBZ0Y7UUFDaEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtZQUNwRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDZCxXQUFXLEVBQUUsOENBQThDO1NBQzVELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7WUFDeEQsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsUUFBUTtZQUMvQyxXQUFXLEVBQUUsZ0RBQWdEO1NBQzlELENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQ3ZELElBQUksRUFDSixxQkFBcUIsRUFDckI7WUFDRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyx3Q0FBd0M7WUFDL0UsV0FBVyxFQUNULCtEQUErRDtZQUNqRSxTQUFTLEVBQUUsSUFBSTtTQUNoQixDQUNGLENBQUM7UUFFRixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUNyRCxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CO1lBQ0UsS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsc0NBQXNDO1lBQzdFLFdBQVcsRUFDVCw2REFBNkQ7WUFDL0QsU0FBUyxFQUFFLElBQUk7U0FDaEIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUMzRCxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRywyQkFBMkI7WUFDbEUsV0FBVyxFQUFFLGtEQUFrRDtTQUNoRSxDQUFDLENBQUM7UUFFSCx1QkFBdUI7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELGdGQUFnRjtJQUNoRiwrQ0FBK0M7SUFDL0MsZ0ZBQWdGO0lBRWhGOzs7T0FHRztJQUNPLGNBQWM7UUFDdEIsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ08sWUFBWTtRQUNwQixPQUFPLHdEQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDTyxTQUFTO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNPLGdCQUFnQjtRQUN4QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDTyxrQkFBa0IsQ0FBQyxLQUFVO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLEtBQWlDLENBQUM7UUFFckQsTUFBTSxJQUFJLEdBQVE7WUFDaEIsSUFBSSxFQUFFLEtBQUs7WUFDWCxVQUFVLEVBQUU7Z0JBQ1YsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGVBQWUsSUFBSSxLQUFLO2dCQUNyRCxtQkFBbUIsRUFBRSxVQUFVLENBQUMsbUJBQW1CO2dCQUNuRCxlQUFlLEVBQUUsVUFBVSxDQUFDLGVBQWUsSUFBSSxFQUFFO2dCQUNqRCwrQkFBK0IsRUFDN0IsVUFBVSxDQUFDLCtCQUErQixJQUFJLFNBQVM7Z0JBQ3pELDJCQUEyQixFQUN6QixVQUFVLENBQUMsMkJBQTJCLElBQUksU0FBUzthQUN0RDtTQUNGLENBQUM7UUFFRiw0Q0FBNEM7UUFDNUMsSUFBSSxVQUFVLENBQUMsa0JBQWtCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsR0FBRyxVQUFVLENBQUMsa0JBQWtCLENBQUM7UUFDckUsQ0FBQztRQUVELElBQUksVUFBVSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNqRSxDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsK0JBQStCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0I7Z0JBQzdDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ08sZUFBZSxDQUFDLEtBQVU7UUFDbEMsT0FBUSxLQUFrQyxDQUFDLGVBQWUsQ0FBQztJQUM3RCxDQUFDOztBQXpMSCxrREEwTEM7OztBQXpMQztJQUNFLDhCQUFhLENBQUMsZUFBZSxDQUMzQix3REFBeUIsRUFDekIsZ0VBQWlDLENBQ2xDLENBQUM7QUFDSixDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZCBBenVyZSBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBpbXBsZW1lbnRhdGlvbiB1c2luZyBBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIGZvciBBenVyZSBBcHBsaWNhdGlvbiBJbnNpZ2h0c1xuICogY29tcG9uZW50cyB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmRcbiAqIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDIwLTAyLTAyIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBGdWxsIEpTSUkgY29tcGxpYW5jZSBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydFxuICogLSBXb3Jrc3BhY2UtYmFzZWQgQXBwbGljYXRpb24gSW5zaWdodHMgKGNsYXNzaWMgbW9kZSBpcyByZXRpcmVkKVxuICogLSBDb25maWd1cmFibGUgc2FtcGxpbmcsIHJldGVudGlvbiwgSVAgbWFza2luZywgYW5kIG5ldHdvcmsgYWNjZXNzXG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSBcImNka3RuXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX0FQUExJQ0FUSU9OX0lOU0lHSFRTX1ZFUlNJT05TLFxuICBBUFBMSUNBVElPTl9JTlNJR0hUU19UWVBFLFxufSBmcm9tIFwiLi9hcHBsaWNhdGlvbi1pbnNpZ2h0cy1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFN1cHBvcnRlZCBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBhcHBsaWNhdGlvbiB0eXBlc1xuICpcbiAqIERldGVybWluZXMgaG93IHRlbGVtZXRyeSBpcyBwcm9jZXNzZWQgYW5kIHZpc3VhbGl6ZWQuXG4gKi9cbmV4cG9ydCB0eXBlIEFwcGxpY2F0aW9uSW5zaWdodHNBcHBsaWNhdGlvblR5cGUgPVxuICB8IFwid2ViXCJcbiAgfCBcIm90aGVyXCJcbiAgfCBcImphdmFcIlxuICB8IFwiTW9iaWxlQ2VudGVyXCJcbiAgfCBcIk5vZGUuSlNcIlxuICB8IFwiaW9zXCJcbiAgfCBcInN0b3JlXCI7XG5cbi8qKlxuICogQWxsb3dlZCByZXRlbnRpb24gdmFsdWVzIChpbiBkYXlzKSBmb3IgQXBwbGljYXRpb24gSW5zaWdodHNcbiAqL1xuZXhwb3J0IGNvbnN0IEFQUExJQ0FUSU9OX0lOU0lHSFRTX1ZBTElEX1JFVEVOVElPTl9EQVlTOiBudW1iZXJbXSA9IFtcbiAgMzAsIDYwLCA5MCwgMTIwLCAxODAsIDI3MCwgMzY1LCA1NTAsIDczMCxcbl07XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHMgY29tcG9uZW50XG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25JbnNpZ2h0c1Byb3BzIGV4dGVuZHMgQXphcGlSZXNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFJlc291cmNlIEdyb3VwIElEIHdoZXJlIHRoZSBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBjb21wb25lbnQgd2lsbCBiZSBjcmVhdGVkXG4gICAqIFRoZSBjb21wb25lbnQgd2lsbCBiZSBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgdGhpcyByZXNvdXJjZSBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlIElEIG9mIHRoZSBMb2cgQW5hbHl0aWNzIHdvcmtzcGFjZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGNvbXBvbmVudFxuICAgKlxuICAgKiBSZXF1aXJlZCBmb3Igd29ya3NwYWNlLWJhc2VkIEFwcGxpY2F0aW9uIEluc2lnaHRzICh0aGUgb25seSBzdXBwb3J0ZWQgbW9kZVxuICAgKiBzaW5jZSB0aGUgY2xhc3NpYyBtb2RlIHdhcyByZXRpcmVkIG9uIEZlYnJ1YXJ5IDI5LCAyMDI0KS5cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtzcGFjZVJlc291cmNlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZSBvZiBhcHBsaWNhdGlvbiBiZWluZyBtb25pdG9yZWRcbiAgICpcbiAgICogRGV0ZXJtaW5lcyBob3cgdGVsZW1ldHJ5IGRhdGEgaXMgcHJvY2Vzc2VkIGFuZCB2aXN1YWxpemVkLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFwid2ViXCJcbiAgICovXG4gIHJlYWRvbmx5IGFwcGxpY2F0aW9uVHlwZT86IEFwcGxpY2F0aW9uSW5zaWdodHNBcHBsaWNhdGlvblR5cGU7XG5cbiAgLyoqXG4gICAqIFRlbGVtZXRyeSBkYXRhIHJldGVudGlvbiBwZXJpb2QgaW4gZGF5c1xuICAgKlxuICAgKiBBbGxvd2VkIHZhbHVlczogMzAsIDYwLCA5MCwgMTIwLCAxODAsIDI3MCwgMzY1LCA1NTAsIDczMC5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSA5MFxuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uSW5EYXlzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUZWxlbWV0cnkgc2FtcGxpbmcgcGVyY2VudGFnZVxuICAgKlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC4gV2hlbiBzZXQgYmVsb3cgMTAwLCBvbmx5IGEgc3Vic2V0IG9mIHRlbGVtZXRyeSBpc1xuICAgKiBjYXB0dXJlZCB0byByZWR1Y2UgaW5nZXN0aW9uIHZvbHVtZSBhbmQgY29zdC5cbiAgICovXG4gIHJlYWRvbmx5IHNhbXBsaW5nUGVyY2VudGFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciBJUCBhZGRyZXNzIG1hc2tpbmcgaXMgZGlzYWJsZWRcbiAgICpcbiAgICogV2hlbiBmYWxzZSAoZGVmYXVsdCksIEFwcGxpY2F0aW9uIEluc2lnaHRzIG1hc2tzIHRoZSBsYXN0IG9jdGV0IG9mIGNsaWVudFxuICAgKiBJUCBhZGRyZXNzZXMgdG8gcHJvdGVjdCBlbmQtdXNlciBwcml2YWN5LlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBkaXNhYmxlSXBNYXNraW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUHVibGljIG5ldHdvcmsgYWNjZXNzIGZvciBkYXRhIGluZ2VzdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIFwiRW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNOZXR3b3JrQWNjZXNzRm9ySW5nZXN0aW9uPzogXCJFbmFibGVkXCIgfCBcIkRpc2FibGVkXCI7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBuZXR3b3JrIGFjY2VzcyBmb3IgcXVlcnlpbmcgdGVsZW1ldHJ5XG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgXCJFbmFibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY05ldHdvcmtBY2Nlc3NGb3JRdWVyeT86IFwiRW5hYmxlZFwiIHwgXCJEaXNhYmxlZFwiO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGxvY2FsIChpbnN0cnVtZW50YXRpb24ga2V5IGJhc2VkKSBhdXRoZW50aWNhdGlvbiBpcyBkaXNhYmxlZFxuICAgKlxuICAgKiBXaGVuIHRydWUsIG9ubHkgTWljcm9zb2Z0IEVudHJhIElEIChBenVyZSBBRCkgYXV0aGVudGljYXRpb24gY2FuIGJlIHVzZWQgdG9cbiAgICogaW5nZXN0IGFuZCBxdWVyeSB0ZWxlbWV0cnkuXG4gICAqXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRpc2FibGVMb2NhbEF1dGg/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBGb3JjZSB0aGUgdXNlIG9mIGEgY3VzdG9tZXItcHJvdmlkZWQgc3RvcmFnZSBhY2NvdW50IGZvciB0aGUgcHJvZmlsZXIgYW5kXG4gICAqIHNuYXBzaG90IGRlYnVnZ2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdFZhbHVlIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZUN1c3RvbWVyU3RvcmFnZUZvclByb2ZpbGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIEFwcGxpY2F0aW9uIEluc2lnaHRzIGltcGxlbWVudGF0aW9uXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGF1dG9tYXRpY2FsbHlcbiAqIGhhbmRsZXMgdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uXG4gKiB3aGlsZSBtYWludGFpbmluZyBmdWxsIEpTSUkgY29tcGxpYW5jZS5cbiAqXG4gKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBpcyBhbiBleHRlbnNpYmxlIEFwcGxpY2F0aW9uIFBlcmZvcm1hbmNlIE1hbmFnZW1lbnQgKEFQTSlcbiAqIHNlcnZpY2UgdGhhdCBoZWxwcyB5b3UgbW9uaXRvciBsaXZlIHdlYiBhcHBsaWNhdGlvbnMuIEl0IGF1dG9tYXRpY2FsbHkgZGV0ZWN0c1xuICogcGVyZm9ybWFuY2UgYW5vbWFsaWVzIGFuZCBpbmNsdWRlcyBwb3dlcmZ1bCBhbmFseXRpY3MgdG9vbHMgdG8gaGVscCBkaWFnbm9zZVxuICogaXNzdWVzIGFuZCB1bmRlcnN0YW5kIGFwcGxpY2F0aW9uIHVzYWdlLlxuICpcbiAqIFdvcmtzcGFjZS1iYXNlZCBBcHBsaWNhdGlvbiBJbnNpZ2h0cyByZXNvdXJjZXMgc2VuZCB0ZWxlbWV0cnkgdG8gYSBMb2dcbiAqIEFuYWx5dGljcyB3b3Jrc3BhY2UsIHdoZXJlIHlvdSBjYW4gdXNlIHRoZSBmdWxsIHBvd2VyIG9mIEt1c3RvIFF1ZXJ5IExhbmd1YWdlXG4gKiAoS1FMKSB0byBhbmFseXplIHlvdXIgZGF0YS5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQmFzaWMgQXBwbGljYXRpb24gSW5zaWdodHMgY29tcG9uZW50OlxuICogY29uc3QgYXBwSW5zaWdodHMgPSBuZXcgQXBwbGljYXRpb25JbnNpZ2h0cyh0aGlzLCBcIm15LWFwcGluc2lnaHRzXCIsIHtcbiAqICAgbmFtZTogXCJteS1hcHBsaWNhdGlvbi1pbnNpZ2h0c1wiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICB3b3Jrc3BhY2VSZXNvdXJjZUlkOiB3b3Jrc3BhY2UuaWQsXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXBwbGljYXRpb24gSW5zaWdodHMgd2l0aCBjdXN0b20gcmV0ZW50aW9uIGFuZCBzYW1wbGluZzpcbiAqIGNvbnN0IGFwcEluc2lnaHRzID0gbmV3IEFwcGxpY2F0aW9uSW5zaWdodHModGhpcywgXCJwcm9kdWN0aW9uLWFpXCIsIHtcbiAqICAgbmFtZTogXCJwcm9kdWN0aW9uLWFpXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIHdvcmtzcGFjZVJlc291cmNlSWQ6IHdvcmtzcGFjZS5pZCxcbiAqICAgYXBwbGljYXRpb25UeXBlOiBcIndlYlwiLFxuICogICByZXRlbnRpb25JbkRheXM6IDM2NSxcbiAqICAgc2FtcGxpbmdQZXJjZW50YWdlOiA1MCxcbiAqICAgdGFnczoge1xuICogICAgIGVudmlyb25tZW50OiBcInByb2R1Y3Rpb25cIlxuICogICB9XG4gKiB9KTtcbiAqXG4gKiBAc3RhYmlsaXR5IHN0YWJsZVxuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25JbnNpZ2h0cyBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKFxuICAgICAgQVBQTElDQVRJT05fSU5TSUdIVFNfVFlQRSxcbiAgICAgIEFMTF9BUFBMSUNBVElPTl9JTlNJR0hUU19WRVJTSU9OUyxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGlzIEFwcGxpY2F0aW9uIEluc2lnaHRzIGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvcHM6IEFwcGxpY2F0aW9uSW5zaWdodHNQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdG4uVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZU91dHB1dDogY2RrdG4uVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdHJ1bWVudGF0aW9uS2V5T3V0cHV0OiBjZGt0bi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uU3RyaW5nT3V0cHV0OiBjZGt0bi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBhcHBJZE91dHB1dDogY2RrdG4uVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIEFwcGxpY2F0aW9uIEluc2lnaHRzIGNvbXBvbmVudCB1c2luZyB0aGUgQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAgICpcbiAgICogVGhlIGNvbnN0cnVjdG9yIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIHJlc29sdXRpb24sIHNjaGVtYSByZWdpc3RyYXRpb24sXG4gICAqIHZhbGlkYXRpb24sIGFuZCByZXNvdXJjZSBjcmVhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgQXBwbGljYXRpb24gSW5zaWdodHMgY29tcG9uZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBwbGljYXRpb25JbnNpZ2h0c1Byb3BzKSB7XG4gICAgLy8gVmFsaWRhdGUgcmV0ZW50aW9uIGRheXMgaWYgcHJvdmlkZWRcbiAgICBpZiAocHJvcHMucmV0ZW50aW9uSW5EYXlzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIUFQUExJQ0FUSU9OX0lOU0lHSFRTX1ZBTElEX1JFVEVOVElPTl9EQVlTLmluY2x1ZGVzKFxuICAgICAgICAgIHByb3BzLnJldGVudGlvbkluRGF5cyxcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgcmV0ZW50aW9uSW5EYXlzIG11c3QgYmUgb25lIG9mICR7QVBQTElDQVRJT05fSU5TSUdIVFNfVkFMSURfUkVURU5USU9OX0RBWVMuam9pbihcIiwgXCIpfSBkYXlzYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBzYW1wbGluZyBwZXJjZW50YWdlIGlmIHByb3ZpZGVkXG4gICAgaWYgKHByb3BzLnNhbXBsaW5nUGVyY2VudGFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAocHJvcHMuc2FtcGxpbmdQZXJjZW50YWdlIDwgMCB8fCBwcm9wcy5zYW1wbGluZ1BlcmNlbnRhZ2UgPiAxMDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2FtcGxpbmdQZXJjZW50YWdlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDBcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZyBmcm9tIG90aGVyIHJlc291cmNlc1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdG4uVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIEFwcGxpY2F0aW9uIEluc2lnaHRzIGNvbXBvbmVudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lT3V0cHV0ID0gbmV3IGNka3RuLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIm5hbWVcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubmFtZX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uIEluc2lnaHRzIGNvbXBvbmVudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5pbnN0cnVtZW50YXRpb25LZXlPdXRwdXQgPSBuZXcgY2RrdG4uVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiaW5zdHJ1bWVudGF0aW9uX2tleVwiLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5JbnN0cnVtZW50YXRpb25LZXl9YCxcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgXCJUaGUgaW5zdHJ1bWVudGF0aW9uIGtleSBvZiB0aGUgQXBwbGljYXRpb24gSW5zaWdodHMgY29tcG9uZW50XCIsXG4gICAgICAgIHNlbnNpdGl2ZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuY29ubmVjdGlvblN0cmluZ091dHB1dCA9IG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJjb25uZWN0aW9uX3N0cmluZ1wiLFxuICAgICAge1xuICAgICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5Db25uZWN0aW9uU3RyaW5nfWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgIFwiVGhlIGNvbm5lY3Rpb24gc3RyaW5nIG9mIHRoZSBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBjb21wb25lbnRcIixcbiAgICAgICAgc2Vuc2l0aXZlOiB0cnVlLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5hcHBJZE91dHB1dCA9IG5ldyBjZGt0bi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJhcHBfaWRcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuQXBwSWR9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBBcHAgSUQgb2YgdGhlIEFwcGxpY2F0aW9uIEluc2lnaHRzIGNvbXBvbmVudFwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHNcbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5uYW1lT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibmFtZVwiKTtcbiAgICB0aGlzLmluc3RydW1lbnRhdGlvbktleU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImluc3RydW1lbnRhdGlvbl9rZXlcIik7XG4gICAgdGhpcy5jb25uZWN0aW9uU3RyaW5nT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiY29ubmVjdGlvbl9zdHJpbmdcIik7XG4gICAgdGhpcy5hcHBJZE91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImFwcF9pZFwiKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICogUmV0dXJucyB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uIGFzIHRoZSBkZWZhdWx0XG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDIwLTAyLTAyXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgQXBwbGljYXRpb24gSW5zaWdodHNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQVBQTElDQVRJT05fSU5TSUdIVFNfVFlQRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBUEkgc2NoZW1hIGZvciB0aGUgcmVzb2x2ZWQgdmVyc2lvblxuICAgKiBVc2VzIHRoZSBmcmFtZXdvcmsncyBzY2hlbWEgcmVzb2x1dGlvbiB0byBnZXQgdGhlIGFwcHJvcHJpYXRlIHNjaGVtYVxuICAgKi9cbiAgcHJvdGVjdGVkIGFwaVNjaGVtYSgpOiBBcGlTY2hlbWEge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTY2hlbWEoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIHJlc291cmNlIHR5cGUgcmVxdWlyZXMgYSBsb2NhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqIFRyYW5zZm9ybXMgdGhlIGlucHV0IHByb3BlcnRpZXMgaW50byB0aGUgSlNPTiBmb3JtYXQgZXhwZWN0ZWQgYnkgQXp1cmUgUkVTVCBBUElcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIEFwcGxpY2F0aW9uSW5zaWdodHNQcm9wcztcblxuICAgIGNvbnN0IGJvZHk6IGFueSA9IHtcbiAgICAgIGtpbmQ6IFwid2ViXCIsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIEFwcGxpY2F0aW9uX1R5cGU6IHR5cGVkUHJvcHMuYXBwbGljYXRpb25UeXBlID8/IFwid2ViXCIsXG4gICAgICAgIFdvcmtzcGFjZVJlc291cmNlSWQ6IHR5cGVkUHJvcHMud29ya3NwYWNlUmVzb3VyY2VJZCxcbiAgICAgICAgUmV0ZW50aW9uSW5EYXlzOiB0eXBlZFByb3BzLnJldGVudGlvbkluRGF5cyA/PyA5MCxcbiAgICAgICAgcHVibGljTmV0d29ya0FjY2Vzc0ZvckluZ2VzdGlvbjpcbiAgICAgICAgICB0eXBlZFByb3BzLnB1YmxpY05ldHdvcmtBY2Nlc3NGb3JJbmdlc3Rpb24gPz8gXCJFbmFibGVkXCIsXG4gICAgICAgIHB1YmxpY05ldHdvcmtBY2Nlc3NGb3JRdWVyeTpcbiAgICAgICAgICB0eXBlZFByb3BzLnB1YmxpY05ldHdvcmtBY2Nlc3NGb3JRdWVyeSA/PyBcIkVuYWJsZWRcIixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIC8vIEFkZCBvcHRpb25hbCBwcm9wZXJ0aWVzIG9ubHkgaWYgc3BlY2lmaWVkXG4gICAgaWYgKHR5cGVkUHJvcHMuc2FtcGxpbmdQZXJjZW50YWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkucHJvcGVydGllcy5TYW1wbGluZ1BlcmNlbnRhZ2UgPSB0eXBlZFByb3BzLnNhbXBsaW5nUGVyY2VudGFnZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZWRQcm9wcy5kaXNhYmxlSXBNYXNraW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGJvZHkucHJvcGVydGllcy5EaXNhYmxlSXBNYXNraW5nID0gdHlwZWRQcm9wcy5kaXNhYmxlSXBNYXNraW5nO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLmRpc2FibGVMb2NhbEF1dGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgYm9keS5wcm9wZXJ0aWVzLkRpc2FibGVMb2NhbEF1dGggPSB0eXBlZFByb3BzLmRpc2FibGVMb2NhbEF1dGg7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZm9yY2VDdXN0b21lclN0b3JhZ2VGb3JQcm9maWxlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBib2R5LnByb3BlcnRpZXMuRm9yY2VDdXN0b21lclN0b3JhZ2VGb3JQcm9maWxlciA9XG4gICAgICAgIHR5cGVkUHJvcHMuZm9yY2VDdXN0b21lclN0b3JhZ2VGb3JQcm9maWxlcjtcbiAgICB9XG5cbiAgICByZXR1cm4gYm9keTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyB0aGUgcGFyZW50IHJlc291cmNlIElEIGZvciBBcHBsaWNhdGlvbiBJbnNpZ2h0c1xuICAgKiBBcHBsaWNhdGlvbiBJbnNpZ2h0cyBpcyBhIHRvcC1sZXZlbCByZXNvdXJjZSB3aXRoaW4gYSByZXNvdXJjZSBncm91cFxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgLSBUaGUgcmVzb3VyY2UgcHJvcGVydGllc1xuICAgKiBAcmV0dXJucyBUaGUgcGFyZW50IHJlc291cmNlIElEICh0aGUgcmVzb3VyY2UgZ3JvdXApXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVzb2x2ZVBhcmVudElkKHByb3BzOiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiAocHJvcHMgYXMgQXBwbGljYXRpb25JbnNpZ2h0c1Byb3BzKS5yZXNvdXJjZUdyb3VwSWQ7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Azure Application Insights construct exports
3
+ */
4
+ export * from "./application-insights-schemas";
5
+ export * from "./application-insights";
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Azure Application Insights construct exports
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./application-insights-schemas"), exports);
21
+ __exportStar(require("./application-insights"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtYXBwbGljYXRpb25pbnNpZ2h0cy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsaUVBQStDO0FBQy9DLHlEQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXp1cmUgQXBwbGljYXRpb24gSW5zaWdodHMgY29uc3RydWN0IGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9hcHBsaWNhdGlvbi1pbnNpZ2h0cy1zY2hlbWFzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hcHBsaWNhdGlvbi1pbnNpZ2h0c1wiO1xuIl19
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Application Insights
3
+ *
4
+ * This test demonstrates basic usage of the ApplicationInsights construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktn/lib/testing/adapters/jest";
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * Integration test for Azure Application Insights
4
+ *
5
+ * This test demonstrates basic usage of the ApplicationInsights construct
6
+ * and validates deployment, idempotency, and cleanup.
7
+ *
8
+ * Run with: npm run integration:nostream
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ const cdktn_1 = require("cdktn");
12
+ require("cdktn/lib/testing/adapters/jest");
13
+ const azure_loganalyticsworkspace_1 = require("../../azure-loganalyticsworkspace");
14
+ const azure_resourcegroup_1 = require("../../azure-resourcegroup");
15
+ const provider_1 = require("../../core-azure/lib/azapi/providers-azapi/provider");
16
+ const testing_1 = require("../../testing");
17
+ const application_insights_1 = require("../lib/application-insights");
18
+ /**
19
+ * Example stack demonstrating Application Insights usage
20
+ */
21
+ class ApplicationInsightsExampleStack extends cdktn_1.TerraformStack {
22
+ constructor(scope, id) {
23
+ super(scope, id);
24
+ // Configure AZAPI provider
25
+ new provider_1.AzapiProvider(this, "azapi", {});
26
+ // Create a resource group
27
+ const resourceGroup = new azure_resourcegroup_1.ResourceGroup(this, "example-rg", {
28
+ name: "ai-example-rg",
29
+ location: "eastus",
30
+ tags: {
31
+ environment: "example",
32
+ purpose: "integration-test",
33
+ },
34
+ });
35
+ // Create a Log Analytics Workspace (required for workspace-based App Insights)
36
+ const workspace = new azure_loganalyticsworkspace_1.LogAnalyticsWorkspace(this, "example-workspace", {
37
+ name: "ai-example-law",
38
+ location: resourceGroup.props.location,
39
+ resourceGroupId: resourceGroup.id,
40
+ retentionInDays: 30,
41
+ tags: {
42
+ purpose: "integration-test",
43
+ },
44
+ });
45
+ // Example 1: Basic Application Insights component
46
+ new application_insights_1.ApplicationInsights(this, "basic-appinsights", {
47
+ name: "ai-basic-example",
48
+ location: resourceGroup.props.location,
49
+ resourceGroupId: resourceGroup.id,
50
+ workspaceResourceId: workspace.id,
51
+ tags: {
52
+ example: "basic",
53
+ },
54
+ });
55
+ // Example 2: Application Insights with custom configuration
56
+ new application_insights_1.ApplicationInsights(this, "configured-appinsights", {
57
+ name: "ai-configured-example",
58
+ location: resourceGroup.props.location,
59
+ resourceGroupId: resourceGroup.id,
60
+ workspaceResourceId: workspace.id,
61
+ applicationType: "web",
62
+ retentionInDays: 60,
63
+ samplingPercentage: 75,
64
+ disableIpMasking: false,
65
+ apiVersion: "2020-02-02",
66
+ tags: {
67
+ example: "configured",
68
+ },
69
+ });
70
+ }
71
+ }
72
+ describe("Application Insights Integration Test", () => {
73
+ it("should deploy, validate idempotency, and cleanup Application Insights resources", () => {
74
+ const app = cdktn_1.Testing.app();
75
+ const stack = new ApplicationInsightsExampleStack(app, "test-application-insights");
76
+ const synthesized = cdktn_1.Testing.fullSynth(stack);
77
+ // This will:
78
+ // 1. Run terraform apply to deploy resources
79
+ // 2. Run terraform plan to check idempotency (no changes expected)
80
+ // 3. Run terraform destroy to cleanup resources
81
+ (0, testing_1.TerraformApplyCheckAndDestroy)(synthesized);
82
+ }, 1200000); // 20 minute timeout for deployment and cleanup
83
+ });
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24taW5zaWdodHMuaW50ZWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtYXBwbGljYXRpb25pbnNpZ2h0cy90ZXN0L2FwcGxpY2F0aW9uLWluc2lnaHRzLmludGVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOztBQUVILGlDQUFnRDtBQUVoRCwyQ0FBeUM7QUFDekMsbUZBQTBFO0FBQzFFLG1FQUEwRDtBQUMxRCxrRkFBb0Y7QUFDcEYsMkNBQThEO0FBQzlELHNFQUFrRTtBQUVsRTs7R0FFRztBQUNILE1BQU0sK0JBQWdDLFNBQVEsc0JBQWM7SUFDMUQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQiwyQkFBMkI7UUFDM0IsSUFBSSx3QkFBYSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFckMsMEJBQTBCO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksbUNBQWEsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzFELElBQUksRUFBRSxlQUFlO1lBQ3JCLFFBQVEsRUFBRSxRQUFRO1lBQ2xCLElBQUksRUFBRTtnQkFDSixXQUFXLEVBQUUsU0FBUztnQkFDdEIsT0FBTyxFQUFFLGtCQUFrQjthQUM1QjtTQUNGLENBQUMsQ0FBQztRQUVILCtFQUErRTtRQUMvRSxNQUFNLFNBQVMsR0FBRyxJQUFJLG1EQUFxQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUNyRSxJQUFJLEVBQUUsZ0JBQWdCO1lBQ3RCLFFBQVEsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVM7WUFDdkMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxFQUFFO1lBQ2pDLGVBQWUsRUFBRSxFQUFFO1lBQ25CLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsa0JBQWtCO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsa0RBQWtEO1FBQ2xELElBQUksMENBQW1CLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ2pELElBQUksRUFBRSxrQkFBa0I7WUFDeEIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDakMsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsNERBQTREO1FBQzVELElBQUksMENBQW1CLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ3RELElBQUksRUFBRSx1QkFBdUI7WUFDN0IsUUFBUSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUztZQUN2QyxlQUFlLEVBQUUsYUFBYSxDQUFDLEVBQUU7WUFDakMsbUJBQW1CLEVBQUUsU0FBUyxDQUFDLEVBQUU7WUFDakMsZUFBZSxFQUFFLEtBQUs7WUFDdEIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixnQkFBZ0IsRUFBRSxLQUFLO1lBQ3ZCLFVBQVUsRUFBRSxZQUFZO1lBQ3hCLElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsWUFBWTthQUN0QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQUVELFFBQVEsQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLEVBQUU7SUFDckQsRUFBRSxDQUFDLGlGQUFpRixFQUFFLEdBQUcsRUFBRTtRQUN6RixNQUFNLEdBQUcsR0FBRyxlQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDMUIsTUFBTSxLQUFLLEdBQUcsSUFBSSwrQkFBK0IsQ0FDL0MsR0FBRyxFQUNILDJCQUEyQixDQUM1QixDQUFDO1FBQ0YsTUFBTSxXQUFXLEdBQUcsZUFBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU3QyxhQUFhO1FBQ2IsNkNBQTZDO1FBQzdDLG1FQUFtRTtRQUNuRSxnREFBZ0Q7UUFDaEQsSUFBQSx1Q0FBNkIsRUFBQyxXQUFXLENBQUMsQ0FBQztJQUM3QyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQywrQ0FBK0M7QUFDOUQsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEludGVncmF0aW9uIHRlc3QgZm9yIEF6dXJlIEFwcGxpY2F0aW9uIEluc2lnaHRzXG4gKlxuICogVGhpcyB0ZXN0IGRlbW9uc3RyYXRlcyBiYXNpYyB1c2FnZSBvZiB0aGUgQXBwbGljYXRpb25JbnNpZ2h0cyBjb25zdHJ1Y3RcbiAqIGFuZCB2YWxpZGF0ZXMgZGVwbG95bWVudCwgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwLlxuICpcbiAqIFJ1biB3aXRoOiBucG0gcnVuIGludGVncmF0aW9uOm5vc3RyZWFtXG4gKi9cblxuaW1wb3J0IHsgVGVzdGluZywgVGVycmFmb3JtU3RhY2sgfSBmcm9tIFwiY2RrdG5cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgXCJjZGt0bi9saWIvdGVzdGluZy9hZGFwdGVycy9qZXN0XCI7XG5pbXBvcnQgeyBMb2dBbmFseXRpY3NXb3Jrc3BhY2UgfSBmcm9tIFwiLi4vLi4vYXp1cmUtbG9nYW5hbHl0aWNzd29ya3NwYWNlXCI7XG5pbXBvcnQgeyBSZXNvdXJjZUdyb3VwIH0gZnJvbSBcIi4uLy4uL2F6dXJlLXJlc291cmNlZ3JvdXBcIjtcbmltcG9ydCB7IEF6YXBpUHJvdmlkZXIgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvYXphcGkvcHJvdmlkZXJzLWF6YXBpL3Byb3ZpZGVyXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1BcHBseUNoZWNrQW5kRGVzdHJveSB9IGZyb20gXCIuLi8uLi90ZXN0aW5nXCI7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluc2lnaHRzIH0gZnJvbSBcIi4uL2xpYi9hcHBsaWNhdGlvbi1pbnNpZ2h0c1wiO1xuXG4vKipcbiAqIEV4YW1wbGUgc3RhY2sgZGVtb25zdHJhdGluZyBBcHBsaWNhdGlvbiBJbnNpZ2h0cyB1c2FnZVxuICovXG5jbGFzcyBBcHBsaWNhdGlvbkluc2lnaHRzRXhhbXBsZVN0YWNrIGV4dGVuZHMgVGVycmFmb3JtU3RhY2sge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIENvbmZpZ3VyZSBBWkFQSSBwcm92aWRlclxuICAgIG5ldyBBemFwaVByb3ZpZGVyKHRoaXMsIFwiYXphcGlcIiwge30pO1xuXG4gICAgLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZ3JvdXBcbiAgICBjb25zdCByZXNvdXJjZUdyb3VwID0gbmV3IFJlc291cmNlR3JvdXAodGhpcywgXCJleGFtcGxlLXJnXCIsIHtcbiAgICAgIG5hbWU6IFwiYWktZXhhbXBsZS1yZ1wiLFxuICAgICAgbG9jYXRpb246IFwiZWFzdHVzXCIsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGVudmlyb25tZW50OiBcImV4YW1wbGVcIixcbiAgICAgICAgcHVycG9zZTogXCJpbnRlZ3JhdGlvbi10ZXN0XCIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy8gQ3JlYXRlIGEgTG9nIEFuYWx5dGljcyBXb3Jrc3BhY2UgKHJlcXVpcmVkIGZvciB3b3Jrc3BhY2UtYmFzZWQgQXBwIEluc2lnaHRzKVxuICAgIGNvbnN0IHdvcmtzcGFjZSA9IG5ldyBMb2dBbmFseXRpY3NXb3Jrc3BhY2UodGhpcywgXCJleGFtcGxlLXdvcmtzcGFjZVwiLCB7XG4gICAgICBuYW1lOiBcImFpLWV4YW1wbGUtbGF3XCIsXG4gICAgICBsb2NhdGlvbjogcmVzb3VyY2VHcm91cC5wcm9wcy5sb2NhdGlvbiEsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICByZXRlbnRpb25JbkRheXM6IDMwLFxuICAgICAgdGFnczoge1xuICAgICAgICBwdXJwb3NlOiBcImludGVncmF0aW9uLXRlc3RcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDE6IEJhc2ljIEFwcGxpY2F0aW9uIEluc2lnaHRzIGNvbXBvbmVudFxuICAgIG5ldyBBcHBsaWNhdGlvbkluc2lnaHRzKHRoaXMsIFwiYmFzaWMtYXBwaW5zaWdodHNcIiwge1xuICAgICAgbmFtZTogXCJhaS1iYXNpYy1leGFtcGxlXCIsXG4gICAgICBsb2NhdGlvbjogcmVzb3VyY2VHcm91cC5wcm9wcy5sb2NhdGlvbiEsXG4gICAgICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gICAgICB3b3Jrc3BhY2VSZXNvdXJjZUlkOiB3b3Jrc3BhY2UuaWQsXG4gICAgICB0YWdzOiB7XG4gICAgICAgIGV4YW1wbGU6IFwiYmFzaWNcIixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBFeGFtcGxlIDI6IEFwcGxpY2F0aW9uIEluc2lnaHRzIHdpdGggY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgICBuZXcgQXBwbGljYXRpb25JbnNpZ2h0cyh0aGlzLCBcImNvbmZpZ3VyZWQtYXBwaW5zaWdodHNcIiwge1xuICAgICAgbmFtZTogXCJhaS1jb25maWd1cmVkLWV4YW1wbGVcIixcbiAgICAgIGxvY2F0aW9uOiByZXNvdXJjZUdyb3VwLnByb3BzLmxvY2F0aW9uISxcbiAgICAgIHJlc291cmNlR3JvdXBJZDogcmVzb3VyY2VHcm91cC5pZCxcbiAgICAgIHdvcmtzcGFjZVJlc291cmNlSWQ6IHdvcmtzcGFjZS5pZCxcbiAgICAgIGFwcGxpY2F0aW9uVHlwZTogXCJ3ZWJcIixcbiAgICAgIHJldGVudGlvbkluRGF5czogNjAsXG4gICAgICBzYW1wbGluZ1BlcmNlbnRhZ2U6IDc1LFxuICAgICAgZGlzYWJsZUlwTWFza2luZzogZmFsc2UsXG4gICAgICBhcGlWZXJzaW9uOiBcIjIwMjAtMDItMDJcIixcbiAgICAgIHRhZ3M6IHtcbiAgICAgICAgZXhhbXBsZTogXCJjb25maWd1cmVkXCIsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG5cbmRlc2NyaWJlKFwiQXBwbGljYXRpb24gSW5zaWdodHMgSW50ZWdyYXRpb24gVGVzdFwiLCAoKSA9PiB7XG4gIGl0KFwic2hvdWxkIGRlcGxveSwgdmFsaWRhdGUgaWRlbXBvdGVuY3ksIGFuZCBjbGVhbnVwIEFwcGxpY2F0aW9uIEluc2lnaHRzIHJlc291cmNlc1wiLCAoKSA9PiB7XG4gICAgY29uc3QgYXBwID0gVGVzdGluZy5hcHAoKTtcbiAgICBjb25zdCBzdGFjayA9IG5ldyBBcHBsaWNhdGlvbkluc2lnaHRzRXhhbXBsZVN0YWNrKFxuICAgICAgYXBwLFxuICAgICAgXCJ0ZXN0LWFwcGxpY2F0aW9uLWluc2lnaHRzXCIsXG4gICAgKTtcbiAgICBjb25zdCBzeW50aGVzaXplZCA9IFRlc3RpbmcuZnVsbFN5bnRoKHN0YWNrKTtcblxuICAgIC8vIFRoaXMgd2lsbDpcbiAgICAvLyAxLiBSdW4gdGVycmFmb3JtIGFwcGx5IHRvIGRlcGxveSByZXNvdXJjZXNcbiAgICAvLyAyLiBSdW4gdGVycmFmb3JtIHBsYW4gdG8gY2hlY2sgaWRlbXBvdGVuY3kgKG5vIGNoYW5nZXMgZXhwZWN0ZWQpXG4gICAgLy8gMy4gUnVuIHRlcnJhZm9ybSBkZXN0cm95IHRvIGNsZWFudXAgcmVzb3VyY2VzXG4gICAgVGVycmFmb3JtQXBwbHlDaGVja0FuZERlc3Ryb3koc3ludGhlc2l6ZWQpO1xuICB9LCAxMjAwMDAwKTsgLy8gMjAgbWludXRlIHRpbWVvdXQgZm9yIGRlcGxveW1lbnQgYW5kIGNsZWFudXBcbn0pO1xuIl19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Comprehensive tests for the ApplicationInsights implementation
3
+ *
4
+ * This test suite validates the ApplicationInsights class using the AzapiResource framework.
5
+ * Tests cover automatic version resolution, explicit version pinning, schema validation,
6
+ * property configurations, and resource creation.
7
+ */
8
+ export {};