@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.
- package/.jsii +64029 -35477
- package/API.md +89314 -49618
- package/README.md +15 -0
- package/cdktf.json +1 -1
- package/docs/azure-api-version-update-pipeline.md +271 -0
- package/lib/azure-actiongroup/lib/action-group.js +1 -1
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
- package/lib/azure-aks/lib/aks-cluster.js +1 -1
- package/lib/azure-applicationinsights/index.d.ts +7 -0
- package/lib/azure-applicationinsights/index.js +24 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
- package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
- package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
- package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
- package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
- package/lib/azure-applicationinsights/lib/index.js +22 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
- package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
- package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
- package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +1 -1
- package/lib/azure-containerapps/lib/container-app-environment-schemas.js +2 -2
- package/lib/azure-containerapps/lib/container-app-environment.js +1 -1
- package/lib/azure-containerapps/lib/container-app-schemas.d.ts +1 -1
- package/lib/azure-containerapps/lib/container-app-schemas.js +2 -2
- package/lib/azure-containerapps/lib/container-app.js +1 -1
- package/lib/azure-containerapps/lib/container-apps-job-schemas.d.ts +8 -0
- package/lib/azure-containerapps/lib/container-apps-job-schemas.js +179 -0
- package/lib/azure-containerapps/lib/container-apps-job.d.ts +128 -0
- package/lib/azure-containerapps/lib/container-apps-job.js +81 -0
- package/lib/azure-containerapps/lib/index.d.ts +2 -0
- package/lib/azure-containerapps/lib/index.js +3 -1
- package/lib/azure-containerapps/test/container-apps-job.integ.d.ts +6 -0
- package/lib/azure-containerapps/test/container-apps-job.integ.js +95 -0
- package/lib/azure-containerapps/test/container-apps-job.spec.d.ts +1 -0
- package/lib/azure-containerapps/test/container-apps-job.spec.js +261 -0
- package/lib/azure-containerregistry/index.d.ts +1 -0
- package/lib/azure-containerregistry/index.js +18 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
- package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
- package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
- package/lib/azure-containerregistry/lib/container-registry.js +217 -0
- package/lib/azure-containerregistry/lib/index.d.ts +2 -0
- package/lib/azure-containerregistry/lib/index.js +19 -0
- package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
- package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
- package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
- package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
- package/lib/azure-cosmosdb/index.d.ts +1 -0
- package/lib/azure-cosmosdb/index.js +18 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
- package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
- package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
- package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
- package/lib/azure-cosmosdb/lib/index.js +19 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
- package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
- package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
- package/lib/azure-dataexplorer/index.d.ts +1 -0
- package/lib/azure-dataexplorer/index.js +18 -0
- package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.d.ts +5 -0
- package/lib/azure-dataexplorer/lib/data-explorer-cluster-schemas.js +131 -0
- package/lib/azure-dataexplorer/lib/data-explorer-cluster.d.ts +54 -0
- package/lib/azure-dataexplorer/lib/data-explorer-cluster.js +91 -0
- package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.d.ts +5 -0
- package/lib/azure-dataexplorer/lib/data-explorer-database-schemas.js +78 -0
- package/lib/azure-dataexplorer/lib/data-explorer-database.d.ts +24 -0
- package/lib/azure-dataexplorer/lib/data-explorer-database.js +68 -0
- package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.d.ts +5 -0
- package/lib/azure-dataexplorer/lib/data-explorer-table-schemas.js +94 -0
- package/lib/azure-dataexplorer/lib/data-explorer-table.d.ts +25 -0
- package/lib/azure-dataexplorer/lib/data-explorer-table.js +62 -0
- package/lib/azure-dataexplorer/lib/index.d.ts +6 -0
- package/lib/azure-dataexplorer/lib/index.js +23 -0
- package/lib/azure-dataexplorer/test/data-explorer.integ.d.ts +1 -0
- package/lib/azure-dataexplorer/test/data-explorer.integ.js +78 -0
- package/lib/azure-dataexplorer/test/data-explorer.spec.d.ts +1 -0
- package/lib/azure-dataexplorer/test/data-explorer.spec.js +248 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
- package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
- package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
- package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
- package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
- package/lib/azure-dnszone/lib/dns-zone.js +1 -1
- package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
- package/lib/azure-eventgrideventsubscription/index.d.ts +1 -0
- package/lib/azure-eventgrideventsubscription/index.js +18 -0
- package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.d.ts +5 -0
- package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription-schemas.js +151 -0
- package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.d.ts +59 -0
- package/lib/azure-eventgrideventsubscription/lib/event-grid-event-subscription.js +67 -0
- package/lib/azure-eventgrideventsubscription/lib/index.d.ts +2 -0
- package/lib/azure-eventgrideventsubscription/lib/index.js +19 -0
- package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.d.ts +1 -0
- package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.integ.js +100 -0
- package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.d.ts +1 -0
- package/lib/azure-eventgrideventsubscription/test/event-grid-event-subscription.spec.js +242 -0
- package/lib/azure-eventgridsystemtopic/index.d.ts +1 -0
- package/lib/azure-eventgridsystemtopic/index.js +18 -0
- package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.d.ts +5 -0
- package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic-schemas.js +164 -0
- package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.d.ts +46 -0
- package/lib/azure-eventgridsystemtopic/lib/event-grid-system-topic.js +68 -0
- package/lib/azure-eventgridsystemtopic/lib/index.d.ts +2 -0
- package/lib/azure-eventgridsystemtopic/lib/index.js +19 -0
- package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.d.ts +1 -0
- package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.integ.js +64 -0
- package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.d.ts +1 -0
- package/lib/azure-eventgridsystemtopic/test/event-grid-system-topic.spec.js +241 -0
- package/lib/azure-eventhub/index.d.ts +7 -0
- package/lib/azure-eventhub/index.js +24 -0
- package/lib/azure-eventhub/lib/event-hub-namespace.d.ts +204 -0
- package/lib/azure-eventhub/lib/event-hub-namespace.js +178 -0
- package/lib/azure-eventhub/lib/event-hub-schemas.d.ts +63 -0
- package/lib/azure-eventhub/lib/event-hub-schemas.js +370 -0
- package/lib/azure-eventhub/lib/event-hub.d.ts +153 -0
- package/lib/azure-eventhub/lib/event-hub.js +171 -0
- package/lib/azure-eventhub/lib/index.d.ts +6 -0
- package/lib/azure-eventhub/lib/index.js +23 -0
- package/lib/azure-eventhub/test/event-hub.integ.d.ts +9 -0
- package/lib/azure-eventhub/test/event-hub.integ.js +113 -0
- package/lib/azure-eventhub/test/event-hub.spec.d.ts +8 -0
- package/lib/azure-eventhub/test/event-hub.spec.js +438 -0
- package/lib/azure-functionapp/index.d.ts +1 -0
- package/lib/azure-functionapp/index.js +18 -0
- package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
- package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
- package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
- package/lib/azure-functionapp/lib/function-app.js +223 -0
- package/lib/azure-functionapp/lib/index.d.ts +2 -0
- package/lib/azure-functionapp/lib/index.js +19 -0
- package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
- package/lib/azure-functionapp/test/function-app.integ.js +134 -0
- package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
- package/lib/azure-functionapp/test/function-app.spec.js +566 -0
- package/lib/azure-keyvault/index.d.ts +1 -0
- package/lib/azure-keyvault/index.js +18 -0
- package/lib/azure-keyvault/lib/index.d.ts +2 -0
- package/lib/azure-keyvault/lib/index.js +19 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
- package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
- package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
- package/lib/azure-keyvault/lib/key-vault.js +243 -0
- package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
- package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
- package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
- package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
- package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
- package/lib/azure-metricalert/lib/metric-alert.js +1 -1
- package/lib/azure-networkinterface/lib/network-interface.js +1 -1
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
- package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
- package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
- package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
- package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
- package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
- package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
- package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
- package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
- package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
- package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
- package/lib/azure-roledefinition/lib/role-definition.js +1 -1
- package/lib/azure-sreagent/index.d.ts +1 -0
- package/lib/azure-sreagent/index.js +18 -0
- package/lib/azure-sreagent/lib/index.d.ts +2 -0
- package/lib/azure-sreagent/lib/index.js +19 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
- package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
- package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
- package/lib/azure-sreagent/lib/sre-agent.js +217 -0
- package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
- package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
- package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
- package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
- package/lib/azure-staticwebapp/index.d.ts +1 -0
- package/lib/azure-staticwebapp/index.js +18 -0
- package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
- package/lib/azure-staticwebapp/lib/index.js +19 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
- package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
- package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
- package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
- package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
- package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
- package/lib/azure-storageaccount/lib/storage-account.js +1 -1
- package/lib/azure-storageblobcontainer/index.d.ts +1 -0
- package/lib/azure-storageblobcontainer/index.js +18 -0
- package/lib/azure-storageblobcontainer/lib/index.d.ts +2 -0
- package/lib/azure-storageblobcontainer/lib/index.js +19 -0
- package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.d.ts +5 -0
- package/lib/azure-storageblobcontainer/lib/storage-blob-container-schemas.js +108 -0
- package/lib/azure-storageblobcontainer/lib/storage-blob-container.d.ts +37 -0
- package/lib/azure-storageblobcontainer/lib/storage-blob-container.js +63 -0
- package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.d.ts +1 -0
- package/lib/azure-storageblobcontainer/test/storage-blob-container.integ.js +60 -0
- package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.d.ts +1 -0
- package/lib/azure-storageblobcontainer/test/storage-blob-container.spec.js +172 -0
- package/lib/azure-subnet/lib/subnet.js +1 -1
- package/lib/azure-userassignedidentity/index.d.ts +1 -0
- package/lib/azure-userassignedidentity/index.js +18 -0
- package/lib/azure-userassignedidentity/lib/index.d.ts +2 -0
- package/lib/azure-userassignedidentity/lib/index.js +19 -0
- package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.d.ts +8 -0
- package/lib/azure-userassignedidentity/lib/user-assigned-identity-schemas.js +107 -0
- package/lib/azure-userassignedidentity/lib/user-assigned-identity.d.ts +37 -0
- package/lib/azure-userassignedidentity/lib/user-assigned-identity.js +85 -0
- package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.d.ts +1 -0
- package/lib/azure-userassignedidentity/test/user-assigned-identity.integ.js +64 -0
- package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.d.ts +1 -0
- package/lib/azure-userassignedidentity/test/user-assigned-identity.spec.js +241 -0
- package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
- package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
- package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
- package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
- package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +66 -1
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +141 -2
- package/lib/azure-vmss/lib/vmss-schemas.d.ts +195 -0
- package/lib/azure-vmss/lib/vmss-schemas.js +33 -1
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +463 -1
- package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +4 -4
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +7 -7
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +2 -2
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +3 -3
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +7 -7
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +5 -5
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +5 -5
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
- package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
- package/lib/index.d.ts +39 -0
- package/lib/index.js +41 -2
- package/lib/testing/index.js +20 -3
- package/lib/testing/lib/cleanup.js +1 -1
- package/lib/testing/lib/metadata.js +12 -4
- package/lib/testing/lib/naming.js +57 -1
- package/package.json +1 -1
- package/scripts/azure-version-updater/create-issue.ts +189 -0
- package/scripts/azure-version-updater/discover.ts +382 -0
- package/scripts/azure-version-updater/spec-mapping.ts +164 -0
- 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.1" };
|
|
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,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 {};
|