@microsoft/terraform-cdk-constructs 1.8.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 (201) hide show
  1. package/.jsii +60376 -32133
  2. package/API.md +72290 -37038
  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/index.d.ts +6 -0
  96. package/lib/azure-loganalyticsworkspace/index.js +23 -0
  97. package/lib/azure-loganalyticsworkspace/lib/index.d.ts +5 -0
  98. package/lib/azure-loganalyticsworkspace/lib/index.js +22 -0
  99. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.d.ts +51 -0
  100. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace-schemas.js +255 -0
  101. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.d.ts +301 -0
  102. package/lib/azure-loganalyticsworkspace/lib/log-analytics-workspace.js +213 -0
  103. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.d.ts +9 -0
  104. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.integ.js +71 -0
  105. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.d.ts +8 -0
  106. package/lib/azure-loganalyticsworkspace/test/log-analytics-workspace.spec.js +504 -0
  107. package/lib/azure-metricalert/lib/metric-alert.js +1 -1
  108. package/lib/azure-networkinterface/lib/network-interface.js +1 -1
  109. package/lib/azure-networksecuritygroup/lib/network-security-group.js +1 -1
  110. package/lib/azure-networkwatcher/index.d.ts +14 -0
  111. package/lib/azure-networkwatcher/index.js +31 -0
  112. package/lib/azure-networkwatcher/lib/index.d.ts +5 -0
  113. package/lib/azure-networkwatcher/lib/index.js +22 -0
  114. package/lib/azure-networkwatcher/lib/network-watcher-schemas.d.ts +47 -0
  115. package/lib/azure-networkwatcher/lib/network-watcher-schemas.js +167 -0
  116. package/lib/azure-networkwatcher/lib/network-watcher.d.ts +181 -0
  117. package/lib/azure-networkwatcher/lib/network-watcher.js +187 -0
  118. package/lib/azure-networkwatcher/test/network-watcher.integ.d.ts +12 -0
  119. package/lib/azure-networkwatcher/test/network-watcher.integ.js +84 -0
  120. package/lib/azure-networkwatcher/test/network-watcher.spec.d.ts +8 -0
  121. package/lib/azure-networkwatcher/test/network-watcher.spec.js +312 -0
  122. package/lib/azure-policyassignment/lib/policy-assignment.js +1 -1
  123. package/lib/azure-policydefinition/lib/policy-definition.js +1 -1
  124. package/lib/azure-policysetdefinition/index.d.ts +10 -0
  125. package/lib/azure-policysetdefinition/index.js +27 -0
  126. package/lib/azure-policysetdefinition/lib/index.d.ts +5 -0
  127. package/lib/azure-policysetdefinition/lib/index.js +22 -0
  128. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.d.ts +50 -0
  129. package/lib/azure-policysetdefinition/lib/policy-set-definition-schemas.js +255 -0
  130. package/lib/azure-policysetdefinition/lib/policy-set-definition.d.ts +426 -0
  131. package/lib/azure-policysetdefinition/lib/policy-set-definition.js +255 -0
  132. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.d.ts +9 -0
  133. package/lib/azure-policysetdefinition/test/policy-set-definition.integ.js +56 -0
  134. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.d.ts +8 -0
  135. package/lib/azure-policysetdefinition/test/policy-set-definition.spec.js +745 -0
  136. package/lib/azure-privatednszone/lib/private-dns-zone.js +1 -1
  137. package/lib/azure-privatednszone/lib/records/private-dns-records.js +8 -8
  138. package/lib/azure-privatednszonelink/lib/private-dns-zone-link.js +1 -1
  139. package/lib/azure-publicipaddress/lib/public-ip-address.js +1 -1
  140. package/lib/azure-resourcegroup/lib/resource-group.js +1 -1
  141. package/lib/azure-roleassignment/lib/role-assignment.js +1 -1
  142. package/lib/azure-roledefinition/lib/role-definition.js +1 -1
  143. package/lib/azure-sreagent/index.d.ts +1 -0
  144. package/lib/azure-sreagent/index.js +18 -0
  145. package/lib/azure-sreagent/lib/index.d.ts +2 -0
  146. package/lib/azure-sreagent/lib/index.js +19 -0
  147. package/lib/azure-sreagent/lib/sre-agent-schemas.d.ts +29 -0
  148. package/lib/azure-sreagent/lib/sre-agent-schemas.js +296 -0
  149. package/lib/azure-sreagent/lib/sre-agent.d.ts +208 -0
  150. package/lib/azure-sreagent/lib/sre-agent.js +217 -0
  151. package/lib/azure-sreagent/test/sre-agent.integ.d.ts +9 -0
  152. package/lib/azure-sreagent/test/sre-agent.integ.js +78 -0
  153. package/lib/azure-sreagent/test/sre-agent.spec.d.ts +4 -0
  154. package/lib/azure-sreagent/test/sre-agent.spec.js +216 -0
  155. package/lib/azure-staticwebapp/index.d.ts +1 -0
  156. package/lib/azure-staticwebapp/index.js +18 -0
  157. package/lib/azure-staticwebapp/lib/index.d.ts +2 -0
  158. package/lib/azure-staticwebapp/lib/index.js +19 -0
  159. package/lib/azure-staticwebapp/lib/static-web-app-schemas.d.ts +40 -0
  160. package/lib/azure-staticwebapp/lib/static-web-app-schemas.js +236 -0
  161. package/lib/azure-staticwebapp/lib/static-web-app.d.ts +242 -0
  162. package/lib/azure-staticwebapp/lib/static-web-app.js +232 -0
  163. package/lib/azure-staticwebapp/test/static-web-app.integ.d.ts +9 -0
  164. package/lib/azure-staticwebapp/test/static-web-app.integ.js +76 -0
  165. package/lib/azure-staticwebapp/test/static-web-app.spec.d.ts +15 -0
  166. package/lib/azure-staticwebapp/test/static-web-app.spec.js +293 -0
  167. package/lib/azure-storageaccount/lib/storage-account.js +1 -1
  168. package/lib/azure-subnet/lib/subnet.js +1 -1
  169. package/lib/azure-virtualmachine/lib/virtual-machine.js +1 -1
  170. package/lib/azure-virtualnetwork/lib/virtual-network.js +1 -1
  171. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway-schemas.js +2 -2
  172. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.d.ts +4 -2
  173. package/lib/azure-virtualnetworkgateway/lib/virtual-network-gateway.js +8 -5
  174. package/lib/azure-virtualnetworkgateway/test/virtual-network-gateway.spec.js +109 -1
  175. package/lib/azure-virtualnetworkgatewayconnection/lib/virtual-network-gateway-connection.js +1 -1
  176. package/lib/azure-virtualnetworkmanager/lib/connectivity-configuration.js +1 -1
  177. package/lib/azure-virtualnetworkmanager/lib/ipam-pool-static-cidr.js +1 -1
  178. package/lib/azure-virtualnetworkmanager/lib/ipam-pool.js +1 -1
  179. package/lib/azure-virtualnetworkmanager/lib/network-group-static-member.js +1 -1
  180. package/lib/azure-virtualnetworkmanager/lib/network-group.js +1 -1
  181. package/lib/azure-virtualnetworkmanager/lib/security-admin-configuration.js +1 -1
  182. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule-collection.js +1 -1
  183. package/lib/azure-virtualnetworkmanager/lib/security-admin-rule.js +1 -1
  184. package/lib/azure-virtualnetworkmanager/lib/virtual-network-manager.js +1 -1
  185. package/lib/azure-vmss/lib/virtual-machine-scale-set.js +1 -1
  186. package/lib/core-azure/lib/azapi/azapi-resource.js +2 -2
  187. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +2 -2
  188. package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +5 -5
  189. package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +1 -1
  190. package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +5 -5
  191. package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +3 -3
  192. package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +3 -3
  193. package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +1 -1
  194. package/lib/core-azure/lib/version-manager/api-version-manager.js +1 -1
  195. package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +7 -7
  196. package/lib/index.d.ts +25 -0
  197. package/lib/index.js +27 -2
  198. package/lib/testing/index.js +2 -2
  199. package/lib/testing/lib/cleanup.js +1 -1
  200. package/lib/testing/lib/metadata.js +1 -1
  201. package/package.json +1 -1
