@microsoft/terraform-cdk-constructs 1.9.0 → 1.10.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 (165) hide show
  1. package/.jsii +55122 -31830
  2. package/API.md +74039 -46109
  3. package/lib/azure-actiongroup/lib/action-group.js +1 -1
  4. package/lib/azure-activitylogalert/lib/activity-log-alert.js +1 -1
  5. package/lib/azure-aks/lib/aks-cluster.js +1 -1
  6. package/lib/azure-applicationinsights/index.d.ts +7 -0
  7. package/lib/azure-applicationinsights/index.js +24 -0
  8. package/lib/azure-applicationinsights/lib/application-insights-schemas.d.ts +29 -0
  9. package/lib/azure-applicationinsights/lib/application-insights-schemas.js +162 -0
  10. package/lib/azure-applicationinsights/lib/application-insights.d.ts +206 -0
  11. package/lib/azure-applicationinsights/lib/application-insights.js +209 -0
  12. package/lib/azure-applicationinsights/lib/index.d.ts +5 -0
  13. package/lib/azure-applicationinsights/lib/index.js +22 -0
  14. package/lib/azure-applicationinsights/test/application-insights.integ.d.ts +9 -0
  15. package/lib/azure-applicationinsights/test/application-insights.integ.js +84 -0
  16. package/lib/azure-applicationinsights/test/application-insights.spec.d.ts +8 -0
  17. package/lib/azure-applicationinsights/test/application-insights.spec.js +209 -0
  18. package/lib/azure-containerapps/index.d.ts +1 -0
  19. package/lib/azure-containerapps/index.js +18 -0
  20. package/lib/azure-containerapps/lib/container-app-environment-schemas.d.ts +50 -0
  21. package/lib/azure-containerapps/lib/container-app-environment-schemas.js +522 -0
  22. package/lib/azure-containerapps/lib/container-app-environment.d.ts +374 -0
  23. package/lib/azure-containerapps/lib/container-app-environment.js +310 -0
  24. package/lib/azure-containerapps/lib/container-app-schemas.d.ts +48 -0
  25. package/lib/azure-containerapps/lib/container-app-schemas.js +466 -0
  26. package/lib/azure-containerapps/lib/container-app.d.ts +925 -0
  27. package/lib/azure-containerapps/lib/container-app.js +320 -0
  28. package/lib/azure-containerapps/lib/index.d.ts +4 -0
  29. package/lib/azure-containerapps/lib/index.js +21 -0
  30. package/lib/azure-containerapps/test/container-app-environment.integ.d.ts +10 -0
  31. package/lib/azure-containerapps/test/container-app-environment.integ.js +82 -0
  32. package/lib/azure-containerapps/test/container-app-environment.spec.d.ts +9 -0
  33. package/lib/azure-containerapps/test/container-app-environment.spec.js +412 -0
  34. package/lib/azure-containerapps/test/container-app.integ.d.ts +10 -0
  35. package/lib/azure-containerapps/test/container-app.integ.js +119 -0
  36. package/lib/azure-containerapps/test/container-app.spec.d.ts +9 -0
  37. package/lib/azure-containerapps/test/container-app.spec.js +839 -0
  38. package/lib/azure-containerregistry/index.d.ts +1 -0
  39. package/lib/azure-containerregistry/index.js +18 -0
  40. package/lib/azure-containerregistry/lib/container-registry-schemas.d.ts +32 -0
  41. package/lib/azure-containerregistry/lib/container-registry-schemas.js +316 -0
  42. package/lib/azure-containerregistry/lib/container-registry.d.ts +330 -0
  43. package/lib/azure-containerregistry/lib/container-registry.js +217 -0
  44. package/lib/azure-containerregistry/lib/index.d.ts +2 -0
  45. package/lib/azure-containerregistry/lib/index.js +19 -0
  46. package/lib/azure-containerregistry/test/container-registry.integ.d.ts +9 -0
  47. package/lib/azure-containerregistry/test/container-registry.integ.js +101 -0
  48. package/lib/azure-containerregistry/test/container-registry.spec.d.ts +4 -0
  49. package/lib/azure-containerregistry/test/container-registry.spec.js +425 -0
  50. package/lib/azure-cosmosdb/index.d.ts +1 -0
  51. package/lib/azure-cosmosdb/index.js +18 -0
  52. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.d.ts +40 -0
  53. package/lib/azure-cosmosdb/lib/cosmos-db-schemas.js +330 -0
  54. package/lib/azure-cosmosdb/lib/cosmos-db.d.ts +290 -0
  55. package/lib/azure-cosmosdb/lib/cosmos-db.js +222 -0
  56. package/lib/azure-cosmosdb/lib/index.d.ts +2 -0
  57. package/lib/azure-cosmosdb/lib/index.js +19 -0
  58. package/lib/azure-cosmosdb/test/cosmos-db.integ.d.ts +9 -0
  59. package/lib/azure-cosmosdb/test/cosmos-db.integ.js +98 -0
  60. package/lib/azure-cosmosdb/test/cosmos-db.spec.d.ts +4 -0
  61. package/lib/azure-cosmosdb/test/cosmos-db.spec.js +339 -0
  62. package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +1 -1
  63. package/lib/azure-dnsforwardingruleset/lib/dns-forwarding-ruleset.js +1 -1
  64. package/lib/azure-dnsforwardingruleset/lib/forwarding-rule.js +1 -1
  65. package/lib/azure-dnsforwardingruleset/lib/virtual-network-link.js +1 -1
  66. package/lib/azure-dnsresolver/lib/dns-resolver.js +1 -1
  67. package/lib/azure-dnsresolver/lib/inbound-endpoint.js +1 -1
  68. package/lib/azure-dnsresolver/lib/outbound-endpoint.js +1 -1
  69. package/lib/azure-dnszone/lib/dns-zone.js +1 -1
  70. package/lib/azure-dnszone/lib/records/dns-records.js +10 -10
  71. package/lib/azure-functionapp/index.d.ts +1 -0
  72. package/lib/azure-functionapp/index.js +18 -0
  73. package/lib/azure-functionapp/lib/function-app-schemas.d.ts +32 -0
  74. package/lib/azure-functionapp/lib/function-app-schemas.js +303 -0
  75. package/lib/azure-functionapp/lib/function-app.d.ts +367 -0
  76. package/lib/azure-functionapp/lib/function-app.js +223 -0
  77. package/lib/azure-functionapp/lib/index.d.ts +2 -0
  78. package/lib/azure-functionapp/lib/index.js +19 -0
  79. package/lib/azure-functionapp/test/function-app.integ.d.ts +12 -0
  80. package/lib/azure-functionapp/test/function-app.integ.js +134 -0
  81. package/lib/azure-functionapp/test/function-app.spec.d.ts +4 -0
  82. package/lib/azure-functionapp/test/function-app.spec.js +566 -0
  83. package/lib/azure-keyvault/index.d.ts +1 -0
  84. package/lib/azure-keyvault/index.js +18 -0
  85. package/lib/azure-keyvault/lib/index.d.ts +2 -0
  86. package/lib/azure-keyvault/lib/index.js +19 -0
  87. package/lib/azure-keyvault/lib/key-vault-schemas.d.ts +40 -0
  88. package/lib/azure-keyvault/lib/key-vault-schemas.js +312 -0
  89. package/lib/azure-keyvault/lib/key-vault.d.ts +344 -0
  90. package/lib/azure-keyvault/lib/key-vault.js +243 -0
  91. package/lib/azure-keyvault/test/key-vault.integ.d.ts +9 -0
  92. package/lib/azure-keyvault/test/key-vault.integ.js +108 -0
  93. package/lib/azure-keyvault/test/key-vault.spec.d.ts +4 -0
  94. package/lib/azure-keyvault/test/key-vault.spec.js +264 -0
  95. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +1 -1
  96. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  97. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  98. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  99. package/lib/azure-networkwatcher/lib/network-watcher.js +1 -1
  100. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  101. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  102. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +1 -1
  103. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  104. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  105. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  106. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  107. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  108. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  109. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  110. package/lib/azure-sreagent/index.d.ts +1 -0
  111. package/lib/azure-sreagent/index.js +18 -0
  112. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  113. package/lib/azure-sreagent/lib/index.js +19 -0
  114. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  115. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  116. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  117. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  118. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  119. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  120. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  121. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  122. package/lib/azure-staticwebapp/index.d.ts +1 -0
  123. package/lib/azure-staticwebapp/index.js +18 -0
  124. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  125. package/lib/azure-staticwebapp/lib/index.js +19 -0
  126. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  127. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  128. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  129. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  130. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  131. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  132. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  133. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  134. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  135. package/lib/azure-subnet/lib/subnet.js +1 -1
  136. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  137. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  138. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +1 -1
  139. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  140. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  141. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  142. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  143. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  144. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  145. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  146. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  147. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  148. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  149. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  150. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  151. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  152. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  153. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  154. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  155. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  156. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  157. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  158. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  159. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  160. package/lib/index.d.ts +16 -0
  161. package/lib/index.js +18 -2
  162. package/lib/testing/index.js +2 -2
  163. package/lib/testing/lib/cleanup.js +1 -1
  164. package/lib/testing/lib/metadata.js +1 -1
  165. package/package.json +1 -1
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Unified Azure Cosmos DB Account implementation using VersionedAzapiResource framework
3
+ *
4
+ * Supported API Versions:
5
+ * - 2023-11-15 (Deprecated)
6
+ * - 2024-05-15 (Active)
7
+ * - 2024-08-15 (Active, Latest)
8
+ *
9
+ * Features:
10
+ * - Automatic latest version resolution when no version is specified
11
+ * - Explicit version pinning for stability requirements
12
+ * - Schema-driven validation and transformation
13
+ * - JSII compliance for multi-language support
14
+ */
15
+ import * as cdktf from "cdktf";
16
+ import { Construct } from "constructs";
17
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
18
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
19
+ /**
20
+ * Consistency policy configuration for Cosmos DB Account
21
+ */
22
+ export interface CosmosDbConsistencyPolicy {
23
+ /**
24
+ * The default consistency level
25
+ * (Eventual, Session, BoundedStaleness, Strong, ConsistentPrefix)
26
+ * @default "Session"
27
+ */
28
+ readonly defaultConsistencyLevel: string;
29
+ /**
30
+ * The maximum staleness prefix (only valid for BoundedStaleness)
31
+ */
32
+ readonly maxStalenessPrefix?: number;
33
+ /**
34
+ * The maximum interval in seconds (only valid for BoundedStaleness)
35
+ */
36
+ readonly maxIntervalInSeconds?: number;
37
+ }
38
+ /**
39
+ * Geo-replication location configuration for Cosmos DB Account
40
+ */
41
+ export interface CosmosDbGeoLocation {
42
+ /**
43
+ * The Azure region name (e.g. "eastus")
44
+ */
45
+ readonly locationName: string;
46
+ /**
47
+ * The failover priority of the region (0 = write region)
48
+ */
49
+ readonly failoverPriority: number;
50
+ /**
51
+ * Whether this region is zone-redundant
52
+ * @default false
53
+ */
54
+ readonly isZoneRedundant?: boolean;
55
+ }
56
+ /**
57
+ * Capability configuration for Cosmos DB Account
58
+ */
59
+ export interface CosmosDbCapability {
60
+ /**
61
+ * The capability name (e.g. "EnableServerless", "EnableCassandra",
62
+ * "EnableTable", "EnableGremlin", "EnableMongo", "EnableAggregationPipeline")
63
+ */
64
+ readonly name: string;
65
+ }
66
+ /**
67
+ * Backup policy configuration for Cosmos DB Account
68
+ */
69
+ export interface CosmosDbBackupPolicy {
70
+ /**
71
+ * The backup type ("Periodic" or "Continuous")
72
+ */
73
+ readonly type: string;
74
+ /**
75
+ * Periodic mode properties (only valid when type is "Periodic")
76
+ */
77
+ readonly periodicModeProperties?: CosmosDbPeriodicModeProperties;
78
+ /**
79
+ * Continuous mode properties (only valid when type is "Continuous")
80
+ */
81
+ readonly continuousModeProperties?: CosmosDbContinuousModeProperties;
82
+ }
83
+ /**
84
+ * Periodic backup mode properties
85
+ */
86
+ export interface CosmosDbPeriodicModeProperties {
87
+ /**
88
+ * Backup interval in minutes
89
+ */
90
+ readonly backupIntervalInMinutes?: number;
91
+ /**
92
+ * Backup retention interval in hours
93
+ */
94
+ readonly backupRetentionIntervalInHours?: number;
95
+ /**
96
+ * Storage redundancy for backups (Geo, Local, Zone)
97
+ */
98
+ readonly backupStorageRedundancy?: string;
99
+ }
100
+ /**
101
+ * Continuous backup mode properties
102
+ */
103
+ export interface CosmosDbContinuousModeProperties {
104
+ /**
105
+ * Continuous backup tier ("Continuous7Days" or "Continuous30Days")
106
+ */
107
+ readonly tier?: string;
108
+ }
109
+ /**
110
+ * Identity configuration for Cosmos DB Account
111
+ */
112
+ export interface CosmosDbIdentity {
113
+ /**
114
+ * The type of identity (None, SystemAssigned, UserAssigned, "SystemAssigned,UserAssigned")
115
+ */
116
+ readonly type: string;
117
+ /**
118
+ * User assigned identity IDs
119
+ */
120
+ readonly userAssignedIdentities?: {
121
+ [key: string]: any;
122
+ };
123
+ }
124
+ /**
125
+ * Properties for the unified Azure Cosmos DB Account
126
+ *
127
+ * Extends AzapiResourceProps with Cosmos DB Account specific properties
128
+ */
129
+ export interface CosmosDbAccountProps extends AzapiResourceProps {
130
+ /**
131
+ * The kind of Cosmos DB Account
132
+ * @default "GlobalDocumentDB"
133
+ * @example "GlobalDocumentDB", "MongoDB", "Parse"
134
+ */
135
+ readonly kind?: string;
136
+ /**
137
+ * The database account offer type
138
+ * @default "Standard"
139
+ */
140
+ readonly databaseAccountOfferType?: string;
141
+ /**
142
+ * The consistency policy for the Cosmos DB Account
143
+ * @default { defaultConsistencyLevel: "Session" }
144
+ */
145
+ readonly consistencyPolicy?: CosmosDbConsistencyPolicy;
146
+ /**
147
+ * Geo-replication locations for the Cosmos DB Account.
148
+ *
149
+ * If not provided, a single location matching the account location will be
150
+ * configured automatically with failover priority 0.
151
+ */
152
+ readonly geoLocations?: CosmosDbGeoLocation[];
153
+ /**
154
+ * Capabilities to enable on the Cosmos DB Account
155
+ * @example [{ name: "EnableServerless" }]
156
+ */
157
+ readonly capabilities?: CosmosDbCapability[];
158
+ /**
159
+ * Whether public network access is enabled
160
+ * @default "Enabled"
161
+ */
162
+ readonly publicNetworkAccess?: string;
163
+ /**
164
+ * Whether automatic failover is enabled
165
+ * @default false
166
+ */
167
+ readonly enableAutomaticFailover?: boolean;
168
+ /**
169
+ * Whether multi-region writes are enabled
170
+ * @default false
171
+ */
172
+ readonly enableMultipleWriteLocations?: boolean;
173
+ /**
174
+ * Whether the free tier is enabled (only one free-tier account is allowed per subscription)
175
+ * @default false
176
+ */
177
+ readonly enableFreeTier?: boolean;
178
+ /**
179
+ * Whether virtual network filtering is enabled
180
+ * @default false
181
+ */
182
+ readonly isVirtualNetworkFilterEnabled?: boolean;
183
+ /**
184
+ * The minimum TLS version (Tls, Tls11, Tls12)
185
+ * @default "Tls12"
186
+ */
187
+ readonly minimalTlsVersion?: string;
188
+ /**
189
+ * Backup policy configuration
190
+ */
191
+ readonly backupPolicy?: CosmosDbBackupPolicy;
192
+ /**
193
+ * Managed identity configuration
194
+ */
195
+ readonly identity?: CosmosDbIdentity;
196
+ /**
197
+ * The lifecycle rules to ignore changes
198
+ * @example ["tags"]
199
+ */
200
+ readonly ignoreChanges?: string[];
201
+ /**
202
+ * Resource group ID where the Cosmos DB Account will be created
203
+ */
204
+ readonly resourceGroupId?: string;
205
+ }
206
+ /**
207
+ * Unified Azure Cosmos DB Account implementation
208
+ *
209
+ * Provides a single, version-aware implementation that automatically handles
210
+ * version resolution, schema validation, and property transformation while
211
+ * maintaining full backward compatibility.
212
+ *
213
+ * @example
214
+ * // Basic usage with automatic version resolution:
215
+ * const cosmosDb = new CosmosDbAccount(this, "cosmos", {
216
+ * name: "mycosmosaccount",
217
+ * location: "eastus",
218
+ * resourceGroupId: resourceGroup.id,
219
+ * });
220
+ *
221
+ * @example
222
+ * // Usage with explicit version pinning and serverless capability:
223
+ * const cosmosDb = new CosmosDbAccount(this, "cosmos", {
224
+ * name: "mycosmosaccount",
225
+ * location: "eastus",
226
+ * resourceGroupId: resourceGroup.id,
227
+ * apiVersion: "2024-05-15",
228
+ * capabilities: [{ name: "EnableServerless" }],
229
+ * });
230
+ *
231
+ * @stability stable
232
+ */
233
+ export declare class CosmosDbAccount extends AzapiResource {
234
+ readonly props: CosmosDbAccountProps;
235
+ readonly idOutput: cdktf.TerraformOutput;
236
+ readonly locationOutput: cdktf.TerraformOutput;
237
+ readonly nameOutput: cdktf.TerraformOutput;
238
+ readonly tagsOutput: cdktf.TerraformOutput;
239
+ readonly documentEndpointOutput: cdktf.TerraformOutput;
240
+ /**
241
+ * Creates a new Azure Cosmos DB Account using the VersionedAzapiResource framework
242
+ *
243
+ * @param scope - The scope in which to define this construct
244
+ * @param id - The unique identifier for this instance
245
+ * @param props - Configuration properties for the Cosmos DB Account
246
+ */
247
+ constructor(scope: Construct, id: string, props: CosmosDbAccountProps);
248
+ /**
249
+ * Gets the default API version to use when no explicit version is specified
250
+ */
251
+ protected defaultVersion(): string;
252
+ /**
253
+ * Gets the Azure resource type for Cosmos DB Accounts
254
+ */
255
+ protected resourceType(): string;
256
+ /**
257
+ * Gets the API schema for the resolved version
258
+ */
259
+ protected apiSchema(): ApiSchema;
260
+ /**
261
+ * Indicates that location is required for Cosmos DB Accounts
262
+ */
263
+ protected requiresLocation(): boolean;
264
+ /**
265
+ * Creates the resource body for the Azure API call
266
+ */
267
+ protected createResourceBody(props: any): any;
268
+ /**
269
+ * Get the document endpoint URL for the Cosmos DB Account
270
+ */
271
+ get documentEndpoint(): string;
272
+ /**
273
+ * Add a tag to the Cosmos DB Account
274
+ */
275
+ addTag(key: string, value: string): void;
276
+ /**
277
+ * Remove a tag from the Cosmos DB Account
278
+ */
279
+ removeTag(key: string): void;
280
+ /**
281
+ * Applies ignore changes lifecycle rules
282
+ *
283
+ * Cosmos DB's REST API normalizes location values (e.g. "centralus" -> "Central US")
284
+ * after the resource is created, which causes Terraform to detect drift on every
285
+ * plan. To make the resource idempotent, the construct automatically adds the
286
+ * normalized location fields to `ignore_changes`. Any user-specified
287
+ * `ignoreChanges` are merged in.
288
+ */
289
+ private _applyIgnoreChanges;
290
+ }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.CosmosDbAccount = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Unified Azure Cosmos DB Account implementation using VersionedAzapiResource framework
8
+ *
9
+ * Supported API Versions:
10
+ * - 2023-11-15 (Deprecated)
11
+ * - 2024-05-15 (Active)
12
+ * - 2024-08-15 (Active, Latest)
13
+ *
14
+ * Features:
15
+ * - Automatic latest version resolution when no version is specified
16
+ * - Explicit version pinning for stability requirements
17
+ * - Schema-driven validation and transformation
18
+ * - JSII compliance for multi-language support
19
+ */
20
+ const cdktf = require("cdktf");
21
+ const cosmos_db_schemas_1 = require("./cosmos-db-schemas");
22
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
23
+ /**
24
+ * Unified Azure Cosmos DB Account implementation
25
+ *
26
+ * Provides a single, version-aware implementation that automatically handles
27
+ * version resolution, schema validation, and property transformation while
28
+ * maintaining full backward compatibility.
29
+ *
30
+ * @example
31
+ * // Basic usage with automatic version resolution:
32
+ * const cosmosDb = new CosmosDbAccount(this, "cosmos", {
33
+ * name: "mycosmosaccount",
34
+ * location: "eastus",
35
+ * resourceGroupId: resourceGroup.id,
36
+ * });
37
+ *
38
+ * @example
39
+ * // Usage with explicit version pinning and serverless capability:
40
+ * const cosmosDb = new CosmosDbAccount(this, "cosmos", {
41
+ * name: "mycosmosaccount",
42
+ * location: "eastus",
43
+ * resourceGroupId: resourceGroup.id,
44
+ * apiVersion: "2024-05-15",
45
+ * capabilities: [{ name: "EnableServerless" }],
46
+ * });
47
+ *
48
+ * @stability stable
49
+ */
50
+ class CosmosDbAccount extends azapi_resource_1.AzapiResource {
51
+ /**
52
+ * Creates a new Azure Cosmos DB Account using the VersionedAzapiResource framework
53
+ *
54
+ * @param scope - The scope in which to define this construct
55
+ * @param id - The unique identifier for this instance
56
+ * @param props - Configuration properties for the Cosmos DB Account
57
+ */
58
+ constructor(scope, id, props) {
59
+ super(scope, id, props);
60
+ this.props = props;
61
+ // Create Terraform outputs
62
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
63
+ value: this.id,
64
+ description: "The ID of the Cosmos DB Account",
65
+ });
66
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
67
+ value: `\${${this.terraformResource.fqn}.location}`,
68
+ description: "The location of the Cosmos DB Account",
69
+ });
70
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
71
+ value: `\${${this.terraformResource.fqn}.name}`,
72
+ description: "The name of the Cosmos DB Account",
73
+ });
74
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
75
+ value: `\${${this.terraformResource.fqn}.tags}`,
76
+ description: "The tags assigned to the Cosmos DB Account",
77
+ });
78
+ this.documentEndpointOutput = new cdktf.TerraformOutput(this, "document_endpoint", {
79
+ value: `\${${this.terraformResource.fqn}.output.properties.documentEndpoint}`,
80
+ description: "The document endpoint URL of the Cosmos DB Account",
81
+ });
82
+ // Override logical IDs
83
+ this.idOutput.overrideLogicalId("id");
84
+ this.locationOutput.overrideLogicalId("location");
85
+ this.nameOutput.overrideLogicalId("name");
86
+ this.tagsOutput.overrideLogicalId("tags");
87
+ this.documentEndpointOutput.overrideLogicalId("document_endpoint");
88
+ // Apply ignore changes if specified
89
+ this._applyIgnoreChanges();
90
+ }
91
+ // =============================================================================
92
+ // REQUIRED ABSTRACT METHODS FROM AzapiResource
93
+ // =============================================================================
94
+ /**
95
+ * Gets the default API version to use when no explicit version is specified
96
+ */
97
+ defaultVersion() {
98
+ return "2024-08-15";
99
+ }
100
+ /**
101
+ * Gets the Azure resource type for Cosmos DB Accounts
102
+ */
103
+ resourceType() {
104
+ return cosmos_db_schemas_1.COSMOS_DB_TYPE;
105
+ }
106
+ /**
107
+ * Gets the API schema for the resolved version
108
+ */
109
+ apiSchema() {
110
+ return this.resolveSchema();
111
+ }
112
+ /**
113
+ * Indicates that location is required for Cosmos DB Accounts
114
+ */
115
+ requiresLocation() {
116
+ return true;
117
+ }
118
+ /**
119
+ * Creates the resource body for the Azure API call
120
+ */
121
+ createResourceBody(props) {
122
+ const typedProps = props;
123
+ const consistencyPolicy = typedProps.consistencyPolicy ?? {
124
+ defaultConsistencyLevel: "Session",
125
+ maxIntervalInSeconds: 5,
126
+ maxStalenessPrefix: 100,
127
+ };
128
+ const geoLocations = typedProps.geoLocations && typedProps.geoLocations.length > 0
129
+ ? typedProps.geoLocations
130
+ : [
131
+ {
132
+ locationName: this.location,
133
+ failoverPriority: 0,
134
+ isZoneRedundant: false,
135
+ },
136
+ ];
137
+ const properties = {
138
+ databaseAccountOfferType: typedProps.databaseAccountOfferType ?? "Standard",
139
+ consistencyPolicy: consistencyPolicy,
140
+ locations: geoLocations,
141
+ publicNetworkAccess: typedProps.publicNetworkAccess ?? "Enabled",
142
+ enableAutomaticFailover: typedProps.enableAutomaticFailover ?? false,
143
+ enableMultipleWriteLocations: typedProps.enableMultipleWriteLocations ?? false,
144
+ enableFreeTier: typedProps.enableFreeTier ?? false,
145
+ isVirtualNetworkFilterEnabled: typedProps.isVirtualNetworkFilterEnabled ?? false,
146
+ minimalTlsVersion: typedProps.minimalTlsVersion ?? "Tls12",
147
+ };
148
+ if (typedProps.capabilities && typedProps.capabilities.length > 0) {
149
+ properties.capabilities = typedProps.capabilities;
150
+ }
151
+ if (typedProps.backupPolicy) {
152
+ properties.backupPolicy = typedProps.backupPolicy;
153
+ }
154
+ return {
155
+ location: this.location,
156
+ tags: this.allTags(),
157
+ kind: typedProps.kind ?? "GlobalDocumentDB",
158
+ identity: typedProps.identity,
159
+ properties: properties,
160
+ };
161
+ }
162
+ // =============================================================================
163
+ // PUBLIC METHODS FOR COSMOS DB ACCOUNT OPERATIONS
164
+ // =============================================================================
165
+ /**
166
+ * Get the document endpoint URL for the Cosmos DB Account
167
+ */
168
+ get documentEndpoint() {
169
+ return `\${${this.terraformResource.fqn}.output.properties.documentEndpoint}`;
170
+ }
171
+ /**
172
+ * Add a tag to the Cosmos DB Account
173
+ */
174
+ addTag(key, value) {
175
+ if (!this.props.tags) {
176
+ this.props.tags = {};
177
+ }
178
+ this.props.tags[key] = value;
179
+ }
180
+ /**
181
+ * Remove a tag from the Cosmos DB Account
182
+ */
183
+ removeTag(key) {
184
+ if (this.props.tags && this.props.tags[key]) {
185
+ delete this.props.tags[key];
186
+ }
187
+ }
188
+ // =============================================================================
189
+ // PRIVATE HELPER METHODS
190
+ // =============================================================================
191
+ /**
192
+ * Applies ignore changes lifecycle rules
193
+ *
194
+ * Cosmos DB's REST API normalizes location values (e.g. "centralus" -> "Central US")
195
+ * after the resource is created, which causes Terraform to detect drift on every
196
+ * plan. To make the resource idempotent, the construct automatically adds the
197
+ * normalized location fields to `ignore_changes`. Any user-specified
198
+ * `ignoreChanges` are merged in.
199
+ */
200
+ _applyIgnoreChanges() {
201
+ const defaultIgnore = [
202
+ "location",
203
+ "body.location",
204
+ "body.properties.locations",
205
+ ];
206
+ const userIgnore = this.props.ignoreChanges ?? [];
207
+ const ignoreChanges = Array.from(new Set([...defaultIgnore, ...userIgnore]));
208
+ this.terraformResource.addOverride("lifecycle", [
209
+ {
210
+ ignore_changes: ignoreChanges,
211
+ },
212
+ ]);
213
+ }
214
+ }
215
+ exports.CosmosDbAccount = CosmosDbAccount;
216
+ _a = JSII_RTTI_SYMBOL_1;
217
+ CosmosDbAccount[_a] = { fqn: "@microsoft/terraform-cdk-constructs.CosmosDbAccount", version: "1.10.0" };
218
+ // Static initializer runs once when the class is first loaded
219
+ (() => {
220
+ azapi_resource_1.AzapiResource.registerSchemas(cosmos_db_schemas_1.COSMOS_DB_TYPE, cosmos_db_schemas_1.ALL_COSMOS_DB_VERSIONS);
221
+ })();
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29zbW9zLWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWNvc21vc2RiL2xpYi9jb3Ntb3MtZGIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBRUgsK0JBQStCO0FBRS9CLDJEQUE2RTtBQUM3RSw4RUFHbUQ7QUEyTm5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCRztBQUNILE1BQWEsZUFBZ0IsU0FBUSw4QkFBYTtJQWVoRDs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLDJCQUEyQjtRQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQ3BELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNkLFdBQVcsRUFBRSxpQ0FBaUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRSxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxZQUFZO1lBQ25ELFdBQVcsRUFBRSx1Q0FBdUM7U0FDckQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtZQUN4RCxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxRQUFRO1lBQy9DLFdBQVcsRUFBRSxtQ0FBbUM7U0FDakQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFVBQVUs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QWdGO0lBQ2hGLHlCQUF5QjtJQUN6QixnRkFBZ0Y7SUFFaEY7Ozs7Ozs7O09BUUc7SUFDSyxtQkFBbUI7UUFDekIsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVTtZQUNWLGVBQWU7WUFDZiwyQkFBMkI7U0FDNUIsQ0FBQztRQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUNsRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUM5QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxFQUFFLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzlDO2dCQUNFLGNBQWMsRUFBRSxhQUFhO2FBQzlCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUF2TkgsMENBd05DOzs7QUF2TkMsOERBQThEO0FBQzlEO0lBQ0UsOEJBQWEsQ0FBQyxlQUFlLENBQUMsa0NBQWMsRUFBRSwwQ0FBc0IsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsR0FBQSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVbmlmaWVkIEF6dXJlIENvc21vcyBEQiBBY2NvdW50IGltcGxlbWVudGF0aW9uIHVzaW5nIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogU3VwcG9ydGVkIEFQSSBWZXJzaW9uczpcbiAqIC0gMjAyMy0xMS0xNSAoRGVwcmVjYXRlZClcbiAqIC0gMjAyNC0wNS0xNSAoQWN0aXZlKVxuICogLSAyMDI0LTA4LTE1IChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBTExfQ09TTU9TX0RCX1ZFUlNJT05TLCBDT1NNT1NfREJfVFlQRSB9IGZyb20gXCIuL2Nvc21vcy1kYi1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIENvbnNpc3RlbmN5IHBvbGljeSBjb25maWd1cmF0aW9uIGZvciBDb3Ntb3MgREIgQWNjb3VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvc21vc0RiQ29uc2lzdGVuY3lQb2xpY3kge1xuICAvKipcbiAgICogVGhlIGRlZmF1bHQgY29uc2lzdGVuY3kgbGV2ZWxcbiAgICogKEV2ZW50dWFsLCBTZXNzaW9uLCBCb3VuZGVkU3RhbGVuZXNzLCBTdHJvbmcsIENvbnNpc3RlbnRQcmVmaXgpXG4gICAqIEBkZWZhdWx0IFwiU2Vzc2lvblwiXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Q29uc2lzdGVuY3lMZXZlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBzdGFsZW5lc3MgcHJlZml4IChvbmx5IHZhbGlkIGZvciBCb3VuZGVkU3RhbGVuZXNzKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U3RhbGVuZXNzUHJlZml4PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBpbnRlcnZhbCBpbiBzZWNvbmRzIChvbmx5IHZhbGlkIGZvciBCb3VuZGVkU3RhbGVuZXNzKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4SW50ZXJ2YWxJblNlY29uZHM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogR2VvLXJlcGxpY2F0aW9uIGxvY2F0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIENvc21vcyBEQiBBY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zbW9zRGJHZW9Mb2NhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQXp1cmUgcmVnaW9uIG5hbWUgKGUuZy4gXCJlYXN0dXNcIilcbiAgICovXG4gIHJlYWRvbmx5IGxvY2F0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZmFpbG92ZXIgcHJpb3JpdHkgb2YgdGhlIHJlZ2lvbiAoMCA9IHdyaXRlIHJlZ2lvbilcbiAgICovXG4gIHJlYWRvbmx5IGZhaWxvdmVyUHJpb3JpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlZ2lvbiBpcyB6b25lLXJlZHVuZGFudFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNab25lUmVkdW5kYW50PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDYXBhYmlsaXR5IGNvbmZpZ3VyYXRpb24gZm9yIENvc21vcyBEQiBBY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zbW9zRGJDYXBhYmlsaXR5IHtcbiAgLyoqXG4gICAqIFRoZSBjYXBhYmlsaXR5IG5hbWUgKGUuZy4gXCJFbmFibGVTZXJ2ZXJsZXNzXCIsIFwiRW5hYmxlQ2Fzc2FuZHJhXCIsXG4gICAqIFwiRW5hYmxlVGFibGVcIiwgXCJFbmFibGVHcmVtbGluXCIsIFwiRW5hYmxlTW9uZ29cIiwgXCJFbmFibGVBZ2dyZWdhdGlvblBpcGVsaW5lXCIpXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQmFja3VwIHBvbGljeSBjb25maWd1cmF0aW9uIGZvciBDb3Ntb3MgREIgQWNjb3VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvc21vc0RiQmFja3VwUG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBiYWNrdXAgdHlwZSAoXCJQZXJpb2RpY1wiIG9yIFwiQ29udGludW91c1wiKVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQZXJpb2RpYyBtb2RlIHByb3BlcnRpZXMgKG9ubHkgdmFsaWQgd2hlbiB0eXBlIGlzIFwiUGVyaW9kaWNcIilcbiAgICovXG4gIHJlYWRvbmx5IHBlcmlvZGljTW9kZVByb3BlcnRpZXM/OiBDb3Ntb3NEYlBlcmlvZGljTW9kZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIENvbnRpbnVvdXMgbW9kZSBwcm9wZXJ0aWVzIChvbmx5IHZhbGlkIHdoZW4gdHlwZSBpcyBcIkNvbnRpbnVvdXNcIilcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRpbnVvdXNNb2RlUHJvcGVydGllcz86IENvc21vc0RiQ29udGludW91c01vZGVQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIFBlcmlvZGljIGJhY2t1cCBtb2RlIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3Ntb3NEYlBlcmlvZGljTW9kZVByb3BlcnRpZXMge1xuICAvKipcbiAgICogQmFja3VwIGludGVydmFsIGluIG1pbnV0ZXNcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cEludGVydmFsSW5NaW51dGVzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBCYWNrdXAgcmV0ZW50aW9uIGludGVydmFsIGluIGhvdXJzXG4gICAqL1xuICByZWFkb25seSBiYWNrdXBSZXRlbnRpb25JbnRlcnZhbEluSG91cnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgcmVkdW5kYW5jeSBmb3IgYmFja3VwcyAoR2VvLCBMb2NhbCwgWm9uZSlcbiAgICovXG4gIHJlYWRvbmx5IGJhY2t1cFN0b3JhZ2VSZWR1bmRhbmN5Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbnRpbnVvdXMgYmFja3VwIG1vZGUgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvc21vc0RiQ29udGludW91c01vZGVQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIENvbnRpbnVvdXMgYmFja3VwIHRpZXIgKFwiQ29udGludW91czdEYXlzXCIgb3IgXCJDb250aW51b3VzMzBEYXlzXCIpXG4gICAqL1xuICByZWFkb25seSB0aWVyPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIElkZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIENvc21vcyBEQiBBY2NvdW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zbW9zRGJJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBpZGVudGl0eSAoTm9uZSwgU3lzdGVtQXNzaWduZWQsIFVzZXJBc3NpZ25lZCwgXCJTeXN0ZW1Bc3NpZ25lZCxVc2VyQXNzaWduZWRcIilcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlciBhc3NpZ25lZCBpZGVudGl0eSBJRHNcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJBc3NpZ25lZElkZW50aXRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSB1bmlmaWVkIEF6dXJlIENvc21vcyBEQiBBY2NvdW50XG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBDb3Ntb3MgREIgQWNjb3VudCBzcGVjaWZpYyBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zbW9zRGJBY2NvdW50UHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgQ29zbW9zIERCIEFjY291bnRcbiAgICogQGRlZmF1bHQgXCJHbG9iYWxEb2N1bWVudERCXCJcbiAgICogQGV4YW1wbGUgXCJHbG9iYWxEb2N1bWVudERCXCIsIFwiTW9uZ29EQlwiLCBcIlBhcnNlXCJcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhYmFzZSBhY2NvdW50IG9mZmVyIHR5cGVcbiAgICogQGRlZmF1bHQgXCJTdGFuZGFyZFwiXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZUFjY291bnRPZmZlclR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjb25zaXN0ZW5jeSBwb2xpY3kgZm9yIHRoZSBDb3Ntb3MgREIgQWNjb3VudFxuICAgKiBAZGVmYXVsdCB7IGRlZmF1bHRDb25zaXN0ZW5jeUxldmVsOiBcIlNlc3Npb25cIiB9XG4gICAqL1xuICByZWFkb25seSBjb25zaXN0ZW5jeVBvbGljeT86IENvc21vc0RiQ29uc2lzdGVuY3lQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEdlby1yZXBsaWNhdGlvbiBsb2NhdGlvbnMgZm9yIHRoZSBDb3Ntb3MgREIgQWNjb3VudC5cbiAgICpcbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIHNpbmdsZSBsb2NhdGlvbiBtYXRjaGluZyB0aGUgYWNjb3VudCBsb2NhdGlvbiB3aWxsIGJlXG4gICAqIGNvbmZpZ3VyZWQgYXV0b21hdGljYWxseSB3aXRoIGZhaWxvdmVyIHByaW9yaXR5IDAuXG4gICAqL1xuICByZWFkb25seSBnZW9Mb2NhdGlvbnM/OiBDb3Ntb3NEYkdlb0xvY2F0aW9uW107XG5cbiAgLyoqXG4gICAqIENhcGFiaWxpdGllcyB0byBlbmFibGUgb24gdGhlIENvc21vcyBEQiBBY2NvdW50XG4gICAqIEBleGFtcGxlIFt7IG5hbWU6IFwiRW5hYmxlU2VydmVybGVzc1wiIH1dXG4gICAqL1xuICByZWFkb25seSBjYXBhYmlsaXRpZXM/OiBDb3Ntb3NEYkNhcGFiaWxpdHlbXTtcblxuICAvKipcbiAgICogV2hldGhlciBwdWJsaWMgbmV0d29yayBhY2Nlc3MgaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCBcIkVuYWJsZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljTmV0d29ya0FjY2Vzcz86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhdXRvbWF0aWMgZmFpbG92ZXIgaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQXV0b21hdGljRmFpbG92ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG11bHRpLXJlZ2lvbiB3cml0ZXMgYXJlIGVuYWJsZWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZU11bHRpcGxlV3JpdGVMb2NhdGlvbnM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBmcmVlIHRpZXIgaXMgZW5hYmxlZCAob25seSBvbmUgZnJlZS10aWVyIGFjY291bnQgaXMgYWxsb3dlZCBwZXIgc3Vic2NyaXB0aW9uKVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlRnJlZVRpZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHZpcnR1YWwgbmV0d29yayBmaWx0ZXJpbmcgaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNWaXJ0dWFsTmV0d29ya0ZpbHRlckVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBUTFMgdmVyc2lvbiAoVGxzLCBUbHMxMSwgVGxzMTIpXG4gICAqIEBkZWZhdWx0IFwiVGxzMTJcIlxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW1hbFRsc1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhY2t1cCBwb2xpY3kgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUG9saWN5PzogQ29zbW9zRGJCYWNrdXBQb2xpY3k7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBDb3Ntb3NEYklkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIENvc21vcyBEQiBBY2NvdW50IHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVuaWZpZWQgQXp1cmUgQ29zbW9zIERCIEFjY291bnQgaW1wbGVtZW50YXRpb25cbiAqXG4gKiBQcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlc1xuICogdmVyc2lvbiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlXG4gKiBtYWludGFpbmluZyBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbjpcbiAqIGNvbnN0IGNvc21vc0RiID0gbmV3IENvc21vc0RiQWNjb3VudCh0aGlzLCBcImNvc21vc1wiLCB7XG4gKiAgIG5hbWU6IFwibXljb3Ntb3NhY2NvdW50XCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gVXNhZ2Ugd2l0aCBleHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgYW5kIHNlcnZlcmxlc3MgY2FwYWJpbGl0eTpcbiAqIGNvbnN0IGNvc21vc0RiID0gbmV3IENvc21vc0RiQWNjb3VudCh0aGlzLCBcImNvc21vc1wiLCB7XG4gKiAgIG5hbWU6IFwibXljb3Ntb3NhY2NvdW50XCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIGFwaVZlcnNpb246IFwiMjAyNC0wNS0xNVwiLFxuICogICBjYXBhYmlsaXRpZXM6IFt7IG5hbWU6IFwiRW5hYmxlU2VydmVybGVzc1wiIH1dLFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvc21vc0RiQWNjb3VudCBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICAvLyBTdGF0aWMgaW5pdGlhbGl6ZXIgcnVucyBvbmNlIHdoZW4gdGhlIGNsYXNzIGlzIGZpcnN0IGxvYWRlZFxuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKENPU01PU19EQl9UWVBFLCBBTExfQ09TTU9TX0RCX1ZFUlNJT05TKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogQ29zbW9zRGJBY2NvdW50UHJvcHM7XG5cbiAgLy8gT3V0cHV0IHByb3BlcnRpZXMgZm9yIGVhc3kgYWNjZXNzIGFuZCByZWZlcmVuY2luZ1xuICBwdWJsaWMgcmVhZG9ubHkgaWRPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2F0aW9uT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBuYW1lT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSB0YWdzT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudEVuZHBvaW50T3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgQ29zbW9zIERCIEFjY291bnQgdXNpbmcgdGhlIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZSAtIFRoZSBzY29wZSBpbiB3aGljaCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGluc3RhbmNlXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIENvc21vcyBEQiBBY2NvdW50XG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29zbW9zRGJBY2NvdW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIC8vIENyZWF0ZSBUZXJyYWZvcm0gb3V0cHV0c1xuICAgIHRoaXMuaWRPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwiaWRcIiwge1xuICAgICAgdmFsdWU6IHRoaXMuaWQsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgSUQgb2YgdGhlIENvc21vcyBEQiBBY2NvdW50XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvY2F0aW9uXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmxvY2F0aW9ufWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbG9jYXRpb24gb2YgdGhlIENvc21vcyBEQiBBY2NvdW50XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgQ29zbW9zIERCIEFjY291bnRcIixcbiAgICB9KTtcblxuICAgIHRoaXMudGFnc091dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJ0YWdzXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LnRhZ3N9YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSB0YWdzIGFzc2lnbmVkIHRvIHRoZSBDb3Ntb3MgREIgQWNjb3VudFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kb2N1bWVudEVuZHBvaW50T3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICBcImRvY3VtZW50X2VuZHBvaW50XCIsXG4gICAgICB7XG4gICAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmRvY3VtZW50RW5kcG9pbnR9YCxcbiAgICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGRvY3VtZW50IGVuZHBvaW50IFVSTCBvZiB0aGUgQ29zbW9zIERCIEFjY291bnRcIixcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIE92ZXJyaWRlIGxvZ2ljYWwgSURzXG4gICAgdGhpcy5pZE91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImlkXCIpO1xuICAgIHRoaXMubG9jYXRpb25PdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJsb2NhdGlvblwiKTtcbiAgICB0aGlzLm5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lXCIpO1xuICAgIHRoaXMudGFnc091dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcInRhZ3NcIik7XG4gICAgdGhpcy5kb2N1bWVudEVuZHBvaW50T3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiZG9jdW1lbnRfZW5kcG9pbnRcIik7XG5cbiAgICAvLyBBcHBseSBpZ25vcmUgY2hhbmdlcyBpZiBzcGVjaWZpZWRcbiAgICB0aGlzLl9hcHBseUlnbm9yZUNoYW5nZXMoKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFJFUVVJUkVEIEFCU1RSQUNUIE1FVEhPRFMgRlJPTSBBemFwaVJlc291cmNlXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGRlZmF1bHQgQVBJIHZlcnNpb24gdG8gdXNlIHdoZW4gbm8gZXhwbGljaXQgdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0VmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBcIjIwMjQtMDgtMTVcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBBenVyZSByZXNvdXJjZSB0eXBlIGZvciBDb3Ntb3MgREIgQWNjb3VudHNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09TTU9TX0RCX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIENvc21vcyBEQiBBY2NvdW50c1xuICAgKi9cbiAgcHJvdGVjdGVkIHJlcXVpcmVzTG9jYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyB0aGUgcmVzb3VyY2UgYm9keSBmb3IgdGhlIEF6dXJlIEFQSSBjYWxsXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUmVzb3VyY2VCb2R5KHByb3BzOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHR5cGVkUHJvcHMgPSBwcm9wcyBhcyBDb3Ntb3NEYkFjY291bnRQcm9wcztcblxuICAgIGNvbnN0IGNvbnNpc3RlbmN5UG9saWN5OiBDb3Ntb3NEYkNvbnNpc3RlbmN5UG9saWN5ID1cbiAgICAgIHR5cGVkUHJvcHMuY29uc2lzdGVuY3lQb2xpY3kgPz8ge1xuICAgICAgICBkZWZhdWx0Q29uc2lzdGVuY3lMZXZlbDogXCJTZXNzaW9uXCIsXG4gICAgICAgIG1heEludGVydmFsSW5TZWNvbmRzOiA1LFxuICAgICAgICBtYXhTdGFsZW5lc3NQcmVmaXg6IDEwMCxcbiAgICAgIH07XG5cbiAgICBjb25zdCBnZW9Mb2NhdGlvbnM6IENvc21vc0RiR2VvTG9jYXRpb25bXSA9XG4gICAgICB0eXBlZFByb3BzLmdlb0xvY2F0aW9ucyAmJiB0eXBlZFByb3BzLmdlb0xvY2F0aW9ucy5sZW5ndGggPiAwXG4gICAgICAgID8gdHlwZWRQcm9wcy5nZW9Mb2NhdGlvbnNcbiAgICAgICAgOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGxvY2F0aW9uTmFtZTogdGhpcy5sb2NhdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgIGZhaWxvdmVyUHJpb3JpdHk6IDAsXG4gICAgICAgICAgICAgIGlzWm9uZVJlZHVuZGFudDogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgZGF0YWJhc2VBY2NvdW50T2ZmZXJUeXBlOlxuICAgICAgICB0eXBlZFByb3BzLmRhdGFiYXNlQWNjb3VudE9mZmVyVHlwZSA/PyBcIlN0YW5kYXJkXCIsXG4gICAgICBjb25zaXN0ZW5jeVBvbGljeTogY29uc2lzdGVuY3lQb2xpY3ksXG4gICAgICBsb2NhdGlvbnM6IGdlb0xvY2F0aW9ucyxcbiAgICAgIHB1YmxpY05ldHdvcmtBY2Nlc3M6IHR5cGVkUHJvcHMucHVibGljTmV0d29ya0FjY2VzcyA/PyBcIkVuYWJsZWRcIixcbiAgICAgIGVuYWJsZUF1dG9tYXRpY0ZhaWxvdmVyOiB0eXBlZFByb3BzLmVuYWJsZUF1dG9tYXRpY0ZhaWxvdmVyID8/IGZhbHNlLFxuICAgICAgZW5hYmxlTXVsdGlwbGVXcml0ZUxvY2F0aW9uczpcbiAgICAgICAgdHlwZWRQcm9wcy5lbmFibGVNdWx0aXBsZVdyaXRlTG9jYXRpb25zID8/IGZhbHNlLFxuICAgICAgZW5hYmxlRnJlZVRpZXI6IHR5cGVkUHJvcHMuZW5hYmxlRnJlZVRpZXIgPz8gZmFsc2UsXG4gICAgICBpc1ZpcnR1YWxOZXR3b3JrRmlsdGVyRW5hYmxlZDpcbiAgICAgICAgdHlwZWRQcm9wcy5pc1ZpcnR1YWxOZXR3b3JrRmlsdGVyRW5hYmxlZCA/PyBmYWxzZSxcbiAgICAgIG1pbmltYWxUbHNWZXJzaW9uOiB0eXBlZFByb3BzLm1pbmltYWxUbHNWZXJzaW9uID8/IFwiVGxzMTJcIixcbiAgICB9O1xuXG4gICAgaWYgKHR5cGVkUHJvcHMuY2FwYWJpbGl0aWVzICYmIHR5cGVkUHJvcHMuY2FwYWJpbGl0aWVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHByb3BlcnRpZXMuY2FwYWJpbGl0aWVzID0gdHlwZWRQcm9wcy5jYXBhYmlsaXRpZXM7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuYmFja3VwUG9saWN5KSB7XG4gICAgICBwcm9wZXJ0aWVzLmJhY2t1cFBvbGljeSA9IHR5cGVkUHJvcHMuYmFja3VwUG9saWN5O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAga2luZDogdHlwZWRQcm9wcy5raW5kID8/IFwiR2xvYmFsRG9jdW1lbnREQlwiLFxuICAgICAgaWRlbnRpdHk6IHR5cGVkUHJvcHMuaWRlbnRpdHksXG4gICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzLFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgQ09TTU9TIERCIEFDQ09VTlQgT1BFUkFUSU9OU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGRvY3VtZW50IGVuZHBvaW50IFVSTCBmb3IgdGhlIENvc21vcyBEQiBBY2NvdW50XG4gICAqL1xuICBwdWJsaWMgZ2V0IGRvY3VtZW50RW5kcG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5kb2N1bWVudEVuZHBvaW50fWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBDb3Ntb3MgREIgQWNjb3VudFxuICAgKi9cbiAgcHVibGljIGFkZFRhZyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy50YWdzKSB7XG4gICAgICAodGhpcy5wcm9wcyBhcyBhbnkpLnRhZ3MgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy50YWdzIVtrZXldID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGEgdGFnIGZyb20gdGhlIENvc21vcyBEQiBBY2NvdW50XG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlVGFnKGtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMudGFncyAmJiB0aGlzLnByb3BzLnRhZ3Nba2V5XSkge1xuICAgICAgZGVsZXRlIHRoaXMucHJvcHMudGFnc1trZXldO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQXBwbGllcyBpZ25vcmUgY2hhbmdlcyBsaWZlY3ljbGUgcnVsZXNcbiAgICpcbiAgICogQ29zbW9zIERCJ3MgUkVTVCBBUEkgbm9ybWFsaXplcyBsb2NhdGlvbiB2YWx1ZXMgKGUuZy4gXCJjZW50cmFsdXNcIiAtPiBcIkNlbnRyYWwgVVNcIilcbiAgICogYWZ0ZXIgdGhlIHJlc291cmNlIGlzIGNyZWF0ZWQsIHdoaWNoIGNhdXNlcyBUZXJyYWZvcm0gdG8gZGV0ZWN0IGRyaWZ0IG9uIGV2ZXJ5XG4gICAqIHBsYW4uIFRvIG1ha2UgdGhlIHJlc291cmNlIGlkZW1wb3RlbnQsIHRoZSBjb25zdHJ1Y3QgYXV0b21hdGljYWxseSBhZGRzIHRoZVxuICAgKiBub3JtYWxpemVkIGxvY2F0aW9uIGZpZWxkcyB0byBgaWdub3JlX2NoYW5nZXNgLiBBbnkgdXNlci1zcGVjaWZpZWRcbiAgICogYGlnbm9yZUNoYW5nZXNgIGFyZSBtZXJnZWQgaW4uXG4gICAqL1xuICBwcml2YXRlIF9hcHBseUlnbm9yZUNoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3QgZGVmYXVsdElnbm9yZSA9IFtcbiAgICAgIFwibG9jYXRpb25cIixcbiAgICAgIFwiYm9keS5sb2NhdGlvblwiLFxuICAgICAgXCJib2R5LnByb3BlcnRpZXMubG9jYXRpb25zXCIsXG4gICAgXTtcbiAgICBjb25zdCB1c2VySWdub3JlID0gdGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzID8/IFtdO1xuICAgIGNvbnN0IGlnbm9yZUNoYW5nZXMgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChbLi4uZGVmYXVsdElnbm9yZSwgLi4udXNlcklnbm9yZV0pLFxuICAgICk7XG5cbiAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgIHtcbiAgICAgICAgaWdub3JlX2NoYW5nZXM6IGlnbm9yZUNoYW5nZXMsXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from "./cosmos-db-schemas";
2
+ export * from "./cosmos-db";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cosmos-db-schemas"), exports);
18
+ __exportStar(require("./cosmos-db"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtY29zbW9zZGIvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0M7QUFDcEMsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29zbW9zLWRiLXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Nvc21vcy1kYlwiO1xuIl19
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Cosmos DB Account
3
+ *
4
+ * This test demonstrates basic usage of the CosmosDbAccount construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";