@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,330 @@
1
+ /**
2
+ * Unified Azure Container Registry implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a single, version-aware implementation for Azure Container Registry
5
+ * that automatically handles version management, schema validation, and property transformation
6
+ * across all supported API versions.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2023-07-01 (Maintenance)
10
+ * - 2025-04-01 (Active, Latest)
11
+ *
12
+ * Features:
13
+ * - Automatic latest version resolution when no version is specified
14
+ * - Explicit version pinning for stability requirements
15
+ * - Schema-driven validation and transformation
16
+ * - JSII compliance for multi-language support
17
+ */
18
+ import * as cdktf from "cdktf";
19
+ import { Construct } from "constructs";
20
+ import { AzapiResource, AzapiResourceProps } from "../../core-azure/lib/azapi/azapi-resource";
21
+ import { ApiSchema } from "../../core-azure/lib/version-manager/interfaces/version-interfaces";
22
+ /**
23
+ * SKU configuration for Container Registry
24
+ */
25
+ export interface ContainerRegistrySku {
26
+ /**
27
+ * The SKU name (Basic, Standard, Premium)
28
+ */
29
+ readonly name: string;
30
+ }
31
+ /**
32
+ * IP rule for network rule set
33
+ */
34
+ export interface ContainerRegistryIpRule {
35
+ /**
36
+ * IP address or CIDR range
37
+ */
38
+ readonly value: string;
39
+ /**
40
+ * The action of IP ACL rule (Allow)
41
+ * @default "Allow"
42
+ */
43
+ readonly action?: string;
44
+ }
45
+ /**
46
+ * Network rule set configuration for Container Registry
47
+ */
48
+ export interface ContainerRegistryNetworkRuleSet {
49
+ /**
50
+ * Default action when no rule matches (Allow or Deny)
51
+ * @default "Allow"
52
+ */
53
+ readonly defaultAction?: string;
54
+ /**
55
+ * IP rules for the Container Registry
56
+ */
57
+ readonly ipRules?: ContainerRegistryIpRule[];
58
+ }
59
+ /**
60
+ * Key vault properties for encryption
61
+ */
62
+ export interface ContainerRegistryKeyVaultProperties {
63
+ /**
64
+ * The client ID of the identity used to access the key vault
65
+ */
66
+ readonly identity?: string;
67
+ /**
68
+ * The key identifier of the key vault key
69
+ */
70
+ readonly keyIdentifier?: string;
71
+ }
72
+ /**
73
+ * Encryption configuration for Container Registry
74
+ */
75
+ export interface ContainerRegistryEncryption {
76
+ /**
77
+ * Key vault properties for customer-managed key encryption
78
+ */
79
+ readonly keyVaultProperties?: ContainerRegistryKeyVaultProperties;
80
+ /**
81
+ * The encryption status (enabled or disabled)
82
+ * @default "disabled"
83
+ */
84
+ readonly status?: string;
85
+ }
86
+ /**
87
+ * Retention policy for Container Registry
88
+ */
89
+ export interface ContainerRegistryRetentionPolicy {
90
+ /**
91
+ * Number of days to retain untagged manifests
92
+ * @default 7
93
+ */
94
+ readonly days?: number;
95
+ /**
96
+ * The retention policy status (enabled or disabled)
97
+ * @default "disabled"
98
+ */
99
+ readonly status?: string;
100
+ }
101
+ /**
102
+ * Trust policy for Container Registry
103
+ */
104
+ export interface ContainerRegistryTrustPolicy {
105
+ /**
106
+ * The trust policy type (Notary)
107
+ * @default "Notary"
108
+ */
109
+ readonly type?: string;
110
+ /**
111
+ * The trust policy status (enabled or disabled)
112
+ * @default "disabled"
113
+ */
114
+ readonly status?: string;
115
+ }
116
+ /**
117
+ * Export policy for Container Registry
118
+ */
119
+ export interface ContainerRegistryExportPolicy {
120
+ /**
121
+ * The export policy status (enabled or disabled)
122
+ * @default "enabled"
123
+ */
124
+ readonly status?: string;
125
+ }
126
+ /**
127
+ * Soft delete policy for Container Registry
128
+ */
129
+ export interface ContainerRegistrySoftDeletePolicy {
130
+ /**
131
+ * Number of days after which a soft-deleted item is permanently deleted
132
+ * @default 7
133
+ */
134
+ readonly retentionDays?: number;
135
+ /**
136
+ * The soft delete policy status (enabled or disabled)
137
+ * @default "disabled"
138
+ */
139
+ readonly status?: string;
140
+ }
141
+ /**
142
+ * Policy configuration for Container Registry
143
+ */
144
+ export interface ContainerRegistryPolicies {
145
+ /**
146
+ * Retention policy for untagged manifests
147
+ */
148
+ readonly retentionPolicy?: ContainerRegistryRetentionPolicy;
149
+ /**
150
+ * Trust policy for content trust
151
+ */
152
+ readonly trustPolicy?: ContainerRegistryTrustPolicy;
153
+ /**
154
+ * Export policy for the registry
155
+ */
156
+ readonly exportPolicy?: ContainerRegistryExportPolicy;
157
+ /**
158
+ * Soft delete policy for the registry
159
+ */
160
+ readonly softDeletePolicy?: ContainerRegistrySoftDeletePolicy;
161
+ }
162
+ /**
163
+ * Identity configuration for Container Registry
164
+ */
165
+ export interface ContainerRegistryIdentity {
166
+ /**
167
+ * The type of identity (SystemAssigned, UserAssigned, SystemAssigned,UserAssigned)
168
+ */
169
+ readonly type: string;
170
+ /**
171
+ * User assigned identity IDs
172
+ */
173
+ readonly userAssignedIdentities?: {
174
+ [key: string]: any;
175
+ };
176
+ }
177
+ /**
178
+ * Properties for the unified Azure Container Registry
179
+ *
180
+ * Extends AzapiResourceProps with Container Registry specific properties
181
+ */
182
+ export interface ContainerRegistryProps extends AzapiResourceProps {
183
+ /**
184
+ * The SKU (pricing tier) for the Container Registry
185
+ * @example { name: "Standard" }
186
+ */
187
+ readonly sku: ContainerRegistrySku;
188
+ /**
189
+ * Whether the admin user is enabled
190
+ * @default false
191
+ */
192
+ readonly adminUserEnabled?: boolean;
193
+ /**
194
+ * Whether public network access is enabled
195
+ * @default "Enabled"
196
+ */
197
+ readonly publicNetworkAccess?: string;
198
+ /**
199
+ * Network rule set configuration (Premium SKU only)
200
+ */
201
+ readonly networkRuleSet?: ContainerRegistryNetworkRuleSet;
202
+ /**
203
+ * Encryption settings with customer-managed keys (Premium SKU only)
204
+ */
205
+ readonly encryption?: ContainerRegistryEncryption;
206
+ /**
207
+ * Policy configuration for the registry
208
+ */
209
+ readonly policies?: ContainerRegistryPolicies;
210
+ /**
211
+ * Managed identity configuration
212
+ */
213
+ readonly identity?: ContainerRegistryIdentity;
214
+ /**
215
+ * Whether zone redundancy is enabled (Premium SKU only)
216
+ * @default "Disabled"
217
+ */
218
+ readonly zoneRedundancy?: string;
219
+ /**
220
+ * Whether to enable a dedicated data endpoint (Premium SKU only)
221
+ * @default false
222
+ */
223
+ readonly dataEndpointEnabled?: boolean;
224
+ /**
225
+ * Whether anonymous pull is enabled (Standard or Premium SKU)
226
+ * @default false
227
+ */
228
+ readonly anonymousPullEnabled?: boolean;
229
+ /**
230
+ * Whether to allow trusted Azure Services to bypass network rules
231
+ * @default "AzureServices"
232
+ */
233
+ readonly networkRuleBypassOptions?: string;
234
+ /**
235
+ * The lifecycle rules to ignore changes
236
+ * @example ["tags"]
237
+ */
238
+ readonly ignoreChanges?: string[];
239
+ /**
240
+ * Resource group ID where the Container Registry will be created
241
+ */
242
+ readonly resourceGroupId?: string;
243
+ }
244
+ /**
245
+ * Unified Azure Container Registry implementation
246
+ *
247
+ * This class provides a single, version-aware implementation that replaces all
248
+ * version-specific Container Registry classes. It automatically handles version
249
+ * resolution, schema validation, and property transformation while maintaining
250
+ * full backward compatibility.
251
+ *
252
+ * @example
253
+ * // Basic usage with automatic version resolution:
254
+ * const registry = new ContainerRegistry(this, "acr", {
255
+ * name: "mycontainerregistry",
256
+ * location: "eastus",
257
+ * resourceGroupId: resourceGroup.id,
258
+ * sku: { name: "Standard" },
259
+ * });
260
+ *
261
+ * @example
262
+ * // Premium registry with advanced features:
263
+ * const registry = new ContainerRegistry(this, "acr", {
264
+ * name: "mycontainerregistry",
265
+ * location: "eastus",
266
+ * resourceGroupId: resourceGroup.id,
267
+ * sku: { name: "Premium" },
268
+ * publicNetworkAccess: "Disabled",
269
+ * zoneRedundancy: "Enabled",
270
+ * dataEndpointEnabled: true,
271
+ * policies: {
272
+ * retentionPolicy: { days: 30, status: "enabled" },
273
+ * softDeletePolicy: { retentionDays: 14, status: "enabled" },
274
+ * },
275
+ * });
276
+ *
277
+ * @stability stable
278
+ */
279
+ export declare class ContainerRegistry extends AzapiResource {
280
+ readonly props: ContainerRegistryProps;
281
+ readonly idOutput: cdktf.TerraformOutput;
282
+ readonly locationOutput: cdktf.TerraformOutput;
283
+ readonly nameOutput: cdktf.TerraformOutput;
284
+ readonly tagsOutput: cdktf.TerraformOutput;
285
+ readonly loginServerOutput: cdktf.TerraformOutput;
286
+ /**
287
+ * Creates a new Azure Container Registry using the VersionedAzapiResource framework
288
+ *
289
+ * @param scope - The scope in which to define this construct
290
+ * @param id - The unique identifier for this instance
291
+ * @param props - Configuration properties for the Container Registry
292
+ */
293
+ constructor(scope: Construct, id: string, props: ContainerRegistryProps);
294
+ /**
295
+ * Gets the default API version to use when no explicit version is specified
296
+ */
297
+ protected defaultVersion(): string;
298
+ /**
299
+ * Gets the Azure resource type for Container Registries
300
+ */
301
+ protected resourceType(): string;
302
+ /**
303
+ * Gets the API schema for the resolved version
304
+ */
305
+ protected apiSchema(): ApiSchema;
306
+ /**
307
+ * Indicates that location is required for Container Registries
308
+ */
309
+ protected requiresLocation(): boolean;
310
+ /**
311
+ * Creates the resource body for the Azure API call
312
+ */
313
+ protected createResourceBody(props: any): any;
314
+ /**
315
+ * Get the login server URL for the Container Registry
316
+ */
317
+ get loginServer(): string;
318
+ /**
319
+ * Add a tag to the Container Registry
320
+ */
321
+ addTag(key: string, value: string): void;
322
+ /**
323
+ * Remove a tag from the Container Registry
324
+ */
325
+ removeTag(key: string): void;
326
+ /**
327
+ * Applies ignore changes lifecycle rules if specified in props
328
+ */
329
+ private _applyIgnoreChanges;
330
+ }
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ContainerRegistry = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Unified Azure Container Registry implementation using VersionedAzapiResource framework
8
+ *
9
+ * This class provides a single, version-aware implementation for Azure Container Registry
10
+ * that automatically handles version management, schema validation, and property transformation
11
+ * across all supported API versions.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2023-07-01 (Maintenance)
15
+ * - 2025-04-01 (Active, Latest)
16
+ *
17
+ * Features:
18
+ * - Automatic latest version resolution when no version is specified
19
+ * - Explicit version pinning for stability requirements
20
+ * - Schema-driven validation and transformation
21
+ * - JSII compliance for multi-language support
22
+ */
23
+ const cdktf = require("cdktf");
24
+ const container_registry_schemas_1 = require("./container-registry-schemas");
25
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
26
+ /**
27
+ * Unified Azure Container Registry implementation
28
+ *
29
+ * This class provides a single, version-aware implementation that replaces all
30
+ * version-specific Container Registry classes. It automatically handles version
31
+ * resolution, schema validation, and property transformation while maintaining
32
+ * full backward compatibility.
33
+ *
34
+ * @example
35
+ * // Basic usage with automatic version resolution:
36
+ * const registry = new ContainerRegistry(this, "acr", {
37
+ * name: "mycontainerregistry",
38
+ * location: "eastus",
39
+ * resourceGroupId: resourceGroup.id,
40
+ * sku: { name: "Standard" },
41
+ * });
42
+ *
43
+ * @example
44
+ * // Premium registry with advanced features:
45
+ * const registry = new ContainerRegistry(this, "acr", {
46
+ * name: "mycontainerregistry",
47
+ * location: "eastus",
48
+ * resourceGroupId: resourceGroup.id,
49
+ * sku: { name: "Premium" },
50
+ * publicNetworkAccess: "Disabled",
51
+ * zoneRedundancy: "Enabled",
52
+ * dataEndpointEnabled: true,
53
+ * policies: {
54
+ * retentionPolicy: { days: 30, status: "enabled" },
55
+ * softDeletePolicy: { retentionDays: 14, status: "enabled" },
56
+ * },
57
+ * });
58
+ *
59
+ * @stability stable
60
+ */
61
+ class ContainerRegistry extends azapi_resource_1.AzapiResource {
62
+ /**
63
+ * Creates a new Azure Container Registry using the VersionedAzapiResource framework
64
+ *
65
+ * @param scope - The scope in which to define this construct
66
+ * @param id - The unique identifier for this instance
67
+ * @param props - Configuration properties for the Container Registry
68
+ */
69
+ constructor(scope, id, props) {
70
+ super(scope, id, props);
71
+ this.props = props;
72
+ // Create Terraform outputs
73
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
74
+ value: this.id,
75
+ description: "The ID of the Container Registry",
76
+ });
77
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
78
+ value: `\${${this.terraformResource.fqn}.location}`,
79
+ description: "The location of the Container Registry",
80
+ });
81
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
82
+ value: `\${${this.terraformResource.fqn}.name}`,
83
+ description: "The name of the Container Registry",
84
+ });
85
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
86
+ value: `\${${this.terraformResource.fqn}.tags}`,
87
+ description: "The tags assigned to the Container Registry",
88
+ });
89
+ this.loginServerOutput = new cdktf.TerraformOutput(this, "login_server", {
90
+ value: `\${${this.terraformResource.fqn}.output.properties.loginServer}`,
91
+ description: "The login server URL of the Container Registry",
92
+ });
93
+ // Override logical IDs
94
+ this.idOutput.overrideLogicalId("id");
95
+ this.locationOutput.overrideLogicalId("location");
96
+ this.nameOutput.overrideLogicalId("name");
97
+ this.tagsOutput.overrideLogicalId("tags");
98
+ this.loginServerOutput.overrideLogicalId("login_server");
99
+ // Apply ignore changes if specified
100
+ this._applyIgnoreChanges();
101
+ }
102
+ // =============================================================================
103
+ // REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
104
+ // =============================================================================
105
+ /**
106
+ * Gets the default API version to use when no explicit version is specified
107
+ */
108
+ defaultVersion() {
109
+ return "2025-04-01";
110
+ }
111
+ /**
112
+ * Gets the Azure resource type for Container Registries
113
+ */
114
+ resourceType() {
115
+ return container_registry_schemas_1.CONTAINER_REGISTRY_TYPE;
116
+ }
117
+ /**
118
+ * Gets the API schema for the resolved version
119
+ */
120
+ apiSchema() {
121
+ return this.resolveSchema();
122
+ }
123
+ /**
124
+ * Indicates that location is required for Container Registries
125
+ */
126
+ requiresLocation() {
127
+ return true;
128
+ }
129
+ /**
130
+ * Creates the resource body for the Azure API call
131
+ */
132
+ createResourceBody(props) {
133
+ const typedProps = props;
134
+ const properties = {
135
+ adminUserEnabled: typedProps.adminUserEnabled || false,
136
+ publicNetworkAccess: typedProps.publicNetworkAccess || "Enabled",
137
+ };
138
+ // Add optional properties if specified
139
+ if (typedProps.networkRuleSet) {
140
+ properties.networkRuleSet = typedProps.networkRuleSet;
141
+ }
142
+ if (typedProps.encryption) {
143
+ properties.encryption = typedProps.encryption;
144
+ }
145
+ if (typedProps.policies) {
146
+ properties.policies = typedProps.policies;
147
+ }
148
+ if (typedProps.zoneRedundancy) {
149
+ properties.zoneRedundancy = typedProps.zoneRedundancy;
150
+ }
151
+ if (typedProps.dataEndpointEnabled !== undefined) {
152
+ properties.dataEndpointEnabled = typedProps.dataEndpointEnabled;
153
+ }
154
+ if (typedProps.anonymousPullEnabled !== undefined) {
155
+ properties.anonymousPullEnabled = typedProps.anonymousPullEnabled;
156
+ }
157
+ if (typedProps.networkRuleBypassOptions) {
158
+ properties.networkRuleBypassOptions = typedProps.networkRuleBypassOptions;
159
+ }
160
+ return {
161
+ location: this.location,
162
+ tags: this.allTags(),
163
+ sku: typedProps.sku,
164
+ properties: properties,
165
+ identity: typedProps.identity,
166
+ };
167
+ }
168
+ // =============================================================================
169
+ // PUBLIC METHODS FOR CONTAINER REGISTRY OPERATIONS
170
+ // =============================================================================
171
+ /**
172
+ * Get the login server URL for the Container Registry
173
+ */
174
+ get loginServer() {
175
+ return `\${${this.terraformResource.fqn}.output.properties.loginServer}`;
176
+ }
177
+ /**
178
+ * Add a tag to the Container Registry
179
+ */
180
+ addTag(key, value) {
181
+ if (!this.props.tags) {
182
+ this.props.tags = {};
183
+ }
184
+ this.props.tags[key] = value;
185
+ }
186
+ /**
187
+ * Remove a tag from the Container Registry
188
+ */
189
+ removeTag(key) {
190
+ if (this.props.tags && this.props.tags[key]) {
191
+ delete this.props.tags[key];
192
+ }
193
+ }
194
+ // =============================================================================
195
+ // PRIVATE HELPER METHODS
196
+ // =============================================================================
197
+ /**
198
+ * Applies ignore changes lifecycle rules if specified in props
199
+ */
200
+ _applyIgnoreChanges() {
201
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
202
+ this.terraformResource.addOverride("lifecycle", [
203
+ {
204
+ ignore_changes: this.props.ignoreChanges,
205
+ },
206
+ ]);
207
+ }
208
+ }
209
+ }
210
+ exports.ContainerRegistry = ContainerRegistry;
211
+ _a = JSII_RTTI_SYMBOL_1;
212
+ ContainerRegistry[_a] = { fqn: "@microsoft/terraform-cdk-constructs.ContainerRegistry", version: "1.10.0" };
213
+ // Static initializer runs once when the class is first loaded
214
+ (() => {
215
+ azapi_resource_1.AzapiResource.registerSchemas(container_registry_schemas_1.CONTAINER_REGISTRY_TYPE, container_registry_schemas_1.ALL_CONTAINER_REGISTRY_VERSIONS);
216
+ })();
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWNvbnRhaW5lcnJlZ2lzdHJ5L2xpYi9jb250YWluZXItcmVnaXN0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILCtCQUErQjtBQUUvQiw2RUFHc0M7QUFDdEMsOEVBR21EO0FBa1FuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtDRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsOEJBQWE7SUFrQmxEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLGtDQUFrQztTQUNoRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFlBQVk7WUFDbkQsV0FBVyxFQUFFLHdDQUF3QztTQUN0RCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLG9D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TUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsV0FBVyxFQUFFO2dCQUM5QztvQkFDRSxjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhO2lCQUN6QzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOztBQWpNSCw4Q0FrTUM7OztBQWpNQyw4REFBOEQ7QUFDOUQ7SUFDRSw4QkFBYSxDQUFDLGVBQWUsQ0FDM0Isb0RBQXVCLEVBQ3ZCLDREQUErQixDQUNoQyxDQUFDO0FBQ0osQ0FBQyxHQUFBLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFVuaWZpZWQgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5IGltcGxlbWVudGF0aW9uIHVzaW5nIFZlcnNpb25lZEF6YXBpUmVzb3VyY2UgZnJhbWV3b3JrXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBhIHNpbmdsZSwgdmVyc2lvbi1hd2FyZSBpbXBsZW1lbnRhdGlvbiBmb3IgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKiB0aGF0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uIG1hbmFnZW1lbnQsIHNjaGVtYSB2YWxpZGF0aW9uLCBhbmQgcHJvcGVydHkgdHJhbnNmb3JtYXRpb25cbiAqIGFjcm9zcyBhbGwgc3VwcG9ydGVkIEFQSSB2ZXJzaW9ucy5cbiAqXG4gKiBTdXBwb3J0ZWQgQVBJIFZlcnNpb25zOlxuICogLSAyMDIzLTA3LTAxIChNYWludGVuYW5jZSlcbiAqIC0gMjAyNS0wNC0wMSAoQWN0aXZlLCBMYXRlc3QpXG4gKlxuICogRmVhdHVyZXM6XG4gKiAtIEF1dG9tYXRpYyBsYXRlc3QgdmVyc2lvbiByZXNvbHV0aW9uIHdoZW4gbm8gdmVyc2lvbiBpcyBzcGVjaWZpZWRcbiAqIC0gRXhwbGljaXQgdmVyc2lvbiBwaW5uaW5nIGZvciBzdGFiaWxpdHkgcmVxdWlyZW1lbnRzXG4gKiAtIFNjaGVtYS1kcml2ZW4gdmFsaWRhdGlvbiBhbmQgdHJhbnNmb3JtYXRpb25cbiAqIC0gSlNJSSBjb21wbGlhbmNlIGZvciBtdWx0aS1sYW5ndWFnZSBzdXBwb3J0XG4gKi9cblxuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQUxMX0NPTlRBSU5FUl9SRUdJU1RSWV9WRVJTSU9OUyxcbiAgQ09OVEFJTkVSX1JFR0lTVFJZX1RZUEUsXG59IGZyb20gXCIuL2NvbnRhaW5lci1yZWdpc3RyeS1zY2hlbWFzXCI7XG5pbXBvcnQge1xuICBBemFwaVJlc291cmNlLFxuICBBemFwaVJlc291cmNlUHJvcHMsXG59IGZyb20gXCIuLi8uLi9jb3JlLWF6dXJlL2xpYi9hemFwaS9hemFwaS1yZXNvdXJjZVwiO1xuaW1wb3J0IHsgQXBpU2NoZW1hIH0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL3ZlcnNpb24tbWFuYWdlci9pbnRlcmZhY2VzL3ZlcnNpb24taW50ZXJmYWNlc1wiO1xuXG4vKipcbiAqIFNLVSBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeVNrdSB7XG4gIC8qKlxuICAgKiBUaGUgU0tVIG5hbWUgKEJhc2ljLCBTdGFuZGFyZCwgUHJlbWl1bSlcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUCBydWxlIGZvciBuZXR3b3JrIHJ1bGUgc2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlJcFJ1bGUge1xuICAvKipcbiAgICogSVAgYWRkcmVzcyBvciBDSURSIHJhbmdlXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIG9mIElQIEFDTCBydWxlIChBbGxvdylcbiAgICogQGRlZmF1bHQgXCJBbGxvd1wiXG4gICAqL1xuICByZWFkb25seSBhY3Rpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayBydWxlIHNldCBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeU5ldHdvcmtSdWxlU2V0IHtcbiAgLyoqXG4gICAqIERlZmF1bHQgYWN0aW9uIHdoZW4gbm8gcnVsZSBtYXRjaGVzIChBbGxvdyBvciBEZW55KVxuICAgKiBAZGVmYXVsdCBcIkFsbG93XCJcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRBY3Rpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElQIHJ1bGVzIGZvciB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBpcFJ1bGVzPzogQ29udGFpbmVyUmVnaXN0cnlJcFJ1bGVbXTtcbn1cblxuLyoqXG4gKiBLZXkgdmF1bHQgcHJvcGVydGllcyBmb3IgZW5jcnlwdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5S2V5VmF1bHRQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBjbGllbnQgSUQgb2YgdGhlIGlkZW50aXR5IHVzZWQgdG8gYWNjZXNzIHRoZSBrZXkgdmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGlkZW50aXR5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IGlkZW50aWZpZXIgb2YgdGhlIGtleSB2YXVsdCBrZXlcbiAgICovXG4gIHJlYWRvbmx5IGtleUlkZW50aWZpZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRW5jcnlwdGlvbiBjb25maWd1cmF0aW9uIGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeUVuY3J5cHRpb24ge1xuICAvKipcbiAgICogS2V5IHZhdWx0IHByb3BlcnRpZXMgZm9yIGN1c3RvbWVyLW1hbmFnZWQga2V5IGVuY3J5cHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGtleVZhdWx0UHJvcGVydGllcz86IENvbnRhaW5lclJlZ2lzdHJ5S2V5VmF1bHRQcm9wZXJ0aWVzO1xuXG4gIC8qKlxuICAgKiBUaGUgZW5jcnlwdGlvbiBzdGF0dXMgKGVuYWJsZWQgb3IgZGlzYWJsZWQpXG4gICAqIEBkZWZhdWx0IFwiZGlzYWJsZWRcIlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJldGVudGlvbiBwb2xpY3kgZm9yIENvbnRhaW5lciBSZWdpc3RyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5UmV0ZW50aW9uUG9saWN5IHtcbiAgLyoqXG4gICAqIE51bWJlciBvZiBkYXlzIHRvIHJldGFpbiB1bnRhZ2dlZCBtYW5pZmVzdHNcbiAgICogQGRlZmF1bHQgN1xuICAgKi9cbiAgcmVhZG9ubHkgZGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJldGVudGlvbiBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUcnVzdCBwb2xpY3kgZm9yIENvbnRhaW5lciBSZWdpc3RyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5VHJ1c3RQb2xpY3kge1xuICAvKipcbiAgICogVGhlIHRydXN0IHBvbGljeSB0eXBlIChOb3RhcnkpXG4gICAqIEBkZWZhdWx0IFwiTm90YXJ5XCJcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0cnVzdCBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBFeHBvcnQgcG9saWN5IGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeUV4cG9ydFBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGUgZXhwb3J0IHBvbGljeSBzdGF0dXMgKGVuYWJsZWQgb3IgZGlzYWJsZWQpXG4gICAqIEBkZWZhdWx0IFwiZW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogU29mdCBkZWxldGUgcG9saWN5IGZvciBDb250YWluZXIgUmVnaXN0cnlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWdpc3RyeVNvZnREZWxldGVQb2xpY3kge1xuICAvKipcbiAgICogTnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggYSBzb2Z0LWRlbGV0ZWQgaXRlbSBpcyBwZXJtYW5lbnRseSBkZWxldGVkXG4gICAqIEBkZWZhdWx0IDdcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbkRheXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBzb2Z0IGRlbGV0ZSBwb2xpY3kgc3RhdHVzIChlbmFibGVkIG9yIGRpc2FibGVkKVxuICAgKiBAZGVmYXVsdCBcImRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlQb2xpY2llcyB7XG4gIC8qKlxuICAgKiBSZXRlbnRpb24gcG9saWN5IGZvciB1bnRhZ2dlZCBtYW5pZmVzdHNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvblBvbGljeT86IENvbnRhaW5lclJlZ2lzdHJ5UmV0ZW50aW9uUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUcnVzdCBwb2xpY3kgZm9yIGNvbnRlbnQgdHJ1c3RcbiAgICovXG4gIHJlYWRvbmx5IHRydXN0UG9saWN5PzogQ29udGFpbmVyUmVnaXN0cnlUcnVzdFBvbGljeTtcblxuICAvKipcbiAgICogRXhwb3J0IHBvbGljeSBmb3IgdGhlIHJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBleHBvcnRQb2xpY3k/OiBDb250YWluZXJSZWdpc3RyeUV4cG9ydFBvbGljeTtcblxuICAvKipcbiAgICogU29mdCBkZWxldGUgcG9saWN5IGZvciB0aGUgcmVnaXN0cnlcbiAgICovXG4gIHJlYWRvbmx5IHNvZnREZWxldGVQb2xpY3k/OiBDb250YWluZXJSZWdpc3RyeVNvZnREZWxldGVQb2xpY3k7XG59XG5cbi8qKlxuICogSWRlbnRpdHkgY29uZmlndXJhdGlvbiBmb3IgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVnaXN0cnlJZGVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBpZGVudGl0eSAoU3lzdGVtQXNzaWduZWQsIFVzZXJBc3NpZ25lZCwgU3lzdGVtQXNzaWduZWQsVXNlckFzc2lnbmVkKVxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBVc2VyIGFzc2lnbmVkIGlkZW50aXR5IElEc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlckFzc2lnbmVkSWRlbnRpdGllcz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5XG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBDb250YWluZXIgUmVnaXN0cnkgc3BlY2lmaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlZ2lzdHJ5UHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIFNLVSAocHJpY2luZyB0aWVyKSBmb3IgdGhlIENvbnRhaW5lciBSZWdpc3RyeVxuICAgKiBAZXhhbXBsZSB7IG5hbWU6IFwiU3RhbmRhcmRcIiB9XG4gICAqL1xuICByZWFkb25seSBza3U6IENvbnRhaW5lclJlZ2lzdHJ5U2t1O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBhZG1pbiB1c2VyIGlzIGVuYWJsZWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGFkbWluVXNlckVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHB1YmxpYyBuZXR3b3JrIGFjY2VzcyBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IFwiRW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNOZXR3b3JrQWNjZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOZXR3b3JrIHJ1bGUgc2V0IGNvbmZpZ3VyYXRpb24gKFByZW1pdW0gU0tVIG9ubHkpXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrUnVsZVNldD86IENvbnRhaW5lclJlZ2lzdHJ5TmV0d29ya1J1bGVTZXQ7XG5cbiAgLyoqXG4gICAqIEVuY3J5cHRpb24gc2V0dGluZ3Mgd2l0aCBjdXN0b21lci1tYW5hZ2VkIGtleXMgKFByZW1pdW0gU0tVIG9ubHkpXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uPzogQ29udGFpbmVyUmVnaXN0cnlFbmNyeXB0aW9uO1xuXG4gIC8qKlxuICAgKiBQb2xpY3kgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBwb2xpY2llcz86IENvbnRhaW5lclJlZ2lzdHJ5UG9saWNpZXM7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBDb250YWluZXJSZWdpc3RyeUlkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHpvbmUgcmVkdW5kYW5jeSBpcyBlbmFibGVkIChQcmVtaXVtIFNLVSBvbmx5KVxuICAgKiBAZGVmYXVsdCBcIkRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IHpvbmVSZWR1bmRhbmN5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGVuYWJsZSBhIGRlZGljYXRlZCBkYXRhIGVuZHBvaW50IChQcmVtaXVtIFNLVSBvbmx5KVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YUVuZHBvaW50RW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgYW5vbnltb3VzIHB1bGwgaXMgZW5hYmxlZCAoU3RhbmRhcmQgb3IgUHJlbWl1bSBTS1UpXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbm9ueW1vdXNQdWxsRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gYWxsb3cgdHJ1c3RlZCBBenVyZSBTZXJ2aWNlcyB0byBieXBhc3MgbmV0d29yayBydWxlc1xuICAgKiBAZGVmYXVsdCBcIkF6dXJlU2VydmljZXNcIlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1J1bGVCeXBhc3NPcHRpb25zPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIENvbnRhaW5lciBSZWdpc3RyeSB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIENvbnRhaW5lciBSZWdpc3RyeSBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCByZXBsYWNlcyBhbGxcbiAqIHZlcnNpb24tc3BlY2lmaWMgQ29udGFpbmVyIFJlZ2lzdHJ5IGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbjpcbiAqIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IENvbnRhaW5lclJlZ2lzdHJ5KHRoaXMsIFwiYWNyXCIsIHtcbiAqICAgbmFtZTogXCJteWNvbnRhaW5lcnJlZ2lzdHJ5XCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIHNrdTogeyBuYW1lOiBcIlN0YW5kYXJkXCIgfSxcbiAqIH0pO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQcmVtaXVtIHJlZ2lzdHJ5IHdpdGggYWR2YW5jZWQgZmVhdHVyZXM6XG4gKiBjb25zdCByZWdpc3RyeSA9IG5ldyBDb250YWluZXJSZWdpc3RyeSh0aGlzLCBcImFjclwiLCB7XG4gKiAgIG5hbWU6IFwibXljb250YWluZXJyZWdpc3RyeVwiLFxuICogICBsb2NhdGlvbjogXCJlYXN0dXNcIixcbiAqICAgcmVzb3VyY2VHcm91cElkOiByZXNvdXJjZUdyb3VwLmlkLFxuICogICBza3U6IHsgbmFtZTogXCJQcmVtaXVtXCIgfSxcbiAqICAgcHVibGljTmV0d29ya0FjY2VzczogXCJEaXNhYmxlZFwiLFxuICogICB6b25lUmVkdW5kYW5jeTogXCJFbmFibGVkXCIsXG4gKiAgIGRhdGFFbmRwb2ludEVuYWJsZWQ6IHRydWUsXG4gKiAgIHBvbGljaWVzOiB7XG4gKiAgICAgcmV0ZW50aW9uUG9saWN5OiB7IGRheXM6IDMwLCBzdGF0dXM6IFwiZW5hYmxlZFwiIH0sXG4gKiAgICAgc29mdERlbGV0ZVBvbGljeTogeyByZXRlbnRpb25EYXlzOiAxNCwgc3RhdHVzOiBcImVuYWJsZWRcIiB9LFxuICogICB9LFxuICogfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRhaW5lclJlZ2lzdHJ5IGV4dGVuZHMgQXphcGlSZXNvdXJjZSB7XG4gIC8vIFN0YXRpYyBpbml0aWFsaXplciBydW5zIG9uY2Ugd2hlbiB0aGUgY2xhc3MgaXMgZmlyc3QgbG9hZGVkXG4gIHN0YXRpYyB7XG4gICAgQXphcGlSZXNvdXJjZS5yZWdpc3RlclNjaGVtYXMoXG4gICAgICBDT05UQUlORVJfUkVHSVNUUllfVFlQRSxcbiAgICAgIEFMTF9DT05UQUlORVJfUkVHSVNUUllfVkVSU0lPTlMsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogQ29udGFpbmVyUmVnaXN0cnlQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGxvZ2luU2VydmVyT3V0cHV0OiBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQ7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQXp1cmUgQ29udGFpbmVyIFJlZ2lzdHJ5IHVzaW5nIHRoZSBWZXJzaW9uZWRBemFwaVJlc291cmNlIGZyYW1ld29ya1xuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCAtIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpbnN0YW5jZVxuICAgKiBAcGFyYW0gcHJvcHMgLSBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDb250YWluZXJSZWdpc3RyeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICAvLyBDcmVhdGUgVGVycmFmb3JtIG91dHB1dHNcbiAgICB0aGlzLmlkT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImlkXCIsIHtcbiAgICAgIHZhbHVlOiB0aGlzLmlkLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIElEIG9mIHRoZSBDb250YWluZXIgUmVnaXN0cnlcIixcbiAgICB9KTtcblxuICAgIHRoaXMubG9jYXRpb25PdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibG9jYXRpb25cIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubG9jYXRpb259YCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBsb2NhdGlvbiBvZiB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLm5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwibmFtZVwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5uYW1lfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbmFtZSBvZiB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhZ3NPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KHRoaXMsIFwidGFnc1wiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS50YWdzfWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgdGFncyBhc3NpZ25lZCB0byB0aGUgQ29udGFpbmVyIFJlZ2lzdHJ5XCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvZ2luU2VydmVyT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvZ2luX3NlcnZlclwiLCB7XG4gICAgICB2YWx1ZTogYFxcJHske3RoaXMudGVycmFmb3JtUmVzb3VyY2UuZnFufS5vdXRwdXQucHJvcGVydGllcy5sb2dpblNlcnZlcn1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIGxvZ2luIHNlcnZlciBVUkwgb2YgdGhlIENvbnRhaW5lciBSZWdpc3RyeVwiLFxuICAgIH0pO1xuXG4gICAgLy8gT3ZlcnJpZGUgbG9naWNhbCBJRHNcbiAgICB0aGlzLmlkT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwiaWRcIik7XG4gICAgdGhpcy5sb2NhdGlvbk91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImxvY2F0aW9uXCIpO1xuICAgIHRoaXMubmFtZU91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcIm5hbWVcIik7XG4gICAgdGhpcy50YWdzT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwidGFnc1wiKTtcbiAgICB0aGlzLmxvZ2luU2VydmVyT3V0cHV0Lm92ZXJyaWRlTG9naWNhbElkKFwibG9naW5fc2VydmVyXCIpO1xuXG4gICAgLy8gQXBwbHkgaWdub3JlIGNoYW5nZXMgaWYgc3BlY2lmaWVkXG4gICAgdGhpcy5fYXBwbHlJZ25vcmVDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBSRVFVSVJFRCBBQlNUUkFDVCBNRVRIT0RTIEZST00gVmVyc2lvbmVkQXphcGlSZXNvdXJjZVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBkZWZhdWx0IEFQSSB2ZXJzaW9uIHRvIHVzZSB3aGVuIG5vIGV4cGxpY2l0IHZlcnNpb24gaXMgc3BlY2lmaWVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZGVmYXVsdFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gXCIyMDI1LTA0LTAxXCI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQXp1cmUgcmVzb3VyY2UgdHlwZSBmb3IgQ29udGFpbmVyIFJlZ2lzdHJpZXNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ09OVEFJTkVSX1JFR0lTVFJZX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIENvbnRhaW5lciBSZWdpc3RyaWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVxdWlyZXNMb2NhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSByZXNvdXJjZSBib2R5IGZvciB0aGUgQXp1cmUgQVBJIGNhbGxcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZUJvZHkocHJvcHM6IGFueSk6IGFueSB7XG4gICAgY29uc3QgdHlwZWRQcm9wcyA9IHByb3BzIGFzIENvbnRhaW5lclJlZ2lzdHJ5UHJvcHM7XG5cbiAgICBjb25zdCBwcm9wZXJ0aWVzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge1xuICAgICAgYWRtaW5Vc2VyRW5hYmxlZDogdHlwZWRQcm9wcy5hZG1pblVzZXJFbmFibGVkIHx8IGZhbHNlLFxuICAgICAgcHVibGljTmV0d29ya0FjY2VzczogdHlwZWRQcm9wcy5wdWJsaWNOZXR3b3JrQWNjZXNzIHx8IFwiRW5hYmxlZFwiLFxuICAgIH07XG5cbiAgICAvLyBBZGQgb3B0aW9uYWwgcHJvcGVydGllcyBpZiBzcGVjaWZpZWRcbiAgICBpZiAodHlwZWRQcm9wcy5uZXR3b3JrUnVsZVNldCkge1xuICAgICAgcHJvcGVydGllcy5uZXR3b3JrUnVsZVNldCA9IHR5cGVkUHJvcHMubmV0d29ya1J1bGVTZXQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZW5jcnlwdGlvbikge1xuICAgICAgcHJvcGVydGllcy5lbmNyeXB0aW9uID0gdHlwZWRQcm9wcy5lbmNyeXB0aW9uO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLnBvbGljaWVzKSB7XG4gICAgICBwcm9wZXJ0aWVzLnBvbGljaWVzID0gdHlwZWRQcm9wcy5wb2xpY2llcztcbiAgICB9XG5cbiAgICBpZiAodHlwZWRQcm9wcy56b25lUmVkdW5kYW5jeSkge1xuICAgICAgcHJvcGVydGllcy56b25lUmVkdW5kYW5jeSA9IHR5cGVkUHJvcHMuem9uZVJlZHVuZGFuY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuZGF0YUVuZHBvaW50RW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLmRhdGFFbmRwb2ludEVuYWJsZWQgPSB0eXBlZFByb3BzLmRhdGFFbmRwb2ludEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuYW5vbnltb3VzUHVsbEVuYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5hbm9ueW1vdXNQdWxsRW5hYmxlZCA9IHR5cGVkUHJvcHMuYW5vbnltb3VzUHVsbEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMubmV0d29ya1J1bGVCeXBhc3NPcHRpb25zKSB7XG4gICAgICBwcm9wZXJ0aWVzLm5ldHdvcmtSdWxlQnlwYXNzT3B0aW9ucyA9IHR5cGVkUHJvcHMubmV0d29ya1J1bGVCeXBhc3NPcHRpb25zO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsb2NhdGlvbjogdGhpcy5sb2NhdGlvbixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgc2t1OiB0eXBlZFByb3BzLnNrdSxcbiAgICAgIHByb3BlcnRpZXM6IHByb3BlcnRpZXMsXG4gICAgICBpZGVudGl0eTogdHlwZWRQcm9wcy5pZGVudGl0eSxcbiAgICB9O1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFVCTElDIE1FVEhPRFMgRk9SIENPTlRBSU5FUiBSRUdJU1RSWSBPUEVSQVRJT05TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbG9naW4gc2VydmVyIFVSTCBmb3IgdGhlIENvbnRhaW5lciBSZWdpc3RyeVxuICAgKi9cbiAgcHVibGljIGdldCBsb2dpblNlcnZlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59Lm91dHB1dC5wcm9wZXJ0aWVzLmxvZ2luU2VydmVyfWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBDb250YWluZXIgUmVnaXN0cnlcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from "./container-registry-schemas";
2
+ export * from "./container-registry";
@@ -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("./container-registry-schemas"), exports);
18
+ __exportStar(require("./container-registry"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtY29udGFpbmVycmVnaXN0cnkvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrREFBNkM7QUFDN0MsdURBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vY29udGFpbmVyLXJlZ2lzdHJ5LXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRhaW5lci1yZWdpc3RyeVwiO1xuIl19
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Integration test for Azure Container Registry
3
+ *
4
+ * This test demonstrates usage of the ContainerRegistry construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Run with: npm run integration:nostream
8
+ */
9
+ import "cdktf/lib/testing/adapters/jest";