@@ -0,0 +1,367 @@
1
+ /**
2
+ * Unified Azure Function App implementation using VersionedAzapiResource framework
3
+ *
4
+ * This class provides a single, version-aware implementation for Azure Function App
5
+ * that automatically handles version management, schema validation, and property transformation
6
+ * across all supported API versions.
7
+ *
8
+ * Supported API Versions:
9
+ * - 2024-04-01 (Maintenance)
10
+ * - 2024-11-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
+ * App setting for Function App configuration
24
+ */
25
+ export interface FunctionAppSetting {
26
+ /**
27
+ * The name of the application setting
28
+ */
29
+ readonly name: string;
30
+ /**
31
+ * The value of the application setting
32
+ */
33
+ readonly value: string;
34
+ }
35
+ /**
36
+ * Site configuration for Function App
37
+ */
38
+ export interface FunctionAppSiteConfig {
39
+ /**
40
+ * Application settings for the Function App
41
+ */
42
+ readonly appSettings?: FunctionAppSetting[];
43
+ /**
44
+ * The runtime stack (e.g., "node", "dotnet", "python", "java")
45
+ */
46
+ readonly linuxFxVersion?: string;
47
+ /**
48
+ * Whether Always On is enabled
49
+ * @default false
50
+ */
51
+ readonly alwaysOn?: boolean;
52
+ /**
53
+ * The minimum TLS version
54
+ * @default "1.2"
55
+ */
56
+ readonly minTlsVersion?: string;
57
+ /**
58
+ * Whether HTTP 2.0 is enabled
59
+ * @default false
60
+ */
61
+ readonly http20Enabled?: boolean;
62
+ /**
63
+ * The .NET Framework version
64
+ */
65
+ readonly netFrameworkVersion?: string;
66
+ /**
67
+ * CORS configuration
68
+ */
69
+ readonly cors?: FunctionAppCorsSettings;
70
+ /**
71
+ * Whether FTP state is allowed
72
+ * @default "Disabled"
73
+ */
74
+ readonly ftpsState?: string;
75
+ /**
76
+ * Whether use 32-bit worker process
77
+ * @default false
78
+ */
79
+ readonly use32BitWorkerProcess?: boolean;
80
+ }
81
+ /**
82
+ * CORS settings for Function App
83
+ */
84
+ export interface FunctionAppCorsSettings {
85
+ /**
86
+ * Allowed origins
87
+ */
88
+ readonly allowedOrigins?: string[];
89
+ /**
90
+ * Whether credentials are supported
91
+ * @default false
92
+ */
93
+ readonly supportCredentials?: boolean;
94
+ }
95
+ /**
96
+ * Identity configuration for Function App
97
+ */
98
+ export interface FunctionAppIdentity {
99
+ /**
100
+ * The type of identity (SystemAssigned, UserAssigned, SystemAssigned,UserAssigned)
101
+ */
102
+ readonly type: string;
103
+ /**
104
+ * User assigned identity IDs
105
+ */
106
+ readonly userAssignedIdentities?: {
107
+ [key: string]: any;
108
+ };
109
+ }
110
+ /**
111
+ * Storage authentication configuration for Flex Consumption deployment
112
+ */
113
+ export interface FunctionAppStorageAuthentication {
114
+ /**
115
+ * The authentication type (SystemAssignedIdentity, UserAssignedIdentity, StorageAccountConnectionString)
116
+ */
117
+ readonly type: string;
118
+ /**
119
+ * User assigned identity resource ID (when type is UserAssignedIdentity)
120
+ */
121
+ readonly userAssignedIdentityResourceId?: string;
122
+ /**
123
+ * Storage account connection string setting name (when type is StorageAccountConnectionString)
124
+ */
125
+ readonly storageAccountConnectionStringName?: string;
126
+ }
127
+ /**
128
+ * Deployment storage configuration for Flex Consumption plans
129
+ */
130
+ export interface FunctionAppDeploymentStorage {
131
+ /**
132
+ * The storage type (blobContainer)
133
+ */
134
+ readonly type: string;
135
+ /**
136
+ * The blob container URL for deployment artifacts
137
+ */
138
+ readonly value: string;
139
+ /**
140
+ * Authentication configuration for the storage
141
+ */
142
+ readonly authentication: FunctionAppStorageAuthentication;
143
+ }
144
+ /**
145
+ * Deployment configuration for Flex Consumption Function Apps
146
+ */
147
+ export interface FunctionAppDeployment {
148
+ /**
149
+ * Storage configuration for deployment artifacts
150
+ */
151
+ readonly storage: FunctionAppDeploymentStorage;
152
+ }
153
+ /**
154
+ * Runtime configuration for Flex Consumption Function Apps
155
+ */
156
+ export interface FunctionAppRuntime {
157
+ /**
158
+ * The runtime name (node, python, dotnet-isolated, java, powershell)
159
+ */
160
+ readonly name: string;
161
+ /**
162
+ * The runtime version
163
+ */
164
+ readonly version: string;
165
+ }
166
+ /**
167
+ * Scale and concurrency configuration for Flex Consumption Function Apps
168
+ */
169
+ export interface FunctionAppScaleAndConcurrency {
170
+ /**
171
+ * Maximum number of instances
172
+ * @default 100
173
+ */
174
+ readonly maximumInstanceCount?: number;
175
+ /**
176
+ * Instance memory in MB (512, 1024, 2048, 4096)
177
+ * @default 2048
178
+ */
179
+ readonly instanceMemoryMB?: number;
180
+ }
181
+ /**
182
+ * Function App configuration for Flex Consumption plans
183
+ *
184
+ * Required when using FlexConsumption SKU (FC1) App Service Plans.
185
+ * Configures deployment storage, runtime, and scaling.
186
+ */
187
+ export interface FunctionAppConfig {
188
+ /**
189
+ * Deployment configuration with storage for artifacts
190
+ */
191
+ readonly deployment: FunctionAppDeployment;
192
+ /**
193
+ * Runtime configuration (name and version)
194
+ */
195
+ readonly runtime: FunctionAppRuntime;
196
+ /**
197
+ * Scale and concurrency settings
198
+ */
199
+ readonly scaleAndConcurrency?: FunctionAppScaleAndConcurrency;
200
+ }
201
+ /**
202
+ * Properties for the unified Azure Function App
203
+ *
204
+ * Extends AzapiResourceProps with Function App specific properties
205
+ */
206
+ export interface FunctionAppProps extends AzapiResourceProps {
207
+ /**
208
+ * The kind of Function App
209
+ * @default "functionapp"
210
+ * @example "functionapp" for Windows, "functionapp,linux" for Linux
211
+ */
212
+ readonly kind?: string;
213
+ /**
214
+ * The resource ID of the App Service Plan hosting this Function App
215
+ */
216
+ readonly serverFarmId: string;
217
+ /**
218
+ * Whether the Function App only accepts HTTPS traffic
219
+ * @default true
220
+ */
221
+ readonly httpsOnly?: boolean;
222
+ /**
223
+ * Whether client affinity (session affinity) is enabled
224
+ * @default false
225
+ */
226
+ readonly clientAffinityEnabled?: boolean;
227
+ /**
228
+ * Whether the Function App is enabled
229
+ * @default true
230
+ */
231
+ readonly enabled?: boolean;
232
+ /**
233
+ * Site configuration including app settings and runtime
234
+ */
235
+ readonly siteConfig?: FunctionAppSiteConfig;
236
+ /**
237
+ * Managed identity configuration
238
+ */
239
+ readonly identity?: FunctionAppIdentity;
240
+ /**
241
+ * Whether public network access is enabled
242
+ * @default "Enabled"
243
+ */
244
+ readonly publicNetworkAccess?: string;
245
+ /**
246
+ * Subnet resource ID for VNet integration
247
+ */
248
+ readonly virtualNetworkSubnetId?: string;
249
+ /**
250
+ * Whether client certificate authentication is enabled
251
+ * @default false
252
+ */
253
+ readonly clientCertEnabled?: boolean;
254
+ /**
255
+ * Client certificate mode (Required, Optional, OptionalInteractiveUser)
256
+ */
257
+ readonly clientCertMode?: string;
258
+ /**
259
+ * Function App configuration for Flex Consumption plans
260
+ *
261
+ * Required when using FlexConsumption SKU (FC1) App Service Plans.
262
+ * Configures deployment storage, runtime, and scaling.
263
+ */
264
+ readonly functionAppConfig?: FunctionAppConfig;
265
+ /**
266
+ * The lifecycle rules to ignore changes
267
+ * @example ["tags"]
268
+ */
269
+ readonly ignoreChanges?: string[];
270
+ /**
271
+ * Resource group ID where the Function App will be created
272
+ */
273
+ readonly resourceGroupId?: string;
274
+ }
275
+ /**
276
+ * Unified Azure Function App implementation
277
+ *
278
+ * This class provides a single, version-aware implementation that replaces all
279
+ * version-specific Function App classes. It automatically handles version
280
+ * resolution, schema validation, and property transformation while maintaining
281
+ * full backward compatibility.
282
+ *
283
+ * @example
284
+ * // Basic usage with automatic version resolution:
285
+ * const functionApp = new FunctionApp(this, "func", {
286
+ * name: "my-function-app",
287
+ * location: "eastus",
288
+ * resourceGroupId: resourceGroup.id,
289
+ * serverFarmId: appServicePlan.id,
290
+ * kind: "functionapp,linux",
291
+ * siteConfig: {
292
+ * appSettings: [
293
+ * { name: "FUNCTIONS_WORKER_RUNTIME", value: "node" },
294
+ * { name: "FUNCTIONS_EXTENSION_VERSION", value: "~4" },
295
+ * ],
296
+ * linuxFxVersion: "NODE|20",
297
+ * },
298
+ * });
299
+ *
300
+ * @example
301
+ * // Function App with managed identity:
302
+ * const functionApp = new FunctionApp(this, "func", {
303
+ * name: "my-function-app",
304
+ * location: "eastus",
305
+ * resourceGroupId: resourceGroup.id,
306
+ * serverFarmId: appServicePlan.id,
307
+ * kind: "functionapp,linux",
308
+ * identity: {
309
+ * type: "SystemAssigned",
310
+ * },
311
+ * httpsOnly: true,
312
+ * });
313
+ *
314
+ * @stability stable
315
+ */
316
+ export declare class FunctionApp extends AzapiResource {
317
+ readonly props: FunctionAppProps;
318
+ readonly idOutput: cdktf.TerraformOutput;
319
+ readonly locationOutput: cdktf.TerraformOutput;
320
+ readonly nameOutput: cdktf.TerraformOutput;
321
+ readonly tagsOutput: cdktf.TerraformOutput;
322
+ readonly defaultHostNameOutput: cdktf.TerraformOutput;
323
+ /**
324
+ * Creates a new Azure Function App using the VersionedAzapiResource framework
325
+ *
326
+ * @param scope - The scope in which to define this construct
327
+ * @param id - The unique identifier for this instance
328
+ * @param props - Configuration properties for the Function App
329
+ */
330
+ constructor(scope: Construct, id: string, props: FunctionAppProps);
331
+ /**
332
+ * Gets the default API version to use when no explicit version is specified
333
+ */
334
+ protected defaultVersion(): string;
335
+ /**
336
+ * Gets the Azure resource type for Function Apps
337
+ */
338
+ protected resourceType(): string;
339
+ /**
340
+ * Gets the API schema for the resolved version
341
+ */
342
+ protected apiSchema(): ApiSchema;
343
+ /**
344
+ * Indicates that location is required for Function Apps
345
+ */
346
+ protected requiresLocation(): boolean;
347
+ /**
348
+ * Creates the resource body for the Azure API call
349
+ */
350
+ protected createResourceBody(props: any): any;
351
+ /**
352
+ * Get the default hostname of the Function App
353
+ */
354
+ get defaultHostName(): string;
355
+ /**
356
+ * Add a tag to the Function App
357
+ */
358
+ addTag(key: string, value: string): void;
359
+ /**
360
+ * Remove a tag from the Function App
361
+ */
362
+ removeTag(key: string): void;
363
+ /**
364
+ * Applies ignore changes lifecycle rules if specified in props
365
+ */
366
+ private _applyIgnoreChanges;
367
+ }
@@ -0,0 +1,223 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FunctionApp = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Unified Azure Function App implementation using VersionedAzapiResource framework
8
+ *
9
+ * This class provides a single, version-aware implementation for Azure Function App
10
+ * that automatically handles version management, schema validation, and property transformation
11
+ * across all supported API versions.
12
+ *
13
+ * Supported API Versions:
14
+ * - 2024-04-01 (Maintenance)
15
+ * - 2024-11-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 function_app_schemas_1 = require("./function-app-schemas");
25
+ const azapi_resource_1 = require("../../core-azure/lib/azapi/azapi-resource");
26
+ /**
27
+ * Unified Azure Function App implementation
28
+ *
29
+ * This class provides a single, version-aware implementation that replaces all
30
+ * version-specific Function App 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 functionApp = new FunctionApp(this, "func", {
37
+ * name: "my-function-app",
38
+ * location: "eastus",
39
+ * resourceGroupId: resourceGroup.id,
40
+ * serverFarmId: appServicePlan.id,
41
+ * kind: "functionapp,linux",
42
+ * siteConfig: {
43
+ * appSettings: [
44
+ * { name: "FUNCTIONS_WORKER_RUNTIME", value: "node" },
45
+ * { name: "FUNCTIONS_EXTENSION_VERSION", value: "~4" },
46
+ * ],
47
+ * linuxFxVersion: "NODE|20",
48
+ * },
49
+ * });
50
+ *
51
+ * @example
52
+ * // Function App with managed identity:
53
+ * const functionApp = new FunctionApp(this, "func", {
54
+ * name: "my-function-app",
55
+ * location: "eastus",
56
+ * resourceGroupId: resourceGroup.id,
57
+ * serverFarmId: appServicePlan.id,
58
+ * kind: "functionapp,linux",
59
+ * identity: {
60
+ * type: "SystemAssigned",
61
+ * },
62
+ * httpsOnly: true,
63
+ * });
64
+ *
65
+ * @stability stable
66
+ */
67
+ class FunctionApp extends azapi_resource_1.AzapiResource {
68
+ /**
69
+ * Creates a new Azure Function App using the VersionedAzapiResource framework
70
+ *
71
+ * @param scope - The scope in which to define this construct
72
+ * @param id - The unique identifier for this instance
73
+ * @param props - Configuration properties for the Function App
74
+ */
75
+ constructor(scope, id, props) {
76
+ super(scope, id, props);
77
+ this.props = props;
78
+ // Create Terraform outputs
79
+ this.idOutput = new cdktf.TerraformOutput(this, "id", {
80
+ value: this.id,
81
+ description: "The ID of the Function App",
82
+ });
83
+ this.locationOutput = new cdktf.TerraformOutput(this, "location", {
84
+ value: `\${${this.terraformResource.fqn}.location}`,
85
+ description: "The location of the Function App",
86
+ });
87
+ this.nameOutput = new cdktf.TerraformOutput(this, "name", {
88
+ value: `\${${this.terraformResource.fqn}.name}`,
89
+ description: "The name of the Function App",
90
+ });
91
+ this.tagsOutput = new cdktf.TerraformOutput(this, "tags", {
92
+ value: `\${${this.terraformResource.fqn}.tags}`,
93
+ description: "The tags assigned to the Function App",
94
+ });
95
+ this.defaultHostNameOutput = new cdktf.TerraformOutput(this, "default_host_name", {
96
+ value: `\${${this.terraformResource.fqn}.output.properties.defaultHostName}`,
97
+ description: "The default hostname of the Function App",
98
+ });
99
+ // Override logical IDs
100
+ this.idOutput.overrideLogicalId("id");
101
+ this.locationOutput.overrideLogicalId("location");
102
+ this.nameOutput.overrideLogicalId("name");
103
+ this.tagsOutput.overrideLogicalId("tags");
104
+ this.defaultHostNameOutput.overrideLogicalId("default_host_name");
105
+ // Apply ignore changes if specified
106
+ this._applyIgnoreChanges();
107
+ }
108
+ // =============================================================================
109
+ // REQUIRED ABSTRACT METHODS FROM VersionedAzapiResource
110
+ // =============================================================================
111
+ /**
112
+ * Gets the default API version to use when no explicit version is specified
113
+ */
114
+ defaultVersion() {
115
+ return "2024-04-01";
116
+ }
117
+ /**
118
+ * Gets the Azure resource type for Function Apps
119
+ */
120
+ resourceType() {
121
+ return function_app_schemas_1.FUNCTION_APP_TYPE;
122
+ }
123
+ /**
124
+ * Gets the API schema for the resolved version
125
+ */
126
+ apiSchema() {
127
+ return this.resolveSchema();
128
+ }
129
+ /**
130
+ * Indicates that location is required for Function Apps
131
+ */
132
+ requiresLocation() {
133
+ return true;
134
+ }
135
+ /**
136
+ * Creates the resource body for the Azure API call
137
+ */
138
+ createResourceBody(props) {
139
+ const typedProps = props;
140
+ const properties = {
141
+ serverFarmId: typedProps.serverFarmId,
142
+ httpsOnly: typedProps.httpsOnly !== undefined ? typedProps.httpsOnly : true,
143
+ clientAffinityEnabled: typedProps.clientAffinityEnabled || false,
144
+ };
145
+ // Add optional properties if specified
146
+ if (typedProps.enabled !== undefined) {
147
+ properties.enabled = typedProps.enabled;
148
+ }
149
+ if (typedProps.siteConfig) {
150
+ properties.siteConfig = typedProps.siteConfig;
151
+ }
152
+ if (typedProps.publicNetworkAccess) {
153
+ properties.publicNetworkAccess = typedProps.publicNetworkAccess;
154
+ }
155
+ if (typedProps.virtualNetworkSubnetId) {
156
+ properties.virtualNetworkSubnetId = typedProps.virtualNetworkSubnetId;
157
+ }
158
+ if (typedProps.clientCertEnabled !== undefined) {
159
+ properties.clientCertEnabled = typedProps.clientCertEnabled;
160
+ }
161
+ if (typedProps.clientCertMode) {
162
+ properties.clientCertMode = typedProps.clientCertMode;
163
+ }
164
+ if (typedProps.functionAppConfig) {
165
+ properties.functionAppConfig = typedProps.functionAppConfig;
166
+ }
167
+ return {
168
+ kind: typedProps.kind || "functionapp",
169
+ tags: this.allTags(),
170
+ properties: properties,
171
+ identity: typedProps.identity,
172
+ };
173
+ }
174
+ // =============================================================================
175
+ // PUBLIC METHODS FOR FUNCTION APP OPERATIONS
176
+ // =============================================================================
177
+ /**
178
+ * Get the default hostname of the Function App
179
+ */
180
+ get defaultHostName() {
181
+ return `\${${this.terraformResource.fqn}.output.properties.defaultHostName}`;
182
+ }
183
+ /**
184
+ * Add a tag to the Function App
185
+ */
186
+ addTag(key, value) {
187
+ if (!this.props.tags) {
188
+ this.props.tags = {};
189
+ }
190
+ this.props.tags[key] = value;
191
+ }
192
+ /**
193
+ * Remove a tag from the Function App
194
+ */
195
+ removeTag(key) {
196
+ if (this.props.tags && this.props.tags[key]) {
197
+ delete this.props.tags[key];
198
+ }
199
+ }
200
+ // =============================================================================
201
+ // PRIVATE HELPER METHODS
202
+ // =============================================================================
203
+ /**
204
+ * Applies ignore changes lifecycle rules if specified in props
205
+ */
206
+ _applyIgnoreChanges() {
207
+ if (this.props.ignoreChanges && this.props.ignoreChanges.length > 0) {
208
+ this.terraformResource.addOverride("lifecycle", [
209
+ {
210
+ ignore_changes: this.props.ignoreChanges,
211
+ },
212
+ ]);
213
+ }
214
+ }
215
+ }
216
+ exports.FunctionApp = FunctionApp;
217
+ _a = JSII_RTTI_SYMBOL_1;
218
+ FunctionApp[_a] = { fqn: "@microsoft/terraform-cdk-constructs.FunctionApp", version: "1.10.0" };
219
+ // Static initializer runs once when the class is first loaded
220
+ (() => {
221
+ azapi_resource_1.AzapiResource.registerSchemas(function_app_schemas_1.FUNCTION_APP_TYPE, function_app_schemas_1.ALL_FUNCTION_APP_VERSIONS);
222
+ })();
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F6dXJlLWZ1bmN0aW9uYXBwL2xpYi9mdW5jdGlvbi1hcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILCtCQUErQjtBQUUvQixpRUFHZ0M7QUFDaEMsOEVBR21EO0FBeVNuRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdDRztBQUNILE1BQWEsV0FBWSxTQUFRLDhCQUFhO0lBZTVDOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDcEQsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ2QsV0FBVyxFQUFFLDRCQUE0QjtTQUMxQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hFLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFlBQVk7WUFDbkQsV0FBVyxFQUFFLGtDQUFrQztTQUNoRCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3hELEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVE7WUFDL0MsV0FBVyxFQUFFLDhCQUE4QjtTQUM1QyxDQUFD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QyxLQUFLLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRTtnQkFDOUM7b0JBQ0UsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYTtpQkFDekM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUFuTUgsa0NBb01DOzs7QUFuTUMsOERBQThEO0FBQzlEO0lBQ0UsOEJBQWEsQ0FBQyxlQUFlLENBQUMsd0NBQWlCLEVBQUUsZ0RBQXlCLENBQUMsQ0FBQztBQUM5RSxDQUFDLEdBQUEsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVW5pZmllZCBBenVyZSBGdW5jdGlvbiBBcHAgaW1wbGVtZW50YXRpb24gdXNpbmcgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAqXG4gKiBUaGlzIGNsYXNzIHByb3ZpZGVzIGEgc2luZ2xlLCB2ZXJzaW9uLWF3YXJlIGltcGxlbWVudGF0aW9uIGZvciBBenVyZSBGdW5jdGlvbiBBcHBcbiAqIHRoYXQgYXV0b21hdGljYWxseSBoYW5kbGVzIHZlcnNpb24gbWFuYWdlbWVudCwgc2NoZW1hIHZhbGlkYXRpb24sIGFuZCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvblxuICogYWNyb3NzIGFsbCBzdXBwb3J0ZWQgQVBJIHZlcnNpb25zLlxuICpcbiAqIFN1cHBvcnRlZCBBUEkgVmVyc2lvbnM6XG4gKiAtIDIwMjQtMDQtMDEgKE1haW50ZW5hbmNlKVxuICogLSAyMDI0LTExLTAxIChBY3RpdmUsIExhdGVzdClcbiAqXG4gKiBGZWF0dXJlczpcbiAqIC0gQXV0b21hdGljIGxhdGVzdCB2ZXJzaW9uIHJlc29sdXRpb24gd2hlbiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICogLSBFeHBsaWNpdCB2ZXJzaW9uIHBpbm5pbmcgZm9yIHN0YWJpbGl0eSByZXF1aXJlbWVudHNcbiAqIC0gU2NoZW1hLWRyaXZlbiB2YWxpZGF0aW9uIGFuZCB0cmFuc2Zvcm1hdGlvblxuICogLSBKU0lJIGNvbXBsaWFuY2UgZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqL1xuXG5pbXBvcnQgKiBhcyBjZGt0ZiBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBBTExfRlVOQ1RJT05fQVBQX1ZFUlNJT05TLFxuICBGVU5DVElPTl9BUFBfVFlQRSxcbn0gZnJvbSBcIi4vZnVuY3Rpb24tYXBwLXNjaGVtYXNcIjtcbmltcG9ydCB7XG4gIEF6YXBpUmVzb3VyY2UsXG4gIEF6YXBpUmVzb3VyY2VQcm9wcyxcbn0gZnJvbSBcIi4uLy4uL2NvcmUtYXp1cmUvbGliL2F6YXBpL2F6YXBpLXJlc291cmNlXCI7XG5pbXBvcnQgeyBBcGlTY2hlbWEgfSBmcm9tIFwiLi4vLi4vY29yZS1henVyZS9saWIvdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogQXBwIHNldHRpbmcgZm9yIEZ1bmN0aW9uIEFwcCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BcHBTZXR0aW5nIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBhcHBsaWNhdGlvbiBzZXR0aW5nXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgYXBwbGljYXRpb24gc2V0dGluZ1xuICAgKi9cbiAgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBTaXRlIGNvbmZpZ3VyYXRpb24gZm9yIEZ1bmN0aW9uIEFwcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQXBwU2l0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBBcHBsaWNhdGlvbiBzZXR0aW5ncyBmb3IgdGhlIEZ1bmN0aW9uIEFwcFxuICAgKi9cbiAgcmVhZG9ubHkgYXBwU2V0dGluZ3M/OiBGdW5jdGlvbkFwcFNldHRpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgc3RhY2sgKGUuZy4sIFwibm9kZVwiLCBcImRvdG5ldFwiLCBcInB5dGhvblwiLCBcImphdmFcIilcbiAgICovXG4gIHJlYWRvbmx5IGxpbnV4RnhWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIEFsd2F5cyBPbiBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbHdheXNPbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIFRMUyB2ZXJzaW9uXG4gICAqIEBkZWZhdWx0IFwiMS4yXCJcbiAgICovXG4gIHJlYWRvbmx5IG1pblRsc1ZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgSFRUUCAyLjAgaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cDIwRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSAuTkVUIEZyYW1ld29yayB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBuZXRGcmFtZXdvcmtWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDT1JTIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGNvcnM/OiBGdW5jdGlvbkFwcENvcnNTZXR0aW5ncztcblxuICAvKipcbiAgICogV2hldGhlciBGVFAgc3RhdGUgaXMgYWxsb3dlZFxuICAgKiBAZGVmYXVsdCBcIkRpc2FibGVkXCJcbiAgICovXG4gIHJlYWRvbmx5IGZ0cHNTdGF0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB1c2UgMzItYml0IHdvcmtlciBwcm9jZXNzXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2UzMkJpdFdvcmtlclByb2Nlc3M/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENPUlMgc2V0dGluZ3MgZm9yIEZ1bmN0aW9uIEFwcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQXBwQ29yc1NldHRpbmdzIHtcbiAgLyoqXG4gICAqIEFsbG93ZWQgb3JpZ2luc1xuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE9yaWdpbnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBjcmVkZW50aWFscyBhcmUgc3VwcG9ydGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwb3J0Q3JlZGVudGlhbHM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIElkZW50aXR5IGNvbmZpZ3VyYXRpb24gZm9yIEZ1bmN0aW9uIEFwcFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQXBwSWRlbnRpdHkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgaWRlbnRpdHkgKFN5c3RlbUFzc2lnbmVkLCBVc2VyQXNzaWduZWQsIFN5c3RlbUFzc2lnbmVkLFVzZXJBc3NpZ25lZClcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlciBhc3NpZ25lZCBpZGVudGl0eSBJRHNcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJBc3NpZ25lZElkZW50aXRpZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xufVxuXG4vKipcbiAqIFN0b3JhZ2UgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgRmxleCBDb25zdW1wdGlvbiBkZXBsb3ltZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BcHBTdG9yYWdlQXV0aGVudGljYXRpb24ge1xuICAvKipcbiAgICogVGhlIGF1dGhlbnRpY2F0aW9uIHR5cGUgKFN5c3RlbUFzc2lnbmVkSWRlbnRpdHksIFVzZXJBc3NpZ25lZElkZW50aXR5LCBTdG9yYWdlQWNjb3VudENvbm5lY3Rpb25TdHJpbmcpXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFVzZXIgYXNzaWduZWQgaWRlbnRpdHkgcmVzb3VyY2UgSUQgKHdoZW4gdHlwZSBpcyBVc2VyQXNzaWduZWRJZGVudGl0eSlcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJBc3NpZ25lZElkZW50aXR5UmVzb3VyY2VJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3RvcmFnZSBhY2NvdW50IGNvbm5lY3Rpb24gc3RyaW5nIHNldHRpbmcgbmFtZSAod2hlbiB0eXBlIGlzIFN0b3JhZ2VBY2NvdW50Q29ubmVjdGlvblN0cmluZylcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VBY2NvdW50Q29ubmVjdGlvblN0cmluZ05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVwbG95bWVudCBzdG9yYWdlIGNvbmZpZ3VyYXRpb24gZm9yIEZsZXggQ29uc3VtcHRpb24gcGxhbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFwcERlcGxveW1lbnRTdG9yYWdlIHtcbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIHR5cGUgKGJsb2JDb250YWluZXIpXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBibG9iIGNvbnRhaW5lciBVUkwgZm9yIGRlcGxveW1lbnQgYXJ0aWZhY3RzXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgc3RvcmFnZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0aGVudGljYXRpb246IEZ1bmN0aW9uQXBwU3RvcmFnZUF1dGhlbnRpY2F0aW9uO1xufVxuXG4vKipcbiAqIERlcGxveW1lbnQgY29uZmlndXJhdGlvbiBmb3IgRmxleCBDb25zdW1wdGlvbiBGdW5jdGlvbiBBcHBzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BcHBEZXBsb3ltZW50IHtcbiAgLyoqXG4gICAqIFN0b3JhZ2UgY29uZmlndXJhdGlvbiBmb3IgZGVwbG95bWVudCBhcnRpZmFjdHNcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U6IEZ1bmN0aW9uQXBwRGVwbG95bWVudFN0b3JhZ2U7XG59XG5cbi8qKlxuICogUnVudGltZSBjb25maWd1cmF0aW9uIGZvciBGbGV4IENvbnN1bXB0aW9uIEZ1bmN0aW9uIEFwcHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFwcFJ1bnRpbWUge1xuICAvKipcbiAgICogVGhlIHJ1bnRpbWUgbmFtZSAobm9kZSwgcHl0aG9uLCBkb3RuZXQtaXNvbGF0ZWQsIGphdmEsIHBvd2Vyc2hlbGwpXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBydW50aW1lIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBTY2FsZSBhbmQgY29uY3VycmVuY3kgY29uZmlndXJhdGlvbiBmb3IgRmxleCBDb25zdW1wdGlvbiBGdW5jdGlvbiBBcHBzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRnVuY3Rpb25BcHBTY2FsZUFuZENvbmN1cnJlbmN5IHtcbiAgLyoqXG4gICAqIE1heGltdW0gbnVtYmVyIG9mIGluc3RhbmNlc1xuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heGltdW1JbnN0YW5jZUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBtZW1vcnkgaW4gTUIgKDUxMiwgMTAyNCwgMjA0OCwgNDA5NilcbiAgICogQGRlZmF1bHQgMjA0OFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VNZW1vcnlNQj86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBGdW5jdGlvbiBBcHAgY29uZmlndXJhdGlvbiBmb3IgRmxleCBDb25zdW1wdGlvbiBwbGFuc1xuICpcbiAqIFJlcXVpcmVkIHdoZW4gdXNpbmcgRmxleENvbnN1bXB0aW9uIFNLVSAoRkMxKSBBcHAgU2VydmljZSBQbGFucy5cbiAqIENvbmZpZ3VyZXMgZGVwbG95bWVudCBzdG9yYWdlLCBydW50aW1lLCBhbmQgc2NhbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkFwcENvbmZpZyB7XG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IGNvbmZpZ3VyYXRpb24gd2l0aCBzdG9yYWdlIGZvciBhcnRpZmFjdHNcbiAgICovXG4gIHJlYWRvbmx5IGRlcGxveW1lbnQ6IEZ1bmN0aW9uQXBwRGVwbG95bWVudDtcblxuICAvKipcbiAgICogUnVudGltZSBjb25maWd1cmF0aW9uIChuYW1lIGFuZCB2ZXJzaW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZTogRnVuY3Rpb25BcHBSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBTY2FsZSBhbmQgY29uY3VycmVuY3kgc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IHNjYWxlQW5kQ29uY3VycmVuY3k/OiBGdW5jdGlvbkFwcFNjYWxlQW5kQ29uY3VycmVuY3k7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIHVuaWZpZWQgQXp1cmUgRnVuY3Rpb24gQXBwXG4gKlxuICogRXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMgd2l0aCBGdW5jdGlvbiBBcHAgc3BlY2lmaWMgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZ1bmN0aW9uQXBwUHJvcHMgZXh0ZW5kcyBBemFwaVJlc291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGtpbmQgb2YgRnVuY3Rpb24gQXBwXG4gICAqIEBkZWZhdWx0IFwiZnVuY3Rpb25hcHBcIlxuICAgKiBAZXhhbXBsZSBcImZ1bmN0aW9uYXBwXCIgZm9yIFdpbmRvd3MsIFwiZnVuY3Rpb25hcHAsbGludXhcIiBmb3IgTGludXhcbiAgICovXG4gIHJlYWRvbmx5IGtpbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBJRCBvZiB0aGUgQXBwIFNlcnZpY2UgUGxhbiBob3N0aW5nIHRoaXMgRnVuY3Rpb24gQXBwXG4gICAqL1xuICByZWFkb25seSBzZXJ2ZXJGYXJtSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgRnVuY3Rpb24gQXBwIG9ubHkgYWNjZXB0cyBIVFRQUyB0cmFmZmljXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBzT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpZW50IGFmZmluaXR5IChzZXNzaW9uIGFmZmluaXR5KSBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjbGllbnRBZmZpbml0eUVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBGdW5jdGlvbiBBcHAgaXMgZW5hYmxlZFxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2l0ZSBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBhcHAgc2V0dGluZ3MgYW5kIHJ1bnRpbWVcbiAgICovXG4gIHJlYWRvbmx5IHNpdGVDb25maWc/OiBGdW5jdGlvbkFwcFNpdGVDb25maWc7XG5cbiAgLyoqXG4gICAqIE1hbmFnZWQgaWRlbnRpdHkgY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHk/OiBGdW5jdGlvbkFwcElkZW50aXR5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHB1YmxpYyBuZXR3b3JrIGFjY2VzcyBpcyBlbmFibGVkXG4gICAqIEBkZWZhdWx0IFwiRW5hYmxlZFwiXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNOZXR3b3JrQWNjZXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdWJuZXQgcmVzb3VyY2UgSUQgZm9yIFZOZXQgaW50ZWdyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHZpcnR1YWxOZXR3b3JrU3VibmV0SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2xpZW50IGNlcnRpZmljYXRlIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWRcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudENlcnRFbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2xpZW50IGNlcnRpZmljYXRlIG1vZGUgKFJlcXVpcmVkLCBPcHRpb25hbCwgT3B0aW9uYWxJbnRlcmFjdGl2ZVVzZXIpXG4gICAqL1xuICByZWFkb25seSBjbGllbnRDZXJ0TW9kZT86IHN0cmluZztcblxuICAvKipcbiAgICogRnVuY3Rpb24gQXBwIGNvbmZpZ3VyYXRpb24gZm9yIEZsZXggQ29uc3VtcHRpb24gcGxhbnNcbiAgICpcbiAgICogUmVxdWlyZWQgd2hlbiB1c2luZyBGbGV4Q29uc3VtcHRpb24gU0tVIChGQzEpIEFwcCBTZXJ2aWNlIFBsYW5zLlxuICAgKiBDb25maWd1cmVzIGRlcGxveW1lbnQgc3RvcmFnZSwgcnVudGltZSwgYW5kIHNjYWxpbmcuXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFwcENvbmZpZz86IEZ1bmN0aW9uQXBwQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlmZWN5Y2xlIHJ1bGVzIHRvIGlnbm9yZSBjaGFuZ2VzXG4gICAqIEBleGFtcGxlIFtcInRhZ3NcIl1cbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZUNoYW5nZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogUmVzb3VyY2UgZ3JvdXAgSUQgd2hlcmUgdGhlIEZ1bmN0aW9uIEFwcCB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlR3JvdXBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVbmlmaWVkIEF6dXJlIEZ1bmN0aW9uIEFwcCBpbXBsZW1lbnRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBzaW5nbGUsIHZlcnNpb24tYXdhcmUgaW1wbGVtZW50YXRpb24gdGhhdCByZXBsYWNlcyBhbGxcbiAqIHZlcnNpb24tc3BlY2lmaWMgRnVuY3Rpb24gQXBwIGNsYXNzZXMuIEl0IGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB2ZXJzaW9uXG4gKiByZXNvbHV0aW9uLCBzY2hlbWEgdmFsaWRhdGlvbiwgYW5kIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIHdoaWxlIG1haW50YWluaW5nXG4gKiBmdWxsIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEJhc2ljIHVzYWdlIHdpdGggYXV0b21hdGljIHZlcnNpb24gcmVzb2x1dGlvbjpcbiAqIGNvbnN0IGZ1bmN0aW9uQXBwID0gbmV3IEZ1bmN0aW9uQXBwKHRoaXMsIFwiZnVuY1wiLCB7XG4gKiAgIG5hbWU6IFwibXktZnVuY3Rpb24tYXBwXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIHNlcnZlckZhcm1JZDogYXBwU2VydmljZVBsYW4uaWQsXG4gKiAgIGtpbmQ6IFwiZnVuY3Rpb25hcHAsbGludXhcIixcbiAqICAgc2l0ZUNvbmZpZzoge1xuICogICAgIGFwcFNldHRpbmdzOiBbXG4gKiAgICAgICB7IG5hbWU6IFwiRlVOQ1RJT05TX1dPUktFUl9SVU5USU1FXCIsIHZhbHVlOiBcIm5vZGVcIiB9LFxuICogICAgICAgeyBuYW1lOiBcIkZVTkNUSU9OU19FWFRFTlNJT05fVkVSU0lPTlwiLCB2YWx1ZTogXCJ+NFwiIH0sXG4gKiAgICAgXSxcbiAqICAgICBsaW51eEZ4VmVyc2lvbjogXCJOT0RFfDIwXCIsXG4gKiAgIH0sXG4gKiB9KTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRnVuY3Rpb24gQXBwIHdpdGggbWFuYWdlZCBpZGVudGl0eTpcbiAqIGNvbnN0IGZ1bmN0aW9uQXBwID0gbmV3IEZ1bmN0aW9uQXBwKHRoaXMsIFwiZnVuY1wiLCB7XG4gKiAgIG5hbWU6IFwibXktZnVuY3Rpb24tYXBwXCIsXG4gKiAgIGxvY2F0aW9uOiBcImVhc3R1c1wiLFxuICogICByZXNvdXJjZUdyb3VwSWQ6IHJlc291cmNlR3JvdXAuaWQsXG4gKiAgIHNlcnZlckZhcm1JZDogYXBwU2VydmljZVBsYW4uaWQsXG4gKiAgIGtpbmQ6IFwiZnVuY3Rpb25hcHAsbGludXhcIixcbiAqICAgaWRlbnRpdHk6IHtcbiAqICAgICB0eXBlOiBcIlN5c3RlbUFzc2lnbmVkXCIsXG4gKiAgIH0sXG4gKiAgIGh0dHBzT25seTogdHJ1ZSxcbiAqIH0pO1xuICpcbiAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gKi9cbmV4cG9ydCBjbGFzcyBGdW5jdGlvbkFwcCBleHRlbmRzIEF6YXBpUmVzb3VyY2Uge1xuICAvLyBTdGF0aWMgaW5pdGlhbGl6ZXIgcnVucyBvbmNlIHdoZW4gdGhlIGNsYXNzIGlzIGZpcnN0IGxvYWRlZFxuICBzdGF0aWMge1xuICAgIEF6YXBpUmVzb3VyY2UucmVnaXN0ZXJTY2hlbWFzKEZVTkNUSU9OX0FQUF9UWVBFLCBBTExfRlVOQ1RJT05fQVBQX1ZFUlNJT05TKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBwcm9wczogRnVuY3Rpb25BcHBQcm9wcztcblxuICAvLyBPdXRwdXQgcHJvcGVydGllcyBmb3IgZWFzeSBhY2Nlc3MgYW5kIHJlZmVyZW5jaW5nXG4gIHB1YmxpYyByZWFkb25seSBpZE91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuICBwdWJsaWMgcmVhZG9ubHkgbG9jYXRpb25PdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWVPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IHRhZ3NPdXRwdXQ6IGNka3RmLlRlcnJhZm9ybU91dHB1dDtcbiAgcHVibGljIHJlYWRvbmx5IGRlZmF1bHRIb3N0TmFtZU91dHB1dDogY2RrdGYuVGVycmFmb3JtT3V0cHV0O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEF6dXJlIEZ1bmN0aW9uIEFwcCB1c2luZyB0aGUgVmVyc2lvbmVkQXphcGlSZXNvdXJjZSBmcmFtZXdvcmtcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIC0gVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgLSBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgRnVuY3Rpb24gQXBwXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRnVuY3Rpb25BcHBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgLy8gQ3JlYXRlIFRlcnJhZm9ybSBvdXRwdXRzXG4gICAgdGhpcy5pZE91dHB1dCA9IG5ldyBjZGt0Zi5UZXJyYWZvcm1PdXRwdXQodGhpcywgXCJpZFwiLCB7XG4gICAgICB2YWx1ZTogdGhpcy5pZCxcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBJRCBvZiB0aGUgRnVuY3Rpb24gQXBwXCIsXG4gICAgfSk7XG5cbiAgICB0aGlzLmxvY2F0aW9uT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcImxvY2F0aW9uXCIsIHtcbiAgICAgIHZhbHVlOiBgXFwkeyR7dGhpcy50ZXJyYWZvcm1SZXNvdXJjZS5mcW59LmxvY2F0aW9ufWAsXG4gICAgICBkZXNjcmlwdGlvbjogXCJUaGUgbG9jYXRpb24gb2YgdGhlIEZ1bmN0aW9uIEFwcFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5uYW1lT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcIm5hbWVcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ubmFtZX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIG5hbWUgb2YgdGhlIEZ1bmN0aW9uIEFwcFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy50YWdzT3V0cHV0ID0gbmV3IGNka3RmLlRlcnJhZm9ybU91dHB1dCh0aGlzLCBcInRhZ3NcIiwge1xuICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0udGFnc31gLFxuICAgICAgZGVzY3JpcHRpb246IFwiVGhlIHRhZ3MgYXNzaWduZWQgdG8gdGhlIEZ1bmN0aW9uIEFwcFwiLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kZWZhdWx0SG9zdE5hbWVPdXRwdXQgPSBuZXcgY2RrdGYuVGVycmFmb3JtT3V0cHV0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiZGVmYXVsdF9ob3N0X25hbWVcIixcbiAgICAgIHtcbiAgICAgICAgdmFsdWU6IGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuZGVmYXVsdEhvc3ROYW1lfWAsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIlRoZSBkZWZhdWx0IGhvc3RuYW1lIG9mIHRoZSBGdW5jdGlvbiBBcHBcIixcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIC8vIE92ZXJyaWRlIGxvZ2ljYWwgSURzXG4gICAgdGhpcy5pZE91dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcImlkXCIpO1xuICAgIHRoaXMubG9jYXRpb25PdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJsb2NhdGlvblwiKTtcbiAgICB0aGlzLm5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJuYW1lXCIpO1xuICAgIHRoaXMudGFnc091dHB1dC5vdmVycmlkZUxvZ2ljYWxJZChcInRhZ3NcIik7XG4gICAgdGhpcy5kZWZhdWx0SG9zdE5hbWVPdXRwdXQub3ZlcnJpZGVMb2dpY2FsSWQoXCJkZWZhdWx0X2hvc3RfbmFtZVwiKTtcblxuICAgIC8vIEFwcGx5IGlnbm9yZSBjaGFuZ2VzIGlmIHNwZWNpZmllZFxuICAgIHRoaXMuX2FwcGx5SWdub3JlQ2hhbmdlcygpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUkVRVUlSRUQgQUJTVFJBQ1QgTUVUSE9EUyBGUk9NIFZlcnNpb25lZEF6YXBpUmVzb3VyY2VcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0cyB0aGUgZGVmYXVsdCBBUEkgdmVyc2lvbiB0byB1c2Ugd2hlbiBubyBleHBsaWNpdCB2ZXJzaW9uIGlzIHNwZWNpZmllZFxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZmF1bHRWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiMjAyNC0wNC0wMVwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIEF6dXJlIHJlc291cmNlIHR5cGUgZm9yIEZ1bmN0aW9uIEFwcHNcbiAgICovXG4gIHByb3RlY3RlZCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRlVOQ1RJT05fQVBQX1RZUEU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgQVBJIHNjaGVtYSBmb3IgdGhlIHJlc29sdmVkIHZlcnNpb25cbiAgICovXG4gIHByb3RlY3RlZCBhcGlTY2hlbWEoKTogQXBpU2NoZW1hIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU2NoZW1hKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoYXQgbG9jYXRpb24gaXMgcmVxdWlyZWQgZm9yIEZ1bmN0aW9uIEFwcHNcbiAgICovXG4gIHByb3RlY3RlZCByZXF1aXJlc0xvY2F0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHJlc291cmNlIGJvZHkgZm9yIHRoZSBBenVyZSBBUEkgY2FsbFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlc291cmNlQm9keShwcm9wczogYW55KTogYW55IHtcbiAgICBjb25zdCB0eXBlZFByb3BzID0gcHJvcHMgYXMgRnVuY3Rpb25BcHBQcm9wcztcblxuICAgIGNvbnN0IHByb3BlcnRpZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7XG4gICAgICBzZXJ2ZXJGYXJtSWQ6IHR5cGVkUHJvcHMuc2VydmVyRmFybUlkLFxuICAgICAgaHR0cHNPbmx5OlxuICAgICAgICB0eXBlZFByb3BzLmh0dHBzT25seSAhPT0gdW5kZWZpbmVkID8gdHlwZWRQcm9wcy5odHRwc09ubHkgOiB0cnVlLFxuICAgICAgY2xpZW50QWZmaW5pdHlFbmFibGVkOiB0eXBlZFByb3BzLmNsaWVudEFmZmluaXR5RW5hYmxlZCB8fCBmYWxzZSxcbiAgICB9O1xuXG4gICAgLy8gQWRkIG9wdGlvbmFsIHByb3BlcnRpZXMgaWYgc3BlY2lmaWVkXG4gICAgaWYgKHR5cGVkUHJvcHMuZW5hYmxlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwcm9wZXJ0aWVzLmVuYWJsZWQgPSB0eXBlZFByb3BzLmVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuc2l0ZUNvbmZpZykge1xuICAgICAgcHJvcGVydGllcy5zaXRlQ29uZmlnID0gdHlwZWRQcm9wcy5zaXRlQ29uZmlnO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLnB1YmxpY05ldHdvcmtBY2Nlc3MpIHtcbiAgICAgIHByb3BlcnRpZXMucHVibGljTmV0d29ya0FjY2VzcyA9IHR5cGVkUHJvcHMucHVibGljTmV0d29ya0FjY2VzcztcbiAgICB9XG5cbiAgICBpZiAodHlwZWRQcm9wcy52aXJ0dWFsTmV0d29ya1N1Ym5ldElkKSB7XG4gICAgICBwcm9wZXJ0aWVzLnZpcnR1YWxOZXR3b3JrU3VibmV0SWQgPSB0eXBlZFByb3BzLnZpcnR1YWxOZXR3b3JrU3VibmV0SWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuY2xpZW50Q2VydEVuYWJsZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcHJvcGVydGllcy5jbGllbnRDZXJ0RW5hYmxlZCA9IHR5cGVkUHJvcHMuY2xpZW50Q2VydEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVkUHJvcHMuY2xpZW50Q2VydE1vZGUpIHtcbiAgICAgIHByb3BlcnRpZXMuY2xpZW50Q2VydE1vZGUgPSB0eXBlZFByb3BzLmNsaWVudENlcnRNb2RlO1xuICAgIH1cblxuICAgIGlmICh0eXBlZFByb3BzLmZ1bmN0aW9uQXBwQ29uZmlnKSB7XG4gICAgICBwcm9wZXJ0aWVzLmZ1bmN0aW9uQXBwQ29uZmlnID0gdHlwZWRQcm9wcy5mdW5jdGlvbkFwcENvbmZpZztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAga2luZDogdHlwZWRQcm9wcy5raW5kIHx8IFwiZnVuY3Rpb25hcHBcIixcbiAgICAgIHRhZ3M6IHRoaXMuYWxsVGFncygpLFxuICAgICAgcHJvcGVydGllczogcHJvcGVydGllcyxcbiAgICAgIGlkZW50aXR5OiB0eXBlZFByb3BzLmlkZW50aXR5LFxuICAgIH07XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBQVUJMSUMgTUVUSE9EUyBGT1IgRlVOQ1RJT04gQVBQIE9QRVJBVElPTlNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogR2V0IHRoZSBkZWZhdWx0IGhvc3RuYW1lIG9mIHRoZSBGdW5jdGlvbiBBcHBcbiAgICovXG4gIHB1YmxpYyBnZXQgZGVmYXVsdEhvc3ROYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBcXCR7JHt0aGlzLnRlcnJhZm9ybVJlc291cmNlLmZxbn0ub3V0cHV0LnByb3BlcnRpZXMuZGVmYXVsdEhvc3ROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgdGFnIHRvIHRoZSBGdW5jdGlvbiBBcHBcbiAgICovXG4gIHB1YmxpYyBhZGRUYWcoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMudGFncykge1xuICAgICAgKHRoaXMucHJvcHMgYXMgYW55KS50YWdzID0ge307XG4gICAgfVxuICAgIHRoaXMucHJvcHMudGFncyFba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIHRhZyBmcm9tIHRoZSBGdW5jdGlvbiBBcHBcbiAgICovXG4gIHB1YmxpYyByZW1vdmVUYWcoa2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy50YWdzICYmIHRoaXMucHJvcHMudGFnc1trZXldKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wcy50YWdzW2tleV07XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gUFJJVkFURSBIRUxQRVIgTUVUSE9EU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGlnbm9yZSBjaGFuZ2VzIGxpZmVjeWNsZSBydWxlcyBpZiBzcGVjaWZpZWQgaW4gcHJvcHNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5SWdub3JlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5pZ25vcmVDaGFuZ2VzICYmIHRoaXMucHJvcHMuaWdub3JlQ2hhbmdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRlcnJhZm9ybVJlc291cmNlLmFkZE92ZXJyaWRlKFwibGlmZWN5Y2xlXCIsIFtcbiAgICAgICAge1xuICAgICAgICAgIGlnbm9yZV9jaGFuZ2VzOiB0aGlzLnByb3BzLmlnbm9yZUNoYW5nZXMsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from "./function-app-schemas";
2
+ export * from "./function-app";
@@ -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("./function-app-schemas"), exports);
18
+ __exportStar(require("./function-app"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXp1cmUtZnVuY3Rpb25hcHAvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBdUM7QUFDdkMsaURBQStCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZnVuY3Rpb24tYXBwLXNjaGVtYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Z1bmN0aW9uLWFwcFwiO1xuIl19
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Integration test for Azure Function App
3
+ *
4
+ * This test demonstrates usage of the FunctionApp construct
5
+ * and validates deployment, idempotency, and cleanup.
6
+ *
7
+ * Uses Flex Consumption (FC1) plan which does not require
8
+ * traditional App Service VM quota.
9
+ *
10
+ * Run with: npm run integration:nostream
11
+ */
12
+ import "cdktf/lib/testing/adapters/jest";