@microsoft/terraform-cdk-constructs 0.0.3-pre.7 → 1.2.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 +67552 -10179
- package/API.md +69252 -9464
- package/LICENSE +16 -18
- package/README.md +186 -75
- package/cdktf.json +1 -1
- package/docs/ARCHITECTURE.md +836 -0
- package/docs/azapi-testing-architecture.md +482 -0
- package/docs/monitoring-guide.md +206 -0
- package/docs/testing.md +99 -114
- package/docs/versioning-and-migrations-user-guide.md +409 -0
- package/go.mod +12 -12
- package/go.sum +27 -23
- package/lib/azure-actiongroup/index.d.ts +10 -0
- package/lib/azure-actiongroup/index.js +11 -1
- package/lib/azure-actiongroup/lib/action-group-schemas.d.ts +24 -0
- package/lib/azure-actiongroup/lib/action-group-schemas.js +201 -0
- package/lib/azure-actiongroup/lib/action-group.d.ts +312 -0
- package/lib/azure-actiongroup/lib/action-group.js +201 -0
- package/lib/azure-actiongroup/lib/index.d.ts +5 -1
- package/lib/azure-actiongroup/lib/index.js +6 -2
- package/lib/azure-actiongroup/test/action-group.integ.d.ts +9 -0
- package/lib/azure-actiongroup/test/action-group.integ.js +79 -0
- package/lib/azure-actiongroup/test/action-group.spec.d.ts +8 -0
- package/lib/azure-actiongroup/test/action-group.spec.js +602 -0
- package/lib/azure-activitylogalert/index.d.ts +11 -0
- package/lib/azure-activitylogalert/index.js +28 -0
- package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.d.ts +24 -0
- package/lib/azure-activitylogalert/lib/activity-log-alert-schemas.js +182 -0
- package/lib/azure-activitylogalert/lib/activity-log-alert.d.ts +236 -0
- package/lib/azure-activitylogalert/lib/activity-log-alert.js +212 -0
- package/lib/azure-activitylogalert/lib/index.d.ts +5 -0
- package/lib/azure-activitylogalert/lib/index.js +22 -0
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.d.ts +9 -0
- package/lib/azure-activitylogalert/test/activity-log-alert.integ.js +98 -0
- package/lib/azure-activitylogalert/test/activity-log-alert.spec.d.ts +9 -0
- package/lib/azure-activitylogalert/test/activity-log-alert.spec.js +1101 -0
- package/lib/azure-aks/index.d.ts +9 -0
- package/lib/azure-aks/index.js +28 -0
- package/lib/azure-aks/lib/aks-cluster-schemas.d.ts +505 -0
- package/lib/azure-aks/lib/aks-cluster-schemas.js +572 -0
- package/lib/azure-aks/lib/aks-cluster.d.ts +395 -0
- package/lib/azure-aks/lib/aks-cluster.js +489 -0
- package/lib/azure-aks/lib/index.d.ts +11 -0
- package/lib/azure-aks/lib/index.js +38 -0
- package/lib/azure-aks/test/aks-cluster.integ.d.ts +9 -0
- package/lib/azure-aks/test/aks-cluster.integ.js +260 -0
- package/lib/azure-aks/test/aks-cluster.spec.d.ts +8 -0
- package/lib/azure-aks/test/aks-cluster.spec.js +1396 -0
- package/lib/azure-diagnosticsettings/index.d.ts +7 -0
- package/lib/azure-diagnosticsettings/index.js +24 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.d.ts +50 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings-schemas.js +207 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.d.ts +193 -0
- package/lib/azure-diagnosticsettings/lib/diagnostic-settings.js +200 -0
- package/lib/azure-diagnosticsettings/lib/index.d.ts +8 -0
- package/lib/azure-diagnosticsettings/lib/index.js +25 -0
- package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.d.ts +8 -0
- package/lib/azure-diagnosticsettings/test/diagnostic-settings.spec.js +432 -0
- package/lib/azure-metricalert/index.d.ts +10 -1
- package/lib/azure-metricalert/index.js +11 -2
- package/lib/azure-metricalert/lib/index.d.ts +4 -0
- package/lib/azure-metricalert/lib/index.js +5 -1
- package/lib/azure-metricalert/lib/metric-alert-schemas.d.ts +24 -0
- package/lib/azure-metricalert/lib/metric-alert-schemas.js +242 -0
- package/lib/azure-metricalert/lib/metric-alert.d.ts +337 -49
- package/lib/azure-metricalert/lib/metric-alert.js +228 -104
- package/lib/azure-metricalert/test/metric-alert.integ.d.ts +9 -0
- package/lib/azure-metricalert/test/metric-alert.integ.js +123 -0
- package/lib/azure-metricalert/test/metric-alert.spec.d.ts +9 -0
- package/lib/azure-metricalert/test/metric-alert.spec.js +1266 -0
- package/lib/azure-networkinterface/index.d.ts +4 -0
- package/lib/azure-networkinterface/index.js +21 -0
- package/lib/azure-networkinterface/lib/index.d.ts +6 -0
- package/lib/azure-networkinterface/lib/index.js +22 -0
- package/lib/azure-networkinterface/lib/network-interface-schemas.d.ts +32 -0
- package/lib/azure-networkinterface/lib/network-interface-schemas.js +222 -0
- package/lib/azure-networkinterface/lib/network-interface.d.ts +265 -0
- package/lib/azure-networkinterface/lib/network-interface.js +228 -0
- package/lib/azure-networkinterface/test/network-interface.integ.d.ts +9 -0
- package/lib/azure-networkinterface/test/network-interface.integ.js +102 -0
- package/lib/azure-networkinterface/test/network-interface.spec.d.ts +8 -0
- package/lib/azure-networkinterface/test/network-interface.spec.js +655 -0
- package/lib/azure-networksecuritygroup/index.d.ts +5 -0
- package/lib/azure-networksecuritygroup/index.js +6 -1
- package/lib/azure-networksecuritygroup/lib/index.d.ts +5 -2
- package/lib/azure-networksecuritygroup/lib/index.js +14 -17
- package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.d.ts +32 -0
- package/lib/azure-networksecuritygroup/lib/network-security-group-schemas.js +198 -0
- package/lib/azure-networksecuritygroup/lib/network-security-group.d.ts +268 -0
- package/lib/azure-networksecuritygroup/lib/network-security-group.js +248 -0
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.d.ts +9 -0
- package/lib/azure-networksecuritygroup/test/network-security-group.integ.js +151 -0
- package/lib/azure-networksecuritygroup/test/network-security-group.spec.d.ts +8 -0
- package/lib/azure-networksecuritygroup/test/network-security-group.spec.js +652 -0
- package/lib/azure-publicipaddress/index.d.ts +6 -0
- package/lib/azure-publicipaddress/index.js +23 -0
- package/lib/azure-publicipaddress/lib/index.d.ts +9 -0
- package/lib/azure-publicipaddress/lib/index.js +19 -0
- package/lib/azure-publicipaddress/lib/public-ip-address-schemas.d.ts +32 -0
- package/lib/azure-publicipaddress/lib/public-ip-address-schemas.js +227 -0
- package/lib/azure-publicipaddress/lib/public-ip-address.d.ts +256 -0
- package/lib/azure-publicipaddress/lib/public-ip-address.js +267 -0
- package/lib/azure-publicipaddress/test/public-ip-address.integ.d.ts +9 -0
- package/lib/azure-publicipaddress/test/public-ip-address.integ.js +75 -0
- package/lib/azure-publicipaddress/test/public-ip-address.spec.d.ts +15 -0
- package/lib/azure-publicipaddress/test/public-ip-address.spec.js +498 -0
- 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 +72 -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 +138 -0
- package/lib/azure-storageaccount/lib/storage-account-schemas.js +378 -0
- package/lib/azure-storageaccount/lib/storage-account.d.ts +348 -0
- package/lib/azure-storageaccount/lib/storage-account.js +365 -0
- package/lib/azure-storageaccount/test/storage-account.integ.d.ts +9 -0
- package/lib/azure-storageaccount/test/storage-account.integ.js +151 -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/azure-subnet/index.d.ts +4 -0
- package/lib/azure-subnet/index.js +21 -0
- package/lib/azure-subnet/lib/index.d.ts +5 -0
- package/lib/azure-subnet/lib/index.js +22 -0
- package/lib/azure-subnet/lib/subnet-schemas.d.ts +32 -0
- package/lib/azure-subnet/lib/subnet-schemas.js +237 -0
- package/lib/azure-subnet/lib/subnet.d.ts +285 -0
- package/lib/azure-subnet/lib/subnet.js +254 -0
- package/lib/azure-subnet/test/subnet.integ.d.ts +11 -0
- package/lib/azure-subnet/test/subnet.integ.js +80 -0
- package/lib/azure-subnet/test/subnet.spec.d.ts +8 -0
- package/lib/azure-subnet/test/subnet.spec.js +396 -0
- package/lib/azure-virtualmachine/index.d.ts +6 -0
- package/lib/azure-virtualmachine/index.js +7 -1
- package/lib/azure-virtualmachine/lib/index.d.ts +11 -2
- package/lib/azure-virtualmachine/lib/index.js +22 -3
- package/lib/azure-virtualmachine/lib/virtual-machine-schemas.d.ts +327 -0
- package/lib/azure-virtualmachine/lib/virtual-machine-schemas.js +544 -0
- package/lib/azure-virtualmachine/lib/virtual-machine.d.ts +377 -0
- package/lib/azure-virtualmachine/lib/virtual-machine.js +462 -0
- package/lib/azure-virtualmachine/test/virtual-machine.integ.d.ts +9 -0
- package/lib/azure-virtualmachine/test/virtual-machine.integ.js +220 -0
- package/lib/azure-virtualmachine/test/virtual-machine.spec.d.ts +9 -0
- package/lib/azure-virtualmachine/test/virtual-machine.spec.js +1032 -0
- package/lib/azure-virtualnetwork/index.d.ts +9 -0
- package/lib/azure-virtualnetwork/index.js +11 -1
- package/lib/azure-virtualnetwork/lib/index.d.ts +9 -2
- package/lib/azure-virtualnetwork/lib/index.js +20 -17
- package/lib/azure-virtualnetwork/lib/virtual-network-schemas.d.ts +32 -0
- package/lib/azure-virtualnetwork/lib/virtual-network-schemas.js +236 -0
- package/lib/azure-virtualnetwork/lib/virtual-network.d.ts +213 -0
- package/lib/azure-virtualnetwork/lib/virtual-network.js +245 -0
- package/lib/azure-virtualnetwork/test/virtual-network.integ.d.ts +9 -0
- package/lib/azure-virtualnetwork/test/virtual-network.integ.js +91 -0
- package/lib/azure-virtualnetwork/test/virtual-network.spec.d.ts +8 -0
- package/lib/azure-virtualnetwork/test/virtual-network.spec.js +398 -0
- package/lib/azure-vmss/index.d.ts +6 -0
- package/lib/azure-vmss/index.js +23 -0
- package/lib/azure-vmss/lib/index.d.ts +9 -0
- package/lib/azure-vmss/lib/index.js +39 -0
- package/lib/azure-vmss/lib/virtual-machine-scale-set.d.ts +258 -0
- package/lib/azure-vmss/lib/virtual-machine-scale-set.js +503 -0
- package/lib/azure-vmss/lib/vmss-schemas.d.ts +472 -0
- package/lib/azure-vmss/lib/vmss-schemas.js +444 -0
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.d.ts +15 -0
- package/lib/azure-vmss/test/virtual-machine-scale-set.integ.js +261 -0
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.d.ts +8 -0
- package/lib/azure-vmss/test/virtual-machine-scale-set.spec.js +997 -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 +481 -0
- package/lib/core-azure/lib/azapi/azapi-resource.js +505 -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 +74 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-client-config/index.js +203 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.d.ts +341 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource/index.js +671 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.d.ts +344 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-action/index.js +583 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.d.ts +128 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-id/index.js +281 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.d.ts +285 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-azapi-resource-list/index.js +491 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.d.ts +518 -0
- package/lib/core-azure/lib/azapi/providers-azapi/data-plane-resource/index.js +839 -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/lazy-index.d.ts +0 -0
- package/lib/core-azure/lib/azapi/providers-azapi/lazy-index.js +13 -0
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.d.ts +447 -0
- package/lib/core-azure/lib/azapi/providers-azapi/provider/index.js +844 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.d.ts +689 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource/index.js +1140 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.d.ts +400 -0
- package/lib/core-azure/lib/azapi/providers-azapi/resource-action/index.js +706 -0
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.d.ts +450 -0
- package/lib/core-azure/lib/azapi/providers-azapi/update-resource/index.js +788 -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 +567 -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 +54 -13
- package/lib/index.js +76 -15
- package/lib/testing/index.d.ts +124 -1
- package/lib/testing/index.js +480 -4
- package/lib/testing/lib/cleanup.d.ts +229 -0
- package/lib/testing/lib/cleanup.js +331 -0
- package/lib/testing/lib/metadata.d.ts +151 -0
- package/lib/testing/lib/metadata.js +180 -0
- package/lib/testing/lib/naming.d.ts +96 -0
- package/lib/testing/lib/naming.js +336 -0
- package/lib/util/azureTenantIdHelpers.js +3 -4
- package/lib/util/randomName.js +2 -3
- package/node_modules/uuid/LICENSE.md +9 -0
- package/node_modules/uuid/README.md +510 -0
- package/node_modules/uuid/dist/cjs/index.d.ts +15 -0
- package/node_modules/uuid/dist/cjs/index.js +31 -0
- package/node_modules/uuid/dist/cjs/max.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/max.js +3 -0
- package/node_modules/uuid/dist/cjs/md5.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/md5.js +13 -0
- package/node_modules/uuid/dist/cjs/native.d.ts +6 -0
- package/node_modules/uuid/dist/cjs/native.js +4 -0
- package/node_modules/uuid/dist/cjs/nil.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/nil.js +3 -0
- package/node_modules/uuid/dist/cjs/package.json +1 -0
- package/node_modules/uuid/dist/cjs/parse.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/parse.js +11 -0
- package/node_modules/uuid/dist/cjs/regex.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/regex.js +3 -0
- package/node_modules/uuid/dist/cjs/rng.d.ts +1 -0
- package/node_modules/uuid/dist/cjs/rng.js +13 -0
- package/node_modules/uuid/dist/cjs/sha1.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/sha1.js +13 -0
- package/node_modules/uuid/dist/cjs/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/cjs/stringify.js +39 -0
- package/node_modules/uuid/dist/cjs/types.d.ts +21 -0
- package/node_modules/uuid/dist/cjs/types.js +2 -0
- package/node_modules/uuid/dist/cjs/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/cjs/uuid-bin.js +72 -0
- package/node_modules/uuid/dist/cjs/v1.d.ts +11 -0
- package/node_modules/uuid/dist/cjs/v1.js +87 -0
- package/node_modules/uuid/dist/cjs/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/v1ToV6.js +13 -0
- package/node_modules/uuid/dist/cjs/v3.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v3.js +14 -0
- package/node_modules/uuid/dist/cjs/v35.d.ts +7 -0
- package/node_modules/uuid/dist/cjs/v35.js +41 -0
- package/node_modules/uuid/dist/cjs/v4.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/v4.js +29 -0
- package/node_modules/uuid/dist/cjs/v5.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v5.js +14 -0
- package/node_modules/uuid/dist/cjs/v6.d.ts +4 -0
- package/node_modules/uuid/dist/cjs/v6.js +19 -0
- package/node_modules/uuid/dist/cjs/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/v6ToV1.js +13 -0
- package/node_modules/uuid/dist/cjs/v7.d.ts +9 -0
- package/node_modules/uuid/dist/cjs/v7.js +69 -0
- package/node_modules/uuid/dist/cjs/validate.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/validate.js +7 -0
- package/node_modules/uuid/dist/cjs/version.d.ts +2 -0
- package/node_modules/uuid/dist/cjs/version.js +10 -0
- package/node_modules/uuid/dist/cjs-browser/index.d.ts +15 -0
- package/node_modules/uuid/dist/cjs-browser/index.js +31 -0
- package/node_modules/uuid/dist/cjs-browser/max.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/max.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/md5.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/md5.js +137 -0
- package/node_modules/uuid/dist/cjs-browser/native.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/native.js +4 -0
- package/node_modules/uuid/dist/cjs-browser/nil.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/nil.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/package.json +1 -0
- package/node_modules/uuid/dist/cjs-browser/parse.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/parse.js +11 -0
- package/node_modules/uuid/dist/cjs-browser/regex.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/regex.js +3 -0
- package/node_modules/uuid/dist/cjs-browser/rng.d.ts +1 -0
- package/node_modules/uuid/dist/cjs-browser/rng.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/sha1.js +72 -0
- package/node_modules/uuid/dist/cjs-browser/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/cjs-browser/stringify.js +39 -0
- package/node_modules/uuid/dist/cjs-browser/types.d.ts +21 -0
- package/node_modules/uuid/dist/cjs-browser/types.js +2 -0
- package/node_modules/uuid/dist/cjs-browser/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/cjs-browser/uuid-bin.js +72 -0
- package/node_modules/uuid/dist/cjs-browser/v1.d.ts +11 -0
- package/node_modules/uuid/dist/cjs-browser/v1.js +87 -0
- package/node_modules/uuid/dist/cjs-browser/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/v1ToV6.js +13 -0
- package/node_modules/uuid/dist/cjs-browser/v3.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v3.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/v35.d.ts +7 -0
- package/node_modules/uuid/dist/cjs-browser/v35.js +41 -0
- package/node_modules/uuid/dist/cjs-browser/v4.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/v4.js +29 -0
- package/node_modules/uuid/dist/cjs-browser/v5.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v5.js +14 -0
- package/node_modules/uuid/dist/cjs-browser/v6.d.ts +4 -0
- package/node_modules/uuid/dist/cjs-browser/v6.js +19 -0
- package/node_modules/uuid/dist/cjs-browser/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/v6ToV1.js +13 -0
- package/node_modules/uuid/dist/cjs-browser/v7.d.ts +9 -0
- package/node_modules/uuid/dist/cjs-browser/v7.js +69 -0
- package/node_modules/uuid/dist/cjs-browser/validate.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/validate.js +7 -0
- package/node_modules/uuid/dist/cjs-browser/version.d.ts +2 -0
- package/node_modules/uuid/dist/cjs-browser/version.js +10 -0
- package/node_modules/uuid/dist/esm/bin/uuid +2 -0
- package/node_modules/uuid/dist/esm/index.d.ts +15 -0
- package/node_modules/uuid/dist/esm/index.js +14 -0
- package/node_modules/uuid/dist/esm/max.d.ts +2 -0
- package/node_modules/uuid/dist/esm/max.js +1 -0
- package/node_modules/uuid/dist/esm/md5.d.ts +4 -0
- package/node_modules/uuid/dist/esm/md5.js +11 -0
- package/node_modules/uuid/dist/esm/native.d.ts +6 -0
- package/node_modules/uuid/dist/esm/native.js +2 -0
- package/node_modules/uuid/dist/esm/nil.d.ts +2 -0
- package/node_modules/uuid/dist/esm/nil.js +1 -0
- package/node_modules/uuid/dist/esm/parse.d.ts +2 -0
- package/node_modules/uuid/dist/esm/parse.js +9 -0
- package/node_modules/uuid/dist/esm/regex.d.ts +2 -0
- package/node_modules/uuid/dist/esm/regex.js +1 -0
- package/node_modules/uuid/dist/esm/rng.d.ts +1 -0
- package/node_modules/uuid/dist/esm/rng.js +10 -0
- package/node_modules/uuid/dist/esm/sha1.d.ts +4 -0
- package/node_modules/uuid/dist/esm/sha1.js +11 -0
- package/node_modules/uuid/dist/esm/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/esm/stringify.js +35 -0
- package/node_modules/uuid/dist/esm/types.d.ts +21 -0
- package/node_modules/uuid/dist/esm/types.js +1 -0
- package/node_modules/uuid/dist/esm/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/esm/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/esm/v1.d.ts +11 -0
- package/node_modules/uuid/dist/esm/v1.js +83 -0
- package/node_modules/uuid/dist/esm/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/esm/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/esm/v3.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v3.js +9 -0
- package/node_modules/uuid/dist/esm/v35.d.ts +7 -0
- package/node_modules/uuid/dist/esm/v35.js +36 -0
- package/node_modules/uuid/dist/esm/v4.d.ts +4 -0
- package/node_modules/uuid/dist/esm/v4.js +27 -0
- package/node_modules/uuid/dist/esm/v5.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v5.js +9 -0
- package/node_modules/uuid/dist/esm/v6.d.ts +4 -0
- package/node_modules/uuid/dist/esm/v6.js +17 -0
- package/node_modules/uuid/dist/esm/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/esm/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/esm/v7.d.ts +9 -0
- package/node_modules/uuid/dist/esm/v7.js +65 -0
- package/node_modules/uuid/dist/esm/validate.d.ts +2 -0
- package/node_modules/uuid/dist/esm/validate.js +5 -0
- package/node_modules/uuid/dist/esm/version.d.ts +2 -0
- package/node_modules/uuid/dist/esm/version.js +8 -0
- package/node_modules/uuid/dist/esm-browser/index.d.ts +15 -0
- package/node_modules/uuid/dist/esm-browser/index.js +14 -0
- package/node_modules/uuid/dist/esm-browser/max.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/max.js +1 -0
- package/node_modules/uuid/dist/esm-browser/md5.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/md5.js +135 -0
- package/node_modules/uuid/dist/esm-browser/native.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/native.js +2 -0
- package/node_modules/uuid/dist/esm-browser/nil.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/nil.js +1 -0
- package/node_modules/uuid/dist/esm-browser/parse.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/parse.js +9 -0
- package/node_modules/uuid/dist/esm-browser/regex.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/regex.js +1 -0
- package/node_modules/uuid/dist/esm-browser/rng.d.ts +1 -0
- package/node_modules/uuid/dist/esm-browser/rng.js +11 -0
- package/node_modules/uuid/dist/esm-browser/sha1.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/sha1.js +70 -0
- package/node_modules/uuid/dist/esm-browser/stringify.d.ts +3 -0
- package/node_modules/uuid/dist/esm-browser/stringify.js +35 -0
- package/node_modules/uuid/dist/esm-browser/types.d.ts +21 -0
- package/node_modules/uuid/dist/esm-browser/types.js +1 -0
- package/node_modules/uuid/dist/esm-browser/uuid-bin.d.ts +1 -0
- package/node_modules/uuid/dist/esm-browser/uuid-bin.js +70 -0
- package/node_modules/uuid/dist/esm-browser/v1.d.ts +11 -0
- package/node_modules/uuid/dist/esm-browser/v1.js +83 -0
- package/node_modules/uuid/dist/esm-browser/v1ToV6.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/v1ToV6.js +10 -0
- package/node_modules/uuid/dist/esm-browser/v3.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v3.js +9 -0
- package/node_modules/uuid/dist/esm-browser/v35.d.ts +7 -0
- package/node_modules/uuid/dist/esm-browser/v35.js +36 -0
- package/node_modules/uuid/dist/esm-browser/v4.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/v4.js +27 -0
- package/node_modules/uuid/dist/esm-browser/v5.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v5.js +9 -0
- package/node_modules/uuid/dist/esm-browser/v6.d.ts +4 -0
- package/node_modules/uuid/dist/esm-browser/v6.js +17 -0
- package/node_modules/uuid/dist/esm-browser/v6ToV1.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/v6ToV1.js +10 -0
- package/node_modules/uuid/dist/esm-browser/v7.d.ts +9 -0
- package/node_modules/uuid/dist/esm-browser/v7.js +65 -0
- package/node_modules/uuid/dist/esm-browser/validate.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/validate.js +5 -0
- package/node_modules/uuid/dist/esm-browser/version.d.ts +2 -0
- package/node_modules/uuid/dist/esm-browser/version.js +8 -0
- package/node_modules/uuid/package.json +132 -0
- package/package.json +51 -33
- package/scripts/cleanup-test-resources.ts +369 -0
- 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/lib/actiongroup.d.ts +0 -49
- package/lib/azure-actiongroup/lib/actiongroup.js +0 -85
- 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/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/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/lib/image-references.d.ts +0 -22
- package/lib/azure-virtualmachine/lib/image-references.js +0 -128
- 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/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,567 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.SchemaMapper = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
/**
|
|
7
|
+
* SchemaMapper - A JSII-compliant property transformation engine for Azure API schemas
|
|
8
|
+
*
|
|
9
|
+
* This class provides comprehensive property transformation and validation capabilities
|
|
10
|
+
* for mapping between different API schema versions. It handles property renaming,
|
|
11
|
+
* restructuring, type conversion, and validation with detailed error reporting.
|
|
12
|
+
*
|
|
13
|
+
* Key Features:
|
|
14
|
+
* - JSII-compliant singleton implementation for multi-language support
|
|
15
|
+
* - Property transformation with nested object and array support
|
|
16
|
+
* - Comprehensive validation engine with detailed error reporting
|
|
17
|
+
* - Default value injection for new properties
|
|
18
|
+
* - Property path tracking for nested validation errors
|
|
19
|
+
* - Graceful error handling with contextual information
|
|
20
|
+
*
|
|
21
|
+
* @packageDocumentation
|
|
22
|
+
*/
|
|
23
|
+
const version_interfaces_1 = require("../../version-manager/interfaces/version-interfaces");
|
|
24
|
+
/**
|
|
25
|
+
* SchemaMapper class for property transformation and validation
|
|
26
|
+
*
|
|
27
|
+
* This class provides a comprehensive property transformation engine that enables
|
|
28
|
+
* mapping between different API schema versions with full validation support.
|
|
29
|
+
* It implements JSII-compliant patterns for multi-language code generation.
|
|
30
|
+
*
|
|
31
|
+
* The SchemaMapper handles:
|
|
32
|
+
* - Property transformation between schema versions
|
|
33
|
+
* - Validation against API schema definitions
|
|
34
|
+
* - Default value injection for new properties
|
|
35
|
+
* - Nested object and array processing
|
|
36
|
+
* - Detailed error reporting with property paths
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* const schema: ApiSchema = {
|
|
40
|
+
* resourceType: 'Microsoft.Resources/resourceGroups',
|
|
41
|
+
* version: '2024-11-01',
|
|
42
|
+
* properties: {
|
|
43
|
+
* name: { dataType: PropertyType.STRING, required: true },
|
|
44
|
+
* location: { dataType: PropertyType.STRING, required: true }
|
|
45
|
+
* },
|
|
46
|
+
* required: ['name', 'location']
|
|
47
|
+
* };
|
|
48
|
+
*
|
|
49
|
+
* const mapper = SchemaMapper.create(schema);
|
|
50
|
+
* const result = mapper.validateProperties({ name: 'myRG', location: 'eastus' });
|
|
51
|
+
*
|
|
52
|
+
* @stability stable
|
|
53
|
+
*/
|
|
54
|
+
class SchemaMapper {
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new SchemaMapper instance for the specified schema
|
|
57
|
+
*
|
|
58
|
+
* This factory method creates a SchemaMapper configured for a specific API schema.
|
|
59
|
+
* The schema defines the structure, validation rules, and transformation mappings
|
|
60
|
+
* that will be used for property operations.
|
|
61
|
+
*
|
|
62
|
+
* @param schema - The API schema to use for transformations and validation
|
|
63
|
+
* @returns A new SchemaMapper instance configured with the provided schema
|
|
64
|
+
*
|
|
65
|
+
* @throws Error if the schema is invalid or missing required properties
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* const schema: ApiSchema = {
|
|
69
|
+
* resourceType: 'Microsoft.Resources/resourceGroups',
|
|
70
|
+
* version: '2024-11-01',
|
|
71
|
+
* properties: { name: { dataType: PropertyType.STRING, required: true } },
|
|
72
|
+
* required: ['name']
|
|
73
|
+
* };
|
|
74
|
+
* const mapper = SchemaMapper.create(schema);
|
|
75
|
+
*/
|
|
76
|
+
static create(schema) {
|
|
77
|
+
if (!schema) {
|
|
78
|
+
throw new Error("Schema cannot be undefined or null");
|
|
79
|
+
}
|
|
80
|
+
if (!schema.resourceType || schema.resourceType.trim().length === 0) {
|
|
81
|
+
throw new Error("Schema must have a valid resourceType");
|
|
82
|
+
}
|
|
83
|
+
if (!schema.version || schema.version.trim().length === 0) {
|
|
84
|
+
throw new Error("Schema must have a valid version");
|
|
85
|
+
}
|
|
86
|
+
if (!schema.properties) {
|
|
87
|
+
throw new Error("Schema must have a properties definition");
|
|
88
|
+
}
|
|
89
|
+
if (!schema.required || !Array.isArray(schema.required)) {
|
|
90
|
+
throw new Error("Schema must have a required properties array");
|
|
91
|
+
}
|
|
92
|
+
return new SchemaMapper(schema);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Private constructor to enforce factory pattern
|
|
96
|
+
*
|
|
97
|
+
* @param schema - The API schema to use for this mapper instance
|
|
98
|
+
*/
|
|
99
|
+
constructor(schema) {
|
|
100
|
+
this._schema = schema;
|
|
101
|
+
this._errorContexts = [];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Transforms properties from source format to target schema format
|
|
105
|
+
*
|
|
106
|
+
* This method applies transformation rules to convert properties from one schema
|
|
107
|
+
* format to another. It handles property renaming, restructuring, type conversion,
|
|
108
|
+
* and nested object/array transformations based on the target schema definition.
|
|
109
|
+
*
|
|
110
|
+
* @param sourceProps - The source properties to transform
|
|
111
|
+
* @param targetSchema - The target schema to transform properties to
|
|
112
|
+
* @returns The transformed properties matching the target schema format
|
|
113
|
+
*
|
|
114
|
+
* @throws Error if transformation fails due to incompatible types or missing mappings
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* const sourceProps = { oldName: 'value', location: 'eastus' };
|
|
118
|
+
* const targetSchema = {
|
|
119
|
+
* transformationRules: { oldName: 'newName' },
|
|
120
|
+
* properties: { newName: { dataType: PropertyType.STRING } }
|
|
121
|
+
* };
|
|
122
|
+
* const transformed = mapper.transformProperties(sourceProps, targetSchema);
|
|
123
|
+
* // Result: { newName: 'value', location: 'eastus' }
|
|
124
|
+
*/
|
|
125
|
+
transformProperties(sourceProps, targetSchema) {
|
|
126
|
+
if (!sourceProps) {
|
|
127
|
+
return {};
|
|
128
|
+
}
|
|
129
|
+
if (!targetSchema) {
|
|
130
|
+
throw new Error("Target schema cannot be undefined or null");
|
|
131
|
+
}
|
|
132
|
+
this._clearErrorContexts();
|
|
133
|
+
const context = {
|
|
134
|
+
sourcePath: "",
|
|
135
|
+
targetPath: "",
|
|
136
|
+
depth: 0,
|
|
137
|
+
};
|
|
138
|
+
try {
|
|
139
|
+
return this._transformObject(sourceProps, targetSchema, context);
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
throw new Error(`Property transformation failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Validates properties against the schema definition
|
|
147
|
+
*
|
|
148
|
+
* This method performs comprehensive validation of properties against the
|
|
149
|
+
* configured schema. It checks required properties, data types, validation rules,
|
|
150
|
+
* and provides detailed error reporting with property path information.
|
|
151
|
+
*
|
|
152
|
+
* @param properties - The properties to validate
|
|
153
|
+
* @returns Detailed validation results including errors and warnings
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* const properties = { name: 'myRG', location: 'eastus', tags: { env: 'dev' } };
|
|
157
|
+
* const result = mapper.validateProperties(properties);
|
|
158
|
+
*
|
|
159
|
+
* if (!result.valid) {
|
|
160
|
+
* console.log('Validation errors:', result.errors);
|
|
161
|
+
* console.log('Property errors:', result.propertyErrors);
|
|
162
|
+
* }
|
|
163
|
+
*/
|
|
164
|
+
validateProperties(properties) {
|
|
165
|
+
this._clearErrorContexts();
|
|
166
|
+
const errors = [];
|
|
167
|
+
const warnings = [];
|
|
168
|
+
const propertyErrors = {};
|
|
169
|
+
if (!properties) {
|
|
170
|
+
errors.push("Properties cannot be undefined or null");
|
|
171
|
+
return { valid: false, errors, warnings, propertyErrors };
|
|
172
|
+
}
|
|
173
|
+
try {
|
|
174
|
+
// Validate required properties
|
|
175
|
+
this._validateRequiredProperties(properties, "", errors, propertyErrors);
|
|
176
|
+
// Validate individual properties
|
|
177
|
+
this._validateIndividualProperties(properties, "", errors, warnings, propertyErrors);
|
|
178
|
+
// Apply schema-level validation rules
|
|
179
|
+
this._applySchemaValidationRules(properties, errors, warnings, propertyErrors);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
errors.push(`Validation failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
valid: errors.length === 0,
|
|
186
|
+
errors,
|
|
187
|
+
warnings,
|
|
188
|
+
propertyErrors: Object.keys(propertyErrors).length > 0 ? propertyErrors : undefined,
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Applies default values to properties based on schema definitions
|
|
193
|
+
*
|
|
194
|
+
* This method injects default values for properties that are not provided
|
|
195
|
+
* but have default values defined in the schema. It preserves existing
|
|
196
|
+
* property values and only adds defaults for missing properties.
|
|
197
|
+
*
|
|
198
|
+
* @param properties - The properties to apply defaults to
|
|
199
|
+
* @returns New properties object with default values applied
|
|
200
|
+
*
|
|
201
|
+
* @example
|
|
202
|
+
* const props = { name: 'myRG' };
|
|
203
|
+
* const withDefaults = mapper.applyDefaults(props);
|
|
204
|
+
* // If schema defines location default as 'eastus':
|
|
205
|
+
* // Result: { name: 'myRG', location: 'eastus' }
|
|
206
|
+
*/
|
|
207
|
+
applyDefaults(properties) {
|
|
208
|
+
if (!properties) {
|
|
209
|
+
properties = {};
|
|
210
|
+
}
|
|
211
|
+
const result = { ...properties };
|
|
212
|
+
try {
|
|
213
|
+
this._applyDefaultsToObject(result, "");
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
throw new Error(`Default value application failed: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Maps a single property value using transformation rules
|
|
222
|
+
*
|
|
223
|
+
* This method applies transformation logic to a single property value based on
|
|
224
|
+
* the target property definition. It handles type conversion, value mapping,
|
|
225
|
+
* and custom transformations.
|
|
226
|
+
*
|
|
227
|
+
* @param propertyName - The name of the property being mapped
|
|
228
|
+
* @param value - The source value to transform
|
|
229
|
+
* @param targetProperty - The target property definition from the schema
|
|
230
|
+
* @returns The transformed property value
|
|
231
|
+
*
|
|
232
|
+
* @throws Error if the transformation fails or types are incompatible
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* const targetProp = { dataType: PropertyType.STRING, required: true };
|
|
236
|
+
* const mapped = mapper.mapProperty('name', 'myResourceGroup', targetProp);
|
|
237
|
+
*/
|
|
238
|
+
mapProperty(propertyName, value, targetProperty) {
|
|
239
|
+
if (!propertyName || propertyName.trim().length === 0) {
|
|
240
|
+
throw new Error("Property name cannot be empty");
|
|
241
|
+
}
|
|
242
|
+
if (!targetProperty) {
|
|
243
|
+
throw new Error("Target property definition cannot be undefined");
|
|
244
|
+
}
|
|
245
|
+
try {
|
|
246
|
+
return this._transformValue(value, targetProperty, propertyName);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
throw new Error(`Property mapping failed for '${propertyName}': ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
// =============================================================================
|
|
253
|
+
// PRIVATE HELPER METHODS
|
|
254
|
+
// =============================================================================
|
|
255
|
+
/**
|
|
256
|
+
* Clears the error context array for a new operation
|
|
257
|
+
*/
|
|
258
|
+
_clearErrorContexts() {
|
|
259
|
+
this._errorContexts.length = 0;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Transforms an object using the target schema
|
|
263
|
+
*/
|
|
264
|
+
_transformObject(sourceObj, targetSchema, _context) {
|
|
265
|
+
if (!sourceObj || typeof sourceObj !== "object") {
|
|
266
|
+
return sourceObj;
|
|
267
|
+
}
|
|
268
|
+
const result = {};
|
|
269
|
+
const transformationRules = targetSchema.transformationRules || {};
|
|
270
|
+
// Apply transformation rules first
|
|
271
|
+
for (const [sourceKey, value] of Object.entries(sourceObj)) {
|
|
272
|
+
const targetKey = transformationRules[sourceKey] || sourceKey;
|
|
273
|
+
const targetProperty = targetSchema.properties[targetKey];
|
|
274
|
+
if (targetProperty) {
|
|
275
|
+
const transformedValue = this._transformValue(value, targetProperty, targetKey);
|
|
276
|
+
result[targetKey] = transformedValue;
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
// Property not in target schema - copy as-is unless explicitly excluded
|
|
280
|
+
result[targetKey] = value;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
return result;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Transforms a single value based on target property definition
|
|
287
|
+
*/
|
|
288
|
+
_transformValue(value, targetProperty, propertyPath) {
|
|
289
|
+
if (value === undefined || value === null) {
|
|
290
|
+
if (targetProperty.defaultValue !== undefined) {
|
|
291
|
+
return targetProperty.defaultValue;
|
|
292
|
+
}
|
|
293
|
+
return value;
|
|
294
|
+
}
|
|
295
|
+
switch (targetProperty.dataType) {
|
|
296
|
+
case version_interfaces_1.PropertyType.STRING:
|
|
297
|
+
return this._transformToString(value, propertyPath);
|
|
298
|
+
case version_interfaces_1.PropertyType.NUMBER:
|
|
299
|
+
return this._transformToNumber(value, propertyPath);
|
|
300
|
+
case version_interfaces_1.PropertyType.BOOLEAN:
|
|
301
|
+
return this._transformToBoolean(value, propertyPath);
|
|
302
|
+
case version_interfaces_1.PropertyType.ARRAY:
|
|
303
|
+
return this._transformToArray(value, targetProperty, propertyPath);
|
|
304
|
+
case version_interfaces_1.PropertyType.OBJECT:
|
|
305
|
+
return this._transformToObject(value, targetProperty, propertyPath);
|
|
306
|
+
case version_interfaces_1.PropertyType.ANY:
|
|
307
|
+
default:
|
|
308
|
+
return value;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Transforms value to string type
|
|
313
|
+
*/
|
|
314
|
+
_transformToString(value, propertyPath) {
|
|
315
|
+
if (typeof value === "string") {
|
|
316
|
+
return value;
|
|
317
|
+
}
|
|
318
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
319
|
+
return String(value);
|
|
320
|
+
}
|
|
321
|
+
throw new Error(`Cannot convert value at '${propertyPath}' to string. Got: ${typeof value}`);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Transforms value to number type
|
|
325
|
+
*/
|
|
326
|
+
_transformToNumber(value, propertyPath) {
|
|
327
|
+
if (typeof value === "number") {
|
|
328
|
+
return value;
|
|
329
|
+
}
|
|
330
|
+
if (typeof value === "string") {
|
|
331
|
+
const parsed = Number(value);
|
|
332
|
+
if (!isNaN(parsed)) {
|
|
333
|
+
return parsed;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
throw new Error(`Cannot convert value at '${propertyPath}' to number. Got: ${typeof value}`);
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Transforms value to boolean type
|
|
340
|
+
*/
|
|
341
|
+
_transformToBoolean(value, propertyPath) {
|
|
342
|
+
if (typeof value === "boolean") {
|
|
343
|
+
return value;
|
|
344
|
+
}
|
|
345
|
+
if (typeof value === "string") {
|
|
346
|
+
const lower = value.toLowerCase();
|
|
347
|
+
if (lower === "true" || lower === "1")
|
|
348
|
+
return true;
|
|
349
|
+
if (lower === "false" || lower === "0")
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
if (typeof value === "number") {
|
|
353
|
+
return value !== 0;
|
|
354
|
+
}
|
|
355
|
+
throw new Error(`Cannot convert value at '${propertyPath}' to boolean. Got: ${typeof value}`);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Transforms value to array type
|
|
359
|
+
*/
|
|
360
|
+
_transformToArray(value, _targetProperty, propertyPath) {
|
|
361
|
+
if (Array.isArray(value)) {
|
|
362
|
+
return value; // TODO: Transform array elements if needed
|
|
363
|
+
}
|
|
364
|
+
throw new Error(`Expected array at '${propertyPath}', got: ${typeof value}`);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Transforms value to object type
|
|
368
|
+
*/
|
|
369
|
+
_transformToObject(value, _targetProperty, propertyPath) {
|
|
370
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
371
|
+
return value; // TODO: Apply nested transformation rules if needed
|
|
372
|
+
}
|
|
373
|
+
throw new Error(`Expected object at '${propertyPath}', got: ${typeof value}`);
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Validates required properties
|
|
377
|
+
*/
|
|
378
|
+
_validateRequiredProperties(properties, basePath, errors, propertyErrors) {
|
|
379
|
+
for (const requiredProp of this._schema.required) {
|
|
380
|
+
const fullPath = basePath ? `${basePath}.${requiredProp}` : requiredProp;
|
|
381
|
+
if (!(requiredProp in properties) ||
|
|
382
|
+
properties[requiredProp] === undefined) {
|
|
383
|
+
const error = `Required property '${requiredProp}' is missing`;
|
|
384
|
+
errors.push(error);
|
|
385
|
+
if (!propertyErrors[fullPath]) {
|
|
386
|
+
propertyErrors[fullPath] = [];
|
|
387
|
+
}
|
|
388
|
+
propertyErrors[fullPath].push(error);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Validates individual properties against their definitions
|
|
394
|
+
*/
|
|
395
|
+
_validateIndividualProperties(properties, basePath, errors, warnings, propertyErrors) {
|
|
396
|
+
// Framework properties that should not be validated against Azure API schema
|
|
397
|
+
const frameworkProperties = new Set([
|
|
398
|
+
"apiVersion",
|
|
399
|
+
"enableMigrationAnalysis",
|
|
400
|
+
"enableValidation",
|
|
401
|
+
"enableTransformation",
|
|
402
|
+
"ignoreChanges",
|
|
403
|
+
"resourceGroupId",
|
|
404
|
+
"monitoring", // Framework-level monitoring configuration
|
|
405
|
+
"virtualNetworkId", // Framework-level dependency tracking for child resources
|
|
406
|
+
]);
|
|
407
|
+
for (const [propName, propValue] of Object.entries(properties)) {
|
|
408
|
+
const fullPath = basePath ? `${basePath}.${propName}` : propName;
|
|
409
|
+
// Skip framework properties
|
|
410
|
+
if (frameworkProperties.has(propName)) {
|
|
411
|
+
continue;
|
|
412
|
+
}
|
|
413
|
+
const propDef = this._schema.properties[propName];
|
|
414
|
+
if (!propDef) {
|
|
415
|
+
warnings.push(`Unknown property '${propName}' not defined in schema`);
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
// Check if property is deprecated
|
|
419
|
+
if (propDef.deprecated) {
|
|
420
|
+
warnings.push(`Property '${propName}' is deprecated`);
|
|
421
|
+
}
|
|
422
|
+
// Validate property type
|
|
423
|
+
const typeErrors = this._validatePropertyType(propValue, propDef, fullPath);
|
|
424
|
+
if (typeErrors.length > 0) {
|
|
425
|
+
errors.push(...typeErrors);
|
|
426
|
+
if (!propertyErrors[fullPath]) {
|
|
427
|
+
propertyErrors[fullPath] = [];
|
|
428
|
+
}
|
|
429
|
+
propertyErrors[fullPath].push(...typeErrors);
|
|
430
|
+
}
|
|
431
|
+
// Apply validation rules
|
|
432
|
+
if (propDef.validation) {
|
|
433
|
+
const ruleErrors = this._applyValidationRules(propValue, propDef.validation, fullPath);
|
|
434
|
+
if (ruleErrors.length > 0) {
|
|
435
|
+
errors.push(...ruleErrors);
|
|
436
|
+
if (!propertyErrors[fullPath]) {
|
|
437
|
+
propertyErrors[fullPath] = [];
|
|
438
|
+
}
|
|
439
|
+
propertyErrors[fullPath].push(...ruleErrors);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* Validates property type against definition
|
|
446
|
+
*/
|
|
447
|
+
_validatePropertyType(value, propDef, propertyPath) {
|
|
448
|
+
const errors = [];
|
|
449
|
+
if (value === undefined || value === null) {
|
|
450
|
+
if (propDef.required) {
|
|
451
|
+
errors.push(`Property '${propertyPath}' is required but is ${value === null ? "null" : "undefined"}`);
|
|
452
|
+
}
|
|
453
|
+
return errors;
|
|
454
|
+
}
|
|
455
|
+
switch (propDef.dataType) {
|
|
456
|
+
case version_interfaces_1.PropertyType.STRING:
|
|
457
|
+
if (typeof value !== "string") {
|
|
458
|
+
errors.push(`Property '${propertyPath}' must be a string, got: ${typeof value}`);
|
|
459
|
+
}
|
|
460
|
+
break;
|
|
461
|
+
case version_interfaces_1.PropertyType.NUMBER:
|
|
462
|
+
if (typeof value !== "number") {
|
|
463
|
+
errors.push(`Property '${propertyPath}' must be a number, got: ${typeof value}`);
|
|
464
|
+
}
|
|
465
|
+
break;
|
|
466
|
+
case version_interfaces_1.PropertyType.BOOLEAN:
|
|
467
|
+
if (typeof value !== "boolean") {
|
|
468
|
+
errors.push(`Property '${propertyPath}' must be a boolean, got: ${typeof value}`);
|
|
469
|
+
}
|
|
470
|
+
break;
|
|
471
|
+
case version_interfaces_1.PropertyType.ARRAY:
|
|
472
|
+
if (!Array.isArray(value)) {
|
|
473
|
+
errors.push(`Property '${propertyPath}' must be an array, got: ${typeof value}`);
|
|
474
|
+
}
|
|
475
|
+
break;
|
|
476
|
+
case version_interfaces_1.PropertyType.OBJECT:
|
|
477
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
478
|
+
errors.push(`Property '${propertyPath}' must be an object, got: ${typeof value}`);
|
|
479
|
+
}
|
|
480
|
+
break;
|
|
481
|
+
case version_interfaces_1.PropertyType.ANY:
|
|
482
|
+
// Any type is always valid
|
|
483
|
+
break;
|
|
484
|
+
default:
|
|
485
|
+
errors.push(`Unknown data type '${propDef.dataType}' for property '${propertyPath}'`);
|
|
486
|
+
}
|
|
487
|
+
return errors;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Applies validation rules to a property value
|
|
491
|
+
*/
|
|
492
|
+
_applyValidationRules(value, rules, propertyPath) {
|
|
493
|
+
const errors = [];
|
|
494
|
+
for (const rule of rules) {
|
|
495
|
+
switch (rule.ruleType) {
|
|
496
|
+
case version_interfaces_1.ValidationRuleType.REQUIRED:
|
|
497
|
+
if (value === undefined || value === null || value === "") {
|
|
498
|
+
errors.push(rule.message || `Property '${propertyPath}' is required`);
|
|
499
|
+
}
|
|
500
|
+
break;
|
|
501
|
+
case version_interfaces_1.ValidationRuleType.PATTERN_MATCH:
|
|
502
|
+
if (typeof value === "string" && rule.value) {
|
|
503
|
+
const pattern = new RegExp(rule.value);
|
|
504
|
+
if (!pattern.test(value)) {
|
|
505
|
+
errors.push(rule.message ||
|
|
506
|
+
`Property '${propertyPath}' does not match required pattern`);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
break;
|
|
510
|
+
case version_interfaces_1.ValidationRuleType.VALUE_RANGE:
|
|
511
|
+
if (typeof value === "number" && rule.value) {
|
|
512
|
+
const range = rule.value;
|
|
513
|
+
if (range.min !== undefined && value < range.min) {
|
|
514
|
+
errors.push(rule.message ||
|
|
515
|
+
`Property '${propertyPath}' must be at least ${range.min}`);
|
|
516
|
+
}
|
|
517
|
+
if (range.max !== undefined && value > range.max) {
|
|
518
|
+
errors.push(rule.message ||
|
|
519
|
+
`Property '${propertyPath}' must be at most ${range.max}`);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
break;
|
|
523
|
+
case version_interfaces_1.ValidationRuleType.TYPE_CHECK:
|
|
524
|
+
// Type checking is handled in _validatePropertyType
|
|
525
|
+
break;
|
|
526
|
+
case version_interfaces_1.ValidationRuleType.CUSTOM_VALIDATION:
|
|
527
|
+
// Custom validation would require function support, which is complex in JSII
|
|
528
|
+
// For now, we'll just log a warning
|
|
529
|
+
break;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return errors;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Applies schema-level validation rules
|
|
536
|
+
*/
|
|
537
|
+
_applySchemaValidationRules(properties, errors, _warnings, propertyErrors) {
|
|
538
|
+
if (!this._schema.validationRules) {
|
|
539
|
+
return;
|
|
540
|
+
}
|
|
541
|
+
for (const validation of this._schema.validationRules) {
|
|
542
|
+
const propValue = properties[validation.property];
|
|
543
|
+
const ruleErrors = this._applyValidationRules(propValue, validation.rules, validation.property);
|
|
544
|
+
if (ruleErrors.length > 0) {
|
|
545
|
+
errors.push(...ruleErrors);
|
|
546
|
+
if (!propertyErrors[validation.property]) {
|
|
547
|
+
propertyErrors[validation.property] = [];
|
|
548
|
+
}
|
|
549
|
+
propertyErrors[validation.property].push(...ruleErrors);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
/**
|
|
554
|
+
* Applies default values to an object
|
|
555
|
+
*/
|
|
556
|
+
_applyDefaultsToObject(obj, _basePath) {
|
|
557
|
+
for (const [propName, propDef] of Object.entries(this._schema.properties)) {
|
|
558
|
+
if (!(propName in obj) && propDef.defaultValue !== undefined) {
|
|
559
|
+
obj[propName] = propDef.defaultValue;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
exports.SchemaMapper = SchemaMapper;
|
|
565
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
566
|
+
SchemaMapper[_a] = { fqn: "@microsoft/terraform-cdk-constructs.SchemaMapper", version: "1.2.0" };
|
|
567
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlLWF6dXJlL2xpYi9hemFwaS9zY2hlbWEtbWFwcGVyL3NjaGVtYS1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCRztBQUVILDRGQU82RDtBQXFCN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkJHO0FBQ0gsTUFBYSxZQUFZO0lBQ3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQW9CRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBaUI7UUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBQ3hELENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFELE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4RCxNQUFN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O0lBQ0ssc0JBQXNCLENBQUMsR0FBUSxFQUFFLFNBQWlCO1FBQ3hELEtBQUssTUFBTSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDN0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOztBQS9yQkgsb0NBZ3NCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2NoZW1hTWFwcGVyIC0gQSBKU0lJLWNvbXBsaWFudCBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBlbmdpbmUgZm9yIEF6dXJlIEFQSSBzY2hlbWFzXG4gKlxuICogVGhpcyBjbGFzcyBwcm92aWRlcyBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGFuZCB2YWxpZGF0aW9uIGNhcGFiaWxpdGllc1xuICogZm9yIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucy4gSXQgaGFuZGxlcyBwcm9wZXJ0eSByZW5hbWluZyxcbiAqIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbiwgYW5kIHZhbGlkYXRpb24gd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcuXG4gKlxuICogS2V5IEZlYXR1cmVzOlxuICogLSBKU0lJLWNvbXBsaWFudCBzaW5nbGV0b24gaW1wbGVtZW50YXRpb24gZm9yIG11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gd2l0aCBuZXN0ZWQgb2JqZWN0IGFuZCBhcnJheSBzdXBwb3J0XG4gKiAtIENvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBlbmdpbmUgd2l0aCBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmdcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIFByb3BlcnR5IHBhdGggdHJhY2tpbmcgZm9yIG5lc3RlZCB2YWxpZGF0aW9uIGVycm9yc1xuICogLSBHcmFjZWZ1bCBlcnJvciBoYW5kbGluZyB3aXRoIGNvbnRleHR1YWwgaW5mb3JtYXRpb25cbiAqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqL1xuXG5pbXBvcnQge1xuICBBcGlTY2hlbWEsXG4gIFByb3BlcnR5RGVmaW5pdGlvbixcbiAgVmFsaWRhdGlvblJlc3VsdCxcbiAgVmFsaWRhdGlvblJ1bGUsXG4gIFByb3BlcnR5VHlwZSxcbiAgVmFsaWRhdGlvblJ1bGVUeXBlLFxufSBmcm9tIFwiLi4vLi4vdmVyc2lvbi1tYW5hZ2VyL2ludGVyZmFjZXMvdmVyc2lvbi1pbnRlcmZhY2VzXCI7XG5cbi8qKlxuICogRXJyb3IgY29udGV4dCBmb3IgcHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYW5kIHZhbGlkYXRpb25cbiAqL1xuaW50ZXJmYWNlIEVycm9yQ29udGV4dCB7XG4gIHJlYWRvbmx5IHByb3BlcnR5UGF0aDogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNvdXJjZVZhbHVlPzogYW55O1xuICByZWFkb25seSBleHBlY3RlZFR5cGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNmb3JtYXRpb24gY29udGV4dCBmb3IgdHJhY2tpbmcgbmVzdGVkIHRyYW5zZm9ybWF0aW9uc1xuICovXG5pbnRlcmZhY2UgVHJhbnNmb3JtYXRpb25Db250ZXh0IHtcbiAgcmVhZG9ubHkgc291cmNlUGF0aDogc3RyaW5nO1xuICByZWFkb25seSB0YXJnZXRQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlcHRoOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2NoZW1hTWFwcGVyIGNsYXNzIGZvciBwcm9wZXJ0eSB0cmFuc2Zvcm1hdGlvbiBhbmQgdmFsaWRhdGlvblxuICpcbiAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIHByb3BlcnR5IHRyYW5zZm9ybWF0aW9uIGVuZ2luZSB0aGF0IGVuYWJsZXNcbiAqIG1hcHBpbmcgYmV0d2VlbiBkaWZmZXJlbnQgQVBJIHNjaGVtYSB2ZXJzaW9ucyB3aXRoIGZ1bGwgdmFsaWRhdGlvbiBzdXBwb3J0LlxuICogSXQgaW1wbGVtZW50cyBKU0lJLWNvbXBsaWFudCBwYXR0ZXJucyBmb3IgbXVsdGktbGFuZ3VhZ2UgY29kZSBnZW5lcmF0aW9uLlxuICpcbiAqIFRoZSBTY2hlbWFNYXBwZXIgaGFuZGxlczpcbiAqIC0gUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gYmV0d2VlbiBzY2hlbWEgdmVyc2lvbnNcbiAqIC0gVmFsaWRhdGlvbiBhZ2FpbnN0IEFQSSBzY2hlbWEgZGVmaW5pdGlvbnNcbiAqIC0gRGVmYXVsdCB2YWx1ZSBpbmplY3Rpb24gZm9yIG5ldyBwcm9wZXJ0aWVzXG4gKiAtIE5lc3RlZCBvYmplY3QgYW5kIGFycmF5IHByb2Nlc3NpbmdcbiAqIC0gRGV0YWlsZWQgZXJyb3IgcmVwb3J0aW5nIHdpdGggcHJvcGVydHkgcGF0aHNcbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gKiAgIHJlc291cmNlVHlwZTogJ01pY3Jvc29mdC5SZXNvdXJjZXMvcmVzb3VyY2VHcm91cHMnLFxuICogICB2ZXJzaW9uOiAnMjAyNC0xMS0wMScsXG4gKiAgIHByb3BlcnRpZXM6IHtcbiAqICAgICBuYW1lOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9LFxuICogICAgIGxvY2F0aW9uOiB7IGRhdGFUeXBlOiBQcm9wZXJ0eVR5cGUuU1RSSU5HLCByZXF1aXJlZDogdHJ1ZSB9XG4gKiAgIH0sXG4gKiAgIHJlcXVpcmVkOiBbJ25hbWUnLCAnbG9jYXRpb24nXVxuICogfTtcbiAqXG4gKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHsgbmFtZTogJ215UkcnLCBsb2NhdGlvbjogJ2Vhc3R1cycgfSk7XG4gKlxuICogQHN0YWJpbGl0eSBzdGFibGVcbiAqL1xuZXhwb3J0IGNsYXNzIFNjaGVtYU1hcHBlciB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBzY2hlbWFcbiAgICpcbiAgICogVGhpcyBmYWN0b3J5IG1ldGhvZCBjcmVhdGVzIGEgU2NoZW1hTWFwcGVyIGNvbmZpZ3VyZWQgZm9yIGEgc3BlY2lmaWMgQVBJIHNjaGVtYS5cbiAgICogVGhlIHNjaGVtYSBkZWZpbmVzIHRoZSBzdHJ1Y3R1cmUsIHZhbGlkYXRpb24gcnVsZXMsIGFuZCB0cmFuc2Zvcm1hdGlvbiBtYXBwaW5nc1xuICAgKiB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgcHJvcGVydHkgb3BlcmF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHNjaGVtYSAtIFRoZSBBUEkgc2NoZW1hIHRvIHVzZSBmb3IgdHJhbnNmb3JtYXRpb25zIGFuZCB2YWxpZGF0aW9uXG4gICAqIEByZXR1cm5zIEEgbmV3IFNjaGVtYU1hcHBlciBpbnN0YW5jZSBjb25maWd1cmVkIHdpdGggdGhlIHByb3ZpZGVkIHNjaGVtYVxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBzY2hlbWEgaXMgaW52YWxpZCBvciBtaXNzaW5nIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3Qgc2NoZW1hOiBBcGlTY2hlbWEgPSB7XG4gICAqICAgcmVzb3VyY2VUeXBlOiAnTWljcm9zb2Z0LlJlc291cmNlcy9yZXNvdXJjZUdyb3VwcycsXG4gICAqICAgdmVyc2lvbjogJzIwMjQtMTEtMDEnLFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORywgcmVxdWlyZWQ6IHRydWUgfSB9LFxuICAgKiAgIHJlcXVpcmVkOiBbJ25hbWUnXVxuICAgKiB9O1xuICAgKiBjb25zdCBtYXBwZXIgPSBTY2hlbWFNYXBwZXIuY3JlYXRlKHNjaGVtYSk7XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShzY2hlbWE6IEFwaVNjaGVtYSk6IFNjaGVtYU1hcHBlciB7XG4gICAgaWYgKCFzY2hlbWEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBjYW5ub3QgYmUgdW5kZWZpbmVkIG9yIG51bGxcIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVzb3VyY2VUeXBlIHx8IHNjaGVtYS5yZXNvdXJjZVR5cGUudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHZhbGlkIHJlc291cmNlVHlwZVwiKTtcbiAgICB9XG5cbiAgICBpZiAoIXNjaGVtYS52ZXJzaW9uIHx8IHNjaGVtYS52ZXJzaW9uLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSB2YWxpZCB2ZXJzaW9uXCIpO1xuICAgIH1cblxuICAgIGlmICghc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNjaGVtYSBtdXN0IGhhdmUgYSBwcm9wZXJ0aWVzIGRlZmluaXRpb25cIik7XG4gICAgfVxuXG4gICAgaWYgKCFzY2hlbWEucmVxdWlyZWQgfHwgIUFycmF5LmlzQXJyYXkoc2NoZW1hLnJlcXVpcmVkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiU2NoZW1hIG11c3QgaGF2ZSBhIHJlcXVpcmVkIHByb3BlcnRpZXMgYXJyYXlcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBTY2hlbWFNYXBwZXIoc2NoZW1hKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NjaGVtYTogQXBpU2NoZW1hO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lcnJvckNvbnRleHRzOiBFcnJvckNvbnRleHRbXTtcblxuICAvKipcbiAgICogUHJpdmF0ZSBjb25zdHJ1Y3RvciB0byBlbmZvcmNlIGZhY3RvcnkgcGF0dGVyblxuICAgKlxuICAgKiBAcGFyYW0gc2NoZW1hIC0gVGhlIEFQSSBzY2hlbWEgdG8gdXNlIGZvciB0aGlzIG1hcHBlciBpbnN0YW5jZVxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihzY2hlbWE6IEFwaVNjaGVtYSkge1xuICAgIHRoaXMuX3NjaGVtYSA9IHNjaGVtYTtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzID0gW107XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBwcm9wZXJ0aWVzIGZyb20gc291cmNlIGZvcm1hdCB0byB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhcHBsaWVzIHRyYW5zZm9ybWF0aW9uIHJ1bGVzIHRvIGNvbnZlcnQgcHJvcGVydGllcyBmcm9tIG9uZSBzY2hlbWFcbiAgICogZm9ybWF0IHRvIGFub3RoZXIuIEl0IGhhbmRsZXMgcHJvcGVydHkgcmVuYW1pbmcsIHJlc3RydWN0dXJpbmcsIHR5cGUgY29udmVyc2lvbixcbiAgICogYW5kIG5lc3RlZCBvYmplY3QvYXJyYXkgdHJhbnNmb3JtYXRpb25zIGJhc2VkIG9uIHRoZSB0YXJnZXQgc2NoZW1hIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBzb3VyY2VQcm9wcyAtIFRoZSBzb3VyY2UgcHJvcGVydGllcyB0byB0cmFuc2Zvcm1cbiAgICogQHBhcmFtIHRhcmdldFNjaGVtYSAtIFRoZSB0YXJnZXQgc2NoZW1hIHRvIHRyYW5zZm9ybSBwcm9wZXJ0aWVzIHRvXG4gICAqIEByZXR1cm5zIFRoZSB0cmFuc2Zvcm1lZCBwcm9wZXJ0aWVzIG1hdGNoaW5nIHRoZSB0YXJnZXQgc2NoZW1hIGZvcm1hdFxuICAgKlxuICAgKiBAdGhyb3dzIEVycm9yIGlmIHRyYW5zZm9ybWF0aW9uIGZhaWxzIGR1ZSB0byBpbmNvbXBhdGlibGUgdHlwZXMgb3IgbWlzc2luZyBtYXBwaW5nc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBzb3VyY2VQcm9wcyA9IHsgb2xkTmFtZTogJ3ZhbHVlJywgbG9jYXRpb246ICdlYXN0dXMnIH07XG4gICAqIGNvbnN0IHRhcmdldFNjaGVtYSA9IHtcbiAgICogICB0cmFuc2Zvcm1hdGlvblJ1bGVzOiB7IG9sZE5hbWU6ICduZXdOYW1lJyB9LFxuICAgKiAgIHByb3BlcnRpZXM6IHsgbmV3TmFtZTogeyBkYXRhVHlwZTogUHJvcGVydHlUeXBlLlNUUklORyB9IH1cbiAgICogfTtcbiAgICogY29uc3QgdHJhbnNmb3JtZWQgPSBtYXBwZXIudHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hKTtcbiAgICogLy8gUmVzdWx0OiB7IG5ld05hbWU6ICd2YWx1ZScsIGxvY2F0aW9uOiAnZWFzdHVzJyB9XG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtUHJvcGVydGllcyhzb3VyY2VQcm9wczogYW55LCB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSk6IGFueSB7XG4gICAgaWYgKCFzb3VyY2VQcm9wcykge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0U2NoZW1hKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgc2NoZW1hIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhckVycm9yQ29udGV4dHMoKTtcbiAgICBjb25zdCBjb250ZXh0OiBUcmFuc2Zvcm1hdGlvbkNvbnRleHQgPSB7XG4gICAgICBzb3VyY2VQYXRoOiBcIlwiLFxuICAgICAgdGFyZ2V0UGF0aDogXCJcIixcbiAgICAgIGRlcHRoOiAwLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybU9iamVjdChzb3VyY2VQcm9wcywgdGFyZ2V0U2NoZW1hLCBjb250ZXh0KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUHJvcGVydHkgdHJhbnNmb3JtYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlIHNjaGVtYSBkZWZpbml0aW9uXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHBlcmZvcm1zIGNvbXByZWhlbnNpdmUgdmFsaWRhdGlvbiBvZiBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlXG4gICAqIGNvbmZpZ3VyZWQgc2NoZW1hLiBJdCBjaGVja3MgcmVxdWlyZWQgcHJvcGVydGllcywgZGF0YSB0eXBlcywgdmFsaWRhdGlvbiBydWxlcyxcbiAgICogYW5kIHByb3ZpZGVzIGRldGFpbGVkIGVycm9yIHJlcG9ydGluZyB3aXRoIHByb3BlcnR5IHBhdGggaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gdmFsaWRhdGVcbiAgICogQHJldHVybnMgRGV0YWlsZWQgdmFsaWRhdGlvbiByZXN1bHRzIGluY2x1ZGluZyBlcnJvcnMgYW5kIHdhcm5pbmdzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IHByb3BlcnRpZXMgPSB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnLCB0YWdzOiB7IGVudjogJ2RldicgfSB9O1xuICAgKiBjb25zdCByZXN1bHQgPSBtYXBwZXIudmFsaWRhdGVQcm9wZXJ0aWVzKHByb3BlcnRpZXMpO1xuICAgKlxuICAgKiBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgKiAgIGNvbnNvbGUubG9nKCdWYWxpZGF0aW9uIGVycm9yczonLCByZXN1bHQuZXJyb3JzKTtcbiAgICogICBjb25zb2xlLmxvZygnUHJvcGVydHkgZXJyb3JzOicsIHJlc3VsdC5wcm9wZXJ0eUVycm9ycyk7XG4gICAqIH1cbiAgICovXG4gIHB1YmxpYyB2YWxpZGF0ZVByb3BlcnRpZXMocHJvcGVydGllczogYW55KTogVmFsaWRhdGlvblJlc3VsdCB7XG4gICAgdGhpcy5fY2xlYXJFcnJvckNvbnRleHRzKCk7XG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IHByb3BlcnR5RXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH0gPSB7fTtcblxuICAgIGlmICghcHJvcGVydGllcykge1xuICAgICAgZXJyb3JzLnB1c2goXCJQcm9wZXJ0aWVzIGNhbm5vdCBiZSB1bmRlZmluZWQgb3IgbnVsbFwiKTtcbiAgICAgIHJldHVybiB7IHZhbGlkOiBmYWxzZSwgZXJyb3JzLCB3YXJuaW5ncywgcHJvcGVydHlFcnJvcnMgfTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgcmVxdWlyZWQgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVSZXF1aXJlZFByb3BlcnRpZXMocHJvcGVydGllcywgXCJcIiwgZXJyb3JzLCBwcm9wZXJ0eUVycm9ycyk7XG5cbiAgICAgIC8vIFZhbGlkYXRlIGluZGl2aWR1YWwgcHJvcGVydGllc1xuICAgICAgdGhpcy5fdmFsaWRhdGVJbmRpdmlkdWFsUHJvcGVydGllcyhcbiAgICAgICAgcHJvcGVydGllcyxcbiAgICAgICAgXCJcIixcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB3YXJuaW5ncyxcbiAgICAgICAgcHJvcGVydHlFcnJvcnMsXG4gICAgICApO1xuXG4gICAgICAvLyBBcHBseSBzY2hlbWEtbGV2ZWwgdmFsaWRhdGlvbiBydWxlc1xuICAgICAgdGhpcy5fYXBwbHlTY2hlbWFWYWxpZGF0aW9uUnVsZXMoXG4gICAgICAgIHByb3BlcnRpZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgd2FybmluZ3MsXG4gICAgICAgIHByb3BlcnR5RXJyb3JzLFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGBWYWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCxcbiAgICAgIGVycm9ycyxcbiAgICAgIHdhcm5pbmdzLFxuICAgICAgcHJvcGVydHlFcnJvcnM6XG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BlcnR5RXJyb3JzKS5sZW5ndGggPiAwID8gcHJvcGVydHlFcnJvcnMgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIGRlZmF1bHQgdmFsdWVzIHRvIHByb3BlcnRpZXMgYmFzZWQgb24gc2NoZW1hIGRlZmluaXRpb25zXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGluamVjdHMgZGVmYXVsdCB2YWx1ZXMgZm9yIHByb3BlcnRpZXMgdGhhdCBhcmUgbm90IHByb3ZpZGVkXG4gICAqIGJ1dCBoYXZlIGRlZmF1bHQgdmFsdWVzIGRlZmluZWQgaW4gdGhlIHNjaGVtYS4gSXQgcHJlc2VydmVzIGV4aXN0aW5nXG4gICAqIHByb3BlcnR5IHZhbHVlcyBhbmQgb25seSBhZGRzIGRlZmF1bHRzIGZvciBtaXNzaW5nIHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0aWVzIC0gVGhlIHByb3BlcnRpZXMgdG8gYXBwbHkgZGVmYXVsdHMgdG9cbiAgICogQHJldHVybnMgTmV3IHByb3BlcnRpZXMgb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXMgYXBwbGllZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBjb25zdCBwcm9wcyA9IHsgbmFtZTogJ215UkcnIH07XG4gICAqIGNvbnN0IHdpdGhEZWZhdWx0cyA9IG1hcHBlci5hcHBseURlZmF1bHRzKHByb3BzKTtcbiAgICogLy8gSWYgc2NoZW1hIGRlZmluZXMgbG9jYXRpb24gZGVmYXVsdCBhcyAnZWFzdHVzJzpcbiAgICogLy8gUmVzdWx0OiB7IG5hbWU6ICdteVJHJywgbG9jYXRpb246ICdlYXN0dXMnIH1cbiAgICovXG4gIHB1YmxpYyBhcHBseURlZmF1bHRzKHByb3BlcnRpZXM6IGFueSk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0aWVzKSB7XG4gICAgICBwcm9wZXJ0aWVzID0ge307XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0geyAuLi5wcm9wZXJ0aWVzIH07XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5fYXBwbHlEZWZhdWx0c1RvT2JqZWN0KHJlc3VsdCwgXCJcIik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYERlZmF1bHQgdmFsdWUgYXBwbGljYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJVbmtub3duIGVycm9yXCJ9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXBzIGEgc2luZ2xlIHByb3BlcnR5IHZhbHVlIHVzaW5nIHRyYW5zZm9ybWF0aW9uIHJ1bGVzXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGFwcGxpZXMgdHJhbnNmb3JtYXRpb24gbG9naWMgdG8gYSBzaW5nbGUgcHJvcGVydHkgdmFsdWUgYmFzZWQgb25cbiAgICogdGhlIHRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uLiBJdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbiwgdmFsdWUgbWFwcGluZyxcbiAgICogYW5kIGN1c3RvbSB0cmFuc2Zvcm1hdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgYmVpbmcgbWFwcGVkXG4gICAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBzb3VyY2UgdmFsdWUgdG8gdHJhbnNmb3JtXG4gICAqIEBwYXJhbSB0YXJnZXRQcm9wZXJ0eSAtIFRoZSB0YXJnZXQgcHJvcGVydHkgZGVmaW5pdGlvbiBmcm9tIHRoZSBzY2hlbWFcbiAgICogQHJldHVybnMgVGhlIHRyYW5zZm9ybWVkIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIHRyYW5zZm9ybWF0aW9uIGZhaWxzIG9yIHR5cGVzIGFyZSBpbmNvbXBhdGlibGVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogY29uc3QgdGFyZ2V0UHJvcCA9IHsgZGF0YVR5cGU6IFByb3BlcnR5VHlwZS5TVFJJTkcsIHJlcXVpcmVkOiB0cnVlIH07XG4gICAqIGNvbnN0IG1hcHBlZCA9IG1hcHBlci5tYXBQcm9wZXJ0eSgnbmFtZScsICdteVJlc291cmNlR3JvdXAnLCB0YXJnZXRQcm9wKTtcbiAgICovXG4gIHB1YmxpYyBtYXBQcm9wZXJ0eShcbiAgICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogYW55LFxuICAgIHRhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICk6IGFueSB7XG4gICAgaWYgKCFwcm9wZXJ0eU5hbWUgfHwgcHJvcGVydHlOYW1lLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3BlcnR5IG5hbWUgY2Fubm90IGJlIGVtcHR5XCIpO1xuICAgIH1cblxuICAgIGlmICghdGFyZ2V0UHJvcGVydHkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlRhcmdldCBwcm9wZXJ0eSBkZWZpbml0aW9uIGNhbm5vdCBiZSB1bmRlZmluZWRcIik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1WYWx1ZSh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5TmFtZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFByb3BlcnR5IG1hcHBpbmcgZmFpbGVkIGZvciAnJHtwcm9wZXJ0eU5hbWV9JzogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFwiVW5rbm93biBlcnJvclwifWAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFBSSVZBVEUgSEVMUEVSIE1FVEhPRFNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBlcnJvciBjb250ZXh0IGFycmF5IGZvciBhIG5ldyBvcGVyYXRpb25cbiAgICovXG4gIHByaXZhdGUgX2NsZWFyRXJyb3JDb250ZXh0cygpOiB2b2lkIHtcbiAgICB0aGlzLl9lcnJvckNvbnRleHRzLmxlbmd0aCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyBhbiBvYmplY3QgdXNpbmcgdGhlIHRhcmdldCBzY2hlbWFcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybU9iamVjdChcbiAgICBzb3VyY2VPYmo6IGFueSxcbiAgICB0YXJnZXRTY2hlbWE6IEFwaVNjaGVtYSxcbiAgICBfY29udGV4dDogVHJhbnNmb3JtYXRpb25Db250ZXh0LFxuICApOiBhbnkge1xuICAgIGlmICghc291cmNlT2JqIHx8IHR5cGVvZiBzb3VyY2VPYmogIT09IFwib2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiBzb3VyY2VPYmo7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBhbnkgPSB7fTtcbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvblJ1bGVzID0gdGFyZ2V0U2NoZW1hLnRyYW5zZm9ybWF0aW9uUnVsZXMgfHwge307XG5cbiAgICAvLyBBcHBseSB0cmFuc2Zvcm1hdGlvbiBydWxlcyBmaXJzdFxuICAgIGZvciAoY29uc3QgW3NvdXJjZUtleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHNvdXJjZU9iaikpIHtcbiAgICAgIGNvbnN0IHRhcmdldEtleSA9IHRyYW5zZm9ybWF0aW9uUnVsZXNbc291cmNlS2V5XSB8fCBzb3VyY2VLZXk7XG4gICAgICBjb25zdCB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFNjaGVtYS5wcm9wZXJ0aWVzW3RhcmdldEtleV07XG5cbiAgICAgIGlmICh0YXJnZXRQcm9wZXJ0eSkge1xuICAgICAgICBjb25zdCB0cmFuc2Zvcm1lZFZhbHVlID0gdGhpcy5fdHJhbnNmb3JtVmFsdWUoXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgdGFyZ2V0UHJvcGVydHksXG4gICAgICAgICAgdGFyZ2V0S2V5LFxuICAgICAgICApO1xuICAgICAgICByZXN1bHRbdGFyZ2V0S2V5XSA9IHRyYW5zZm9ybWVkVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBQcm9wZXJ0eSBub3QgaW4gdGFyZ2V0IHNjaGVtYSAtIGNvcHkgYXMtaXMgdW5sZXNzIGV4cGxpY2l0bHkgZXhjbHVkZWRcbiAgICAgICAgcmVzdWx0W3RhcmdldEtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgYSBzaW5nbGUgdmFsdWUgYmFzZWQgb24gdGFyZ2V0IHByb3BlcnR5IGRlZmluaXRpb25cbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVZhbHVlKFxuICAgIHZhbHVlOiBhbnksXG4gICAgdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgaWYgKHRhcmdldFByb3BlcnR5LmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0YXJnZXRQcm9wZXJ0eS5kZWZhdWx0VmFsdWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0YXJnZXRQcm9wZXJ0eS5kYXRhVHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuU1RSSU5HOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9TdHJpbmcodmFsdWUsIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLk5VTUJFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5CT09MRUFOOlxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNmb3JtVG9Cb29sZWFuKHZhbHVlLCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zZm9ybVRvQXJyYXkodmFsdWUsIHRhcmdldFByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2Zvcm1Ub09iamVjdCh2YWx1ZSwgdGFyZ2V0UHJvcGVydHksIHByb3BlcnR5UGF0aCk7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBzdHJpbmcgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9TdHJpbmcodmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBzdHJpbmcuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gbnVtYmVyIHR5cGVcbiAgICovXG4gIHByaXZhdGUgX3RyYW5zZm9ybVRvTnVtYmVyKHZhbHVlOiBhbnksIHByb3BlcnR5UGF0aDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKTtcbiAgICAgIGlmICghaXNOYU4ocGFyc2VkKSkge1xuICAgICAgICByZXR1cm4gcGFyc2VkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBDYW5ub3QgY29udmVydCB2YWx1ZSBhdCAnJHtwcm9wZXJ0eVBhdGh9JyB0byBudW1iZXIuIEdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgdmFsdWUgdG8gYm9vbGVhbiB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0Jvb2xlYW4odmFsdWU6IGFueSwgcHJvcGVydHlQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IGxvd2VyID0gdmFsdWUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJ0cnVlXCIgfHwgbG93ZXIgPT09IFwiMVwiKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChsb3dlciA9PT0gXCJmYWxzZVwiIHx8IGxvd2VyID09PSBcIjBcIikgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIpIHtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gMDtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgQ2Fubm90IGNvbnZlcnQgdmFsdWUgYXQgJyR7cHJvcGVydHlQYXRofScgdG8gYm9vbGVhbi4gR290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBhcnJheSB0eXBlXG4gICAqL1xuICBwcml2YXRlIF90cmFuc2Zvcm1Ub0FycmF5KFxuICAgIHZhbHVlOiBhbnksXG4gICAgX3RhcmdldFByb3BlcnR5OiBQcm9wZXJ0eURlZmluaXRpb24sXG4gICAgcHJvcGVydHlQYXRoOiBzdHJpbmcsXG4gICk6IGFueVtdIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB2YWx1ZTsgLy8gVE9ETzogVHJhbnNmb3JtIGFycmF5IGVsZW1lbnRzIGlmIG5lZWRlZFxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBFeHBlY3RlZCBhcnJheSBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtcyB2YWx1ZSB0byBvYmplY3QgdHlwZVxuICAgKi9cbiAgcHJpdmF0ZSBfdHJhbnNmb3JtVG9PYmplY3QoXG4gICAgdmFsdWU6IGFueSxcbiAgICBfdGFyZ2V0UHJvcGVydHk6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogYW55IHtcbiAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIHZhbHVlOyAvLyBUT0RPOiBBcHBseSBuZXN0ZWQgdHJhbnNmb3JtYXRpb24gcnVsZXMgaWYgbmVlZGVkXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEV4cGVjdGVkIG9iamVjdCBhdCAnJHtwcm9wZXJ0eVBhdGh9JywgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHJlcXVpcmVkIHByb3BlcnRpZXNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlUmVxdWlyZWRQcm9wZXJ0aWVzKFxuICAgIHByb3BlcnRpZXM6IGFueSxcbiAgICBiYXNlUGF0aDogc3RyaW5nLFxuICAgIGVycm9yczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCByZXF1aXJlZFByb3Agb2YgdGhpcy5fc2NoZW1hLnJlcXVpcmVkKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IGJhc2VQYXRoID8gYCR7YmFzZVBhdGh9LiR7cmVxdWlyZWRQcm9wfWAgOiByZXF1aXJlZFByb3A7XG5cbiAgICAgIGlmIChcbiAgICAgICAgIShyZXF1aXJlZFByb3AgaW4gcHJvcGVydGllcykgfHxcbiAgICAgICAgcHJvcGVydGllc1tyZXF1aXJlZFByb3BdID09PSB1bmRlZmluZWRcbiAgICAgICkge1xuICAgICAgICBjb25zdCBlcnJvciA9IGBSZXF1aXJlZCBwcm9wZXJ0eSAnJHtyZXF1aXJlZFByb3B9JyBpcyBtaXNzaW5nYDtcbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3IpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goZXJyb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaW5kaXZpZHVhbCBwcm9wZXJ0aWVzIGFnYWluc3QgdGhlaXIgZGVmaW5pdGlvbnNcbiAgICovXG4gIHByaXZhdGUgX3ZhbGlkYXRlSW5kaXZpZHVhbFByb3BlcnRpZXMoXG4gICAgcHJvcGVydGllczogYW55LFxuICAgIGJhc2VQYXRoOiBzdHJpbmcsXG4gICAgZXJyb3JzOiBzdHJpbmdbXSxcbiAgICB3YXJuaW5nczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgLy8gRnJhbWV3b3JrIHByb3BlcnRpZXMgdGhhdCBzaG91bGQgbm90IGJlIHZhbGlkYXRlZCBhZ2FpbnN0IEF6dXJlIEFQSSBzY2hlbWFcbiAgICBjb25zdCBmcmFtZXdvcmtQcm9wZXJ0aWVzID0gbmV3IFNldChbXG4gICAgICBcImFwaVZlcnNpb25cIixcbiAgICAgIFwiZW5hYmxlTWlncmF0aW9uQW5hbHlzaXNcIixcbiAgICAgIFwiZW5hYmxlVmFsaWRhdGlvblwiLFxuICAgICAgXCJlbmFibGVUcmFuc2Zvcm1hdGlvblwiLFxuICAgICAgXCJpZ25vcmVDaGFuZ2VzXCIsXG4gICAgICBcInJlc291cmNlR3JvdXBJZFwiLFxuICAgICAgXCJtb25pdG9yaW5nXCIsIC8vIEZyYW1ld29yay1sZXZlbCBtb25pdG9yaW5nIGNvbmZpZ3VyYXRpb25cbiAgICAgIFwidmlydHVhbE5ldHdvcmtJZFwiLCAvLyBGcmFtZXdvcmstbGV2ZWwgZGVwZW5kZW5jeSB0cmFja2luZyBmb3IgY2hpbGQgcmVzb3VyY2VzXG4gICAgXSk7XG5cbiAgICBmb3IgKGNvbnN0IFtwcm9wTmFtZSwgcHJvcFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwcm9wZXJ0aWVzKSkge1xuICAgICAgY29uc3QgZnVsbFBhdGggPSBiYXNlUGF0aCA/IGAke2Jhc2VQYXRofS4ke3Byb3BOYW1lfWAgOiBwcm9wTmFtZTtcblxuICAgICAgLy8gU2tpcCBmcmFtZXdvcmsgcHJvcGVydGllc1xuICAgICAgaWYgKGZyYW1ld29ya1Byb3BlcnRpZXMuaGFzKHByb3BOYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJvcERlZiA9IHRoaXMuX3NjaGVtYS5wcm9wZXJ0aWVzW3Byb3BOYW1lXTtcblxuICAgICAgaWYgKCFwcm9wRGVmKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYFVua25vd24gcHJvcGVydHkgJyR7cHJvcE5hbWV9JyBub3QgZGVmaW5lZCBpbiBzY2hlbWFgKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWRcbiAgICAgIGlmIChwcm9wRGVmLmRlcHJlY2F0ZWQpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgUHJvcGVydHkgJyR7cHJvcE5hbWV9JyBpcyBkZXByZWNhdGVkYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIHByb3BlcnR5IHR5cGVcbiAgICAgIGNvbnN0IHR5cGVFcnJvcnMgPSB0aGlzLl92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICAgICAgcHJvcFZhbHVlLFxuICAgICAgICBwcm9wRGVmLFxuICAgICAgICBmdWxsUGF0aCxcbiAgICAgICk7XG4gICAgICBpZiAodHlwZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKC4uLnR5cGVFcnJvcnMpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdID0gW107XG4gICAgICAgIH1cbiAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4udHlwZUVycm9ycyk7XG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IHZhbGlkYXRpb24gcnVsZXNcbiAgICAgIGlmIChwcm9wRGVmLnZhbGlkYXRpb24pIHtcbiAgICAgICAgY29uc3QgcnVsZUVycm9ycyA9IHRoaXMuX2FwcGx5VmFsaWRhdGlvblJ1bGVzKFxuICAgICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgICBwcm9wRGVmLnZhbGlkYXRpb24sXG4gICAgICAgICAgZnVsbFBhdGgsXG4gICAgICAgICk7XG4gICAgICAgIGlmIChydWxlRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBlcnJvcnMucHVzaCguLi5ydWxlRXJyb3JzKTtcblxuICAgICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eUVycm9yc1tmdWxsUGF0aF0gPSBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvcGVydHlFcnJvcnNbZnVsbFBhdGhdLnB1c2goLi4ucnVsZUVycm9ycyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHByb3BlcnR5IHR5cGUgYWdhaW5zdCBkZWZpbml0aW9uXG4gICAqL1xuICBwcml2YXRlIF92YWxpZGF0ZVByb3BlcnR5VHlwZShcbiAgICB2YWx1ZTogYW55LFxuICAgIHByb3BEZWY6IFByb3BlcnR5RGVmaW5pdGlvbixcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICBpZiAocHJvcERlZi5yZXF1aXJlZCkge1xuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgaXMgcmVxdWlyZWQgYnV0IGlzICR7dmFsdWUgPT09IG51bGwgPyBcIm51bGxcIiA6IFwidW5kZWZpbmVkXCJ9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwcm9wRGVmLmRhdGFUeXBlKSB7XG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5TVFJJTkc6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGEgc3RyaW5nLCBnb3Q6ICR7dHlwZW9mIHZhbHVlfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBQcm9wZXJ0eVR5cGUuTlVNQkVSOlxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIG51bWJlciwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkJPT0xFQU46XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgbXVzdCBiZSBhIGJvb2xlYW4sIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5BUlJBWTpcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYW4gYXJyYXksIGdvdDogJHt0eXBlb2YgdmFsdWV9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFByb3BlcnR5VHlwZS5PQkpFQ1Q6XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwib2JqZWN0XCIgfHwgQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGFuIG9iamVjdCwgZ290OiAke3R5cGVvZiB2YWx1ZX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgUHJvcGVydHlUeXBlLkFOWTpcbiAgICAgICAgLy8gQW55IHR5cGUgaXMgYWx3YXlzIHZhbGlkXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICBgVW5rbm93biBkYXRhIHR5cGUgJyR7cHJvcERlZi5kYXRhVHlwZX0nIGZvciBwcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9J2AsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHZhbGlkYXRpb24gcnVsZXMgdG8gYSBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgcHJpdmF0ZSBfYXBwbHlWYWxpZGF0aW9uUnVsZXMoXG4gICAgdmFsdWU6IGFueSxcbiAgICBydWxlczogVmFsaWRhdGlvblJ1bGVbXSxcbiAgICBwcm9wZXJ0eVBhdGg6IHN0cmluZyxcbiAgKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgc3dpdGNoIChydWxlLnJ1bGVUeXBlKSB7XG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblJ1bGVUeXBlLlJFUVVJUkVEOlxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8IGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBpcyByZXF1aXJlZGAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFZhbGlkYXRpb25SdWxlVHlwZS5QQVRURVJOX01BVENIOlxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcnVsZS52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcGF0dGVybiA9IG5ldyBSZWdFeHAocnVsZS52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoIXBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8XG4gICAgICAgICAgICAgICAgICBgUHJvcGVydHkgJyR7cHJvcGVydHlQYXRofScgZG9lcyBub3QgbWF0Y2ggcmVxdWlyZWQgcGF0dGVybmAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgVmFsaWRhdGlvblJ1bGVUeXBlLlZBTFVFX1JBTkdFOlxuICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgcnVsZS52YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgcmFuZ2UgPSBydWxlLnZhbHVlO1xuICAgICAgICAgICAgaWYgKHJhbmdlLm1pbiAhPT0gdW5kZWZpbmVkICYmIHZhbHVlIDwgcmFuZ2UubWluKSB7XG4gICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgYFByb3BlcnR5ICcke3Byb3BlcnR5UGF0aH0nIG11c3QgYmUgYXQgbGVhc3QgJHtyYW5nZS5taW59YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyYW5nZS5tYXggIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSA+IHJhbmdlLm1heCkge1xuICAgICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgIGBQcm9wZXJ0eSAnJHtwcm9wZXJ0eVBhdGh9JyBtdXN0IGJlIGF0IG1vc3QgJHtyYW5nZS5tYXh9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uUnVsZVR5cGUuVFlQRV9DSEVDSzpcbiAgICAgICAgICAvLyBUeXBlIGNoZWNraW5nIGlzIGhhbmRsZWQgaW4gX3ZhbGlkYXRlUHJvcGVydHlUeXBlXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBWYWxpZGF0aW9uUnVsZVR5cGUuQ1VTVE9NX1ZBTElEQVRJT046XG4gICAgICAgICAgLy8gQ3VzdG9tIHZhbGlkYXRpb24gd291bGQgcmVxdWlyZSBmdW5jdGlvbiBzdXBwb3J0LCB3aGljaCBpcyBjb21wbGV4IGluIEpTSUlcbiAgICAgICAgICAvLyBGb3Igbm93LCB3ZSdsbCBqdXN0IGxvZyBhIHdhcm5pbmdcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgc2NoZW1hLWxldmVsIHZhbGlkYXRpb24gcnVsZXNcbiAgICovXG4gIHByaXZhdGUgX2FwcGx5U2NoZW1hVmFsaWRhdGlvblJ1bGVzKFxuICAgIHByb3BlcnRpZXM6IGFueSxcbiAgICBlcnJvcnM6IHN0cmluZ1tdLFxuICAgIF93YXJuaW5nczogc3RyaW5nW10sXG4gICAgcHJvcGVydHlFcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zY2hlbWEudmFsaWRhdGlvblJ1bGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB2YWxpZGF0aW9uIG9mIHRoaXMuX3NjaGVtYS52YWxpZGF0aW9uUnVsZXMpIHtcbiAgICAgIGNvbnN0IHByb3BWYWx1ZSA9IHByb3BlcnRpZXNbdmFsaWRhdGlvbi5wcm9wZXJ0eV07XG4gICAgICBjb25zdCBydWxlRXJyb3JzID0gdGhpcy5fYXBwbHlWYWxpZGF0aW9uUnVsZXMoXG4gICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGlvbi5ydWxlcyxcbiAgICAgICAgdmFsaWRhdGlvbi5wcm9wZXJ0eSxcbiAgICAgICk7XG4gICAgICBpZiAocnVsZUVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKC4uLnJ1bGVFcnJvcnMpO1xuXG4gICAgICAgIGlmICghcHJvcGVydHlFcnJvcnNbdmFsaWRhdGlvbi5wcm9wZXJ0eV0pIHtcbiAgICAgICAgICBwcm9wZXJ0eUVycm9yc1t2YWxpZGF0aW9uLnByb3BlcnR5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHByb3BlcnR5RXJyb3JzW3ZhbGlkYXRpb24ucHJvcGVydHldLnB1c2goLi4ucnVsZUVycm9ycyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgZGVmYXVsdCB2YWx1ZXMgdG8gYW4gb2JqZWN0XG4gICAqL1xuICBwcml2YXRlIF9hcHBseURlZmF1bHRzVG9PYmplY3Qob2JqOiBhbnksIF9iYXNlUGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBbcHJvcE5hbWUsIHByb3BEZWZdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX3NjaGVtYS5wcm9wZXJ0aWVzKSkge1xuICAgICAgaWYgKCEocHJvcE5hbWUgaW4gb2JqKSAmJiBwcm9wRGVmLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ialtwcm9wTmFtZV0gPSBwcm9wRGVmLmRlZmF1bHRWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|