@microsoft/terraform-cdk-constructs 0.0.3-pre.7 → 1.0.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.
- package/.devcontainer/devcontainer.json +2 -2
- package/.jsii +22878 -10724
- package/API.md +25087 -9636
- package/LICENSE +16 -18
- package/README.md +147 -72
- package/cdktf.json +1 -1
- package/docs/ARCHITECTURE.md +836 -0
- package/docs/azapi-testing-architecture.md +482 -0
- package/docs/testing.md +39 -137
- package/docs/versioning-and-migrations-user-guide.md +409 -0
- package/go.mod +12 -12
- package/go.sum +27 -23
- package/lib/azure-resourcegroup/index.d.ts +37 -0
- package/lib/azure-resourcegroup/index.js +39 -1
- package/lib/azure-resourcegroup/lib/index.d.ts +44 -0
- package/lib/azure-resourcegroup/lib/index.js +43 -1
- package/lib/azure-resourcegroup/lib/resource-group-schemas.d.ts +40 -0
- package/lib/azure-resourcegroup/lib/resource-group-schemas.js +243 -0
- package/lib/azure-resourcegroup/lib/resource-group.d.ts +170 -46
- package/lib/azure-resourcegroup/lib/resource-group.js +222 -56
- package/lib/azure-resourcegroup/test/resource-group.integ.d.ts +9 -0
- package/lib/azure-resourcegroup/test/resource-group.integ.js +60 -0
- package/lib/azure-resourcegroup/test/resource-group.spec.d.ts +9 -0
- package/lib/azure-resourcegroup/test/resource-group.spec.js +554 -0
- package/lib/azure-storageaccount/index.d.ts +19 -0
- package/lib/azure-storageaccount/index.js +20 -1
- package/lib/azure-storageaccount/lib/index.d.ts +8 -5
- package/lib/azure-storageaccount/lib/index.js +9 -6
- package/lib/azure-storageaccount/lib/storage-account-schemas.d.ts +40 -0
- package/lib/azure-storageaccount/lib/storage-account-schemas.js +378 -0
- package/lib/azure-storageaccount/lib/storage-account.d.ts +311 -0
- package/lib/azure-storageaccount/lib/storage-account.js +229 -0
- package/lib/azure-storageaccount/test/storage-account.integ.d.ts +9 -0
- package/lib/azure-storageaccount/test/storage-account.integ.js +72 -0
- package/lib/azure-storageaccount/test/storage-account.spec.d.ts +4 -0
- package/lib/azure-storageaccount/test/storage-account.spec.js +315 -0
- package/lib/core-azure/lib/azapi/azapi-exports.d.ts +16 -0
- package/lib/core-azure/lib/azapi/azapi-exports.js +38 -0
- package/lib/core-azure/lib/azapi/azapi-resource.d.ts +413 -0
- package/lib/core-azure/lib/azapi/azapi-resource.js +468 -0
- package/lib/core-azure/lib/azapi/azapi-resource.spec.d.ts +7 -0
- package/lib/core-azure/lib/azapi/azapi-resource.spec.js +545 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.d.ts +62 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +161 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +327 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +521 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +331 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +436 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +116 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +213 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +272 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +368 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +505 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +620 -0
- package/lib/core-azure/lib/azapi/providers-azapi/index.d.ts +10 -0
- package/lib/core-azure/lib/azapi/providers-azapi/index.js +15 -0
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +435 -0
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +584 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +675 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +856 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +387 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +531 -0
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +437 -0
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +589 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.d.ts +215 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.js +565 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.d.ts +7 -0
- package/lib/core-azure/lib/azapi/schema-mapper/schema-mapper.spec.js +630 -0
- package/lib/core-azure/lib/index.d.ts +18 -3
- package/lib/core-azure/lib/index.js +24 -4
- package/lib/core-azure/lib/version-manager/api-version-manager.d.ts +253 -0
- package/lib/core-azure/lib/version-manager/api-version-manager.js +509 -0
- package/lib/core-azure/lib/version-manager/api-version-manager.spec.d.ts +7 -0
- package/lib/core-azure/lib/version-manager/api-version-manager.spec.js +510 -0
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.d.ts +669 -0
- package/lib/core-azure/lib/version-manager/interfaces/version-interfaces.js +202 -0
- package/lib/core-azure/lib/version-manager/version-manager.d.ts +9 -0
- package/lib/core-azure/lib/version-manager/version-manager.js +23 -0
- package/lib/index.d.ts +20 -16
- package/lib/index.js +41 -18
- package/lib/testing/index.d.ts +33 -0
- package/lib/testing/index.js +238 -2
- package/lib/util/azureTenantIdHelpers.js +3 -4
- package/lib/util/randomName.js +2 -3
- package/package.json +53 -40
- package/cdktf.out/manifest.json +0 -13
- package/cdktf.out/stacks/testAzureActionGroup/cdk.tf.json +0 -111
- package/cdktf.out/stacks/testAzureApplicationGateway/cdk.tf.json +0 -588
- package/cdktf.out/stacks/testAzureApplicationInsights/cdk.tf.json +0 -245
- package/cdktf.out/stacks/testAzureContainerRegistry/cdk.tf.json +0 -179
- package/cdktf.out/stacks/testAzureEventhub/cdk.tf.json +0 -236
- package/cdktf.out/stacks/testAzureKeyVault/cdk.tf.json +0 -436
- package/cdktf.out/stacks/testAzureKubernetesCluster/cdk.tf.json +0 -152
- package/cdktf.out/stacks/testAzureKusto/cdk.tf.json +0 -209
- package/cdktf.out/stacks/testAzureLinuxFunctionApp/cdk.tf.json +0 -439
- package/cdktf.out/stacks/testAzureLinuxVirtualMachineExample/cdk.tf.json +0 -283
- package/cdktf.out/stacks/testAzureLinuxVirtualMachineScaleSetExample/cdk.tf.json +0 -261
- package/cdktf.out/stacks/testAzureLogAnalytics/cdk.tf.json +0 -309
- package/cdktf.out/stacks/testAzureMetricAlert/cdk.tf.json +0 -161
- package/cdktf.out/stacks/testAzureNetworkSecurityGroup/cdk.tf.json +0 -271
- package/cdktf.out/stacks/testAzureQueryRuleAlert/cdk.tf.json +0 -122
- package/cdktf.out/stacks/testAzureResourceGroup/cdk.tf.json +0 -88
- package/cdktf.out/stacks/testAzureStorageAccount/cdk.tf.json +0 -339
- package/cdktf.out/stacks/testAzureVirtualNetwork/cdk.tf.json +0 -264
- package/cdktf.out/stacks/testAzureWindowVirtualMachineScaleSetExample/cdk.tf.json +0 -261
- package/cdktf.out/stacks/testAzureWindowsVirtualMachineExample/cdk.tf.json +0 -280
- package/cdktf.out/stacks/testExampleAzureResource/cdk.tf.json +0 -167
- package/lib/azure-actiongroup/index.d.ts +0 -1
- package/lib/azure-actiongroup/index.js +0 -18
- package/lib/azure-actiongroup/lib/actiongroup.d.ts +0 -49
- package/lib/azure-actiongroup/lib/actiongroup.js +0 -85
- package/lib/azure-actiongroup/lib/index.d.ts +0 -1
- package/lib/azure-actiongroup/lib/index.js +0 -18
- package/lib/azure-actiongroup/model/action-group-props.d.ts +0 -47
- package/lib/azure-actiongroup/model/action-group-props.js +0 -3
- package/lib/azure-actiongroup/model/arm-role-receiver-props.d.ts +0 -20
- package/lib/azure-actiongroup/model/arm-role-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/azure-app-push-receiver-props.d.ts +0 -14
- package/lib/azure-actiongroup/model/azure-app-push-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/email-receiver-props.d.ts +0 -19
- package/lib/azure-actiongroup/model/email-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/eventhub-receiver-props.d.ts +0 -23
- package/lib/azure-actiongroup/model/eventhub-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/function.d.ts +0 -40
- package/lib/azure-actiongroup/model/function.js +0 -118
- package/lib/azure-actiongroup/model/index.d.ts +0 -10
- package/lib/azure-actiongroup/model/index.js +0 -27
- package/lib/azure-actiongroup/model/logic-app-receiver-props.d.ts +0 -23
- package/lib/azure-actiongroup/model/logic-app-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/sms-receiver-props.d.ts +0 -18
- package/lib/azure-actiongroup/model/sms-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/voice-receiver-props.d.ts +0 -18
- package/lib/azure-actiongroup/model/voice-receiver-props.js +0 -3
- package/lib/azure-actiongroup/model/webhook-receiver-props.d.ts +0 -18
- package/lib/azure-actiongroup/model/webhook-receiver-props.js +0 -3
- package/lib/azure-actiongroup/test/AzureActionGroup.spec.d.ts +0 -1
- package/lib/azure-actiongroup/test/AzureActionGroup.spec.js +0 -294
- package/lib/azure-actiongroup/test/ExampleAzureActionGroup.d.ts +0 -5
- package/lib/azure-actiongroup/test/ExampleAzureActionGroup.js +0 -66
- package/lib/azure-applicationgateway/index.d.ts +0 -1
- package/lib/azure-applicationgateway/index.js +0 -18
- package/lib/azure-applicationgateway/lib/gateway.d.ts +0 -248
- package/lib/azure-applicationgateway/lib/gateway.js +0 -199
- package/lib/azure-applicationgateway/lib/index.d.ts +0 -1
- package/lib/azure-applicationgateway/lib/index.js +0 -18
- package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.d.ts +0 -1
- package/lib/azure-applicationgateway/test/AzureApplicationGateway.spec.js +0 -106
- package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.d.ts +0 -5
- package/lib/azure-applicationgateway/test/ExampleAzureApplicationGateway.js +0 -267
- package/lib/azure-applicationinsights/index.d.ts +0 -1
- package/lib/azure-applicationinsights/index.js +0 -18
- package/lib/azure-applicationinsights/lib/appinsights.d.ts +0 -110
- package/lib/azure-applicationinsights/lib/appinsights.js +0 -134
- package/lib/azure-applicationinsights/lib/index.d.ts +0 -1
- package/lib/azure-applicationinsights/lib/index.js +0 -18
- package/lib/azure-applicationinsights/test/AzureAppInsights.spec.d.ts +0 -1
- package/lib/azure-applicationinsights/test/AzureAppInsights.spec.js +0 -55
- package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.d.ts +0 -5
- package/lib/azure-applicationinsights/test/ExampleAzureApplicationInsights.js +0 -87
- package/lib/azure-containerregistry/index.d.ts +0 -1
- package/lib/azure-containerregistry/index.js +0 -18
- package/lib/azure-containerregistry/lib/index.d.ts +0 -1
- package/lib/azure-containerregistry/lib/index.js +0 -18
- package/lib/azure-containerregistry/lib/registry.d.ts +0 -70
- package/lib/azure-containerregistry/lib/registry.js +0 -76
- package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.d.ts +0 -1
- package/lib/azure-containerregistry/test/AzureContainerRegistry.spec.js +0 -50
- package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.d.ts +0 -5
- package/lib/azure-containerregistry/test/ExampleAzureContainerRegistry.js +0 -57
- package/lib/azure-datalake/index.d.ts +0 -1
- package/lib/azure-datalake/index.js +0 -18
- package/lib/azure-datalake/lib/datalake.d.ts +0 -64
- package/lib/azure-datalake/lib/datalake.js +0 -92
- package/lib/azure-datalake/lib/filesystem.d.ts +0 -70
- package/lib/azure-datalake/lib/filesystem.js +0 -83
- package/lib/azure-datalake/lib/index.d.ts +0 -3
- package/lib/azure-datalake/lib/index.js +0 -20
- package/lib/azure-datalake/lib/path.d.ts +0 -49
- package/lib/azure-datalake/lib/path.js +0 -51
- package/lib/azure-eventhub/index.d.ts +0 -1
- package/lib/azure-eventhub/index.js +0 -18
- package/lib/azure-eventhub/lib/authorization.d.ts +0 -58
- package/lib/azure-eventhub/lib/authorization.js +0 -84
- package/lib/azure-eventhub/lib/cluster.d.ts +0 -56
- package/lib/azure-eventhub/lib/cluster.js +0 -64
- package/lib/azure-eventhub/lib/consumer.d.ts +0 -54
- package/lib/azure-eventhub/lib/consumer.js +0 -59
- package/lib/azure-eventhub/lib/index.d.ts +0 -6
- package/lib/azure-eventhub/lib/index.js +0 -23
- package/lib/azure-eventhub/lib/instance.d.ts +0 -164
- package/lib/azure-eventhub/lib/instance.js +0 -184
- package/lib/azure-eventhub/lib/kusto-connection.d.ts +0 -109
- package/lib/azure-eventhub/lib/kusto-connection.js +0 -76
- package/lib/azure-eventhub/lib/namespace.d.ts +0 -151
- package/lib/azure-eventhub/lib/namespace.js +0 -131
- package/lib/azure-eventhub/test/AzureEventhub.spec.d.ts +0 -1
- package/lib/azure-eventhub/test/AzureEventhub.spec.js +0 -56
- package/lib/azure-eventhub/test/ExampleAzureEventhub.d.ts +0 -5
- package/lib/azure-eventhub/test/ExampleAzureEventhub.js +0 -72
- package/lib/azure-functionapp/index.d.ts +0 -1
- package/lib/azure-functionapp/index.js +0 -18
- package/lib/azure-functionapp/lib/functionapplinux.d.ts +0 -211
- package/lib/azure-functionapp/lib/functionapplinux.js +0 -141
- package/lib/azure-functionapp/lib/index.d.ts +0 -1
- package/lib/azure-functionapp/lib/index.js +0 -18
- package/lib/azure-functionapp/serviceplanskus.d.ts +0 -70
- package/lib/azure-functionapp/serviceplanskus.js +0 -81
- package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.d.ts +0 -1
- package/lib/azure-functionapp/test/AzureLinuxFunctionApp.spec.js +0 -48
- package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.d.ts +0 -5
- package/lib/azure-functionapp/test/ExampleAzureLinuxFunctionApp.js +0 -123
- package/lib/azure-keyvault/index.d.ts +0 -1
- package/lib/azure-keyvault/index.js +0 -18
- package/lib/azure-keyvault/lib/certificate.d.ts +0 -133
- package/lib/azure-keyvault/lib/certificate.js +0 -146
- package/lib/azure-keyvault/lib/index.d.ts +0 -5
- package/lib/azure-keyvault/lib/index.js +0 -22
- package/lib/azure-keyvault/lib/key.d.ts +0 -72
- package/lib/azure-keyvault/lib/key.js +0 -69
- package/lib/azure-keyvault/lib/policy.d.ts +0 -76
- package/lib/azure-keyvault/lib/policy.js +0 -56
- package/lib/azure-keyvault/lib/secret.d.ts +0 -70
- package/lib/azure-keyvault/lib/secret.js +0 -64
- package/lib/azure-keyvault/lib/vault.d.ts +0 -282
- package/lib/azure-keyvault/lib/vault.js +0 -392
- package/lib/azure-keyvault/test/AzureKeyVault.spec.d.ts +0 -1
- package/lib/azure-keyvault/test/AzureKeyVault.spec.js +0 -63
- package/lib/azure-keyvault/test/ExampleAzureKeyVault.d.ts +0 -5
- package/lib/azure-keyvault/test/ExampleAzureKeyVault.js +0 -112
- package/lib/azure-kubernetes/index.d.ts +0 -1
- package/lib/azure-kubernetes/index.js +0 -18
- package/lib/azure-kubernetes/lib/cluster.d.ts +0 -93
- package/lib/azure-kubernetes/lib/cluster.js +0 -63
- package/lib/azure-kubernetes/lib/index.d.ts +0 -1
- package/lib/azure-kubernetes/lib/index.js +0 -18
- package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.d.ts +0 -1
- package/lib/azure-kubernetes/test/AzureKubernetesCluster.spec.js +0 -56
- package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.d.ts +0 -5
- package/lib/azure-kubernetes/test/ExampleAzureKubernetesCluster.js +0 -65
- package/lib/azure-kusto/index.d.ts +0 -1
- package/lib/azure-kusto/index.js +0 -18
- package/lib/azure-kusto/lib/cluster.d.ts +0 -136
- package/lib/azure-kusto/lib/cluster.js +0 -138
- package/lib/azure-kusto/lib/compute-specification.d.ts +0 -71
- package/lib/azure-kusto/lib/compute-specification.js +0 -651
- package/lib/azure-kusto/lib/database.d.ts +0 -162
- package/lib/azure-kusto/lib/database.js +0 -180
- package/lib/azure-kusto/lib/index.d.ts +0 -3
- package/lib/azure-kusto/lib/index.js +0 -20
- package/lib/azure-kusto/test/AzureKusto.spec.d.ts +0 -1
- package/lib/azure-kusto/test/AzureKusto.spec.js +0 -50
- package/lib/azure-kusto/test/ExampleAzureKusto.d.ts +0 -5
- package/lib/azure-kusto/test/ExampleAzureKusto.js +0 -71
- package/lib/azure-loganalytics/index.d.ts +0 -1
- package/lib/azure-loganalytics/index.js +0 -18
- package/lib/azure-loganalytics/lib/index.d.ts +0 -1
- package/lib/azure-loganalytics/lib/index.js +0 -18
- package/lib/azure-loganalytics/lib/workspace.d.ts +0 -163
- package/lib/azure-loganalytics/lib/workspace.js +0 -126
- package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.d.ts +0 -1
- package/lib/azure-loganalytics/test/AzureLogAnalytics.spec.js +0 -50
- package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.d.ts +0 -5
- package/lib/azure-loganalytics/test/ExampleAzureLogAnalytics.js +0 -115
- package/lib/azure-metricalert/index.d.ts +0 -2
- package/lib/azure-metricalert/index.js +0 -19
- package/lib/azure-metricalert/lib/index.d.ts +0 -1
- package/lib/azure-metricalert/lib/index.js +0 -18
- package/lib/azure-metricalert/lib/metric-alert.d.ts +0 -56
- package/lib/azure-metricalert/lib/metric-alert.js +0 -128
- package/lib/azure-metricalert/model/action-props.d.ts +0 -11
- package/lib/azure-metricalert/model/action-props.js +0 -3
- package/lib/azure-metricalert/model/criteria-base-props.d.ts +0 -38
- package/lib/azure-metricalert/model/criteria-base-props.js +0 -3
- package/lib/azure-metricalert/model/criteria-dimension-props.d.ts +0 -21
- package/lib/azure-metricalert/model/criteria-dimension-props.js +0 -3
- package/lib/azure-metricalert/model/criteria-props.d.ts +0 -12
- package/lib/azure-metricalert/model/criteria-props.js +0 -3
- package/lib/azure-metricalert/model/dynamic-criteria-props.d.ts +0 -29
- package/lib/azure-metricalert/model/dynamic-criteria-props.js +0 -3
- package/lib/azure-metricalert/model/function.d.ts +0 -28
- package/lib/azure-metricalert/model/function.js +0 -78
- package/lib/azure-metricalert/model/index.d.ts +0 -7
- package/lib/azure-metricalert/model/index.js +0 -24
- package/lib/azure-metricalert/model/metric-alert-props.d.ts +0 -86
- package/lib/azure-metricalert/model/metric-alert-props.js +0 -3
- package/lib/azure-metricalert/test/AzureMetricAlert.spec.d.ts +0 -1
- package/lib/azure-metricalert/test/AzureMetricAlert.spec.js +0 -63
- package/lib/azure-metricalert/test/ExampleAzureMetricAlert.d.ts +0 -5
- package/lib/azure-metricalert/test/ExampleAzureMetricAlert.js +0 -81
- package/lib/azure-networksecuritygroup/index.d.ts +0 -1
- package/lib/azure-networksecuritygroup/index.js +0 -18
- package/lib/azure-networksecuritygroup/lib/index.d.ts +0 -2
- package/lib/azure-networksecuritygroup/lib/index.js +0 -19
- package/lib/azure-networksecuritygroup/lib/preconfigured-rules.d.ts +0 -77
- package/lib/azure-networksecuritygroup/lib/preconfigured-rules.js +0 -608
- package/lib/azure-networksecuritygroup/lib/securitygroup.d.ts +0 -190
- package/lib/azure-networksecuritygroup/lib/securitygroup.js +0 -172
- package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.d.ts +0 -1
- package/lib/azure-networksecuritygroup/test/AzureNetworkSecurityGroup.spec.js +0 -54
- package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.d.ts +0 -5
- package/lib/azure-networksecuritygroup/test/ExampleAzureNetworkSecurityGroup.js +0 -97
- package/lib/azure-queryrulealert/index.d.ts +0 -1
- package/lib/azure-queryrulealert/index.js +0 -18
- package/lib/azure-queryrulealert/lib/index.d.ts +0 -1
- package/lib/azure-queryrulealert/lib/index.js +0 -18
- package/lib/azure-queryrulealert/lib/query-rule-alert.d.ts +0 -175
- package/lib/azure-queryrulealert/lib/query-rule-alert.js +0 -205
- package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.d.ts +0 -1
- package/lib/azure-queryrulealert/test/AzureQueryRuleAlert.spec.js +0 -67
- package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.d.ts +0 -5
- package/lib/azure-queryrulealert/test/ExampleAzureQueryRuleAlert.js +0 -67
- package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.d.ts +0 -1
- package/lib/azure-resourcegroup/test/AzureResourceGroup.spec.js +0 -41
- package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.d.ts +0 -5
- package/lib/azure-resourcegroup/test/ExampleAzureResourceGroup.js +0 -29
- package/lib/azure-storageaccount/lib/account.d.ts +0 -232
- package/lib/azure-storageaccount/lib/account.js +0 -225
- package/lib/azure-storageaccount/lib/container.d.ts +0 -122
- package/lib/azure-storageaccount/lib/container.js +0 -167
- package/lib/azure-storageaccount/lib/fileshare.d.ts +0 -105
- package/lib/azure-storageaccount/lib/fileshare.js +0 -126
- package/lib/azure-storageaccount/lib/queue.d.ts +0 -35
- package/lib/azure-storageaccount/lib/queue.js +0 -52
- package/lib/azure-storageaccount/lib/table.d.ts +0 -38
- package/lib/azure-storageaccount/lib/table.js +0 -55
- package/lib/azure-storageaccount/test/AzureStorageAccount.spec.d.ts +0 -1
- package/lib/azure-storageaccount/test/AzureStorageAccount.spec.js +0 -45
- package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.d.ts +0 -5
- package/lib/azure-storageaccount/test/ExampleAzureStorageAccount.js +0 -102
- package/lib/azure-virtualmachine/index.d.ts +0 -1
- package/lib/azure-virtualmachine/index.js +0 -18
- package/lib/azure-virtualmachine/lib/image-references.d.ts +0 -22
- package/lib/azure-virtualmachine/lib/image-references.js +0 -128
- package/lib/azure-virtualmachine/lib/index.d.ts +0 -2
- package/lib/azure-virtualmachine/lib/index.js +0 -19
- package/lib/azure-virtualmachine/lib/vm.d.ts +0 -281
- package/lib/azure-virtualmachine/lib/vm.js +0 -283
- package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.d.ts +0 -1
- package/lib/azure-virtualmachine/test/AzureLinuxVirtualMachine.spec.js +0 -48
- package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.d.ts +0 -1
- package/lib/azure-virtualmachine/test/AzureWindowsVirtualMachine.spec.js +0 -50
- package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.d.ts +0 -5
- package/lib/azure-virtualmachine/test/ExampleAzureLinuxVirtualMachine.js +0 -106
- package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.d.ts +0 -5
- package/lib/azure-virtualmachine/test/ExampleAzureWindowsVirtualMachine.js +0 -102
- package/lib/azure-virtualmachinescaleset/index.d.ts +0 -1
- package/lib/azure-virtualmachinescaleset/index.js +0 -18
- package/lib/azure-virtualmachinescaleset/lib/cluster.d.ts +0 -324
- package/lib/azure-virtualmachinescaleset/lib/cluster.js +0 -264
- package/lib/azure-virtualmachinescaleset/lib/index.d.ts +0 -1
- package/lib/azure-virtualmachinescaleset/lib/index.js +0 -18
- package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.d.ts +0 -1
- package/lib/azure-virtualmachinescaleset/test/AzureLinuxVirtualMachineScaleSet.spec.js +0 -48
- package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.d.ts +0 -1
- package/lib/azure-virtualmachinescaleset/test/AzureWindowsVirtualMachineScaleSet.spec.js +0 -50
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.d.ts +0 -5
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureLinuxVirtualMachineScaleSet.js +0 -107
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.d.ts +0 -5
- package/lib/azure-virtualmachinescaleset/test/ExampleAzureWindowsVirtualMachineScaleSet.js +0 -103
- package/lib/azure-virtualnetwork/index.d.ts +0 -1
- package/lib/azure-virtualnetwork/index.js +0 -18
- package/lib/azure-virtualnetwork/lib/index.d.ts +0 -2
- package/lib/azure-virtualnetwork/lib/index.js +0 -19
- package/lib/azure-virtualnetwork/lib/network.d.ts +0 -122
- package/lib/azure-virtualnetwork/lib/network.js +0 -120
- package/lib/azure-virtualnetwork/lib/peering.d.ts +0 -90
- package/lib/azure-virtualnetwork/lib/peering.js +0 -71
- package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.d.ts +0 -1
- package/lib/azure-virtualnetwork/test/AzureVirtualNetwork.spec.js +0 -48
- package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.d.ts +0 -5
- package/lib/azure-virtualnetwork/test/ExampleAzureVirtualNetwork.js +0 -88
- package/lib/core-azure/lib/diagsettings.d.ts +0 -89
- package/lib/core-azure/lib/diagsettings.js +0 -83
- package/lib/core-azure/lib/rbac.d.ts +0 -50
- package/lib/core-azure/lib/rbac.js +0 -48
- package/lib/core-azure/lib/resource.d.ts +0 -62
- package/lib/core-azure/lib/resource.js +0 -118
- package/lib/core-azure/test/AzureResource.spec.d.ts +0 -1
- package/lib/core-azure/test/AzureResource.spec.js +0 -19
- package/lib/core-azure/test/ExampleAzureResource.d.ts +0 -5
- package/lib/core-azure/test/ExampleAzureResource.js +0 -67
- package/node_modules/moment/CHANGELOG.md +0 -996
- package/node_modules/moment/LICENSE +0 -22
- package/node_modules/moment/README.md +0 -55
- package/node_modules/moment/dist/locale/af.js +0 -71
- package/node_modules/moment/dist/locale/ar-dz.js +0 -156
- package/node_modules/moment/dist/locale/ar-kw.js +0 -55
- package/node_modules/moment/dist/locale/ar-ly.js +0 -171
- package/node_modules/moment/dist/locale/ar-ma.js +0 -56
- package/node_modules/moment/dist/locale/ar-ps.js +0 -112
- package/node_modules/moment/dist/locale/ar-sa.js +0 -105
- package/node_modules/moment/dist/locale/ar-tn.js +0 -55
- package/node_modules/moment/dist/locale/ar.js +0 -189
- package/node_modules/moment/dist/locale/az.js +0 -102
- package/node_modules/moment/dist/locale/be.js +0 -142
- package/node_modules/moment/dist/locale/bg.js +0 -87
- package/node_modules/moment/dist/locale/bm.js +0 -52
- package/node_modules/moment/dist/locale/bn-bd.js +0 -129
- package/node_modules/moment/dist/locale/bn.js +0 -119
- package/node_modules/moment/dist/locale/bo.js +0 -124
- package/node_modules/moment/dist/locale/br.js +0 -168
- package/node_modules/moment/dist/locale/bs.js +0 -160
- package/node_modules/moment/dist/locale/ca.js +0 -100
- package/node_modules/moment/dist/locale/cs.js +0 -181
- package/node_modules/moment/dist/locale/cv.js +0 -63
- package/node_modules/moment/dist/locale/cy.js +0 -98
- package/node_modules/moment/dist/locale/da.js +0 -53
- package/node_modules/moment/dist/locale/de-at.js +0 -79
- package/node_modules/moment/dist/locale/de-ch.js +0 -78
- package/node_modules/moment/dist/locale/de.js +0 -78
- package/node_modules/moment/dist/locale/dv.js +0 -90
- package/node_modules/moment/dist/locale/el.js +0 -106
- package/node_modules/moment/dist/locale/en-au.js +0 -68
- package/node_modules/moment/dist/locale/en-ca.js +0 -64
- package/node_modules/moment/dist/locale/en-gb.js +0 -68
- package/node_modules/moment/dist/locale/en-ie.js +0 -68
- package/node_modules/moment/dist/locale/en-il.js +0 -64
- package/node_modules/moment/dist/locale/en-in.js +0 -68
- package/node_modules/moment/dist/locale/en-nz.js +0 -68
- package/node_modules/moment/dist/locale/en-sg.js +0 -68
- package/node_modules/moment/dist/locale/eo.js +0 -68
- package/node_modules/moment/dist/locale/es-do.js +0 -108
- package/node_modules/moment/dist/locale/es-mx.js +0 -110
- package/node_modules/moment/dist/locale/es-us.js +0 -110
- package/node_modules/moment/dist/locale/es.js +0 -110
- package/node_modules/moment/dist/locale/et.js +0 -78
- package/node_modules/moment/dist/locale/eu.js +0 -65
- package/node_modules/moment/dist/locale/fa.js +0 -113
- package/node_modules/moment/dist/locale/fi.js +0 -124
- package/node_modules/moment/dist/locale/fil.js +0 -58
- package/node_modules/moment/dist/locale/fo.js +0 -57
- package/node_modules/moment/dist/locale/fr-ca.js +0 -70
- package/node_modules/moment/dist/locale/fr-ch.js +0 -74
- package/node_modules/moment/dist/locale/fr.js +0 -108
- package/node_modules/moment/dist/locale/fy.js +0 -75
- package/node_modules/moment/dist/locale/ga.js +0 -95
- package/node_modules/moment/dist/locale/gd.js +0 -95
- package/node_modules/moment/dist/locale/gl.js +0 -75
- package/node_modules/moment/dist/locale/gom-deva.js +0 -126
- package/node_modules/moment/dist/locale/gom-latn.js +0 -124
- package/node_modules/moment/dist/locale/gu.js +0 -122
- package/node_modules/moment/dist/locale/he.js +0 -94
- package/node_modules/moment/dist/locale/hi.js +0 -168
- package/node_modules/moment/dist/locale/hr.js +0 -156
- package/node_modules/moment/dist/locale/hu.js +0 -118
- package/node_modules/moment/dist/locale/hy-am.js +0 -94
- package/node_modules/moment/dist/locale/id.js +0 -76
- package/node_modules/moment/dist/locale/is.js +0 -140
- package/node_modules/moment/dist/locale/it-ch.js +0 -64
- package/node_modules/moment/dist/locale/it.js +0 -106
- package/node_modules/moment/dist/locale/ja.js +0 -148
- package/node_modules/moment/dist/locale/jv.js +0 -76
- package/node_modules/moment/dist/locale/ka.js +0 -92
- package/node_modules/moment/dist/locale/kk.js +0 -82
- package/node_modules/moment/dist/locale/km.js +0 -103
- package/node_modules/moment/dist/locale/kn.js +0 -124
- package/node_modules/moment/dist/locale/ko.js +0 -75
- package/node_modules/moment/dist/locale/ku-kmr.js +0 -121
- package/node_modules/moment/dist/locale/ku.js +0 -118
- package/node_modules/moment/dist/locale/ky.js +0 -84
- package/node_modules/moment/dist/locale/lb.js +0 -137
- package/node_modules/moment/dist/locale/lo.js +0 -66
- package/node_modules/moment/dist/locale/lt.js +0 -125
- package/node_modules/moment/dist/locale/lv.js +0 -94
- package/node_modules/moment/dist/locale/me.js +0 -117
- package/node_modules/moment/dist/locale/mi.js +0 -60
- package/node_modules/moment/dist/locale/mk.js +0 -85
- package/node_modules/moment/dist/locale/ml.js +0 -82
- package/node_modules/moment/dist/locale/mn.js +0 -100
- package/node_modules/moment/dist/locale/mr.js +0 -203
- package/node_modules/moment/dist/locale/ms-my.js +0 -76
- package/node_modules/moment/dist/locale/ms.js +0 -75
- package/node_modules/moment/dist/locale/mt.js +0 -56
- package/node_modules/moment/dist/locale/my.js +0 -91
- package/node_modules/moment/dist/locale/nb.js +0 -60
- package/node_modules/moment/dist/locale/ne.js +0 -121
- package/node_modules/moment/dist/locale/nl-be.js +0 -102
- package/node_modules/moment/dist/locale/nl.js +0 -104
- package/node_modules/moment/dist/locale/nn.js +0 -59
- package/node_modules/moment/dist/locale/oc-lnc.js +0 -85
- package/node_modules/moment/dist/locale/pa-in.js +0 -122
- package/node_modules/moment/dist/locale/pl.js +0 -140
- package/node_modules/moment/dist/locale/pt-br.js +0 -58
- package/node_modules/moment/dist/locale/pt.js +0 -63
- package/node_modules/moment/dist/locale/ro.js +0 -76
- package/node_modules/moment/dist/locale/ru.js +0 -213
- package/node_modules/moment/dist/locale/sd.js +0 -81
- package/node_modules/moment/dist/locale/se.js +0 -57
- package/node_modules/moment/dist/locale/si.js +0 -69
- package/node_modules/moment/dist/locale/sk.js +0 -145
- package/node_modules/moment/dist/locale/sl.js +0 -171
- package/node_modules/moment/dist/locale/sq.js +0 -65
- package/node_modules/moment/dist/locale/sr-cyrl.js +0 -127
- package/node_modules/moment/dist/locale/sr.js +0 -129
- package/node_modules/moment/dist/locale/ss.js +0 -84
- package/node_modules/moment/dist/locale/sv.js +0 -68
- package/node_modules/moment/dist/locale/sw.js +0 -55
- package/node_modules/moment/dist/locale/ta.js +0 -131
- package/node_modules/moment/dist/locale/te.js +0 -88
- package/node_modules/moment/dist/locale/tet.js +0 -68
- package/node_modules/moment/dist/locale/tg.js +0 -117
- package/node_modules/moment/dist/locale/th.js +0 -65
- package/node_modules/moment/dist/locale/tk.js +0 -91
- package/node_modules/moment/dist/locale/tl-ph.js +0 -57
- package/node_modules/moment/dist/locale/tlh.js +0 -124
- package/node_modules/moment/dist/locale/tr.js +0 -106
- package/node_modules/moment/dist/locale/tzl.js +0 -89
- package/node_modules/moment/dist/locale/tzm-latn.js +0 -54
- package/node_modules/moment/dist/locale/tzm.js +0 -54
- package/node_modules/moment/dist/locale/ug-cn.js +0 -111
- package/node_modules/moment/dist/locale/uk.js +0 -167
- package/node_modules/moment/dist/locale/ur.js +0 -82
- package/node_modules/moment/dist/locale/uz-latn.js +0 -54
- package/node_modules/moment/dist/locale/uz.js +0 -51
- package/node_modules/moment/dist/locale/vi.js +0 -80
- package/node_modules/moment/dist/locale/x-pseudo.js +0 -73
- package/node_modules/moment/dist/locale/yo.js +0 -53
- package/node_modules/moment/dist/locale/zh-cn.js +0 -120
- package/node_modules/moment/dist/locale/zh-hk.js +0 -101
- package/node_modules/moment/dist/locale/zh-mo.js +0 -100
- package/node_modules/moment/dist/locale/zh-tw.js +0 -99
- package/node_modules/moment/dist/moment.js +0 -5680
- package/node_modules/moment/ender.js +0 -1
- package/node_modules/moment/locale/af.js +0 -82
- package/node_modules/moment/locale/ar-dz.js +0 -167
- package/node_modules/moment/locale/ar-kw.js +0 -66
- package/node_modules/moment/locale/ar-ly.js +0 -182
- package/node_modules/moment/locale/ar-ma.js +0 -67
- package/node_modules/moment/locale/ar-ps.js +0 -123
- package/node_modules/moment/locale/ar-sa.js +0 -116
- package/node_modules/moment/locale/ar-tn.js +0 -66
- package/node_modules/moment/locale/ar.js +0 -200
- package/node_modules/moment/locale/az.js +0 -113
- package/node_modules/moment/locale/be.js +0 -153
- package/node_modules/moment/locale/bg.js +0 -98
- package/node_modules/moment/locale/bm.js +0 -62
- package/node_modules/moment/locale/bn-bd.js +0 -140
- package/node_modules/moment/locale/bn.js +0 -130
- package/node_modules/moment/locale/bo.js +0 -135
- package/node_modules/moment/locale/br.js +0 -179
- package/node_modules/moment/locale/bs.js +0 -171
- package/node_modules/moment/locale/ca.js +0 -111
- package/node_modules/moment/locale/cs.js +0 -192
- package/node_modules/moment/locale/cv.js +0 -74
- package/node_modules/moment/locale/cy.js +0 -109
- package/node_modules/moment/locale/da.js +0 -64
- package/node_modules/moment/locale/de-at.js +0 -90
- package/node_modules/moment/locale/de-ch.js +0 -87
- package/node_modules/moment/locale/de.js +0 -89
- package/node_modules/moment/locale/dv.js +0 -101
- package/node_modules/moment/locale/el.js +0 -117
- package/node_modules/moment/locale/en-au.js +0 -79
- package/node_modules/moment/locale/en-ca.js +0 -75
- package/node_modules/moment/locale/en-gb.js +0 -79
- package/node_modules/moment/locale/en-ie.js +0 -79
- package/node_modules/moment/locale/en-il.js +0 -75
- package/node_modules/moment/locale/en-in.js +0 -79
- package/node_modules/moment/locale/en-nz.js +0 -79
- package/node_modules/moment/locale/en-sg.js +0 -79
- package/node_modules/moment/locale/eo.js +0 -79
- package/node_modules/moment/locale/es-do.js +0 -119
- package/node_modules/moment/locale/es-mx.js +0 -121
- package/node_modules/moment/locale/es-us.js +0 -121
- package/node_modules/moment/locale/es.js +0 -121
- package/node_modules/moment/locale/et.js +0 -89
- package/node_modules/moment/locale/eu.js +0 -76
- package/node_modules/moment/locale/fa.js +0 -124
- package/node_modules/moment/locale/fi.js +0 -135
- package/node_modules/moment/locale/fil.js +0 -69
- package/node_modules/moment/locale/fo.js +0 -68
- package/node_modules/moment/locale/fr-ca.js +0 -81
- package/node_modules/moment/locale/fr-ch.js +0 -85
- package/node_modules/moment/locale/fr.js +0 -119
- package/node_modules/moment/locale/fy.js +0 -86
- package/node_modules/moment/locale/ga.js +0 -106
- package/node_modules/moment/locale/gd.js +0 -106
- package/node_modules/moment/locale/gl.js +0 -86
- package/node_modules/moment/locale/gom-deva.js +0 -137
- package/node_modules/moment/locale/gom-latn.js +0 -135
- package/node_modules/moment/locale/gu.js +0 -133
- package/node_modules/moment/locale/he.js +0 -105
- package/node_modules/moment/locale/hi.js +0 -179
- package/node_modules/moment/locale/hr.js +0 -167
- package/node_modules/moment/locale/hu.js +0 -129
- package/node_modules/moment/locale/hy-am.js +0 -105
- package/node_modules/moment/locale/id.js +0 -87
- package/node_modules/moment/locale/is.js +0 -151
- package/node_modules/moment/locale/it-ch.js +0 -75
- package/node_modules/moment/locale/it.js +0 -117
- package/node_modules/moment/locale/ja.js +0 -159
- package/node_modules/moment/locale/jv.js +0 -87
- package/node_modules/moment/locale/ka.js +0 -103
- package/node_modules/moment/locale/kk.js +0 -93
- package/node_modules/moment/locale/km.js +0 -114
- package/node_modules/moment/locale/kn.js +0 -135
- package/node_modules/moment/locale/ko.js +0 -86
- package/node_modules/moment/locale/ku-kmr.js +0 -125
- package/node_modules/moment/locale/ku.js +0 -129
- package/node_modules/moment/locale/ky.js +0 -95
- package/node_modules/moment/locale/lb.js +0 -148
- package/node_modules/moment/locale/lo.js +0 -77
- package/node_modules/moment/locale/lt.js +0 -136
- package/node_modules/moment/locale/lv.js +0 -105
- package/node_modules/moment/locale/me.js +0 -128
- package/node_modules/moment/locale/mi.js +0 -71
- package/node_modules/moment/locale/mk.js +0 -97
- package/node_modules/moment/locale/ml.js +0 -93
- package/node_modules/moment/locale/mn.js +0 -111
- package/node_modules/moment/locale/mr.js +0 -214
- package/node_modules/moment/locale/ms-my.js +0 -87
- package/node_modules/moment/locale/ms.js +0 -86
- package/node_modules/moment/locale/mt.js +0 -67
- package/node_modules/moment/locale/my.js +0 -102
- package/node_modules/moment/locale/nb.js +0 -71
- package/node_modules/moment/locale/ne.js +0 -132
- package/node_modules/moment/locale/nl-be.js +0 -113
- package/node_modules/moment/locale/nl.js +0 -115
- package/node_modules/moment/locale/nn.js +0 -70
- package/node_modules/moment/locale/oc-lnc.js +0 -96
- package/node_modules/moment/locale/pa-in.js +0 -133
- package/node_modules/moment/locale/pl.js +0 -151
- package/node_modules/moment/locale/pt-br.js +0 -69
- package/node_modules/moment/locale/pt.js +0 -74
- package/node_modules/moment/locale/ro.js +0 -87
- package/node_modules/moment/locale/ru.js +0 -224
- package/node_modules/moment/locale/sd.js +0 -92
- package/node_modules/moment/locale/se.js +0 -68
- package/node_modules/moment/locale/si.js +0 -80
- package/node_modules/moment/locale/sk.js +0 -156
- package/node_modules/moment/locale/sl.js +0 -182
- package/node_modules/moment/locale/sq.js +0 -76
- package/node_modules/moment/locale/sr-cyrl.js +0 -138
- package/node_modules/moment/locale/sr.js +0 -140
- package/node_modules/moment/locale/ss.js +0 -95
- package/node_modules/moment/locale/sv.js +0 -79
- package/node_modules/moment/locale/sw.js +0 -66
- package/node_modules/moment/locale/ta.js +0 -142
- package/node_modules/moment/locale/te.js +0 -99
- package/node_modules/moment/locale/tet.js +0 -79
- package/node_modules/moment/locale/tg.js +0 -128
- package/node_modules/moment/locale/th.js +0 -76
- package/node_modules/moment/locale/tk.js +0 -102
- package/node_modules/moment/locale/tl-ph.js +0 -68
- package/node_modules/moment/locale/tlh.js +0 -135
- package/node_modules/moment/locale/tr.js +0 -117
- package/node_modules/moment/locale/tzl.js +0 -100
- package/node_modules/moment/locale/tzm-latn.js +0 -65
- package/node_modules/moment/locale/tzm.js +0 -65
- package/node_modules/moment/locale/ug-cn.js +0 -122
- package/node_modules/moment/locale/uk.js +0 -178
- package/node_modules/moment/locale/ur.js +0 -93
- package/node_modules/moment/locale/uz-latn.js +0 -65
- package/node_modules/moment/locale/uz.js +0 -62
- package/node_modules/moment/locale/vi.js +0 -91
- package/node_modules/moment/locale/x-pseudo.js +0 -84
- package/node_modules/moment/locale/yo.js +0 -64
- package/node_modules/moment/locale/zh-cn.js +0 -131
- package/node_modules/moment/locale/zh-hk.js +0 -112
- package/node_modules/moment/locale/zh-mo.js +0 -111
- package/node_modules/moment/locale/zh-tw.js +0 -110
- package/node_modules/moment/min/locales.js +0 -12800
- package/node_modules/moment/min/locales.min.js +0 -2
- package/node_modules/moment/min/locales.min.js.map +0 -1
- package/node_modules/moment/min/moment-with-locales.js +0 -18472
- package/node_modules/moment/min/moment-with-locales.min.js +0 -2
- package/node_modules/moment/min/moment-with-locales.min.js.map +0 -1
- package/node_modules/moment/min/moment.min.js +0 -2
- package/node_modules/moment/min/moment.min.js.map +0 -1
- package/node_modules/moment/moment.d.ts +0 -796
- package/node_modules/moment/moment.js +0 -5688
- package/node_modules/moment/package.js +0 -11
- package/node_modules/moment/package.json +0 -116
- package/node_modules/moment/src/lib/create/check-overflow.js +0 -57
- package/node_modules/moment/src/lib/create/date-from-array.js +0 -35
- package/node_modules/moment/src/lib/create/from-anything.js +0 -117
- package/node_modules/moment/src/lib/create/from-array.js +0 -187
- package/node_modules/moment/src/lib/create/from-object.js +0 -20
- package/node_modules/moment/src/lib/create/from-string-and-array.js +0 -67
- package/node_modules/moment/src/lib/create/from-string-and-format.js +0 -135
- package/node_modules/moment/src/lib/create/from-string.js +0 -258
- package/node_modules/moment/src/lib/create/local.js +0 -5
- package/node_modules/moment/src/lib/create/parsing-flags.js +0 -28
- package/node_modules/moment/src/lib/create/utc.js +0 -5
- package/node_modules/moment/src/lib/create/valid.js +0 -51
- package/node_modules/moment/src/lib/duration/abs.js +0 -18
- package/node_modules/moment/src/lib/duration/add-subtract.js +0 -21
- package/node_modules/moment/src/lib/duration/as.js +0 -76
- package/node_modules/moment/src/lib/duration/bubble.js +0 -68
- package/node_modules/moment/src/lib/duration/clone.js +0 -5
- package/node_modules/moment/src/lib/duration/constructor.js +0 -42
- package/node_modules/moment/src/lib/duration/create.js +0 -133
- package/node_modules/moment/src/lib/duration/duration.js +0 -16
- package/node_modules/moment/src/lib/duration/get.js +0 -27
- package/node_modules/moment/src/lib/duration/humanize.js +0 -114
- package/node_modules/moment/src/lib/duration/iso-string.js +0 -68
- package/node_modules/moment/src/lib/duration/prototype.js +0 -78
- package/node_modules/moment/src/lib/duration/valid.js +0 -55
- package/node_modules/moment/src/lib/format/format.js +0 -104
- package/node_modules/moment/src/lib/locale/base-config.js +0 -41
- package/node_modules/moment/src/lib/locale/calendar.js +0 -15
- package/node_modules/moment/src/lib/locale/constructor.js +0 -5
- package/node_modules/moment/src/lib/locale/en.js +0 -39
- package/node_modules/moment/src/lib/locale/formats.js +0 -36
- package/node_modules/moment/src/lib/locale/invalid.js +0 -5
- package/node_modules/moment/src/lib/locale/lists.js +0 -93
- package/node_modules/moment/src/lib/locale/locale.js +0 -45
- package/node_modules/moment/src/lib/locale/locales.js +0 -249
- package/node_modules/moment/src/lib/locale/ordinal.js +0 -8
- package/node_modules/moment/src/lib/locale/pre-post-format.js +0 -3
- package/node_modules/moment/src/lib/locale/prototype.js +0 -88
- package/node_modules/moment/src/lib/locale/relative.js +0 -32
- package/node_modules/moment/src/lib/locale/set.js +0 -56
- package/node_modules/moment/src/lib/moment/add-subtract.js +0 -61
- package/node_modules/moment/src/lib/moment/calendar.js +0 -53
- package/node_modules/moment/src/lib/moment/clone.js +0 -5
- package/node_modules/moment/src/lib/moment/compare.js +0 -72
- package/node_modules/moment/src/lib/moment/constructor.js +0 -80
- package/node_modules/moment/src/lib/moment/creation-data.js +0 -9
- package/node_modules/moment/src/lib/moment/diff.js +0 -79
- package/node_modules/moment/src/lib/moment/format.js +0 -78
- package/node_modules/moment/src/lib/moment/from.js +0 -20
- package/node_modules/moment/src/lib/moment/get-set.js +0 -117
- package/node_modules/moment/src/lib/moment/locale.js +0 -34
- package/node_modules/moment/src/lib/moment/min-max.js +0 -62
- package/node_modules/moment/src/lib/moment/moment.js +0 -28
- package/node_modules/moment/src/lib/moment/now.js +0 -3
- package/node_modules/moment/src/lib/moment/prototype.js +0 -197
- package/node_modules/moment/src/lib/moment/start-end-of.js +0 -164
- package/node_modules/moment/src/lib/moment/to-type.js +0 -42
- package/node_modules/moment/src/lib/moment/to.js +0 -20
- package/node_modules/moment/src/lib/moment/valid.js +0 -15
- package/node_modules/moment/src/lib/parse/regex.js +0 -84
- package/node_modules/moment/src/lib/parse/token.js +0 -36
- package/node_modules/moment/src/lib/units/aliases.js +0 -75
- package/node_modules/moment/src/lib/units/constants.js +0 -9
- package/node_modules/moment/src/lib/units/day-of-month.js +0 -35
- package/node_modules/moment/src/lib/units/day-of-week.js +0 -432
- package/node_modules/moment/src/lib/units/day-of-year.js +0 -28
- package/node_modules/moment/src/lib/units/era.js +0 -293
- package/node_modules/moment/src/lib/units/hour.js +0 -152
- package/node_modules/moment/src/lib/units/millisecond.js +0 -66
- package/node_modules/moment/src/lib/units/minute.js +0 -24
- package/node_modules/moment/src/lib/units/month.js +0 -340
- package/node_modules/moment/src/lib/units/offset.js +0 -249
- package/node_modules/moment/src/lib/units/priorities.js +0 -34
- package/node_modules/moment/src/lib/units/quarter.js +0 -24
- package/node_modules/moment/src/lib/units/second.js +0 -24
- package/node_modules/moment/src/lib/units/timestamp.js +0 -20
- package/node_modules/moment/src/lib/units/timezone.js +0 -16
- package/node_modules/moment/src/lib/units/units.js +0 -20
- package/node_modules/moment/src/lib/units/week-calendar-utils.js +0 -66
- package/node_modules/moment/src/lib/units/week-year.js +0 -128
- package/node_modules/moment/src/lib/units/week.js +0 -62
- package/node_modules/moment/src/lib/units/year.js +0 -75
- package/node_modules/moment/src/lib/utils/abs-ceil.js +0 -7
- package/node_modules/moment/src/lib/utils/abs-floor.js +0 -8
- package/node_modules/moment/src/lib/utils/abs-round.js +0 -7
- package/node_modules/moment/src/lib/utils/compare-arrays.js +0 -18
- package/node_modules/moment/src/lib/utils/defaults.js +0 -10
- package/node_modules/moment/src/lib/utils/deprecate.js +0 -69
- package/node_modules/moment/src/lib/utils/extend.js +0 -19
- package/node_modules/moment/src/lib/utils/has-own-prop.js +0 -3
- package/node_modules/moment/src/lib/utils/hooks.js +0 -13
- package/node_modules/moment/src/lib/utils/index-of.js +0 -18
- package/node_modules/moment/src/lib/utils/is-array.js +0 -6
- package/node_modules/moment/src/lib/utils/is-calendar-spec.js +0 -25
- package/node_modules/moment/src/lib/utils/is-date.js +0 -6
- package/node_modules/moment/src/lib/utils/is-function.js +0 -6
- package/node_modules/moment/src/lib/utils/is-leap-year.js +0 -3
- package/node_modules/moment/src/lib/utils/is-moment-input.js +0 -75
- package/node_modules/moment/src/lib/utils/is-number.js +0 -6
- package/node_modules/moment/src/lib/utils/is-object-empty.js +0 -15
- package/node_modules/moment/src/lib/utils/is-object.js +0 -8
- package/node_modules/moment/src/lib/utils/is-string.js +0 -3
- package/node_modules/moment/src/lib/utils/is-undefined.js +0 -3
- package/node_modules/moment/src/lib/utils/keys.js +0 -20
- package/node_modules/moment/src/lib/utils/map.js +0 -9
- package/node_modules/moment/src/lib/utils/mod.js +0 -3
- package/node_modules/moment/src/lib/utils/some.js +0 -20
- package/node_modules/moment/src/lib/utils/to-int.js +0 -12
- package/node_modules/moment/src/lib/utils/zero-fill.js +0 -10
- package/node_modules/moment/src/locale/af.js +0 -71
- package/node_modules/moment/src/locale/ar-dz.js +0 -156
- package/node_modules/moment/src/locale/ar-kw.js +0 -55
- package/node_modules/moment/src/locale/ar-ly.js +0 -171
- package/node_modules/moment/src/locale/ar-ma.js +0 -56
- package/node_modules/moment/src/locale/ar-ps.js +0 -112
- package/node_modules/moment/src/locale/ar-sa.js +0 -105
- package/node_modules/moment/src/locale/ar-tn.js +0 -55
- package/node_modules/moment/src/locale/ar.js +0 -189
- package/node_modules/moment/src/locale/az.js +0 -102
- package/node_modules/moment/src/locale/be.js +0 -142
- package/node_modules/moment/src/locale/bg.js +0 -87
- package/node_modules/moment/src/locale/bm.js +0 -52
- package/node_modules/moment/src/locale/bn-bd.js +0 -129
- package/node_modules/moment/src/locale/bn.js +0 -119
- package/node_modules/moment/src/locale/bo.js +0 -124
- package/node_modules/moment/src/locale/br.js +0 -168
- package/node_modules/moment/src/locale/bs.js +0 -160
- package/node_modules/moment/src/locale/ca.js +0 -100
- package/node_modules/moment/src/locale/cs.js +0 -181
- package/node_modules/moment/src/locale/cv.js +0 -63
- package/node_modules/moment/src/locale/cy.js +0 -98
- package/node_modules/moment/src/locale/da.js +0 -53
- package/node_modules/moment/src/locale/de-at.js +0 -79
- package/node_modules/moment/src/locale/de-ch.js +0 -78
- package/node_modules/moment/src/locale/de.js +0 -78
- package/node_modules/moment/src/locale/dv.js +0 -90
- package/node_modules/moment/src/locale/el.js +0 -106
- package/node_modules/moment/src/locale/en-au.js +0 -68
- package/node_modules/moment/src/locale/en-ca.js +0 -64
- package/node_modules/moment/src/locale/en-gb.js +0 -68
- package/node_modules/moment/src/locale/en-ie.js +0 -68
- package/node_modules/moment/src/locale/en-il.js +0 -64
- package/node_modules/moment/src/locale/en-in.js +0 -68
- package/node_modules/moment/src/locale/en-nz.js +0 -68
- package/node_modules/moment/src/locale/en-sg.js +0 -68
- package/node_modules/moment/src/locale/eo.js +0 -68
- package/node_modules/moment/src/locale/es-do.js +0 -108
- package/node_modules/moment/src/locale/es-mx.js +0 -110
- package/node_modules/moment/src/locale/es-us.js +0 -110
- package/node_modules/moment/src/locale/es.js +0 -110
- package/node_modules/moment/src/locale/et.js +0 -78
- package/node_modules/moment/src/locale/eu.js +0 -65
- package/node_modules/moment/src/locale/fa.js +0 -113
- package/node_modules/moment/src/locale/fi.js +0 -124
- package/node_modules/moment/src/locale/fil.js +0 -58
- package/node_modules/moment/src/locale/fo.js +0 -57
- package/node_modules/moment/src/locale/fr-ca.js +0 -70
- package/node_modules/moment/src/locale/fr-ch.js +0 -74
- package/node_modules/moment/src/locale/fr.js +0 -108
- package/node_modules/moment/src/locale/fy.js +0 -75
- package/node_modules/moment/src/locale/ga.js +0 -95
- package/node_modules/moment/src/locale/gd.js +0 -95
- package/node_modules/moment/src/locale/gl.js +0 -75
- package/node_modules/moment/src/locale/gom-deva.js +0 -126
- package/node_modules/moment/src/locale/gom-latn.js +0 -124
- package/node_modules/moment/src/locale/gu.js +0 -122
- package/node_modules/moment/src/locale/he.js +0 -94
- package/node_modules/moment/src/locale/hi.js +0 -168
- package/node_modules/moment/src/locale/hr.js +0 -156
- package/node_modules/moment/src/locale/hu.js +0 -118
- package/node_modules/moment/src/locale/hy-am.js +0 -94
- package/node_modules/moment/src/locale/id.js +0 -76
- package/node_modules/moment/src/locale/is.js +0 -140
- package/node_modules/moment/src/locale/it-ch.js +0 -64
- package/node_modules/moment/src/locale/it.js +0 -106
- package/node_modules/moment/src/locale/ja.js +0 -148
- package/node_modules/moment/src/locale/jv.js +0 -76
- package/node_modules/moment/src/locale/ka.js +0 -92
- package/node_modules/moment/src/locale/kk.js +0 -82
- package/node_modules/moment/src/locale/km.js +0 -103
- package/node_modules/moment/src/locale/kn.js +0 -124
- package/node_modules/moment/src/locale/ko.js +0 -75
- package/node_modules/moment/src/locale/ku-kmr.js +0 -121
- package/node_modules/moment/src/locale/ku.js +0 -118
- package/node_modules/moment/src/locale/ky.js +0 -84
- package/node_modules/moment/src/locale/lb.js +0 -137
- package/node_modules/moment/src/locale/lo.js +0 -66
- package/node_modules/moment/src/locale/lt.js +0 -125
- package/node_modules/moment/src/locale/lv.js +0 -94
- package/node_modules/moment/src/locale/me.js +0 -117
- package/node_modules/moment/src/locale/mi.js +0 -60
- package/node_modules/moment/src/locale/mk.js +0 -85
- package/node_modules/moment/src/locale/ml.js +0 -82
- package/node_modules/moment/src/locale/mn.js +0 -100
- package/node_modules/moment/src/locale/mr.js +0 -203
- package/node_modules/moment/src/locale/ms-my.js +0 -76
- package/node_modules/moment/src/locale/ms.js +0 -75
- package/node_modules/moment/src/locale/mt.js +0 -56
- package/node_modules/moment/src/locale/my.js +0 -91
- package/node_modules/moment/src/locale/nb.js +0 -60
- package/node_modules/moment/src/locale/ne.js +0 -121
- package/node_modules/moment/src/locale/nl-be.js +0 -102
- package/node_modules/moment/src/locale/nl.js +0 -104
- package/node_modules/moment/src/locale/nn.js +0 -59
- package/node_modules/moment/src/locale/oc-lnc.js +0 -85
- package/node_modules/moment/src/locale/pa-in.js +0 -122
- package/node_modules/moment/src/locale/pl.js +0 -140
- package/node_modules/moment/src/locale/pt-br.js +0 -58
- package/node_modules/moment/src/locale/pt.js +0 -63
- package/node_modules/moment/src/locale/ro.js +0 -76
- package/node_modules/moment/src/locale/ru.js +0 -213
- package/node_modules/moment/src/locale/sd.js +0 -81
- package/node_modules/moment/src/locale/se.js +0 -57
- package/node_modules/moment/src/locale/si.js +0 -69
- package/node_modules/moment/src/locale/sk.js +0 -145
- package/node_modules/moment/src/locale/sl.js +0 -171
- package/node_modules/moment/src/locale/sq.js +0 -65
- package/node_modules/moment/src/locale/sr-cyrl.js +0 -127
- package/node_modules/moment/src/locale/sr.js +0 -129
- package/node_modules/moment/src/locale/ss.js +0 -84
- package/node_modules/moment/src/locale/sv.js +0 -68
- package/node_modules/moment/src/locale/sw.js +0 -55
- package/node_modules/moment/src/locale/ta.js +0 -131
- package/node_modules/moment/src/locale/te.js +0 -88
- package/node_modules/moment/src/locale/tet.js +0 -68
- package/node_modules/moment/src/locale/tg.js +0 -117
- package/node_modules/moment/src/locale/th.js +0 -65
- package/node_modules/moment/src/locale/tk.js +0 -91
- package/node_modules/moment/src/locale/tl-ph.js +0 -57
- package/node_modules/moment/src/locale/tlh.js +0 -124
- package/node_modules/moment/src/locale/tr.js +0 -106
- package/node_modules/moment/src/locale/tzl.js +0 -89
- package/node_modules/moment/src/locale/tzm-latn.js +0 -54
- package/node_modules/moment/src/locale/tzm.js +0 -54
- package/node_modules/moment/src/locale/ug-cn.js +0 -111
- package/node_modules/moment/src/locale/uk.js +0 -167
- package/node_modules/moment/src/locale/ur.js +0 -82
- package/node_modules/moment/src/locale/uz-latn.js +0 -54
- package/node_modules/moment/src/locale/uz.js +0 -51
- package/node_modules/moment/src/locale/vi.js +0 -80
- package/node_modules/moment/src/locale/x-pseudo.js +0 -73
- package/node_modules/moment/src/locale/yo.js +0 -53
- package/node_modules/moment/src/locale/zh-cn.js +0 -120
- package/node_modules/moment/src/locale/zh-hk.js +0 -101
- package/node_modules/moment/src/locale/zh-mo.js +0 -100
- package/node_modules/moment/src/locale/zh-tw.js +0 -99
- package/node_modules/moment/src/moment.js +0 -93
- package/node_modules/moment/ts3.1-typings/moment.d.ts +0 -785
- package/node_modules/nanoid/LICENSE +0 -20
- package/node_modules/nanoid/README.md +0 -38
- package/node_modules/nanoid/async/index.browser.js +0 -33
- package/node_modules/nanoid/async/index.d.ts +0 -56
- package/node_modules/nanoid/async/index.js +0 -34
- package/node_modules/nanoid/async/index.native.js +0 -25
- package/node_modules/nanoid/bin/nanoid.js +0 -46
- package/node_modules/nanoid/index.browser.js +0 -33
- package/node_modules/nanoid/index.d.ts +0 -91
- package/node_modules/nanoid/index.js +0 -45
- package/node_modules/nanoid/nanoid.js +0 -1
- package/node_modules/nanoid/non-secure/index.d.ts +0 -33
- package/node_modules/nanoid/non-secure/index.js +0 -20
- package/node_modules/nanoid/package.json +0 -46
- package/node_modules/nanoid/url-alphabet/index.js +0 -2
- package/node_modules/ts-md5/LICENSE +0 -21
- package/node_modules/ts-md5/README.md +0 -101
- package/node_modules/ts-md5/dist/cjs/index.d.ts +0 -3
- package/node_modules/ts-md5/dist/cjs/index.js +0 -10
- package/node_modules/ts-md5/dist/cjs/index.js.map +0 -1
- package/node_modules/ts-md5/dist/cjs/md5.d.ts +0 -70
- package/node_modules/ts-md5/dist/cjs/md5.js +0 -429
- package/node_modules/ts-md5/dist/cjs/md5.js.map +0 -1
- package/node_modules/ts-md5/dist/cjs/md5_file_hasher.d.ts +0 -25
- package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js +0 -96
- package/node_modules/ts-md5/dist/cjs/md5_file_hasher.js.map +0 -1
- package/node_modules/ts-md5/dist/cjs/parallel_hasher.d.ts +0 -22
- package/node_modules/ts-md5/dist/cjs/parallel_hasher.js +0 -69
- package/node_modules/ts-md5/dist/cjs/parallel_hasher.js.map +0 -1
- package/node_modules/ts-md5/dist/esm/index.d.ts +0 -3
- package/node_modules/ts-md5/dist/esm/index.js +0 -4
- package/node_modules/ts-md5/dist/esm/index.js.map +0 -1
- package/node_modules/ts-md5/dist/esm/md5.d.ts +0 -70
- package/node_modules/ts-md5/dist/esm/md5.js +0 -421
- package/node_modules/ts-md5/dist/esm/md5.js.map +0 -1
- package/node_modules/ts-md5/dist/esm/md5_file_hasher.d.ts +0 -25
- package/node_modules/ts-md5/dist/esm/md5_file_hasher.js +0 -89
- package/node_modules/ts-md5/dist/esm/md5_file_hasher.js.map +0 -1
- package/node_modules/ts-md5/dist/esm/parallel_hasher.d.ts +0 -22
- package/node_modules/ts-md5/dist/esm/parallel_hasher.js +0 -64
- package/node_modules/ts-md5/dist/esm/parallel_hasher.js.map +0 -1
- package/node_modules/ts-md5/dist/md5.js +0 -429
- package/node_modules/ts-md5/dist/md5_worker.js +0 -523
- package/node_modules/ts-md5/package.json +0 -82
- package/node_modules/ts-md5/src/index.ts +0 -4
- package/node_modules/ts-md5/src/md5.ts +0 -473
- package/node_modules/ts-md5/src/md5_file_hasher.ts +0 -110
- package/node_modules/ts-md5/src/parallel_hasher.ts +0 -90
- package/node_modules/ts-md5/src/worker.js +0 -20
- package/tfsec.json +0 -4
|
@@ -0,0 +1,836 @@
|
|
|
1
|
+
# Terraform CDK Constructs - High-Level Architecture
|
|
2
|
+
|
|
3
|
+
**Version:** 1.0.0
|
|
4
|
+
**Last Updated:** 2025-10-22
|
|
5
|
+
**Status:** AZAPI Provider Implementation
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Table of Contents
|
|
10
|
+
|
|
11
|
+
1. [Executive Summary](#executive-summary)
|
|
12
|
+
2. [Architecture Overview](#architecture-overview)
|
|
13
|
+
3. [Core Components](#core-components)
|
|
14
|
+
4. [Package Structure](#package-structure)
|
|
15
|
+
5. [Key Architectural Patterns](#key-architectural-patterns)
|
|
16
|
+
6. [Version Management System](#version-management-system)
|
|
17
|
+
7. [Resource Creation Flow](#resource-creation-flow)
|
|
18
|
+
8. [Testing Architecture](#testing-architecture)
|
|
19
|
+
9. [Multi-Language Support](#multi-language-support)
|
|
20
|
+
10. [Design Principles](#design-principles)
|
|
21
|
+
11. [Future Extensibility](#future-extensibility)
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Executive Summary
|
|
26
|
+
|
|
27
|
+
The `@microsoft/terraform-cdk-constructs` package is a TypeScript-based library that provides **Level 2 (L2) constructs** for Azure infrastructure using the **AZAPI provider**. Version 1.0.0 represents a major architectural shift from AzureRM provider to AZAPI provider, enabling direct Azure REST API access without provider limitations.
|
|
28
|
+
|
|
29
|
+
### Key Characteristics
|
|
30
|
+
|
|
31
|
+
- **Direct API Access**: Uses AZAPI provider for immediate access to new Azure features
|
|
32
|
+
- **Version-Aware**: Automatic API version management with migration guidance
|
|
33
|
+
- **Multi-Language**: JSII-compliant for TypeScript, Python, Java, and C#/.NET
|
|
34
|
+
- **Self-Contained**: Includes AZAPI provider bindings (no external generation needed)
|
|
35
|
+
- **Production-Ready**: Comprehensive testing with unit, integration, and E2E tests
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Architecture Overview
|
|
40
|
+
|
|
41
|
+
```mermaid
|
|
42
|
+
graph TB
|
|
43
|
+
subgraph "User Layer"
|
|
44
|
+
A[TypeScript/Python/Java/C# Code]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
subgraph "L2 Constructs Layer"
|
|
48
|
+
B[ResourceGroup]
|
|
49
|
+
C[StorageAccount]
|
|
50
|
+
D[Future Services]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
subgraph "Core Framework Layer"
|
|
54
|
+
E[AzapiResource Base Class]
|
|
55
|
+
F[ApiVersionManager]
|
|
56
|
+
G[SchemaMapper]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
subgraph "AZAPI Provider Layer"
|
|
60
|
+
H[AZAPI Resource]
|
|
61
|
+
I[AZAPI Data Sources]
|
|
62
|
+
J[Client Config]
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
subgraph "Azure Layer"
|
|
66
|
+
K[Azure REST APIs]
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
A --> B
|
|
70
|
+
A --> C
|
|
71
|
+
A --> D
|
|
72
|
+
|
|
73
|
+
B --> E
|
|
74
|
+
C --> E
|
|
75
|
+
D --> E
|
|
76
|
+
|
|
77
|
+
E --> F
|
|
78
|
+
E --> G
|
|
79
|
+
E --> H
|
|
80
|
+
|
|
81
|
+
H --> K
|
|
82
|
+
I --> K
|
|
83
|
+
J --> K
|
|
84
|
+
|
|
85
|
+
F -.Version Resolution.-> E
|
|
86
|
+
G -.Schema Validation.-> E
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Architectural Layers
|
|
90
|
+
|
|
91
|
+
1. **User Layer**: Developer code in multiple languages
|
|
92
|
+
2. **L2 Constructs Layer**: High-level Azure service abstractions
|
|
93
|
+
3. **Core Framework Layer**: Version management and validation
|
|
94
|
+
4. **AZAPI Provider Layer**: Direct Azure API communication
|
|
95
|
+
5. **Azure Layer**: Azure REST APIs
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Core Components
|
|
100
|
+
|
|
101
|
+
### 1. AzapiResource (Base Class)
|
|
102
|
+
|
|
103
|
+
**Location**: [`src/core-azure/lib/azapi/azapi-resource.ts`](../src/core-azure/lib/azapi/azapi-resource.ts)
|
|
104
|
+
|
|
105
|
+
The foundational abstract class for all Azure resources with version awareness.
|
|
106
|
+
|
|
107
|
+
#### Responsibilities
|
|
108
|
+
|
|
109
|
+
- **Version Resolution**: Automatic latest version or explicit pinning
|
|
110
|
+
- **Schema Management**: Load and validate API schemas
|
|
111
|
+
- **Property Processing**: Transform and validate properties
|
|
112
|
+
- **Migration Analysis**: Detect breaking changes and provide guidance
|
|
113
|
+
- **Resource Creation**: Generate AZAPI Terraform resources
|
|
114
|
+
- **Lifecycle Management**: RBAC and diagnostic settings support
|
|
115
|
+
|
|
116
|
+
#### Key Features
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
export abstract class AzapiResource extends Construct {
|
|
120
|
+
// Version management
|
|
121
|
+
public readonly resolvedApiVersion: string;
|
|
122
|
+
public readonly schema: ApiSchema;
|
|
123
|
+
public readonly versionConfig: VersionConfig;
|
|
124
|
+
|
|
125
|
+
// Abstract methods (must be implemented by subclasses)
|
|
126
|
+
protected abstract defaultVersion(): string;
|
|
127
|
+
protected abstract resourceType(): string;
|
|
128
|
+
protected abstract apiSchema(): ApiSchema;
|
|
129
|
+
protected abstract createResourceBody(props: any): any;
|
|
130
|
+
|
|
131
|
+
// Public API
|
|
132
|
+
public latestVersion(): string | undefined;
|
|
133
|
+
public supportedVersions(): string[];
|
|
134
|
+
public analyzeMigrationTo(targetVersion: string): MigrationAnalysis;
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 2. ApiVersionManager (Singleton)
|
|
139
|
+
|
|
140
|
+
**Location**: [`src/core-azure/lib/version-manager/api-version-manager.ts`](../src/core-azure/lib/version-manager/api-version-manager.ts)
|
|
141
|
+
|
|
142
|
+
Centralized registry for managing Azure API versions across all resource types.
|
|
143
|
+
|
|
144
|
+
#### Responsibilities
|
|
145
|
+
|
|
146
|
+
- **Version Registration**: Store version metadata and schemas
|
|
147
|
+
- **Version Resolution**: Find latest/best version based on constraints
|
|
148
|
+
- **Compatibility Analysis**: Analyze migration paths between versions
|
|
149
|
+
- **Lifecycle Tracking**: Monitor version deprecation and sunset phases
|
|
150
|
+
|
|
151
|
+
#### Key Features
|
|
152
|
+
|
|
153
|
+
```typescript
|
|
154
|
+
export class ApiVersionManager {
|
|
155
|
+
// Singleton access
|
|
156
|
+
public static instance(): ApiVersionManager;
|
|
157
|
+
|
|
158
|
+
// Version registration
|
|
159
|
+
public registerResourceType(resourceType: string, versions: VersionConfig[]): void;
|
|
160
|
+
|
|
161
|
+
// Version queries
|
|
162
|
+
public latestVersion(resourceType: string): string | undefined;
|
|
163
|
+
public supportedVersions(resourceType: string): string[];
|
|
164
|
+
public versionConfig(resourceType: string, version: string): VersionConfig | undefined;
|
|
165
|
+
|
|
166
|
+
// Analysis
|
|
167
|
+
public analyzeMigration(resourceType: string, from: string, to: string): MigrationAnalysis;
|
|
168
|
+
public validateVersionSupport(resourceType: string, version: string): boolean;
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 3. SchemaMapper
|
|
173
|
+
|
|
174
|
+
**Location**: [`src/core-azure/lib/azapi/schema-mapper/schema-mapper.ts`](../src/core-azure/lib/azapi/schema-mapper/schema-mapper.ts)
|
|
175
|
+
|
|
176
|
+
Property transformation and validation engine for API schemas.
|
|
177
|
+
|
|
178
|
+
#### Responsibilities
|
|
179
|
+
|
|
180
|
+
- **Property Transformation**: Map properties between schema versions
|
|
181
|
+
- **Validation**: Comprehensive property validation with detailed errors
|
|
182
|
+
- **Default Application**: Inject default values from schemas
|
|
183
|
+
- **Type Conversion**: Convert between property types safely
|
|
184
|
+
|
|
185
|
+
#### Key Features
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
export class SchemaMapper {
|
|
189
|
+
public static create(schema: ApiSchema): SchemaMapper;
|
|
190
|
+
|
|
191
|
+
// Transformation
|
|
192
|
+
public transformProperties(sourceProps: any, targetSchema: ApiSchema): any;
|
|
193
|
+
public mapProperty(name: string, value: any, target: PropertyDefinition): any;
|
|
194
|
+
|
|
195
|
+
// Validation
|
|
196
|
+
public validateProperties(properties: any): ValidationResult;
|
|
197
|
+
|
|
198
|
+
// Defaults
|
|
199
|
+
public applyDefaults(properties: any): any;
|
|
200
|
+
}
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### 4. AZAPI Provider Classes
|
|
204
|
+
|
|
205
|
+
**Location**: [`src/core-azure/lib/azapi/providers-azapi/`](../src/core-azure/lib/azapi/providers-azapi/)
|
|
206
|
+
|
|
207
|
+
Pre-generated TypeScript classes for AZAPI provider resources and data sources.
|
|
208
|
+
|
|
209
|
+
#### Included Classes
|
|
210
|
+
|
|
211
|
+
- **Resource**: Main AZAPI resource for Azure API calls
|
|
212
|
+
- **DataAzapiClientConfig**: Azure subscription and tenant information
|
|
213
|
+
- **DataAzapiResource**: Read existing Azure resources
|
|
214
|
+
- **ResourceAction**: Invoke Azure resource actions
|
|
215
|
+
- **UpdateResource**: Update existing resources
|
|
216
|
+
- **DataPlaneResource**: Data plane operations
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Package Structure
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
terraform-cdk-constructs/
|
|
224
|
+
├── src/
|
|
225
|
+
│ ├── index.ts # Main package entry point
|
|
226
|
+
│ │
|
|
227
|
+
│ ├── core-azure/ # Core framework
|
|
228
|
+
│ │ ├── index.ts # Core exports
|
|
229
|
+
│ │ └── lib/
|
|
230
|
+
│ │ ├── azapi/
|
|
231
|
+
│ │ │ ├── azapi-resource.ts # Base class for all resources
|
|
232
|
+
│ │ │ ├── azapi-exports.ts # Public API exports
|
|
233
|
+
│ │ │ ├── providers-azapi/ # AZAPI provider classes
|
|
234
|
+
│ │ │ └── schema-mapper/ # Property transformation
|
|
235
|
+
│ │ │ └── schema-mapper.ts
|
|
236
|
+
│ │ └── version-manager/ # Version management
|
|
237
|
+
│ │ ├── api-version-manager.ts
|
|
238
|
+
│ │ ├── version-manager.ts
|
|
239
|
+
│ │ └── interfaces/
|
|
240
|
+
│ │ └── version-interfaces.ts
|
|
241
|
+
│ │
|
|
242
|
+
│ ├── azure-resourcegroup/ # Resource Group construct
|
|
243
|
+
│ │ ├── index.ts
|
|
244
|
+
│ │ ├── lib/
|
|
245
|
+
│ │ │ ├── resource-group.ts # Implementation
|
|
246
|
+
│ │ │ └── resource-group-schemas.ts # API schemas
|
|
247
|
+
│ │ └── test/
|
|
248
|
+
│ │ ├── resource-group.spec.ts # Unit tests
|
|
249
|
+
│ │ └── resource-group.integ.ts # Integration tests
|
|
250
|
+
│ │
|
|
251
|
+
│ ├── azure-storageaccount/ # Storage Account construct
|
|
252
|
+
│ │ ├── index.ts
|
|
253
|
+
│ │ ├── lib/
|
|
254
|
+
│ │ │ ├── storage-account.ts
|
|
255
|
+
│ │ │ └── storage-account-schemas.ts
|
|
256
|
+
│ │ └── test/
|
|
257
|
+
│ │ ├── storage-account.spec.ts
|
|
258
|
+
│ │ └── storage-account.integ.ts
|
|
259
|
+
│ │
|
|
260
|
+
│ ├── testing/ # Testing utilities
|
|
261
|
+
│ │ └── index.ts # Test helpers
|
|
262
|
+
│ │
|
|
263
|
+
│ └── util/ # Utility functions
|
|
264
|
+
│ ├── azureTenantIdHelpers.ts
|
|
265
|
+
│ └── randomName.ts
|
|
266
|
+
│
|
|
267
|
+
├── docs/ # Documentation
|
|
268
|
+
│ ├── ARCHITECTURE.md # This file
|
|
269
|
+
│ ├── design_guide.md # Design guidelines
|
|
270
|
+
│ ├── testing.md # Testing guide
|
|
271
|
+
│ └── versioning-and-migrations-user-guide.md
|
|
272
|
+
│
|
|
273
|
+
├── .projenrc.ts # Projen configuration
|
|
274
|
+
├── package.json # NPM package manifest
|
|
275
|
+
├── tsconfig.dev.json # TypeScript configuration
|
|
276
|
+
└── README.md # Package readme
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Key Architectural Patterns
|
|
282
|
+
|
|
283
|
+
### 1. Template Method Pattern
|
|
284
|
+
|
|
285
|
+
**AzapiResource** uses the Template Method pattern where the base class defines the algorithm structure, and subclasses implement specific steps:
|
|
286
|
+
|
|
287
|
+
```typescript
|
|
288
|
+
// Base class defines the algorithm
|
|
289
|
+
constructor(scope: Construct, id: string, props: AzapiResourceProps) {
|
|
290
|
+
super(scope, id);
|
|
291
|
+
|
|
292
|
+
// 1. Resolve version
|
|
293
|
+
this.resolvedApiVersion = this._resolveApiVersion(props.apiVersion);
|
|
294
|
+
|
|
295
|
+
// 2. Load schema
|
|
296
|
+
this.schema = this.apiSchema(); // Abstract method
|
|
297
|
+
|
|
298
|
+
// 3. Process properties
|
|
299
|
+
const processedProps = this._processProperties(props);
|
|
300
|
+
|
|
301
|
+
// 4. Validate
|
|
302
|
+
this.validationResult = this._validateProperties(processedProps);
|
|
303
|
+
|
|
304
|
+
// 5. Create resource
|
|
305
|
+
this._createAzureResource(processedProps); // Uses abstract createResourceBody()
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### 2. Singleton Pattern
|
|
310
|
+
|
|
311
|
+
**ApiVersionManager** uses a JSII-compliant singleton to ensure a single version registry:
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
export class ApiVersionManager {
|
|
315
|
+
private static _instance: ApiVersionManager | undefined;
|
|
316
|
+
|
|
317
|
+
public static instance(): ApiVersionManager {
|
|
318
|
+
if (!ApiVersionManager._instance) {
|
|
319
|
+
ApiVersionManager._instance = new ApiVersionManager();
|
|
320
|
+
}
|
|
321
|
+
return ApiVersionManager._instance;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
private constructor() {
|
|
325
|
+
// Initialize registries
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### 3. Factory Pattern
|
|
331
|
+
|
|
332
|
+
**SchemaMapper** uses a factory method for creating validated instances:
|
|
333
|
+
|
|
334
|
+
```typescript
|
|
335
|
+
export class SchemaMapper {
|
|
336
|
+
public static create(schema: ApiSchema): SchemaMapper {
|
|
337
|
+
// Validate schema
|
|
338
|
+
if (!schema || !schema.resourceType) {
|
|
339
|
+
throw new Error("Invalid schema");
|
|
340
|
+
}
|
|
341
|
+
return new SchemaMapper(schema);
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
private constructor(schema: ApiSchema) {
|
|
345
|
+
// Private constructor enforces factory usage
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
### 4. Strategy Pattern
|
|
351
|
+
|
|
352
|
+
Version resolution uses different strategies based on context:
|
|
353
|
+
|
|
354
|
+
- **Automatic**: Use latest active version
|
|
355
|
+
- **Pinned**: Use explicitly specified version
|
|
356
|
+
- **Constrained**: Use version matching constraints
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
## Version Management System
|
|
361
|
+
|
|
362
|
+
### Version Lifecycle
|
|
363
|
+
|
|
364
|
+
```mermaid
|
|
365
|
+
stateDiagram-v2
|
|
366
|
+
[*] --> Active: Release
|
|
367
|
+
Active --> Maintenance: Feature Complete
|
|
368
|
+
Maintenance --> Deprecated: Migration Available
|
|
369
|
+
Deprecated --> Sunset: End of Support
|
|
370
|
+
Sunset --> [*]: Removed
|
|
371
|
+
|
|
372
|
+
note right of Active
|
|
373
|
+
Full support
|
|
374
|
+
New features
|
|
375
|
+
Recommended
|
|
376
|
+
end note
|
|
377
|
+
|
|
378
|
+
note right of Maintenance
|
|
379
|
+
Bug fixes only
|
|
380
|
+
No new features
|
|
381
|
+
Still supported
|
|
382
|
+
end note
|
|
383
|
+
|
|
384
|
+
note right of Deprecated
|
|
385
|
+
Migration recommended
|
|
386
|
+
Limited support
|
|
387
|
+
Warnings shown
|
|
388
|
+
end note
|
|
389
|
+
|
|
390
|
+
note right of Sunset
|
|
391
|
+
End of life
|
|
392
|
+
Immediate migration
|
|
393
|
+
May be removed
|
|
394
|
+
end note
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
### Version Resolution Algorithm
|
|
398
|
+
|
|
399
|
+
```typescript
|
|
400
|
+
function resolveApiVersion(explicitVersion?: string, resourceType: string): string {
|
|
401
|
+
// 1. If version explicitly specified, validate and use it
|
|
402
|
+
if (explicitVersion) {
|
|
403
|
+
if (!validateVersionSupport(resourceType, explicitVersion)) {
|
|
404
|
+
throw new Error(`Unsupported version: ${explicitVersion}`);
|
|
405
|
+
}
|
|
406
|
+
return explicitVersion;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// 2. Try to get latest active version from registry
|
|
410
|
+
const latestVersion = apiVersionManager.latestVersion(resourceType);
|
|
411
|
+
if (latestVersion) {
|
|
412
|
+
return latestVersion;
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// 3. Fall back to default version from subclass
|
|
416
|
+
const defaultVersion = defaultVersion();
|
|
417
|
+
console.warn(`Using default version: ${defaultVersion}`);
|
|
418
|
+
return defaultVersion;
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### Migration Analysis
|
|
423
|
+
|
|
424
|
+
```mermaid
|
|
425
|
+
graph LR
|
|
426
|
+
A[Source Version] --> B[Collect Breaking Changes]
|
|
427
|
+
B --> C[Calculate Effort]
|
|
428
|
+
C --> D[Check Auto-Upgrade]
|
|
429
|
+
D --> E[Generate Warnings]
|
|
430
|
+
E --> F[Return Analysis]
|
|
431
|
+
|
|
432
|
+
style A fill:#e1f5ff
|
|
433
|
+
style F fill:#c8e6c9
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## Resource Creation Flow
|
|
439
|
+
|
|
440
|
+
### Complete Lifecycle
|
|
441
|
+
|
|
442
|
+
```mermaid
|
|
443
|
+
sequenceDiagram
|
|
444
|
+
participant U as User Code
|
|
445
|
+
participant RC as Resource Construct
|
|
446
|
+
participant AR as AzapiResource
|
|
447
|
+
participant AVM as ApiVersionManager
|
|
448
|
+
participant SM as SchemaMapper
|
|
449
|
+
participant AP as AZAPI Provider
|
|
450
|
+
participant Azure as Azure API
|
|
451
|
+
|
|
452
|
+
U->>RC: new ResourceGroup(props)
|
|
453
|
+
RC->>RC: ensureSchemasRegistered()
|
|
454
|
+
RC->>AVM: registerResourceType()
|
|
455
|
+
|
|
456
|
+
RC->>AR: super(scope, id, props)
|
|
457
|
+
AR->>AVM: resolveApiVersion()
|
|
458
|
+
AVM-->>AR: resolvedVersion
|
|
459
|
+
|
|
460
|
+
AR->>AVM: versionConfig()
|
|
461
|
+
AVM-->>AR: schema + metadata
|
|
462
|
+
|
|
463
|
+
AR->>SM: create(schema)
|
|
464
|
+
SM-->>AR: schemaMapper
|
|
465
|
+
|
|
466
|
+
AR->>SM: applyDefaults(props)
|
|
467
|
+
SM-->>AR: propsWithDefaults
|
|
468
|
+
|
|
469
|
+
AR->>SM: validateProperties()
|
|
470
|
+
SM-->>AR: validationResult
|
|
471
|
+
|
|
472
|
+
alt Validation Failed
|
|
473
|
+
AR-->>U: throw Error
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
AR->>AVM: analyzeMigration()
|
|
477
|
+
AVM-->>AR: migrationAnalysis
|
|
478
|
+
|
|
479
|
+
AR->>RC: createResourceBody()
|
|
480
|
+
RC-->>AR: resourceBody
|
|
481
|
+
|
|
482
|
+
AR->>AP: new Resource(config)
|
|
483
|
+
AP->>Azure: REST API Call
|
|
484
|
+
Azure-->>AP: Response
|
|
485
|
+
AP-->>AR: terraformResource
|
|
486
|
+
|
|
487
|
+
AR->>AR: logFrameworkMessages()
|
|
488
|
+
AR-->>U: Resource Instance
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
### Step-by-Step Process
|
|
492
|
+
|
|
493
|
+
1. **User Creates Resource**: Instantiates L2 construct (e.g., ResourceGroup)
|
|
494
|
+
2. **Schema Registration**: Ensure API versions registered with ApiVersionManager
|
|
495
|
+
3. **Version Resolution**: Determine which API version to use
|
|
496
|
+
4. **Schema Loading**: Load schema and version configuration
|
|
497
|
+
5. **Property Processing**: Apply defaults and transformations
|
|
498
|
+
6. **Validation**: Validate properties against schema
|
|
499
|
+
7. **Migration Analysis**: Check for deprecations and breaking changes
|
|
500
|
+
8. **Resource Creation**: Generate AZAPI Terraform resource
|
|
501
|
+
9. **Warning Display**: Show deprecation warnings and migration guidance
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## Testing Architecture
|
|
506
|
+
|
|
507
|
+
### Testing Pyramid
|
|
508
|
+
|
|
509
|
+
```mermaid
|
|
510
|
+
graph TB
|
|
511
|
+
subgraph "E2E Tests (Few)"
|
|
512
|
+
A[Complete Scenarios<br/>Real Deployments]
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
subgraph "Integration Tests (Some)"
|
|
516
|
+
B[Terraform Apply<br/>Idempotency Check<br/>Terraform Destroy]
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
subgraph "Unit Tests (Many)"
|
|
520
|
+
C[Snapshot Tests<br/>Terraform Validate<br/>Terraform Plan]
|
|
521
|
+
end
|
|
522
|
+
|
|
523
|
+
A --> B
|
|
524
|
+
B --> C
|
|
525
|
+
|
|
526
|
+
style A fill:#ffcdd2
|
|
527
|
+
style B fill:#fff9c4
|
|
528
|
+
style C fill:#c8e6c9
|
|
529
|
+
```
|
|
530
|
+
|
|
531
|
+
### Test Types
|
|
532
|
+
|
|
533
|
+
#### Unit Tests (`.spec.ts`)
|
|
534
|
+
|
|
535
|
+
**Purpose**: Fast validation without Azure deployment
|
|
536
|
+
|
|
537
|
+
**Tools**: Jest, CDKTF Testing Framework
|
|
538
|
+
|
|
539
|
+
**Coverage**:
|
|
540
|
+
- Snapshot testing for configuration drift detection
|
|
541
|
+
- Terraform validate for syntax checking
|
|
542
|
+
- Terraform plan for basic validation
|
|
543
|
+
|
|
544
|
+
```typescript
|
|
545
|
+
describe("Resource Group With Defaults", () => {
|
|
546
|
+
it("renders correctly and matches snapshot", () => {
|
|
547
|
+
const stack = new TerraformStack(app, "test");
|
|
548
|
+
new ResourceGroup(stack, "rg", {
|
|
549
|
+
name: "test-rg",
|
|
550
|
+
location: "eastus"
|
|
551
|
+
});
|
|
552
|
+
expect(Testing.synth(stack)).toMatchSnapshot();
|
|
553
|
+
});
|
|
554
|
+
|
|
555
|
+
it("produces valid terraform configuration", () => {
|
|
556
|
+
expect(Testing.fullSynth(stack)).toBeValidTerraform();
|
|
557
|
+
});
|
|
558
|
+
});
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
#### Integration Tests (`.integ.ts`)
|
|
562
|
+
|
|
563
|
+
**Purpose**: Real deployment validation
|
|
564
|
+
|
|
565
|
+
**Tools**: Jest, Azure CLI authentication
|
|
566
|
+
|
|
567
|
+
**Coverage**:
|
|
568
|
+
- terraform apply → Create resources
|
|
569
|
+
- terraform plan → Verify idempotency
|
|
570
|
+
- terraform destroy → Cleanup validation
|
|
571
|
+
|
|
572
|
+
```typescript
|
|
573
|
+
describe("Resource Group Integration", () => {
|
|
574
|
+
it("can be created and destroyed", () => {
|
|
575
|
+
const app = Testing.app();
|
|
576
|
+
const stack = new TerraformStack(app, "test");
|
|
577
|
+
|
|
578
|
+
new ResourceGroup(stack, "rg", {
|
|
579
|
+
name: `rg-test-${randomName()}`,
|
|
580
|
+
location: "eastus"
|
|
581
|
+
});
|
|
582
|
+
|
|
583
|
+
const output = app.synth();
|
|
584
|
+
TerraformApplyAndCheckIdempotency(output);
|
|
585
|
+
TerraformDestroy(output);
|
|
586
|
+
});
|
|
587
|
+
});
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
### Test Utilities
|
|
591
|
+
|
|
592
|
+
**Location**: [`src/testing/index.ts`](../src/testing/index.ts)
|
|
593
|
+
|
|
594
|
+
Provides helper functions for testing:
|
|
595
|
+
|
|
596
|
+
- `TerraformApply()`: Deploy infrastructure
|
|
597
|
+
- `TerraformPlan()`: Generate execution plan
|
|
598
|
+
- `TerraformPlanExitCode()`: Check plan status
|
|
599
|
+
- `TerraformDestroy()`: Cleanup resources
|
|
600
|
+
- `TerraformApplyAndCheckIdempotency()`: Full integration test
|
|
601
|
+
- `TerraformIdempotentCheck()`: Verify no changes needed
|
|
602
|
+
|
|
603
|
+
---
|
|
604
|
+
|
|
605
|
+
## Multi-Language Support
|
|
606
|
+
|
|
607
|
+
### JSII Compilation
|
|
608
|
+
|
|
609
|
+
The package uses **JSII (JavaScript Interoperability Interface)** to generate bindings for multiple languages:
|
|
610
|
+
|
|
611
|
+
```mermaid
|
|
612
|
+
graph LR
|
|
613
|
+
A[TypeScript Source] --> B[JSII Compiler]
|
|
614
|
+
B --> C[JavaScript/TypeScript]
|
|
615
|
+
B --> D[Python]
|
|
616
|
+
B --> E[Java]
|
|
617
|
+
B --> F[C#/.NET]
|
|
618
|
+
|
|
619
|
+
style A fill:#e1f5ff
|
|
620
|
+
style B fill:#fff9c4
|
|
621
|
+
style C fill:#c8e6c9
|
|
622
|
+
style D fill:#c8e6c9
|
|
623
|
+
style E fill:#c8e6c9
|
|
624
|
+
style F fill:#c8e6c9
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Language-Specific Packages
|
|
628
|
+
|
|
629
|
+
| Language | Package | Example |
|
|
630
|
+
|----------|---------|---------|
|
|
631
|
+
| TypeScript/JavaScript | `@microsoft/terraform-cdk-constructs` | `npm install @microsoft/terraform-cdk-constructs` |
|
|
632
|
+
| Python | `microsoft-cdktfconstructs` | `pip install microsoft-cdktfconstructs` |
|
|
633
|
+
| Java | `com.microsoft.terraformcdkconstructs` | Maven/Gradle dependency |
|
|
634
|
+
| C#/.NET | `Microsoft.Cdktf.Azure.TFConstructs` | `dotnet add package Microsoft.Cdktf.Azure.TFConstructs` |
|
|
635
|
+
|
|
636
|
+
### JSII Compatibility Guidelines
|
|
637
|
+
|
|
638
|
+
To ensure multi-language support, the codebase follows JSII constraints:
|
|
639
|
+
|
|
640
|
+
1. **No function types in public APIs** (use interfaces with methods)
|
|
641
|
+
2. **Use concrete types** (avoid complex generics)
|
|
642
|
+
3. **Implement proper serialization** for all data structures
|
|
643
|
+
4. **Explicit return types** for all public methods
|
|
644
|
+
5. **Singleton patterns** using instance methods
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
## Design Principles
|
|
649
|
+
|
|
650
|
+
### 1. User-Centric Design
|
|
651
|
+
|
|
652
|
+
Focus on how developers think, not how Azure APIs work:
|
|
653
|
+
|
|
654
|
+
```typescript
|
|
655
|
+
// Good: Simple, intuitive API
|
|
656
|
+
new ResourceGroup(this, "rg", {
|
|
657
|
+
name: "my-rg",
|
|
658
|
+
location: "eastus"
|
|
659
|
+
});
|
|
660
|
+
|
|
661
|
+
// Avoid: Exposing Azure API complexity
|
|
662
|
+
new ResourceGroup(this, "rg", {
|
|
663
|
+
properties: {
|
|
664
|
+
location: "eastus"
|
|
665
|
+
},
|
|
666
|
+
type: "Microsoft.Resources/resourceGroups@2024-11-01"
|
|
667
|
+
});
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
### 2. Sensible Defaults
|
|
671
|
+
|
|
672
|
+
Minimize required properties, provide secure defaults:
|
|
673
|
+
|
|
674
|
+
```typescript
|
|
675
|
+
// Only essential properties required
|
|
676
|
+
const rg = new ResourceGroup(this, "rg", {
|
|
677
|
+
name: "my-rg",
|
|
678
|
+
location: "eastus"
|
|
679
|
+
// Optional: tags, managedBy, apiVersion, etc.
|
|
680
|
+
});
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### 3. Version Transparency
|
|
684
|
+
|
|
685
|
+
Automatic version management with opt-in pinning:
|
|
686
|
+
|
|
687
|
+
```typescript
|
|
688
|
+
// Automatic (recommended): Uses latest active version
|
|
689
|
+
new ResourceGroup(this, "rg", { name: "rg", location: "eastus" });
|
|
690
|
+
|
|
691
|
+
// Pinned (for stability): Uses specific version
|
|
692
|
+
new ResourceGroup(this, "rg", {
|
|
693
|
+
name: "rg",
|
|
694
|
+
location: "eastus",
|
|
695
|
+
apiVersion: "2024-11-01"
|
|
696
|
+
});
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
### 4. Progressive Disclosure
|
|
700
|
+
|
|
701
|
+
Advanced features available but not required:
|
|
702
|
+
|
|
703
|
+
- **Level 1**: Basic resource creation with defaults
|
|
704
|
+
- **Level 2**: Custom configuration with props
|
|
705
|
+
- **Level 3**: Advanced features (RBAC, diagnostics)
|
|
706
|
+
- **Level 4**: Version management and migration
|
|
707
|
+
|
|
708
|
+
### 5. Fail-Fast Validation
|
|
709
|
+
|
|
710
|
+
Catch errors early with detailed messages:
|
|
711
|
+
|
|
712
|
+
```typescript
|
|
713
|
+
// Validation happens at construct time
|
|
714
|
+
try {
|
|
715
|
+
new ResourceGroup(this, "rg", {
|
|
716
|
+
name: "", // Invalid
|
|
717
|
+
location: "eastus"
|
|
718
|
+
});
|
|
719
|
+
} catch (error) {
|
|
720
|
+
// Error: Property validation failed for Microsoft.Resources/resourceGroups:
|
|
721
|
+
// - Required property 'name' is missing
|
|
722
|
+
}
|
|
723
|
+
```
|
|
724
|
+
|
|
725
|
+
---
|
|
726
|
+
|
|
727
|
+
## Future Extensibility
|
|
728
|
+
|
|
729
|
+
### Adding New Azure Services
|
|
730
|
+
|
|
731
|
+
The framework is designed for easy extensibility. Adding a new service requires:
|
|
732
|
+
|
|
733
|
+
1. **Create service directory** in `src/`
|
|
734
|
+
2. **Define schemas** for each API version
|
|
735
|
+
3. **Implement construct** extending `AzapiResource`
|
|
736
|
+
4. **Register versions** with `ApiVersionManager`
|
|
737
|
+
5. **Add tests** (unit and integration)
|
|
738
|
+
|
|
739
|
+
```typescript
|
|
740
|
+
// Example: Adding a new service
|
|
741
|
+
export class KeyVault extends AzapiResource {
|
|
742
|
+
protected defaultVersion(): string {
|
|
743
|
+
return "2024-01-01";
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
protected resourceType(): string {
|
|
747
|
+
return "Microsoft.KeyVault/vaults";
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
protected apiSchema(): ApiSchema {
|
|
751
|
+
return this.resolveSchema();
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
protected createResourceBody(props: any): any {
|
|
755
|
+
return {
|
|
756
|
+
location: props.location,
|
|
757
|
+
properties: {
|
|
758
|
+
sku: { name: props.sku || "standard" },
|
|
759
|
+
tenantId: props.tenantId
|
|
760
|
+
}
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
### Adding New API Versions
|
|
767
|
+
|
|
768
|
+
When Azure releases a new API version:
|
|
769
|
+
|
|
770
|
+
1. **Define new schema** in service schemas file
|
|
771
|
+
2. **Add version config** with lifecycle metadata
|
|
772
|
+
3. **Register with ApiVersionManager**
|
|
773
|
+
4. **Update tests** to cover new version
|
|
774
|
+
5. **Document breaking changes** if any
|
|
775
|
+
|
|
776
|
+
### Extensibility Points
|
|
777
|
+
|
|
778
|
+
- **Custom Validation Rules**: Extend `ValidationRule` interface
|
|
779
|
+
- **Property Transformers**: Add custom transformation logic
|
|
780
|
+
- **Migration Strategies**: Define version-specific migrations
|
|
781
|
+
- **Provider Extensions**: Add new AZAPI provider features
|
|
782
|
+
|
|
783
|
+
---
|
|
784
|
+
|
|
785
|
+
## Key Innovations
|
|
786
|
+
|
|
787
|
+
### 1. Automatic Version Resolution
|
|
788
|
+
|
|
789
|
+
Unlike traditional Terraform providers, this framework automatically resolves to the latest API version, keeping infrastructure current with minimal effort.
|
|
790
|
+
|
|
791
|
+
### 2. Migration Analysis Engine
|
|
792
|
+
|
|
793
|
+
Built-in analysis of breaking changes between versions with effort estimation and automatic upgrade feasibility detection.
|
|
794
|
+
|
|
795
|
+
### 3. Schema-Driven Development
|
|
796
|
+
|
|
797
|
+
All validation and transformation is driven by API schemas, ensuring type safety and consistency across versions.
|
|
798
|
+
|
|
799
|
+
### 4. Framework-Level Abstractions
|
|
800
|
+
|
|
801
|
+
The `AzapiResource` base class provides a unified framework that handles version management, validation, and transformation transparently.
|
|
802
|
+
|
|
803
|
+
### 5. Zero Provider Generation
|
|
804
|
+
|
|
805
|
+
AZAPI provider classes are included in the package, eliminating the need for external provider generation tools.
|
|
806
|
+
|
|
807
|
+
---
|
|
808
|
+
|
|
809
|
+
## Conclusion
|
|
810
|
+
|
|
811
|
+
The `@microsoft/terraform-cdk-constructs` package represents a modern approach to Azure infrastructure as code, combining:
|
|
812
|
+
|
|
813
|
+
- **Direct API Access** via AZAPI provider
|
|
814
|
+
- **Intelligent Version Management** with automatic resolution
|
|
815
|
+
- **Type Safety** through JSII and TypeScript
|
|
816
|
+
- **Multi-Language Support** for diverse development teams
|
|
817
|
+
- **Comprehensive Testing** ensuring production readiness
|
|
818
|
+
|
|
819
|
+
The architecture is designed for **extensibility**, allowing easy addition of new Azure services while maintaining backward compatibility and providing migration guidance for existing resources.
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
823
|
+
## References
|
|
824
|
+
|
|
825
|
+
- [Design Guide](./design_guide.md) - Module design guidelines
|
|
826
|
+
- [Testing Guide](./testing.md) - Testing practices and utilities
|
|
827
|
+
- [Versioning User Guide](./versioning-and-migrations-user-guide.md) - API version management
|
|
828
|
+
- [README](../README.md) - Package overview and quick start
|
|
829
|
+
- [CDKTF Documentation](https://developer.hashicorp.com/terraform/cdktf) - Terraform CDK reference
|
|
830
|
+
- [JSII Documentation](https://aws.github.io/jsii/) - Multi-language support
|
|
831
|
+
|
|
832
|
+
---
|
|
833
|
+
|
|
834
|
+
**Document Version**: 1.0.0
|
|
835
|
+
**Last Updated**: 2025-10-22
|
|
836
|
+
**Maintained By**: Microsoft Cloud Infrastructure Solutions Team
|