@fjall/components-infrastructure 0.89.5 → 0.89.6
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/LICENSE +50 -21
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -18
- package/dist/lib/app.d.ts +12 -12
- package/dist/lib/app.js +61 -56
- package/dist/lib/aspects/index.d.ts +1 -1
- package/dist/lib/aspects/index.js +1 -6
- package/dist/lib/aspects/resourceInventory.js +6 -13
- package/dist/lib/config/audit.js +1 -5
- package/dist/lib/config/aws/accessAnalyser.d.ts +11 -0
- package/dist/lib/config/aws/accessAnalyser.js +17 -0
- package/dist/lib/config/aws/accountAuditRole.js +11 -15
- package/dist/lib/config/aws/accountMonitoringRole.js +25 -29
- package/dist/lib/config/aws/alarmTopic.d.ts +8 -0
- package/dist/lib/config/aws/alarmTopic.js +19 -0
- package/dist/lib/config/aws/cloudTrail.js +4 -9
- package/dist/lib/config/aws/configRecorder.d.ts +16 -0
- package/dist/lib/config/aws/configRecorder.js +51 -0
- package/dist/lib/config/aws/configRulePreset.d.ts +13 -0
- package/dist/lib/config/aws/configRulePreset.js +62 -0
- package/dist/lib/config/aws/disasterRecovery.d.ts +1 -1
- package/dist/lib/config/aws/disasterRecovery.js +56 -73
- package/dist/lib/config/aws/ebsDefaultEncryption.d.ts +8 -0
- package/dist/lib/config/aws/ebsDefaultEncryption.js +41 -0
- package/dist/lib/config/aws/ecrDefaultImage.js +25 -30
- package/dist/lib/config/aws/eventBus.js +8 -11
- package/dist/lib/config/aws/guardDutyDetector.d.ts +16 -0
- package/dist/lib/config/aws/guardDutyDetector.js +26 -0
- package/dist/lib/config/aws/identityCenter.d.ts +1 -1
- package/dist/lib/config/aws/identityCenter.js +23 -25
- package/dist/lib/config/aws/identityCenterGroupMembership.js +18 -22
- package/dist/lib/config/aws/index.d.ts +19 -8
- package/dist/lib/config/aws/index.js +19 -25
- package/dist/lib/config/aws/inspectorEnablement.d.ts +9 -0
- package/dist/lib/config/aws/inspectorEnablement.js +51 -0
- package/dist/lib/config/aws/ipam.js +9 -13
- package/dist/lib/config/aws/oidcConnector.js +8 -12
- package/dist/lib/config/aws/platform.js +1 -5
- package/dist/lib/config/aws/s3BlockPublicAccess.d.ts +9 -0
- package/dist/lib/config/aws/s3BlockPublicAccess.js +55 -0
- package/dist/lib/config/aws/scpPreset.d.ts +21 -0
- package/dist/lib/config/aws/scpPreset.js +311 -0
- package/dist/lib/config/aws/securityBaseline.d.ts +15 -0
- package/dist/lib/config/aws/securityBaseline.js +27 -0
- package/dist/lib/config/aws/securityHubHub.d.ts +15 -0
- package/dist/lib/config/aws/securityHubHub.js +28 -0
- package/dist/lib/config/aws/securityServicesAdmin.d.ts +20 -0
- package/dist/lib/config/aws/securityServicesAdmin.js +115 -0
- package/dist/lib/config/index.d.ts +2 -2
- package/dist/lib/config/index.js +2 -21
- package/dist/lib/index.d.ts +4 -4
- package/dist/lib/index.js +5 -26
- package/dist/lib/patterns/aws/account.d.ts +17 -1
- package/dist/lib/patterns/aws/account.js +60 -33
- package/dist/lib/patterns/aws/apexDomainPattern.d.ts +26 -0
- package/dist/lib/patterns/aws/apexDomainPattern.js +91 -0
- package/dist/lib/patterns/aws/auditRole.js +13 -16
- package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
- package/dist/lib/patterns/aws/buildkite.js +70 -75
- package/dist/lib/patterns/aws/cdn.d.ts +5 -5
- package/dist/lib/patterns/aws/cdn.js +22 -28
- package/dist/lib/patterns/aws/compute.d.ts +1 -1
- package/dist/lib/patterns/aws/compute.js +31 -44
- package/dist/lib/patterns/aws/computeEc2.d.ts +1 -1
- package/dist/lib/patterns/aws/computeEc2.js +11 -14
- package/dist/lib/patterns/aws/computeEcs.d.ts +18 -2
- package/dist/lib/patterns/aws/computeEcs.js +41 -31
- package/dist/lib/patterns/aws/computeLambda.d.ts +2 -2
- package/dist/lib/patterns/aws/computeLambda.js +24 -31
- package/dist/lib/patterns/aws/database.d.ts +16 -7
- package/dist/lib/patterns/aws/database.js +81 -73
- package/dist/lib/patterns/aws/delegatedDomainPattern.d.ts +17 -0
- package/dist/lib/patterns/aws/delegatedDomainPattern.js +54 -0
- package/dist/lib/patterns/aws/dnsRecordComposer.d.ts +25 -0
- package/dist/lib/patterns/aws/dnsRecordComposer.js +225 -0
- package/dist/lib/patterns/aws/domain.d.ts +32 -0
- package/dist/lib/patterns/aws/domain.js +115 -0
- package/dist/lib/patterns/aws/domainDelegation.d.ts +3 -3
- package/dist/lib/patterns/aws/domainDelegation.js +28 -37
- package/dist/lib/patterns/aws/domainFactory.d.ts +20 -5
- package/dist/lib/patterns/aws/domainFactory.js +48 -10
- package/dist/lib/patterns/aws/domainValidation.d.ts +11 -0
- package/dist/lib/patterns/aws/domainValidation.js +145 -0
- package/dist/lib/patterns/aws/externalRecordsPattern.d.ts +18 -0
- package/dist/lib/patterns/aws/externalRecordsPattern.js +141 -0
- package/dist/lib/patterns/aws/fivetranProxy.d.ts +1 -1
- package/dist/lib/patterns/aws/fivetranProxy.js +6 -11
- package/dist/lib/patterns/aws/index.d.ts +21 -19
- package/dist/lib/patterns/aws/index.js +25 -36
- package/dist/lib/patterns/aws/interfaces/cdn.js +1 -5
- package/dist/lib/patterns/aws/interfaces/compute.js +4 -11
- package/dist/lib/patterns/aws/interfaces/connector.js +1 -15
- package/dist/lib/patterns/aws/interfaces/database.d.ts +1 -1
- package/dist/lib/patterns/aws/interfaces/database.js +6 -15
- package/dist/lib/patterns/aws/interfaces/domain.d.ts +80 -2
- package/dist/lib/patterns/aws/interfaces/domain.js +1 -6
- package/dist/lib/patterns/aws/interfaces/index.js +8 -41
- package/dist/lib/patterns/aws/interfaces/messaging.js +4 -11
- package/dist/lib/patterns/aws/interfaces/organisation.d.ts +1 -1
- package/dist/lib/patterns/aws/interfaces/organisation.js +4 -11
- package/dist/lib/patterns/aws/interfaces/pattern.js +2 -7
- package/dist/lib/patterns/aws/interfaces/storage.js +1 -5
- package/dist/lib/patterns/aws/managedIdentityCenter.js +7 -12
- package/dist/lib/patterns/aws/messaging.d.ts +7 -7
- package/dist/lib/patterns/aws/messaging.js +22 -33
- package/dist/lib/patterns/aws/network.d.ts +2 -2
- package/dist/lib/patterns/aws/network.js +9 -14
- package/dist/lib/patterns/aws/organisation.d.ts +6 -2
- package/dist/lib/patterns/aws/organisation.js +34 -35
- package/dist/lib/patterns/aws/organisationFactory.d.ts +3 -3
- package/dist/lib/patterns/aws/organisationFactory.js +7 -12
- package/dist/lib/patterns/aws/pattern.js +6 -12
- package/dist/lib/patterns/aws/payload.js +73 -63
- package/dist/lib/patterns/aws/platform.d.ts +6 -3
- package/dist/lib/patterns/aws/platform.js +15 -15
- package/dist/lib/patterns/aws/storage.d.ts +6 -4
- package/dist/lib/patterns/aws/storage.js +35 -40
- package/dist/lib/patterns/aws/subdomainHostedZone.js +11 -16
- package/dist/lib/patterns/aws/targets/fjallTargets.d.ts +37 -0
- package/dist/lib/patterns/aws/targets/fjallTargets.js +66 -0
- package/dist/lib/patterns/aws/targets/index.d.ts +2 -0
- package/dist/lib/patterns/aws/targets/index.js +2 -0
- package/dist/lib/patterns/aws/targets/targetResolution.d.ts +76 -0
- package/dist/lib/patterns/aws/targets/targetResolution.js +119 -0
- package/dist/lib/patterns/index.d.ts +1 -0
- package/dist/lib/patterns/index.js +1 -0
- package/dist/lib/resources/aws/analytics/clickhouse.d.ts +15 -0
- package/dist/lib/resources/aws/analytics/clickhouse.js +292 -0
- package/dist/lib/resources/aws/analytics/clickhouseConstants.d.ts +73 -0
- package/dist/lib/resources/aws/analytics/clickhouseConstants.js +87 -0
- package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.d.ts +13 -0
- package/dist/lib/resources/aws/analytics/clickhouseSecurityGroup.js +28 -0
- package/dist/lib/resources/aws/analytics/clickhouseTypes.d.ts +47 -0
- package/dist/lib/resources/aws/analytics/clickhouseTypes.js +1 -0
- package/dist/lib/resources/aws/analytics/clickhouseUserData.d.ts +5 -0
- package/dist/lib/resources/aws/analytics/clickhouseUserData.js +248 -0
- package/dist/lib/resources/aws/analytics/index.d.ts +2 -0
- package/dist/lib/resources/aws/analytics/index.js +1 -0
- package/dist/lib/resources/aws/audit/auditRole.js +10 -15
- package/dist/lib/resources/aws/audit/index.d.ts +1 -1
- package/dist/lib/resources/aws/audit/index.js +1 -6
- package/dist/lib/resources/aws/backup/backupPlan.d.ts +1 -1
- package/dist/lib/resources/aws/backup/backupPlan.js +14 -16
- package/dist/lib/resources/aws/backup/backupVault.d.ts +1 -1
- package/dist/lib/resources/aws/backup/backupVault.js +13 -15
- package/dist/lib/resources/aws/backup/index.d.ts +2 -2
- package/dist/lib/resources/aws/backup/index.js +2 -19
- package/dist/lib/resources/aws/base/awsStack.js +17 -19
- package/dist/lib/resources/aws/base/index.d.ts +1 -1
- package/dist/lib/resources/aws/base/index.js +1 -18
- package/dist/lib/resources/aws/cdn/cloudFront.js +40 -42
- package/dist/lib/resources/aws/cdn/index.d.ts +1 -1
- package/dist/lib/resources/aws/cdn/index.js +1 -18
- package/dist/lib/resources/aws/compute/ec2.js +39 -39
- package/dist/lib/resources/aws/compute/ecs.d.ts +18 -396
- package/dist/lib/resources/aws/compute/ecs.js +105 -976
- package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.d.ts +22 -0
- package/dist/lib/resources/aws/compute/ecsCapacityProviderAspect.js +35 -0
- package/dist/lib/resources/aws/compute/ecsConstants.d.ts +20 -0
- package/dist/lib/resources/aws/compute/ecsConstants.js +49 -0
- package/dist/lib/resources/aws/compute/ecsContext.d.ts +12 -0
- package/dist/lib/resources/aws/compute/ecsContext.js +1 -0
- package/dist/lib/resources/aws/compute/ecsImages.d.ts +4 -0
- package/dist/lib/resources/aws/compute/ecsImages.js +35 -0
- package/dist/lib/resources/aws/compute/ecsNetworking.d.ts +28 -0
- package/dist/lib/resources/aws/compute/ecsNetworking.js +290 -0
- package/dist/lib/resources/aws/compute/ecsRoles.d.ts +15 -0
- package/dist/lib/resources/aws/compute/ecsRoles.js +110 -0
- package/dist/lib/resources/aws/compute/ecsServiceFactory.d.ts +33 -0
- package/dist/lib/resources/aws/compute/ecsServiceFactory.js +183 -0
- package/dist/lib/resources/aws/compute/ecsTaskDefinition.d.ts +30 -0
- package/dist/lib/resources/aws/compute/ecsTaskDefinition.js +168 -0
- package/dist/lib/resources/aws/compute/ecsTypes.d.ts +337 -0
- package/dist/lib/resources/aws/compute/ecsTypes.js +10 -0
- package/dist/lib/resources/aws/compute/ecsValidation.d.ts +18 -0
- package/dist/lib/resources/aws/compute/ecsValidation.js +72 -0
- package/dist/lib/resources/aws/compute/index.d.ts +3 -3
- package/dist/lib/resources/aws/compute/index.js +3 -20
- package/dist/lib/resources/aws/compute/lambda.d.ts +10 -2
- package/dist/lib/resources/aws/compute/lambda.js +81 -71
- package/dist/lib/resources/aws/database/dynamodb.js +24 -27
- package/dist/lib/resources/aws/database/index.d.ts +7 -7
- package/dist/lib/resources/aws/database/index.js +14 -33
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +10 -2
- package/dist/lib/resources/aws/database/rdsAurora.js +76 -61
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +2 -2
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +24 -21
- package/dist/lib/resources/aws/database/rdsDefaults.js +3 -7
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +2 -2
- package/dist/lib/resources/aws/database/rdsHelpers.js +21 -29
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +11 -3
- package/dist/lib/resources/aws/database/rdsInstance.js +101 -83
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +5 -9
- package/dist/lib/resources/aws/iam/delegationRole.d.ts +18 -0
- package/dist/lib/resources/aws/iam/delegationRole.js +60 -0
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +4 -9
- package/dist/lib/resources/aws/iam/identityCenter/group.js +5 -9
- package/dist/lib/resources/aws/iam/identityCenter/index.d.ts +3 -3
- package/dist/lib/resources/aws/iam/identityCenter/index.js +3 -20
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -1
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +5 -9
- package/dist/lib/resources/aws/iam/index.d.ts +5 -4
- package/dist/lib/resources/aws/iam/index.js +5 -21
- package/dist/lib/resources/aws/iam/instanceProfile.js +2 -7
- package/dist/lib/resources/aws/iam/managedPolicy.js +2 -7
- package/dist/lib/resources/aws/iam/policy.js +2 -7
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/index.d.ts +7 -7
- package/dist/lib/resources/aws/index.js +7 -24
- package/dist/lib/resources/aws/logging/cloudTrail.d.ts +1 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +18 -22
- package/dist/lib/resources/aws/logging/index.d.ts +2 -2
- package/dist/lib/resources/aws/logging/index.js +2 -19
- package/dist/lib/resources/aws/logging/logGroup.js +4 -10
- package/dist/lib/resources/aws/messaging/eventbridge.js +11 -14
- package/dist/lib/resources/aws/messaging/index.d.ts +4 -4
- package/dist/lib/resources/aws/messaging/index.js +4 -21
- package/dist/lib/resources/aws/messaging/sns.js +11 -14
- package/dist/lib/resources/aws/messaging/sqs.js +32 -34
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -1
- package/dist/lib/resources/aws/messaging/utils.js +1 -6
- package/dist/lib/resources/aws/monitoring/alarmDefaults.d.ts +36 -0
- package/dist/lib/resources/aws/monitoring/alarmDefaults.js +34 -0
- package/dist/lib/resources/aws/monitoring/ecsAlarms.d.ts +21 -0
- package/dist/lib/resources/aws/monitoring/ecsAlarms.js +88 -0
- package/dist/lib/resources/aws/monitoring/index.d.ts +4 -0
- package/dist/lib/resources/aws/monitoring/index.js +4 -5
- package/dist/lib/resources/aws/monitoring/lambdaAlarms.d.ts +18 -0
- package/dist/lib/resources/aws/monitoring/lambdaAlarms.js +44 -0
- package/dist/lib/resources/aws/monitoring/rdsAlarms.d.ts +20 -0
- package/dist/lib/resources/aws/monitoring/rdsAlarms.js +52 -0
- package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.d.ts +17 -0
- package/dist/lib/resources/aws/networking/crossAccountDelegationRecord.js +26 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aaaaRecord.js +22 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/aliasRecord.js +23 -0
- package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.d.ts +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/caaRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/cnameRecord.js +22 -0
- package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.d.ts +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/dnsRecordBase.js +17 -0
- package/dist/lib/resources/aws/networking/dnsRecord/index.d.ts +10 -0
- package/dist/lib/resources/aws/networking/dnsRecord/index.js +10 -0
- package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.d.ts +16 -0
- package/dist/lib/resources/aws/networking/dnsRecord/mxRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/nsRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.d.ts +18 -0
- package/dist/lib/resources/aws/networking/dnsRecord/srvRecord.js +21 -0
- package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.d.ts +12 -0
- package/dist/lib/resources/aws/networking/dnsRecord/txtRecord.js +21 -0
- package/dist/lib/resources/aws/networking/domain.d.ts +1 -1
- package/dist/lib/resources/aws/networking/domain.js +32 -34
- package/dist/lib/resources/aws/networking/domainCertificate.d.ts +8 -3
- package/dist/lib/resources/aws/networking/domainCertificate.js +22 -16
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +23 -19
- package/dist/lib/resources/aws/networking/hostedZone.js +70 -134
- package/dist/lib/resources/aws/networking/index.d.ts +8 -7
- package/dist/lib/resources/aws/networking/index.js +8 -24
- package/dist/lib/resources/aws/networking/ipam.js +2 -7
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +1 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +45 -55
- package/dist/lib/resources/aws/networking/securityGroup.js +2 -7
- package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
- package/dist/lib/resources/aws/networking/vpc.js +17 -21
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +1 -1
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +11 -15
- package/dist/lib/resources/aws/organisation/index.d.ts +5 -5
- package/dist/lib/resources/aws/organisation/index.js +4 -12
- package/dist/lib/resources/aws/organisation/organisation.js +5 -7
- package/dist/lib/resources/aws/organisation/organisationAccount.js +7 -10
- package/dist/lib/resources/aws/organisation/organisationPolicy.js +5 -9
- package/dist/lib/resources/aws/organisation/organisationalUnit.js +1 -3
- package/dist/lib/resources/aws/secrets/alias.js +2 -7
- package/dist/lib/resources/aws/secrets/index.d.ts +4 -4
- package/dist/lib/resources/aws/secrets/index.js +4 -21
- package/dist/lib/resources/aws/secrets/kms.js +15 -18
- package/dist/lib/resources/aws/secrets/parameter.d.ts +3 -3
- package/dist/lib/resources/aws/secrets/parameter.js +19 -22
- package/dist/lib/resources/aws/secrets/secret.d.ts +2 -2
- package/dist/lib/resources/aws/secrets/secret.js +12 -14
- package/dist/lib/resources/aws/storage/ecr.d.ts +2 -2
- package/dist/lib/resources/aws/storage/ecr.js +7 -13
- package/dist/lib/resources/aws/storage/index.d.ts +2 -2
- package/dist/lib/resources/aws/storage/index.js +2 -19
- package/dist/lib/resources/aws/storage/s3.d.ts +1 -1
- package/dist/lib/resources/aws/storage/s3.js +24 -12
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +3 -7
- package/dist/lib/resources/aws/utilities/codeBuild.js +7 -12
- package/dist/lib/resources/aws/utilities/customResource.js +14 -17
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +2 -7
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -5
- package/dist/lib/resources/aws/utilities/index.js +5 -22
- package/dist/lib/resources/aws/utilities/resourceShare.js +2 -7
- package/dist/lib/resources/index.d.ts +1 -1
- package/dist/lib/resources/index.js +1 -18
- package/dist/lib/types.js +1 -3
- package/dist/lib/utils/accountsUtils.d.ts +5 -0
- package/dist/lib/utils/accountsUtils.js +18 -0
- package/dist/lib/utils/addSuffixToEmail.js +1 -5
- package/dist/lib/utils/backupTierMapping.js +2 -6
- package/dist/lib/utils/capitaliseString.js +1 -10
- package/dist/lib/utils/connections.js +9 -13
- package/dist/lib/utils/connector.js +10 -23
- package/dist/lib/utils/constructMap.d.ts +33 -0
- package/dist/lib/utils/constructMap.js +154 -0
- package/dist/lib/utils/databaseTypes.js +4 -10
- package/dist/lib/utils/dnsRecords.d.ts +1 -1
- package/dist/lib/utils/dnsRecords.js +23 -27
- package/dist/lib/utils/domainTypes.d.ts +0 -1
- package/dist/lib/utils/domainTypes.js +2 -10
- package/dist/lib/utils/env.js +14 -26
- package/dist/lib/utils/getAccountId.js +3 -7
- package/dist/lib/utils/getAsync.js +7 -10
- package/dist/lib/utils/getConfig.d.ts +0 -2
- package/dist/lib/utils/getConfig.js +29 -47
- package/dist/lib/utils/getStackOutput.js +4 -8
- package/dist/lib/utils/index.d.ts +12 -12
- package/dist/lib/utils/index.js +12 -29
- package/dist/lib/utils/manifestWriter.d.ts +14 -3
- package/dist/lib/utils/manifestWriter.js +60 -43
- package/dist/lib/utils/orgConfigParser.d.ts +14 -0
- package/dist/lib/utils/orgConfigParser.js +49 -0
- package/dist/lib/utils/removalPolicy.js +5 -9
- package/dist/lib/utils/resourceNaming.js +11 -16
- package/dist/lib/utils/standardTagsAspect.js +9 -16
- package/dist/lib/utils/stripAndCamelCase.js +1 -5
- package/dist/lib/utils/validationLogger.js +12 -18
- package/dist/lib/utils/vpcUtils.js +5 -10
- package/package.json +25 -8
- package/dist/lib/config/aws/accountId.d.ts +0 -6
- package/dist/lib/config/aws/accountId.js +0 -32
- package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
- package/dist/lib/config/aws/backupGlobalSettings.js +0 -49
- package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
- package/dist/lib/config/aws/costAllocationTags.js +0 -47
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
- package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -57
- package/dist/lib/config/aws/ipamPoolId.d.ts +0 -16
- package/dist/lib/config/aws/ipamPoolId.js +0 -42
- package/dist/lib/config/aws/organisation.d.ts +0 -30
- package/dist/lib/config/aws/organisation.js +0 -92
- package/dist/lib/config/aws/organisationId.d.ts +0 -7
- package/dist/lib/config/aws/organisationId.js +0 -45
- package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
- package/dist/lib/config/aws/organisationsAccess.js +0 -49
- package/dist/lib/config/aws/ramSharing.d.ts +0 -4
- package/dist/lib/config/aws/ramSharing.js +0 -34
- package/dist/lib/config/monitoring.d.ts +0 -18
- package/dist/lib/config/monitoring.js +0 -22
- package/dist/lib/patterns/aws/connections.d.ts +0 -46
- package/dist/lib/patterns/aws/connections.js +0 -159
- package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
- package/dist/lib/patterns/aws/hostedZone.js +0 -150
- package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
- package/dist/lib/patterns/aws/managedAccount.js +0 -55
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
- package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
- package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
- package/dist/lib/patterns/aws/managedPlatform.js +0 -29
- package/dist/lib/resources/aws/database/database.d.ts +0 -14
- package/dist/lib/resources/aws/database/database.js +0 -28
- package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
- package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
- package/dist/lib/resources/aws/database/migrationLambda.d.ts +0 -80
- package/dist/lib/resources/aws/database/migrationLambda.js +0 -119
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -51
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
- package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
- package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -29
- package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -120
- package/dist/lib/utils/capitalizeString.d.ts +0 -12
- package/dist/lib/utils/capitalizeString.js +0 -30
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const sns_1 = require("../../resources/aws/messaging/sns");
|
|
6
|
-
const eventbridge_1 = require("../../resources/aws/messaging/eventbridge");
|
|
7
|
-
const validationLogger_js_1 = require("../../utils/validationLogger.js");
|
|
1
|
+
import { SQSQueue } from "../../resources/aws/messaging/sqs.js";
|
|
2
|
+
import { SNSTopic } from "../../resources/aws/messaging/sns.js";
|
|
3
|
+
import { EventBridgeBus } from "../../resources/aws/messaging/eventbridge.js";
|
|
4
|
+
import { FjallLogger } from "../../utils/validationLogger.js";
|
|
8
5
|
/**
|
|
9
6
|
* Validates SQS props and logs warnings for misconfigured options.
|
|
10
7
|
*/
|
|
@@ -23,21 +20,21 @@ function validateSQSProps(props) {
|
|
|
23
20
|
// Warn about FIFO-specific options on standard queues
|
|
24
21
|
if (props.queueType !== "fifo") {
|
|
25
22
|
if (props.contentBasedDeduplication !== undefined) {
|
|
26
|
-
|
|
23
|
+
FjallLogger.warn("'contentBasedDeduplication' is only applicable to FIFO queues. " +
|
|
27
24
|
"This setting will be ignored for standard queues.");
|
|
28
25
|
}
|
|
29
26
|
if (props.fifoThroughputLimit !== undefined) {
|
|
30
|
-
|
|
27
|
+
FjallLogger.warn("'fifoThroughputLimit' is only applicable to FIFO queues. " +
|
|
31
28
|
"This setting will be ignored for standard queues.");
|
|
32
29
|
}
|
|
33
30
|
if (props.deduplicationScope !== undefined) {
|
|
34
|
-
|
|
31
|
+
FjallLogger.warn("'deduplicationScope' is only applicable to FIFO queues. " +
|
|
35
32
|
"This setting will be ignored for standard queues.");
|
|
36
33
|
}
|
|
37
34
|
}
|
|
38
35
|
// Validate KMS encryption
|
|
39
36
|
if (props.kmsKeyArn && props.encryption !== "SSE_KMS") {
|
|
40
|
-
|
|
37
|
+
FjallLogger.warn("'kmsKeyArn' provided but 'encryption' is not SSE_KMS. " +
|
|
41
38
|
"The KMS key will be ignored.");
|
|
42
39
|
}
|
|
43
40
|
}
|
|
@@ -47,7 +44,7 @@ function validateSQSProps(props) {
|
|
|
47
44
|
function validateTopicProps(props) {
|
|
48
45
|
// Warn about FIFO-specific options on standard topics
|
|
49
46
|
if (!props.fifo && props.contentBasedDeduplication !== undefined) {
|
|
50
|
-
|
|
47
|
+
FjallLogger.warn("'contentBasedDeduplication' is only applicable to FIFO topics. " +
|
|
51
48
|
"This setting will be ignored for standard topics.");
|
|
52
49
|
}
|
|
53
50
|
}
|
|
@@ -55,7 +52,11 @@ function validateTopicProps(props) {
|
|
|
55
52
|
* SQS queue messaging wrapper implementing IQueueMessaging interface.
|
|
56
53
|
* Provides grant methods and Fjall patterns for queue messaging.
|
|
57
54
|
*/
|
|
58
|
-
class QueueMessaging extends
|
|
55
|
+
export class QueueMessaging extends SQSQueue {
|
|
56
|
+
/** Type discriminator for runtime type narrowing. */
|
|
57
|
+
messagingType = "queue";
|
|
58
|
+
/** The connector type for unified connection processing. */
|
|
59
|
+
connectorType = "queue";
|
|
59
60
|
constructor(scope, id, props) {
|
|
60
61
|
const queueProps = {
|
|
61
62
|
queueType: props.queueType,
|
|
@@ -73,10 +74,6 @@ class QueueMessaging extends sqs_1.SQSQueue {
|
|
|
73
74
|
removalPolicy: props.removalPolicy
|
|
74
75
|
};
|
|
75
76
|
super(scope, id, queueProps);
|
|
76
|
-
/** Type discriminator for runtime type narrowing. */
|
|
77
|
-
this.messagingType = "queue";
|
|
78
|
-
/** The connector type for unified connection processing. */
|
|
79
|
-
this.connectorType = "queue";
|
|
80
77
|
}
|
|
81
78
|
/**
|
|
82
79
|
* Grant send message permissions to the grantee.
|
|
@@ -115,12 +112,13 @@ class QueueMessaging extends sqs_1.SQSQueue {
|
|
|
115
112
|
return this.grantConsumeMessages(grantee);
|
|
116
113
|
}
|
|
117
114
|
}
|
|
118
|
-
exports.QueueMessaging = QueueMessaging;
|
|
119
115
|
/**
|
|
120
116
|
* SNS topic messaging wrapper implementing ITopicMessaging interface.
|
|
121
117
|
* Provides grant methods and Fjall patterns for topic messaging.
|
|
122
118
|
*/
|
|
123
|
-
class TopicMessaging extends
|
|
119
|
+
export class TopicMessaging extends SNSTopic {
|
|
120
|
+
/** Type discriminator for runtime type narrowing. */
|
|
121
|
+
messagingType = "topic";
|
|
124
122
|
constructor(scope, id, props) {
|
|
125
123
|
const topicProps = {
|
|
126
124
|
topicName: props.topicName,
|
|
@@ -130,8 +128,6 @@ class TopicMessaging extends sns_1.SNSTopic {
|
|
|
130
128
|
removalPolicy: props.removalPolicy
|
|
131
129
|
};
|
|
132
130
|
super(scope, id, topicProps);
|
|
133
|
-
/** Type discriminator for runtime type narrowing. */
|
|
134
|
-
this.messagingType = "topic";
|
|
135
131
|
}
|
|
136
132
|
/**
|
|
137
133
|
* Grant publish permissions to the grantee.
|
|
@@ -148,20 +144,19 @@ class TopicMessaging extends sns_1.SNSTopic {
|
|
|
148
144
|
return this.getTopic().grantSubscribe(grantee);
|
|
149
145
|
}
|
|
150
146
|
}
|
|
151
|
-
exports.TopicMessaging = TopicMessaging;
|
|
152
147
|
/**
|
|
153
148
|
* EventBridge event bus messaging wrapper implementing IEventBusMessaging interface.
|
|
154
149
|
* Provides grant methods and Fjall patterns for event-driven messaging.
|
|
155
150
|
*/
|
|
156
|
-
class EventBusMessaging extends
|
|
151
|
+
export class EventBusMessaging extends EventBridgeBus {
|
|
152
|
+
/** Type discriminator for runtime type narrowing. */
|
|
153
|
+
messagingType = "eventBus";
|
|
157
154
|
constructor(scope, id, props) {
|
|
158
155
|
const eventBusProps = {
|
|
159
156
|
eventBusName: props.eventBusName,
|
|
160
157
|
removalPolicy: props.removalPolicy
|
|
161
158
|
};
|
|
162
159
|
super(scope, id, eventBusProps);
|
|
163
|
-
/** Type discriminator for runtime type narrowing. */
|
|
164
|
-
this.messagingType = "eventBus";
|
|
165
160
|
}
|
|
166
161
|
/**
|
|
167
162
|
* Grant put events permissions to the grantee.
|
|
@@ -171,7 +166,6 @@ class EventBusMessaging extends eventbridge_1.EventBridgeBus {
|
|
|
171
166
|
return this.getEventBus().grantPutEventsTo(grantee);
|
|
172
167
|
}
|
|
173
168
|
}
|
|
174
|
-
exports.EventBusMessaging = EventBusMessaging;
|
|
175
169
|
/**
|
|
176
170
|
* Factory for creating messaging resources.
|
|
177
171
|
*
|
|
@@ -207,7 +201,7 @@ exports.EventBusMessaging = EventBusMessaging;
|
|
|
207
201
|
* alerts.grantPublish(apiService);
|
|
208
202
|
* events.grantPutEventsTo(orderService);
|
|
209
203
|
*/
|
|
210
|
-
class MessagingFactory {
|
|
204
|
+
export class MessagingFactory {
|
|
211
205
|
/**
|
|
212
206
|
* Implementation of the build method.
|
|
213
207
|
*/
|
|
@@ -230,10 +224,5 @@ class MessagingFactory {
|
|
|
230
224
|
};
|
|
231
225
|
}
|
|
232
226
|
}
|
|
233
|
-
exports.MessagingFactory = MessagingFactory;
|
|
234
227
|
// Re-export type guards
|
|
235
|
-
|
|
236
|
-
Object.defineProperty(exports, "isQueueMessaging", { enumerable: true, get: function () { return messaging_js_1.isQueueMessaging; } });
|
|
237
|
-
Object.defineProperty(exports, "isTopicMessaging", { enumerable: true, get: function () { return messaging_js_1.isTopicMessaging; } });
|
|
238
|
-
Object.defineProperty(exports, "isEventBusMessaging", { enumerable: true, get: function () { return messaging_js_1.isEventBusMessaging; } });
|
|
239
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9tZXNzYWdpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsMkRBRzJDO0FBQzNDLDJEQUcyQztBQUMzQywyRUFHbUQ7QUFDbkQseUVBQThEO0FBNkQ5RDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsS0FBa0I7SUFDMUMsaUVBQWlFO0lBQ2pFLElBQ0UsS0FBSyxDQUFDLGlCQUFpQixLQUFLLFNBQVM7UUFDckMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsRUFDaEUsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isa0VBQWtFLENBQ25FLENBQUM7SUFDSixDQUFDO0lBRUQsK0VBQStFO0lBQy9FLElBQ0UsS0FBSyxDQUFDLHNCQUFzQixLQUFLLFNBQVM7UUFDMUMsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsRUFBRTtZQUNoQyxLQUFLLENBQUMsc0JBQXNCLEdBQUcsT0FBTyxDQUFDLEVBQ3pDLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHFGQUFxRixDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMseUJBQXlCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbEQsaUNBQVcsQ0FBQyxJQUFJLENBQ2QsaUVBQWlFO2dCQUMvRCxtREFBbUQsQ0FDdEQsQ0FBQztRQUNKLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QyxpQ0FBVyxDQUFDLElBQUksQ0FDZCwyREFBMkQ7Z0JBQ3pELG1EQUFtRCxDQUN0RCxDQUFDO1FBQ0osQ0FBQztRQUNE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IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyB0eXBlIElHcmFudGFibGUsIHR5cGUgR3JhbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG5pbXBvcnQgdHlwZSBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuaW1wb3J0IHtcbiAgU1FTUXVldWUsXG4gIHR5cGUgU1FTUXVldWVQcm9wc1xufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvc3FzXCI7XG5pbXBvcnQge1xuICBTTlNUb3BpYyxcbiAgdHlwZSBTTlNUb3BpY1Byb3BzXG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL21lc3NhZ2luZy9zbnNcIjtcbmltcG9ydCB7XG4gIEV2ZW50QnJpZGdlQnVzLFxuICB0eXBlIEV2ZW50QnJpZGdlQnVzUHJvcHNcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL2V2ZW50YnJpZGdlXCI7XG5pbXBvcnQgeyBGamFsbExvZ2dlciB9IGZyb20gXCIuLi8uLi91dGlscy92YWxpZGF0aW9uTG9nZ2VyLmpzXCI7XG5pbXBvcnQge1xuICB0eXBlIElRdWV1ZU1lc3NhZ2luZyxcbiAgdHlwZSBJVG9waWNNZXNzYWdpbmcsXG4gIHR5cGUgSUV2ZW50QnVzTWVzc2FnaW5nLFxuICB0eXBlIEFueU1lc3NhZ2luZ1xufSBmcm9tIFwiLi9pbnRlcmZhY2VzL21lc3NhZ2luZy5qc1wiO1xuaW1wb3J0IHsgdHlwZSBJUXVldWVDb25uZWN0b3IgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2Nvbm5lY3Rvci5qc1wiO1xuXG4vKipcbiAqIFF1ZXVlIG1lc3NhZ2luZyBwcm9wcyB3aXRoIHR5cGUgZGlzY3JpbWluYXRvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUXVldWVQcm9wcyB7XG4gIC8qKiBUeXBlIGRpc2NyaW1pbmF0b3IgZm9yIG1lc3NhZ2luZyB0eXBlLiAqL1xuICB0eXBlOiBcInF1ZXVlXCI7XG4gIHF1ZXVlVHlwZT86IFwic3RhbmRhcmRcIiB8IFwiZmlmb1wiO1xuICB2aXNpYmlsaXR5VGltZW91dD86IG51bWJlcjtcbiAgbWVzc2FnZVJldGVudGlvblBlcmlvZD86IG51bWJlcjtcbiAgcmVjZWl2ZU1lc3NhZ2VXYWl0VGltZT86IG51bWJlcjtcbiAgbWF4TWVzc2FnZVNpemU/OiBudW1iZXI7XG4gIGRlbGl2ZXJ5RGVsYXk/OiBudW1iZXI7XG4gIGRlYWRMZXR0ZXJRdWV1ZT86IHtcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIG1heFJlY2VpdmVDb3VudD86IG51bWJlcjtcbiAgfTtcbiAgZW5jcnlwdGlvbj86IFwiU1NFX1NRU1wiIHwgXCJTU0VfS01TXCIgfCBcIk5PTkVcIjtcbiAga21zS2V5QXJuPzogc3RyaW5nO1xuICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uPzogYm9vbGVhbjtcbiAgZmlmb1Rocm91Z2hwdXRMaW1pdD86IFwicGVyUXVldWVcIiB8IFwicGVyTWVzc2FnZUdyb3VwSWRcIjtcbiAgZGVkdXBsaWNhdGlvblNjb3BlPzogXCJxdWV1ZVwiIHwgXCJtZXNzYWdlR3JvdXBcIjtcbiAgcmVtb3ZhbFBvbGljeT86IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcbn1cblxuLyoqXG4gKiBUb3BpYyBtZXNzYWdpbmcgcHJvcHMgd2l0aCB0eXBlIGRpc2NyaW1pbmF0b3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRvcGljUHJvcHMge1xuICAvKiogVHlwZSBkaXNjcmltaW5hdG9yIGZvciBtZXNzYWdpbmcgdHlwZS4gKi9cbiAgdHlwZTogXCJ0b3BpY1wiO1xuICB0b3BpY05hbWU/OiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICBmaWZvPzogYm9vbGVhbjtcbiAgY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbj86IGJvb2xlYW47XG4gIHJlbW92YWxQb2xpY3k/OiBcIkRFU1RST1lcIiB8IFwiUkVUQUlOXCI7XG59XG5cbi8qKlxuICogRXZlbnRCdXMgbWVzc2FnaW5nIHByb3BzIHdpdGggdHlwZSBkaXNjcmltaW5hdG9yLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudEJ1c1Byb3BzIHtcbiAgLyoqIFR5cGUgZGlzY3JpbWluYXRvciBmb3IgbWVzc2FnaW5nIHR5cGUuICovXG4gIHR5cGU6IFwiZXZlbnRCdXNcIjtcbiAgZXZlbnRCdXNOYW1lPzogc3RyaW5nO1xuICByZW1vdmFsUG9saWN5PzogXCJERVNUUk9ZXCIgfCBcIlJFVEFJTlwiO1xufVxuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXNzYWdpbmcgcHJvcHMuXG4gKi9cbmV4cG9ydCB0eXBlIElNZXNzYWdpbmdQcm9wcyA9IElRdWV1ZVByb3BzIHwgSVRvcGljUHJvcHMgfCBJRXZlbnRCdXNQcm9wcztcblxuLyoqXG4gKiBWYWxpZGF0ZXMgU1FTIHByb3BzIGFuZCBsb2dzIHdhcm5pbmdzIGZvciBtaXNjb25maWd1cmVkIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU1FTUHJvcHMocHJvcHM6IElRdWV1ZVByb3BzKTogdm9pZCB7XG4gIC8vIFZhbGlkYXRlIHZpc2liaWxpdHkgdGltZW91dCByYW5nZSAoMC00MzIwMCBzZWNvbmRzID0gMTIgaG91cnMpXG4gIGlmIChcbiAgICBwcm9wcy52aXNpYmlsaXR5VGltZW91dCAhPT0gdW5kZWZpbmVkICYmXG4gICAgKHByb3BzLnZpc2liaWxpdHlUaW1lb3V0IDwgMCB8fCBwcm9wcy52aXNpYmlsaXR5VGltZW91dCA+IDQzMjAwKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcInZpc2liaWxpdHlUaW1lb3V0IG11c3QgYmUgYmV0d2VlbiAwIGFuZCA0MzIwMCBzZWNvbmRzICgxMiBob3VycylcIlxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBtZXNzYWdlIHJldGVudGlvbiBwZXJpb2QgKDYwLTEyMDk2MDAgc2Vjb25kcyA9IDEgbWludXRlIHRvIDE0IGRheXMpXG4gIGlmIChcbiAgICBwcm9wcy5tZXNzYWdlUmV0ZW50aW9uUGVyaW9kICE9PSB1bmRlZmluZWQgJiZcbiAgICAocHJvcHMubWVzc2FnZVJldGVudGlvblBlcmlvZCA8IDYwIHx8XG4gICAgICBwcm9wcy5tZXNzYWdlUmV0ZW50aW9uUGVyaW9kID4gMTIwOTYwMClcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgXCJtZXNzYWdlUmV0ZW50aW9uUGVyaW9kIG11c3QgYmUgYmV0d2VlbiA2MCBhbmQgMTIwOTYwMCBzZWNvbmRzICgxIG1pbnV0ZSB0byAxNCBkYXlzKVwiXG4gICAgKTtcbiAgfVxuXG4gIC8vIFdhcm4gYWJvdXQgRklGTy1zcGVjaWZpYyBvcHRpb25zIG9uIHN0YW5kYXJkIHF1ZXVlc1xuICBpZiAocHJvcHMucXVldWVUeXBlICE9PSBcImZpZm9cIikge1xuICAgIGlmIChwcm9wcy5jb250ZW50QmFzZWREZWR1cGxpY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIEZqYWxsTG9nZ2VyLndhcm4oXG4gICAgICAgIFwiJ2NvbnRlbnRCYXNlZERlZHVwbGljYXRpb24nIGlzIG9ubHkgYXBwbGljYWJsZSB0byBGSUZPIHF1ZXVlcy4gXCIgK1xuICAgICAgICAgIFwiVGhpcyBzZXR0aW5nIHdpbGwgYmUgaWdub3JlZCBmb3Igc3RhbmRhcmQgcXVldWVzLlwiXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAocHJvcHMuZmlmb1Rocm91Z2hwdXRMaW1pdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBcIidmaWZvVGhyb3VnaHB1dExpbWl0JyBpcyBvbmx5IGFwcGxpY2FibGUgdG8gRklGTyBxdWV1ZXMuIFwiICtcbiAgICAgICAgICBcIlRoaXMgc2V0dGluZyB3aWxsIGJlIGlnbm9yZWQgZm9yIHN0YW5kYXJkIHF1ZXVlcy5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmRlZHVwbGljYXRpb25TY29wZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBcIidkZWR1cGxpY2F0aW9uU2NvcGUnIGlzIG9ubHkgYXBwbGljYWJsZSB0byBGSUZPIHF1ZXVlcy4gXCIgK1xuICAgICAgICAgIFwiVGhpcyBzZXR0aW5nIHdpbGwgYmUgaWdub3JlZCBmb3Igc3RhbmRhcmQgcXVldWVzLlwiXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFZhbGlkYXRlIEtNUyBlbmNyeXB0aW9uXG4gIGlmIChwcm9wcy5rbXNLZXlBcm4gJiYgcHJvcHMuZW5jcnlwdGlvbiAhPT0gXCJTU0VfS01TXCIpIHtcbiAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgXCIna21zS2V5QXJuJyBwcm92aWRlZCBidXQgJ2VuY3J5cHRpb24nIGlzIG5vdCBTU0VfS01TLiBcIiArXG4gICAgICAgIFwiVGhlIEtNUyBrZXkgd2lsbCBiZSBpZ25vcmVkLlwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBTTlMgVG9waWMgcHJvcHMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlVG9waWNQcm9wcyhwcm9wczogSVRvcGljUHJvcHMpOiB2b2lkIHtcbiAgLy8gV2FybiBhYm91dCBGSUZPLXNwZWNpZmljIG9wdGlvbnMgb24gc3RhbmRhcmQgdG9waWNzXG4gIGlmICghcHJvcHMuZmlmbyAmJiBwcm9wcy5jb250ZW50QmFzZWREZWR1cGxpY2F0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgXCInY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbicgaXMgb25seSBhcHBsaWNhYmxlIHRvIEZJRk8gdG9waWNzLiBcIiArXG4gICAgICAgIFwiVGhpcyBzZXR0aW5nIHdpbGwgYmUgaWdub3JlZCBmb3Igc3RhbmRhcmQgdG9waWNzLlwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIFNRUyBxdWV1ZSBtZXNzYWdpbmcgd3JhcHBlciBpbXBsZW1lbnRpbmcgSVF1ZXVlTWVzc2FnaW5nIGludGVyZmFjZS5cbiAqIFByb3ZpZGVzIGdyYW50IG1ldGhvZHMgYW5kIEZqYWxsIHBhdHRlcm5zIGZvciBxdWV1ZSBtZXNzYWdpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWV1ZU1lc3NhZ2luZ1xuICBleHRlbmRzIFNRU1F1ZXVlXG4gIGltcGxlbWVudHMgSVF1ZXVlTWVzc2FnaW5nLCBJUXVldWVDb25uZWN0b3JcbntcbiAgLyoqIFR5cGUgZGlzY3JpbWluYXRvciBmb3IgcnVudGltZSB0eXBlIG5hcnJvd2luZy4gKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2luZ1R5cGUgPSBcInF1ZXVlXCIgYXMgY29uc3Q7XG5cbiAgLyoqIFRoZSBjb25uZWN0b3IgdHlwZSBmb3IgdW5pZmllZCBjb25uZWN0aW9uIHByb2Nlc3NpbmcuICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0b3JUeXBlID0gXCJxdWV1ZVwiIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJUXVldWVQcm9wcykge1xuICAgIGNvbnN0IHF1ZXVlUHJvcHM6IFNRU1F1ZXVlUHJvcHMgPSB7XG4gICAgICBxdWV1ZVR5cGU6IHByb3BzLnF1ZXVlVHlwZSxcbiAgICAgIHZpc2liaWxpdHlUaW1lb3V0OiBwcm9wcy52aXNpYmlsaXR5VGltZW91dCxcbiAgICAgIG1lc3NhZ2VSZXRlbnRpb25QZXJpb2Q6IHByb3BzLm1lc3NhZ2VSZXRlbnRpb25QZXJpb2QsXG4gICAgICByZWNlaXZlTWVzc2FnZVdhaXRUaW1lOiBwcm9wcy5yZWNlaXZlTWVzc2FnZVdhaXRUaW1lLFxuICAgICAgbWF4TWVzc2FnZVNpemU6IHByb3BzLm1heE1lc3NhZ2VTaXplLFxuICAgICAgZGVsaXZlcnlEZWxheTogcHJvcHMuZGVsaXZlcnlEZWxheSxcbiAgICAgIGRlYWRMZXR0ZXJRdWV1ZTogcHJvcHMuZGVhZExldHRlclF1ZXVlLFxuICAgICAgZW5jcnlwdGlvbjogcHJvcHMuZW5jcnlwdGlvbixcbiAgICAgIGttc0tleUFybjogcHJvcHMua21zS2V5QXJuLFxuICAgICAgY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbjogcHJvcHMuY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbixcbiAgICAgIGZpZm9UaHJvdWdocHV0TGltaXQ6IHByb3BzLmZpZm9UaHJvdWdocHV0TGltaXQsXG4gICAgICBkZWR1cGxpY2F0aW9uU2NvcGU6IHByb3BzLmRlZHVwbGljYXRpb25TY29wZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3lcbiAgICB9O1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcXVldWVQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgc2VuZCBtZXNzYWdlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElRdWV1ZU1lc3NhZ2luZy5ncmFudFNlbmRNZXNzYWdlcy5cbiAgICovXG4gIHB1YmxpYyBncmFudFNlbmRNZXNzYWdlcyhncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdldFF1ZXVlKCkuZ3JhbnRTZW5kTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgY29uc3VtZSAocmVjZWl2ZSBhbmQgZGVsZXRlKSBtZXNzYWdlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElRdWV1ZU1lc3NhZ2luZy5ncmFudENvbnN1bWVNZXNzYWdlcy5cbiAgICovXG4gIHB1YmxpYyBncmFudENvbnN1bWVNZXNzYWdlcyhncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdldFF1ZXVlKCkuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHVyZ2UgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqIEltcGxlbWVudHMgSVF1ZXVlTWVzc2FnaW5nLmdyYW50UHVyZ2UuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRQdXJnZShncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdldFF1ZXVlKCkuZ3JhbnRQdXJnZShncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzcGVjaWZpYyBhY3Rpb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElRdWV1ZU1lc3NhZ2luZy5ncmFudC5cbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBJR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRRdWV1ZSgpLmdyYW50KGdyYW50ZWUsIC4uLmFjdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGZ1bGwgYWNjZXNzIChzZW5kIGFuZCBjb25zdW1lKSB0byB0aGUgZ3JhbnRlZS5cbiAgICogSW1wbGVtZW50cyBJUXVldWVNZXNzYWdpbmcuZ3JhbnRGdWxsIGFuZCBJUXVldWVDb25uZWN0b3IuZ3JhbnRGdWxsLlxuICAgKi9cbiAgcHVibGljIGdyYW50RnVsbChncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHRoaXMuZ3JhbnRTZW5kTWVzc2FnZXMoZ3JhbnRlZSk7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBTTlMgdG9waWMgbWVzc2FnaW5nIHdyYXBwZXIgaW1wbGVtZW50aW5nIElUb3BpY01lc3NhZ2luZyBpbnRlcmZhY2UuXG4gKiBQcm92aWRlcyBncmFudCBtZXRob2RzIGFuZCBGamFsbCBwYXR0ZXJucyBmb3IgdG9waWMgbWVzc2FnaW5nLlxuICovXG5leHBvcnQgY2xhc3MgVG9waWNNZXNzYWdpbmcgZXh0ZW5kcyBTTlNUb3BpYyBpbXBsZW1lbnRzIElUb3BpY01lc3NhZ2luZyB7XG4gIC8qKiBUeXBlIGRpc2NyaW1pbmF0b3IgZm9yIHJ1bnRpbWUgdHlwZSBuYXJyb3dpbmcuICovXG4gIHB1YmxpYyByZWFkb25seSBtZXNzYWdpbmdUeXBlID0gXCJ0b3BpY1wiIGFzIGNvbnN0O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJVG9waWNQcm9wcykge1xuICAgIGNvbnN0IHRvcGljUHJvcHM6IFNOU1RvcGljUHJvcHMgPSB7XG4gICAgICB0b3BpY05hbWU6IHByb3BzLnRvcGljTmFtZSxcbiAgICAgIGRpc3BsYXlOYW1lOiBwcm9wcy5kaXNwbGF5TmFtZSxcbiAgICAgIGZpZm86IHByb3BzLmZpZm8sXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOiBwcm9wcy5jb250ZW50QmFzZWREZWR1cGxpY2F0aW9uLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeVxuICAgIH07XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB0b3BpY1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdWJsaXNoIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElUb3BpY01lc3NhZ2luZy5ncmFudFB1Ymxpc2guXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRQdWJsaXNoKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VG9waWMoKS5ncmFudFB1Ymxpc2goZ3JhbnRlZSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgc3Vic2NyaWJlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElUb3BpY01lc3NhZ2luZy5ncmFudFN1YnNjcmliZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFN1YnNjcmliZShncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdldFRvcGljKCkuZ3JhbnRTdWJzY3JpYmUoZ3JhbnRlZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBFdmVudEJyaWRnZSBldmVudCBidXMgbWVzc2FnaW5nIHdyYXBwZXIgaW1wbGVtZW50aW5nIElFdmVudEJ1c01lc3NhZ2luZyBpbnRlcmZhY2UuXG4gKiBQcm92aWRlcyBncmFudCBtZXRob2RzIGFuZCBGamFsbCBwYXR0ZXJucyBmb3IgZXZlbnQtZHJpdmVuIG1lc3NhZ2luZy5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50QnVzTWVzc2FnaW5nXG4gIGV4dGVuZHMgRXZlbnRCcmlkZ2VCdXNcbiAgaW1wbGVtZW50cyBJRXZlbnRCdXNNZXNzYWdpbmdcbntcbiAgLyoqIFR5cGUgZGlzY3JpbWluYXRvciBmb3IgcnVudGltZSB0eXBlIG5hcnJvd2luZy4gKi9cbiAgcHVibGljIHJlYWRvbmx5IG1lc3NhZ2luZ1R5cGUgPSBcImV2ZW50QnVzXCIgYXMgY29uc3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElFdmVudEJ1c1Byb3BzKSB7XG4gICAgY29uc3QgZXZlbnRCdXNQcm9wczogRXZlbnRCcmlkZ2VCdXNQcm9wcyA9IHtcbiAgICAgIGV2ZW50QnVzTmFtZTogcHJvcHMuZXZlbnRCdXNOYW1lLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmVtb3ZhbFBvbGljeVxuICAgIH07XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBldmVudEJ1c1Byb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXQgZXZlbnRzIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKiBJbXBsZW1lbnRzIElFdmVudEJ1c01lc3NhZ2luZy5ncmFudFB1dEV2ZW50c1RvLlxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0RXZlbnRzVG8oZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5nZXRFdmVudEJ1cygpLmdyYW50UHV0RXZlbnRzVG8oZ3JhbnRlZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZvciBjcmVhdGluZyBtZXNzYWdpbmcgcmVzb3VyY2VzLlxuICpcbiAqIFN1cHBvcnRzOlxuICogLSBRdWV1ZSAoU1FTKVxuICogLSBUb3BpYyAoU05TKVxuICogLSBFdmVudEJ1cyAoRXZlbnRCcmlkZ2UpXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFN0YW5kYXJkIHF1ZXVlIHdpdGggRExRXG4gKiBjb25zdCBub3RpZmljYXRpb25zID0gYXBwLmFkZE1lc3NhZ2luZyhNZXNzYWdpbmdGYWN0b3J5LmJ1aWxkKFwiTm90aWZpY2F0aW9uc1wiLCB7XG4gKiAgIHR5cGU6IFwicXVldWVcIixcbiAqICAgcXVldWVUeXBlOiBcInN0YW5kYXJkXCIsXG4gKiAgIGRlYWRMZXR0ZXJRdWV1ZTogeyBlbmFibGVkOiB0cnVlLCBtYXhSZWNlaXZlQ291bnQ6IDMgfVxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTTlMgVG9waWMgZm9yIHB1Yi9zdWJcbiAqIGNvbnN0IGFsZXJ0cyA9IGFwcC5hZGRNZXNzYWdpbmcoTWVzc2FnaW5nRmFjdG9yeS5idWlsZChcIkFsZXJ0c1wiLCB7XG4gKiAgIHR5cGU6IFwidG9waWNcIixcbiAqICAgZGlzcGxheU5hbWU6IFwiQWxlcnQgTm90aWZpY2F0aW9uc1wiXG4gKiB9KSk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEV2ZW50QnJpZGdlIGZvciBldmVudC1kcml2ZW4gYXJjaGl0ZWN0dXJlXG4gKiBjb25zdCBldmVudHMgPSBhcHAuYWRkTWVzc2FnaW5nKE1lc3NhZ2luZ0ZhY3RvcnkuYnVpbGQoXCJEb21haW5FdmVudHNcIiwge1xuICogICB0eXBlOiBcImV2ZW50QnVzXCJcbiAqIH0pKTtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gR3JhbnQgcGVybWlzc2lvbnNcbiAqIG5vdGlmaWNhdGlvbnMuZ3JhbnRTZW5kTWVzc2FnZXMocHJvZHVjZXJMYW1iZGEpO1xuICogYWxlcnRzLmdyYW50UHVibGlzaChhcGlTZXJ2aWNlKTtcbiAqIGV2ZW50cy5ncmFudFB1dEV2ZW50c1RvKG9yZGVyU2VydmljZSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBNZXNzYWdpbmdGYWN0b3J5IHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgcXVldWUgbWVzc2FnaW5nIGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqL1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSVF1ZXVlUHJvcHNcbiAgKTogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBRdWV1ZU1lc3NhZ2luZztcblxuICAvKipcbiAgICogQnVpbGQgYSB0b3BpYyBtZXNzYWdpbmcgZmFjdG9yeSBmdW5jdGlvbi5cbiAgICovXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJVG9waWNQcm9wc1xuICApOiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IFRvcGljTWVzc2FnaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBhbiBldmVudCBidXMgbWVzc2FnaW5nIGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqL1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSUV2ZW50QnVzUHJvcHNcbiAgKTogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBFdmVudEJ1c01lc3NhZ2luZztcblxuICAvKipcbiAgICogQnVpbGQgYSBtZXNzYWdpbmcgZmFjdG9yeSBmdW5jdGlvbiAoZ2VuZXJpYykuXG4gICAqL1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSU1lc3NhZ2luZ1Byb3BzXG4gICk6IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQW55TWVzc2FnaW5nO1xuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnVpbGQgbWV0aG9kLlxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElNZXNzYWdpbmdQcm9wc1xuICApOiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IEFueU1lc3NhZ2luZyB7XG4gICAgcmV0dXJuIChfYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpOiBBbnlNZXNzYWdpbmcgPT4ge1xuICAgICAgc3dpdGNoIChwcm9wcy50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJxdWV1ZVwiOlxuICAgICAgICAgIHZhbGlkYXRlU1FTUHJvcHMocHJvcHMpO1xuICAgICAgICAgIHJldHVybiBuZXcgUXVldWVNZXNzYWdpbmcoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgICAgIGNhc2UgXCJ0b3BpY1wiOlxuICAgICAgICAgIHZhbGlkYXRlVG9waWNQcm9wcyhwcm9wcyk7XG4gICAgICAgICAgcmV0dXJuIG5ldyBUb3BpY01lc3NhZ2luZyhzY29wZSwgaWQsIHByb3BzKTtcbiAgICAgICAgY2FzZSBcImV2ZW50QnVzXCI6XG4gICAgICAgICAgcmV0dXJuIG5ldyBFdmVudEJ1c01lc3NhZ2luZyhzY29wZSwgaWQsIHByb3BzKTtcbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIGNvbnN0IF9leGhhdXN0aXZlOiBuZXZlciA9IHByb3BzO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBVbnN1cHBvcnRlZCBtZXNzYWdpbmcgdHlwZTogJHsoX2V4aGF1c3RpdmUgYXMgSU1lc3NhZ2luZ1Byb3BzKS50eXBlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyBSZS1leHBvcnQgdHlwZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgdHlwZSB7IFNRU1F1ZXVlUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvc3FzXCI7XG5leHBvcnQgdHlwZSB7IFNOU1RvcGljUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvc25zXCI7XG5leHBvcnQgdHlwZSB7IEV2ZW50QnJpZGdlQnVzUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvZXZlbnRicmlkZ2VcIjtcblxuLy8gUmUtZXhwb3J0IGludGVyZmFjZSB0eXBlc1xuZXhwb3J0IHR5cGUge1xuICBJUXVldWVNZXNzYWdpbmcsXG4gIElUb3BpY01lc3NhZ2luZyxcbiAgSUV2ZW50QnVzTWVzc2FnaW5nLFxuICBBbnlNZXNzYWdpbmcsXG4gIElRdWV1ZSxcbiAgSVRvcGljLFxuICBJRXZlbnRCdXNcbn0gZnJvbSBcIi4vaW50ZXJmYWNlcy9tZXNzYWdpbmcuanNcIjtcblxuLy8gUmUtZXhwb3J0IHR5cGUgZ3VhcmRzXG5leHBvcnQge1xuICBpc1F1ZXVlTWVzc2FnaW5nLFxuICBpc1RvcGljTWVzc2FnaW5nLFxuICBpc0V2ZW50QnVzTWVzc2FnaW5nXG59IGZyb20gXCIuL2ludGVyZmFjZXMvbWVzc2FnaW5nLmpzXCI7XG4iXX0=
|
|
228
|
+
export { isQueueMessaging, isTopicMessaging, isEventBusMessaging } from "./interfaces/messaging.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Construct } from "constructs";
|
|
2
2
|
import { type IVpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
-
import type App from "../../app";
|
|
4
|
-
import { Vpc } from "../../resources/aws/networking/vpc";
|
|
3
|
+
import type App from "../../app.js";
|
|
4
|
+
import { Vpc } from "../../resources/aws/networking/vpc.js";
|
|
5
5
|
export interface NatConfig {
|
|
6
6
|
count?: number;
|
|
7
7
|
}
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const constructs_1 = require("constructs");
|
|
5
|
-
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
6
|
-
const validationLogger_js_1 = require("../../utils/validationLogger.js");
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Vpc } from "../../resources/aws/networking/vpc.js";
|
|
3
|
+
import { FjallLogger } from "../../utils/validationLogger.js";
|
|
7
4
|
function validateNetworkProps(props) {
|
|
8
5
|
if (props.maxAzs !== undefined && (props.maxAzs < 1 || props.maxAzs > 3)) {
|
|
9
|
-
|
|
6
|
+
FjallLogger.warn(`'maxAzs' should be between 1 and 3. Got: ${props.maxAzs}.`);
|
|
10
7
|
}
|
|
11
8
|
if (typeof props.natGateways === "object" &&
|
|
12
9
|
props.natGateways !== null &&
|
|
13
10
|
props.natGateways.count !== undefined) {
|
|
14
11
|
const maxAzs = props.maxAzs ?? 3;
|
|
15
12
|
if (props.natGateways.count > maxAzs) {
|
|
16
|
-
|
|
13
|
+
FjallLogger.warn(`'natGateways.count' (${props.natGateways.count}) exceeds maxAzs (${maxAzs}).`);
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
16
|
if (props.transitGateway && !props.transitGateway.id) {
|
|
20
17
|
throw new Error("Transit Gateway configuration requires 'id'.");
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
class NetworkFactory {
|
|
20
|
+
export class NetworkFactory {
|
|
24
21
|
static build(id, props) {
|
|
25
22
|
return (app, scope) => {
|
|
26
23
|
validateNetworkProps(props);
|
|
@@ -28,8 +25,8 @@ class NetworkFactory {
|
|
|
28
25
|
};
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
export class Network extends Construct {
|
|
29
|
+
vpc;
|
|
33
30
|
constructor(scope, id, props, app) {
|
|
34
31
|
super(scope, id);
|
|
35
32
|
this.vpc = this.createVpc(id, props, app);
|
|
@@ -53,7 +50,7 @@ class Network extends constructs_1.Construct {
|
|
|
53
50
|
flowLogConfig: this.resolveFlowLogConfig(props.flowLogs),
|
|
54
51
|
endpointsConfig: this.resolveEndpointsConfig(props.vpcEndpoints)
|
|
55
52
|
};
|
|
56
|
-
return new
|
|
53
|
+
return new Vpc(this, id, vpcProps);
|
|
57
54
|
}
|
|
58
55
|
resolveNatConfig(config) {
|
|
59
56
|
if (config === undefined)
|
|
@@ -93,5 +90,3 @@ class Network extends constructs_1.Construct {
|
|
|
93
90
|
return this.vpc;
|
|
94
91
|
}
|
|
95
92
|
}
|
|
96
|
-
exports.Network = Network;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbmV0d29yay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFJdkMsNERBQXdFO0FBQ3hFLHlFQUE4RDtBQXVFOUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFvQjtJQUNoRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLGlDQUFXLENBQUMsSUFBSSxDQUNkLDRDQUE0QyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsSUFDRSxPQUFPLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUTtRQUNyQyxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUk7UUFDMUIsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUNyQyxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxpQ0FBVyxDQUFDLElBQUksQ0FDZCx3QkFBd0IsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLHFCQUFxQixNQUFNLElBQUksQ0FDL0UsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsY0FBYyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFhLGNBQWM7SUFDekIsTUFBTSxDQUFDLEtBQUssQ0FBQyxF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QUFJLE1BQU0sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuRCxDQUFDO1FBRUQsT0FBTztZQUNMLE9BQU8sRUFDTCxNQUFNLENBQUMsT0FBTyxLQUFLLEtBQUs7Z0JBQ3RCLENBQUMsQ0FBQyxLQUFLO2dCQUNQLENBQUMsQ0FBQztvQkFDRSxFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSTtvQkFDOUIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsUUFBUSxJQUFJLElBQUk7aUJBQzNDO1lBQ1AsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUFuR0QsMEJBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgSVZwYyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBWcGMsIHR5cGUgVnBjUHJvcHMgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9uZXR3b3JraW5nL3ZwY1wiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlci5qc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5hdENvbmZpZyB7XG4gIGNvdW50PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dMb2dDb25maWcge1xuICBkZXN0aW5hdGlvbj86IFwiY2xvdWR3YXRjaFwiIHwgXCJzM1wiO1xuICByZXRlbnRpb25EYXlzPzogbnVtYmVyO1xuICB0cmFmZmljVHlwZT86IFwiQUxMXCIgfCBcIkFDQ0VQVFwiIHwgXCJSRUpFQ1RcIjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHYXRld2F5RW5kcG9pbnRzQ29uZmlnIHtcbiAgczM/OiBib29sZWFuO1xuICBkeW5hbW9kYj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHtcbiAgZWNyPzogYm9vbGVhbjtcbiAgc2VjcmV0c01hbmFnZXI/OiBib29sZWFuO1xuICBrbXM/OiBib29sZWFuO1xuICBjbG91ZHdhdGNoTG9ncz86IGJvb2xlYW47XG4gIHNzbT86IGJvb2xlYW47XG4gIHN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVnBjRW5kcG9pbnRzQ29uZmlnIHtcbiAgZ2F0ZXdheT86IEdhdGV3YXlFbmRwb2ludHNDb25maWcgfCBmYWxzZTtcbiAgaW50ZXJmYWNlPzogSW50ZXJmYWNlRW5kcG9pbnRzQ29uZmlnIHwgZmFsc2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0Q29uZmlnIHtcbiAgY2lkck1hc2s/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0c0NvbmZpZyB7XG4gIHB1YmxpYz86IFN1Ym5ldENvbmZpZztcbiAgcHJpdmF0ZT86IFN1Ym5ldENvbmZpZztcbiAgaXNvbGF0ZWQ/OiBTdWJuZXRDb25maWcgfCBmYWxzZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2l0R2F0ZXdheUNvbmZpZyB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTmV0d29yayAoVlBDKSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIGNvc3QgVlBDIChubyBOQVQsIGdhdGV3YXkgZW5kcG9pbnRzIG9ubHkpXG4gKiB7IG5hdEdhdGV3YXlzOiBmYWxzZSB9XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFByb2R1Y3Rpb24gVlBDIHdpdGggMSBOQVQgZ2F0ZXdheVxuICogeyBuYXRHYXRld2F5czogeyBjb3VudDogMSB9LCBmbG93TG9nczoge30gfVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBIaWdoLWF2YWlsYWJpbGl0eSBWUEMgd2l0aCBpbnRlcmZhY2UgZW5kcG9pbnRzXG4gKiB7IG1heEF6czogMywgbmF0R2F0ZXdheXM6IHsgY291bnQ6IDMgfSwgdnBjRW5kcG9pbnRzOiB7IGludGVyZmFjZTogeyBlY3I6IHRydWUgfSB9IH1cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya1Byb3BzIHtcbiAgdnBjTmFtZT86IHN0cmluZztcbiAgbWF4QXpzPzogbnVtYmVyO1xuICBjaWRyTWFzaz86IG51bWJlcjtcbiAgbmF0R2F0ZXdheXM/OiBOYXRDb25maWcgfCBmYWxzZTtcbiAgZmxvd0xvZ3M/OiBGbG93TG9nQ29uZmlnIHwgZmFsc2U7XG4gIHZwY0VuZHBvaW50cz86IFZwY0VuZHBvaW50c0NvbmZpZyB8IGZhbHNlO1xuICBzdWJuZXRzPzogU3VibmV0c0NvbmZpZztcbiAgdHJhbnNpdEdhdGV3YXk/OiBUcmFuc2l0R2F0ZXdheUNvbmZpZztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVOZXR3b3JrUHJvcHMocHJvcHM6IElOZXR3b3JrUHJvcHMpOiB2b2lkIHtcbiAgaWYgKHByb3BzLm1heEF6cyAhPT0gdW5kZWZpbmVkICYmIChwcm9wcy5tYXhBenMgPCAxIHx8IHByb3BzLm1heEF6cyA+IDMpKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIGAnbWF4QXpzJyBzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzLiBHb3Q6ICR7cHJvcHMubWF4QXpzfS5gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChcbiAgICB0eXBlb2YgcHJvcHMubmF0R2F0ZXdheXMgPT09IFwib2JqZWN0XCIgJiZcbiAgICBwcm9wcy5uYXRHYXRld2F5cyAhPT0gbnVsbCAmJlxuICAgIHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ICE9PSB1bmRlZmluZWRcbiAgKSB7XG4gICAgY29uc3QgbWF4QXpzID0gcHJvcHMubWF4QXpzID8/IDM7XG4gICAgaWYgKHByb3BzLm5hdEdhdGV3YXlzLmNvdW50ID4gbWF4QXpzKSB7XG4gICAgICBGamFsbExvZ2dlci53YXJuKFxuICAgICAgICBgJ25hdEdhdGV3YXlzLmNvdW50JyAoJHtwcm9wcy5uYXRHYXRld2F5cy5jb3VudH0pIGV4Y2VlZHMgbWF4QXpzICgke21heEF6c30pLmBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHByb3BzLnRyYW5zaXRHYXRld2F5ICYmICFwcm9wcy50cmFuc2l0R2F0ZXdheS5pZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlRyYW5zaXQgR2F0ZXdheSBjb25maWd1cmF0aW9uIHJlcXVpcmVzICdpZCcuXCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOZXR3b3JrRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSU5ldHdvcmtQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIHZhbGlkYXRlTmV0d29ya1Byb3BzKHByb3BzKTtcbiAgICAgIHJldHVybiBuZXcgTmV0d29yayhzY29wZSwgaWQsIHByb3BzLCBhcHApO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5ldHdvcmsgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjOiBWcGM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElOZXR3b3JrUHJvcHMsIGFwcDogQXBwKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnZwYyA9IHRoaXMuY3JlYXRlVnBjKGlkLCBwcm9wcywgYXBwKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVnBjKGlkOiBzdHJpbmcsIHByb3BzOiBJTmV0d29ya1Byb3BzLCBhcHA6IEFwcCk6IFZwYyB7XG4gICAgY29uc3QgcmF3QWNjb3VudElkOiB1bmtub3duID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dChcImFjY291bnRJZFwiKTtcbiAgICBjb25zdCBhY2NvdW50SWQgPVxuICAgICAgKHR5cGVvZiByYXdBY2NvdW50SWQgPT09IFwic3RyaW5nXCIgPyByYXdBY2NvdW50SWQgOiB1bmRlZmluZWQpIHx8XG4gICAgICBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5UO1xuICAgIGNvbnN0IHJlZ2lvbiA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTjtcblxuICAgIGNvbnN0IHJhd0lwYW1Qb29sSWQ6IHVua25vd24gPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwiaXBhbVBvb2xJZFwiKTtcbiAgICBjb25zdCBpcHY0SXBhbVBvb2xJZCA9XG4gICAgICB0eXBlb2YgcmF3SXBhbVBvb2xJZCA9PT0gXCJzdHJpbmdcIiA/IHJhd0lwYW1Qb29sSWQgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB2cGNQcm9wczogVnBjUHJvcHMgPSB7XG4gICAgICB2cGNOYW1lOiBwcm9wcy52cGNOYW1lLFxuICAgICAgYWNjb3VudElkLFxuICAgICAgcmVnaW9uLFxuICAgICAgaXB2NElwYW1Qb29sSWQsXG4gICAgICBtYXhBenM6IHByb3BzLm1heEF6cyxcbiAgICAgIHZwY0NpZHJNYXNrOiBwcm9wcy5jaWRyTWFzayxcbiAgICAgIHN1Ym5ldENpZHJNYXNrOiBwcm9wcy5zdWJuZXRzPy5wcml2YXRlPy5jaWRyTWFzayxcbiAgICAgIG5hdEdhdGV3YXlDb25maWc6IHRoaXMucmVzb2x2ZU5hdENvbmZpZyhwcm9wcy5uYXRHYXRld2F5cyksXG4gICAgICBmbG93TG9nQ29uZmlnOiB0aGlzLnJlc29sdmVGbG93TG9nQ29uZmlnKHByb3BzLmZsb3dMb2dzKSxcbiAgICAgIGVuZHBvaW50c0NvbmZpZzogdGhpcy5yZXNvbHZlRW5kcG9pbnRzQ29uZmlnKHByb3BzLnZwY0VuZHBvaW50cylcbiAgICB9O1xuXG4gICAgcmV0dXJuIG5ldyBWcGModGhpcywgaWQsIHZwY1Byb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZU5hdENvbmZpZyhcbiAgICBjb25maWc6IE5hdENvbmZpZyB8IGZhbHNlIHwgdW5kZWZpbmVkXG4gICk6IHsgY291bnQ/OiBudW1iZXIgfSB8IGZhbHNlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4geyBjb3VudDogY29uZmlnLmNvdW50IH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVGbG93TG9nQ29uZmlnKGNvbmZpZzogRmxvd0xvZ0NvbmZpZyB8IGZhbHNlIHwgdW5kZWZpbmVkKTpcbiAgICB8IHtcbiAgICAgICAgZGVzdGluYXRpb24/OiBcImNsb3Vkd2F0Y2hcIiB8IFwiczNcIjtcbiAgICAgICAgcmV0ZW50aW9uRGF5cz86IG51bWJlcjtcbiAgICAgICAgdHJhZmZpY1R5cGU/OiBcIkFMTFwiIHwgXCJBQ0NFUFRcIiB8IFwiUkVKRUNUXCI7XG4gICAgICB9XG4gICAgfCBmYWxzZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSB1bmRlZmluZWQpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgaWYgKGNvbmZpZyA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4ge1xuICAgICAgZGVzdGluYXRpb246IGNvbmZpZy5kZXN0aW5hdGlvbixcbiAgICAgIHJldGVudGlvbkRheXM6IGNvbmZpZy5yZXRlbnRpb25EYXlzLFxuICAgICAgdHJhZmZpY1R5cGU6IGNvbmZpZy50cmFmZmljVHlwZVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVFbmRwb2ludHNDb25maWcoXG4gICAgY29uZmlnOiBWcGNFbmRwb2ludHNDb25maWcgfCBmYWxzZSB8IHVuZGVmaW5lZFxuICApOlxuICAgIHwge1xuICAgICAgICBnYXRld2F5PzogeyBzMz86IGJvb2xlYW47IGR5bmFtb2RiPzogYm9vbGVhbiB9IHwgZmFsc2U7XG4gICAgICAgIGludGVyZmFjZT86XG4gICAgICAgICAgfCB7XG4gICAgICAgICAgICAgIGVjcj86IGJvb2xlYW47XG4gICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAga21zPzogYm9vbGVhbjtcbiAgICAgICAgICAgICAgY2xvdWR3YXRjaExvZ3M/OiBib29sZWFuO1xuICAgICAgICAgICAgICBzc20/OiBib29sZWFuO1xuICAgICAgICAgICAgICBzdHM/OiBib29sZWFuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgZmFsc2U7XG4gICAgICB9XG4gICAgfCBmYWxzZVxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoY29uZmlnID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGNvbmZpZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyBnYXRld2F5OiB7IHMzOiB0cnVlLCBkeW5hbW9kYjogdHJ1ZSB9IH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGdhdGV3YXk6XG4gICAgICAgIGNvbmZpZy5nYXRld2F5ID09PSBmYWxzZVxuICAgICAgICAgID8gZmFsc2VcbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgczM6IGNvbmZpZy5nYXRld2F5Py5zMyA/PyB0cnVlLFxuICAgICAgICAgICAgICBkeW5hbW9kYjogY29uZmlnLmdhdGV3YXk/LmR5bmFtb2RiID8/IHRydWVcbiAgICAgICAgICAgIH0sXG4gICAgICBpbnRlcmZhY2U6IGNvbmZpZy5pbnRlcmZhY2UgPT09IGZhbHNlID8gZmFsc2UgOiBjb25maWcuaW50ZXJmYWNlXG4gICAgfTtcbiAgfVxuXG4gIGdldFZwYygpOiBJVnBjIHtcbiAgICByZXR1cm4gdGhpcy52cGM7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type Environment, Stack, type StackProps } from "aws-cdk-lib";
|
|
2
|
-
import {
|
|
2
|
+
import { ScpPreset } from "../../config/aws/scpPreset.js";
|
|
3
|
+
import type { ScpPresetProps } from "../../config/aws/scpPreset.js";
|
|
4
|
+
import { OrganisationResource } from "../../resources/aws/organisation/index.js";
|
|
3
5
|
type ExtendedStackProps = Omit<StackProps, "env"> & {
|
|
4
6
|
env?: Required<Pick<Environment, "region" | "account">> & Partial<Omit<Environment, "region" | "account">>;
|
|
5
7
|
};
|
|
6
8
|
export type AccountsConfig = {
|
|
7
|
-
readonly [key: string]: readonly string[] | string;
|
|
9
|
+
readonly [key: string]: readonly string[] | string | AccountsConfig;
|
|
8
10
|
};
|
|
9
11
|
export interface OrganisationProps extends ExtendedStackProps {
|
|
10
12
|
organisationName: string;
|
|
@@ -12,6 +14,7 @@ export interface OrganisationProps extends ExtendedStackProps {
|
|
|
12
14
|
orgEmail: string;
|
|
13
15
|
accountIds?: Record<string, string>;
|
|
14
16
|
identityCenter?: boolean;
|
|
17
|
+
allowedRegions?: string[];
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* Organisation CDK stack.
|
|
@@ -36,5 +39,6 @@ export declare class Organisation extends Stack {
|
|
|
36
39
|
private setupIdentityCenter;
|
|
37
40
|
getOrganisation(): OrganisationResource;
|
|
38
41
|
getAccounts(): Record<string, string>;
|
|
42
|
+
enableScps(props: ScpPresetProps): ScpPreset;
|
|
39
43
|
}
|
|
40
44
|
export {};
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const getConfig_1 = require("../../utils/getConfig");
|
|
1
|
+
import { Stack } from "aws-cdk-lib";
|
|
2
|
+
import App from "../../app.js";
|
|
3
|
+
import { IdentityCenter } from "../../config/aws/identityCenter.js";
|
|
4
|
+
import { ScpPreset } from "../../config/aws/scpPreset.js";
|
|
5
|
+
import { OrganisationResource, OrganisationAccount, CostAllocationTagActivator } from "../../resources/aws/organisation/index.js";
|
|
6
|
+
import { stripAndCamelCase } from "../../utils/stripAndCamelCase.js";
|
|
7
|
+
import { getConfig } from "../../utils/getConfig.js";
|
|
8
|
+
import { extractAccountNames } from "../../utils/accountsUtils.js";
|
|
10
9
|
/**
|
|
11
10
|
* Organisation CDK stack.
|
|
12
11
|
*
|
|
@@ -17,9 +16,14 @@ const getConfig_1 = require("../../utils/getConfig");
|
|
|
17
16
|
* - Identity Centre configuration
|
|
18
17
|
* - Cost allocation tag auto-activation (daily Lambda)
|
|
19
18
|
*/
|
|
20
|
-
class Organisation extends
|
|
19
|
+
export class Organisation extends Stack {
|
|
20
|
+
organisationType = "organisation";
|
|
21
|
+
org;
|
|
22
|
+
accountRefs = [];
|
|
23
|
+
accountMap;
|
|
24
|
+
accountsConfig;
|
|
21
25
|
constructor(id, props) {
|
|
22
|
-
const config =
|
|
26
|
+
const config = getConfig();
|
|
23
27
|
const env = props.env ?? {
|
|
24
28
|
region: config.region,
|
|
25
29
|
account: config.accountId ?? ""
|
|
@@ -27,9 +31,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
27
31
|
if (!env.account) {
|
|
28
32
|
throw new Error("Organisation requires an account ID. Provide it via env.account or ensure CDK context includes accountId.");
|
|
29
33
|
}
|
|
30
|
-
super(
|
|
31
|
-
this.organisationType = "organisation";
|
|
32
|
-
this.accountRefs = [];
|
|
34
|
+
super(App.getInstance(), id, { ...props, env });
|
|
33
35
|
// Normalise account map keys to lowercase for case-insensitive lookups.
|
|
34
36
|
// providerAccounts stores names as lowercase; ACCOUNTS config uses PascalCase.
|
|
35
37
|
const rawMap = props.accountIds ?? config.accountIds ?? {};
|
|
@@ -44,7 +46,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
44
46
|
if (!orgId || !rootId) {
|
|
45
47
|
throw new Error("orgId and rootId must be provided via CDK context. Run deployment through the Fjall CLI.");
|
|
46
48
|
}
|
|
47
|
-
this.org = new
|
|
49
|
+
this.org = new OrganisationResource(this, "Organisation", {
|
|
48
50
|
orgId,
|
|
49
51
|
rootId,
|
|
50
52
|
managementAccountId
|
|
@@ -53,23 +55,19 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
53
55
|
this.setupOrganisationFeatures(props.identityCenter ?? true, managementAccountId);
|
|
54
56
|
}
|
|
55
57
|
createAccountReferences(props) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const accountId = this.accountMap[accountName.toLowerCase()];
|
|
63
|
-
if (!accountId) {
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
const ref = new organisation_1.OrganisationAccount(this, `${accountNameId}Account`, {
|
|
67
|
-
accountId,
|
|
68
|
-
managementAccountId: this.account,
|
|
69
|
-
orgId: this.org.orgId
|
|
70
|
-
});
|
|
71
|
-
this.accountRefs.push(ref);
|
|
58
|
+
const allNames = extractAccountNames(props.accounts);
|
|
59
|
+
for (const accountName of allNames) {
|
|
60
|
+
const accountNameId = stripAndCamelCase(accountName);
|
|
61
|
+
const accountId = this.accountMap[accountName.toLowerCase()];
|
|
62
|
+
if (!accountId) {
|
|
63
|
+
continue;
|
|
72
64
|
}
|
|
65
|
+
const ref = new OrganisationAccount(this, `${accountNameId}Account`, {
|
|
66
|
+
accountId,
|
|
67
|
+
managementAccountId: this.account,
|
|
68
|
+
orgId: this.org.orgId
|
|
69
|
+
});
|
|
70
|
+
this.accountRefs.push(ref);
|
|
73
71
|
}
|
|
74
72
|
}
|
|
75
73
|
setupOrganisationFeatures(identityCenter, managementAccountId) {
|
|
@@ -77,7 +75,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
77
75
|
this.setupCostAllocationTagActivator();
|
|
78
76
|
}
|
|
79
77
|
setupCostAllocationTagActivator() {
|
|
80
|
-
new
|
|
78
|
+
new CostAllocationTagActivator(this, "CostAllocationTagActivator");
|
|
81
79
|
}
|
|
82
80
|
setupIdentityCenter(identityCenter, managementAccountId) {
|
|
83
81
|
if (identityCenter) {
|
|
@@ -89,7 +87,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
89
87
|
ssoAccounts[name] = id;
|
|
90
88
|
}
|
|
91
89
|
}
|
|
92
|
-
new
|
|
90
|
+
new IdentityCenter(this, "IdentityCenter", {
|
|
93
91
|
accounts: ssoAccounts
|
|
94
92
|
});
|
|
95
93
|
}
|
|
@@ -100,6 +98,7 @@ class Organisation extends aws_cdk_lib_1.Stack {
|
|
|
100
98
|
getAccounts() {
|
|
101
99
|
return this.accountMap;
|
|
102
100
|
}
|
|
101
|
+
enableScps(props) {
|
|
102
|
+
return new ScpPreset(this, "ScpPreset", props);
|
|
103
|
+
}
|
|
103
104
|
}
|
|
104
|
-
exports.Organisation = Organisation;
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9vcmdhbmlzYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVFO0FBRXZFLG1DQUE0QjtBQUU1QixvRUFBaUU7QUFDakUsbUVBSTBDO0FBQzFDLHFFQUFrRTtBQUNsRSxxREFBa0Q7QUFtQmxEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsWUFBYSxTQUFRLG1CQUFLO0lBT3JDLFlBQVksRUFBVSxFQUFFLEtBQXdCO1FBQzlDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVMsR0FBRSxDQUFDO1FBRTNCLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUk7WUFDdkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLEVBQUU7U0FDaEMsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYiwyR0FBMkcsQ0FDNUcsQ0FBQztRQUNKLENBQUM7UUFFRCxLQUFLLENBQUMsYUFBRyxDQUFDLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFwQmxDLHFCQUFnQixHQUFHLGNBQXVCLENBQUM7UUFFbkQsZ0JBQVcsR0FBMEIsRUFBRSxDQUFDO1FBb0I5Qyx3RUFBd0U7UUFDeEUsK0VBQStFO1FBQy9FLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFB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SSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3pELElBQUksRUFBRSxLQUFLLG1CQUFtQixFQUFFLENBQUM7b0JBQy9CLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDekMsUUFBUSxFQUFFLFdBQVc7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFTSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRU0sV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBdkhELG9DQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRW52aXJvbm1lbnQsIFN0YWNrLCB0eXBlIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7IElkZW50aXR5Q2VudGVyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJcIjtcbmltcG9ydCB7XG4gIE9yZ2FuaXNhdGlvblJlc291cmNlLFxuICBPcmdhbmlzYXRpb25BY2NvdW50LFxuICBDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvclxufSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9vcmdhbmlzYXRpb25cIjtcbmltcG9ydCB7IHN0cmlwQW5kQ2FtZWxDYXNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmlwQW5kQ2FtZWxDYXNlXCI7XG5pbXBvcnQgeyBnZXRDb25maWcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZ2V0Q29uZmlnXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52PzogUmVxdWlyZWQ8UGljazxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj4gJlxuICAgIFBhcnRpYWw8T21pdDxFbnZpcm9ubWVudCwgXCJyZWdpb25cIiB8IFwiYWNjb3VudFwiPj47XG59O1xuXG5leHBvcnQgdHlwZSBBY2NvdW50c0NvbmZpZyA9IHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogcmVhZG9ubHkgc3RyaW5nW10gfCBzdHJpbmc7XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXNhdGlvblByb3BzIGV4dGVuZHMgRXh0ZW5kZWRTdGFja1Byb3BzIHtcbiAgb3JnYW5pc2F0aW9uTmFtZTogc3RyaW5nO1xuICBhY2NvdW50czogQWNjb3VudHNDb25maWc7XG4gIG9yZ0VtYWlsOiBzdHJpbmc7XG4gIGFjY291bnRJZHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBpZGVudGl0eUNlbnRlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogT3JnYW5pc2F0aW9uIENESyBzdGFjay5cbiAqXG4gKiBPVSBjcmVhdGlvbiwgYWNjb3VudC10by1PVSBwbGFjZW1lbnQsIElQQU0gZGVsZWdhdGlvbiwgUkFNIHNoYXJpbmcsIHRydXN0ZWRcbiAqIGFjY2VzcywgY29zdCBhbGxvY2F0aW9uIHRhZyBhY3RpdmF0aW9uLCBhbmQgYmFja3VwIHNldHRpbmdzIGFyZSBoYW5kbGVkIGJ5IENMSVxuICogcHJlLWRlcGxveSBzdGVwcyAoQXdzQWNjb3VudFNlcnZpY2UpLiBUaGlzIHN0YWNrIGZvY3VzZXMgb246XG4gKiAtIEFjY291bnQgQ2ZuT3V0cHV0IHJlZmVyZW5jZXMgKGZvciBjcm9zcy1zdGFjayBjb25zdW1wdGlvbilcbiAqIC0gSWRlbnRpdHkgQ2VudHJlIGNvbmZpZ3VyYXRpb25cbiAqIC0gQ29zdCBhbGxvY2F0aW9uIHRhZyBhdXRvLWFjdGl2YXRpb24gKGRhaWx5IExhbWJkYSlcbiAqL1xuZXhwb3J0IGNsYXNzIE9yZ2FuaXNhdGlvbiBleHRlbmRzIFN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblR5cGUgPSBcIm9yZ2FuaXNhdGlvblwiIGFzIGNvbnN0O1xuICBwcml2YXRlIG9yZzogT3JnYW5pc2F0aW9uUmVzb3VyY2U7XG4gIHByaXZhdGUgYWNjb3VudFJlZnM6IE9yZ2FuaXNhdGlvbkFjY291bnRbXSA9IFtdO1xuICBwcml2YXRlIGFjY291bnRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaXZhdGUgYWNjb3VudHNDb25maWc6IEFjY291bnRzQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHByb3BzOiBPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuXG4gICAgY29uc3QgZW52ID0gcHJvcHMuZW52ID8/IHtcbiAgICAgIHJlZ2lvbjogY29uZmlnLnJlZ2lvbixcbiAgICAgIGFjY291bnQ6IGNvbmZpZy5hY2NvdW50SWQgPz8gXCJcIlxuICAgIH07XG5cbiAgICBpZiAoIWVudi5hY2NvdW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiT3JnYW5pc2F0aW9uIHJlcXVpcmVzIGFuIGFjY291bnQgSUQuIFByb3ZpZGUgaXQgdmlhIGVudi5hY2NvdW50IG9yIGVuc3VyZSBDREsgY29udGV4dCBpbmNsdWRlcyBhY2NvdW50SWQuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgc3VwZXIoQXBwLmdldEluc3RhbmNlKCksIGlkLCB7IC4uLnByb3BzLCBlbnYgfSk7XG5cbiAgICAvLyBOb3JtYWxpc2UgYWNjb3VudCBtYXAga2V5cyB0byBsb3dlcmNhc2UgZm9yIGNhc2UtaW5zZW5zaXRpdmUgbG9va3Vwcy5cbiAgICAvLyBwcm92aWRlckFjY291bnRzIHN0b3JlcyBuYW1lcyBhcyBsb3dlcmNhc2U7IEFDQ09VTlRTIGNvbmZpZyB1c2VzIFBhc2NhbENhc2UuXG4gICAgY29uc3QgcmF3TWFwID0gcHJvcHMuYWNjb3VudElkcyA/PyBjb25maWcuYWNjb3VudElkcyA/PyB7fTtcbiAgICB0aGlzLmFjY291bnRNYXAgPSB7fTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyYXdNYXApKSB7XG4gICAgICB0aGlzLmFjY291bnRNYXBba2V5LnRvTG93ZXJDYXNlKCldID0gdmFsdWU7XG4gICAgfVxuICAgIHRoaXMuYWNjb3VudHNDb25maWcgPSBwcm9wcy5hY2NvdW50cztcblxuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJvcmdJZFwiKTtcbiAgICBjb25zdCByb290SWQgPSB0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChcInJvb3RJZFwiKTtcbiAgICBjb25zdCBtYW5hZ2VtZW50QWNjb3VudElkID1cbiAgICAgIHRoaXMubm9kZS50cnlHZXRDb250ZXh0KFwibWFuYWdlbWVudEFjY291bnRJZFwiKSA/PyB0aGlzLmFjY291bnQ7XG5cbiAgICBpZiAoIW9yZ0lkIHx8ICFyb290SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJvcmdJZCBhbmQgcm9vdElkIG11c3QgYmUgcHJvdmlkZWQgdmlhIENESyBjb250ZXh0LiBSdW4gZGVwbG95bWVudCB0aHJvdWdoIHRoZSBGamFsbCBDTEkuXCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5vcmcgPSBuZXcgT3JnYW5pc2F0aW9uUmVzb3VyY2UodGhpcywgXCJPcmdhbmlzYXRpb25cIiwge1xuICAgICAgb3JnSWQsXG4gICAgICByb290SWQsXG4gICAgICBtYW5hZ2VtZW50QWNjb3VudElkXG4gICAgfSk7XG4gICAgdGhpcy5jcmVhdGVBY2NvdW50UmVmZXJlbmNlcyhwcm9wcyk7XG4gICAgdGhpcy5zZXR1cE9yZ2FuaXNhdGlvbkZlYXR1cmVzKFxuICAgICAgcHJvcHMuaWRlbnRpdHlDZW50ZXIgPz8gdHJ1ZSxcbiAgICAgIG1hbmFnZW1lbnRBY2NvdW50SWRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBY2NvdW50UmVmZXJlbmNlcyhwcm9wczogT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBmb3IgKGNvbnN0IFssIGFjY291bnRMaXN0XSBvZiBPYmplY3QuZW50cmllcyhwcm9wcy5hY2NvdW50cykpIHtcbiAgICAgIGNvbnN0IGFjY291bnRzQXJyYXkgPSBBcnJheS5pc0FycmF5KGFjY291bnRMaXN0KVxuICAgICAgICA/IGFjY291bnRMaXN0XG4gICAgICAgIDogW2FjY291bnRMaXN0XTtcblxuICAgICAgZm9yIChjb25zdCBhY2NvdW50TmFtZSBvZiBhY2NvdW50c0FycmF5KSB7XG4gICAgICAgIGNvbnN0IGFjY291bnROYW1lSWQgPSBzdHJpcEFuZENhbWVsQ2FzZShhY2NvdW50TmFtZSk7XG4gICAgICAgIGNvbnN0IGFjY291bnRJZCA9IHRoaXMuYWNjb3VudE1hcFthY2NvdW50TmFtZS50b0xvd2VyQ2FzZSgpXTtcblxuICAgICAgICBpZiAoIWFjY291bnRJZCkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVmID0gbmV3IE9yZ2FuaXNhdGlvbkFjY291bnQodGhpcywgYCR7YWNjb3VudE5hbWVJZH1BY2NvdW50YCwge1xuICAgICAgICAgIGFjY291bnRJZCxcbiAgICAgICAgICBtYW5hZ2VtZW50QWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICAgICAgb3JnSWQ6IHRoaXMub3JnLm9yZ0lkXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYWNjb3VudFJlZnMucHVzaChyZWYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBPcmdhbmlzYXRpb25GZWF0dXJlcyhcbiAgICBpZGVudGl0eUNlbnRlcjogYm9vbGVhbixcbiAgICBtYW5hZ2VtZW50QWNjb3VudElkOiBzdHJpbmdcbiAgKSB7XG4gICAgdGhpcy5zZXR1cElkZW50aXR5Q2VudGVyKGlkZW50aXR5Q2VudGVyLCBtYW5hZ2VtZW50QWNjb3VudElkKTtcbiAgICB0aGlzLnNldHVwQ29zdEFsbG9jYXRpb25UYWdBY3RpdmF0b3IoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvcigpIHtcbiAgICBuZXcgQ29zdEFsbG9jYXRpb25UYWdBY3RpdmF0b3IodGhpcywgXCJDb3N0QWxsb2NhdGlvblRhZ0FjdGl2YXRvclwiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZGVudGl0eUNlbnRlcihcbiAgICBpZGVudGl0eUNlbnRlcjogYm9vbGVhbixcbiAgICBtYW5hZ2VtZW50QWNjb3VudElkOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKGlkZW50aXR5Q2VudGVyKSB7XG4gICAgICAvLyBFeGNsdWRlIHRoZSBtYW5hZ2VtZW50IGFjY291bnQgZnJvbSBTU08gYXNzaWdubWVudHMg4oCUIG9ubHkgcm9vdFxuICAgICAgLy8gSUFNIHVzZXJzIHNob3VsZCBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIG9yZ2FuaXNhdGlvbiBhY2NvdW50LlxuICAgICAgY29uc3Qgc3NvQWNjb3VudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW25hbWUsIGlkXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFjY291bnRNYXApKSB7XG4gICAgICAgIGlmIChpZCAhPT0gbWFuYWdlbWVudEFjY291bnRJZCkge1xuICAgICAgICAgIHNzb0FjY291bnRzW25hbWVdID0gaWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbmV3IElkZW50aXR5Q2VudGVyKHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJcIiwge1xuICAgICAgICBhY2NvdW50czogc3NvQWNjb3VudHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRPcmdhbmlzYXRpb24oKTogT3JnYW5pc2F0aW9uUmVzb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLm9yZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2NvdW50cygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50TWFwO1xuICB9XG59XG4iXX0=
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Construct } from "constructs";
|
|
2
|
-
import { Organisation, type OrganisationProps, type AccountsConfig } from "./organisation";
|
|
3
|
-
import { Platform, type PlatformProps } from "./platform";
|
|
4
|
-
import { Account, type AccountProps } from "./account";
|
|
2
|
+
import { Organisation, type OrganisationProps, type AccountsConfig } from "./organisation.js";
|
|
3
|
+
import { Platform, type PlatformProps } from "./platform.js";
|
|
4
|
+
import { Account, type AccountProps } from "./account.js";
|
|
5
5
|
export interface IOrganisationProps extends OrganisationProps {
|
|
6
6
|
type: "organisation";
|
|
7
7
|
}
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const platform_1 = require("./platform");
|
|
6
|
-
const account_1 = require("./account");
|
|
7
|
-
class OrganisationFactory {
|
|
1
|
+
import { Organisation } from "./organisation.js";
|
|
2
|
+
import { Platform } from "./platform.js";
|
|
3
|
+
import { Account } from "./account.js";
|
|
4
|
+
export class OrganisationFactory {
|
|
8
5
|
static build(id, props) {
|
|
9
6
|
switch (props.type) {
|
|
10
7
|
case "organisation":
|
|
11
|
-
return new
|
|
8
|
+
return new Organisation(id, props);
|
|
12
9
|
case "platform":
|
|
13
|
-
return (scope) => new
|
|
10
|
+
return (scope) => new Platform(scope, id, props);
|
|
14
11
|
case "account":
|
|
15
|
-
return (scope) => new
|
|
12
|
+
return (scope) => new Account(scope, id, props);
|
|
16
13
|
default: {
|
|
17
14
|
const _exhaustive = props;
|
|
18
15
|
throw new Error(`Unsupported organisation type: ${String(_exhaustive.type)}`);
|
|
@@ -20,5 +17,3 @@ class OrganisationFactory {
|
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
19
|
}
|
|
23
|
-
exports.OrganisationFactory = OrganisationFactory;
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnYW5pc2F0aW9uRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3Mvb3JnYW5pc2F0aW9uRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFJd0I7QUFDeEIseUNBQTBEO0FBQzFELHVDQUF1RDtBQW1CdkQsTUFBYSxtQkFBbUI7SUFPOUIsTUFBTSxDQUFDLEtBQUssQ0FDVixFQUFVLEVBQ1YsS0FBMkI7UUFFM0IsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsS0FBSyxjQUFjO2dCQUNqQixPQUFPLElBQUksMkJBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDckMsS0FBSyxVQUFVO2dCQUNiLE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM5RCxLQUFLLFNBQVM7Z0JBQ1osT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksaUJBQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsTUFBTSxXQUFXLEdBQVUsS0FBSyxDQUFDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUNiLGtDQUFrQyxNQUFNLENBQUUsV0FBb0MsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUN2RixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUExQkQsa0RBMEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgT3JnYW5pc2F0aW9uLFxuICB0eXBlIE9yZ2FuaXNhdGlvblByb3BzLFxuICB0eXBlIEFjY291bnRzQ29uZmlnXG59IGZyb20gXCIuL29yZ2FuaXNhdGlvblwiO1xuaW1wb3J0IHsgUGxhdGZvcm0sIHR5cGUgUGxhdGZvcm1Qcm9wcyB9IGZyb20gXCIuL3BsYXRmb3JtXCI7XG5pbXBvcnQgeyBBY2NvdW50LCB0eXBlIEFjY291bnRQcm9wcyB9IGZyb20gXCIuL2FjY291bnRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJT3JnYW5pc2F0aW9uUHJvcHMgZXh0ZW5kcyBPcmdhbmlzYXRpb25Qcm9wcyB7XG4gIHR5cGU6IFwib3JnYW5pc2F0aW9uXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBsYXRmb3JtUHJvcHMgZXh0ZW5kcyBQbGF0Zm9ybVByb3BzIHtcbiAgdHlwZTogXCJwbGF0Zm9ybVwiO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElBY2NvdW50UHJvcHMgZXh0ZW5kcyBBY2NvdW50UHJvcHMge1xuICB0eXBlOiBcImFjY291bnRcIjtcbn1cblxuZXhwb3J0IHR5cGUgQW55T3JnYW5pc2F0aW9uUHJvcHMgPVxuICB8IElPcmdhbmlzYXRpb25Qcm9wc1xuICB8IElQbGF0Zm9ybVByb3BzXG4gIHwgSUFjY291bnRQcm9wcztcblxuZXhwb3J0IGNsYXNzIE9yZ2FuaXNhdGlvbkZhY3Rvcnkge1xuICBzdGF0aWMgYnVpbGQoaWQ6IHN0cmluZywgcHJvcHM6IElPcmdhbmlzYXRpb25Qcm9wcyk6IE9yZ2FuaXNhdGlvbjtcbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElQbGF0Zm9ybVByb3BzXG4gICk6IChzY29wZTogQ29uc3RydWN0KSA9PiBQbGF0Zm9ybTtcbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzOiBJQWNjb3VudFByb3BzKTogKHNjb3BlOiBDb25zdHJ1Y3QpID0+IEFjY291bnQ7XG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBBbnlPcmdhbmlzYXRpb25Qcm9wc1xuICApOiBPcmdhbmlzYXRpb24gfCAoKHNjb3BlOiBDb25zdHJ1Y3QpID0+IFBsYXRmb3JtIHwgQWNjb3VudCkge1xuICAgIHN3aXRjaCAocHJvcHMudHlwZSkge1xuICAgICAgY2FzZSBcIm9yZ2FuaXNhdGlvblwiOlxuICAgICAgICByZXR1cm4gbmV3IE9yZ2FuaXNhdGlvbihpZCwgcHJvcHMpO1xuICAgICAgY2FzZSBcInBsYXRmb3JtXCI6XG4gICAgICAgIHJldHVybiAoc2NvcGU6IENvbnN0cnVjdCkgPT4gbmV3IFBsYXRmb3JtKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgICAgY2FzZSBcImFjY291bnRcIjpcbiAgICAgICAgcmV0dXJuIChzY29wZTogQ29uc3RydWN0KSA9PiBuZXcgQWNjb3VudChzY29wZSwgaWQsIHByb3BzKTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gcHJvcHM7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVW5zdXBwb3J0ZWQgb3JnYW5pc2F0aW9uIHR5cGU6ICR7U3RyaW5nKChfZXhoYXVzdGl2ZSBhcyBBbnlPcmdhbmlzYXRpb25Qcm9wcykudHlwZSl9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgdHlwZSB7IEFjY291bnRzQ29uZmlnIH07XG4iXX0=
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* Pattern Factory for High-Level Infrastructure Patterns.
|
|
4
3
|
*
|
|
@@ -31,17 +30,14 @@
|
|
|
31
30
|
* payload.getDatabase().grantConnect(otherLambda);
|
|
32
31
|
* payload.getServer().getLambdaFunction().addEnvironment("CUSTOM", "value");
|
|
33
32
|
*/
|
|
34
|
-
|
|
35
|
-
exports.isPattern = exports.isPayloadPattern = exports.Payload = exports.PatternFactory = void 0;
|
|
36
|
-
const payload_js_1 = require("./payload.js");
|
|
37
|
-
Object.defineProperty(exports, "Payload", { enumerable: true, get: function () { return payload_js_1.Payload; } });
|
|
33
|
+
import { Payload } from "./payload.js";
|
|
38
34
|
/**
|
|
39
35
|
* Factory for creating high-level infrastructure patterns.
|
|
40
36
|
*
|
|
41
37
|
* Uses discriminated union (type: "payload" | ...) to route to specific implementations.
|
|
42
38
|
* Each pattern type has specific props and returns a specific interface.
|
|
43
39
|
*/
|
|
44
|
-
class PatternFactory {
|
|
40
|
+
export class PatternFactory {
|
|
45
41
|
/**
|
|
46
42
|
* Implementation of the build method.
|
|
47
43
|
* Routes to specific pattern implementations based on type discriminator.
|
|
@@ -51,7 +47,7 @@ class PatternFactory {
|
|
|
51
47
|
const { type } = props;
|
|
52
48
|
switch (type) {
|
|
53
49
|
case "payload":
|
|
54
|
-
return new
|
|
50
|
+
return new Payload(scope, id, app, props);
|
|
55
51
|
default: {
|
|
56
52
|
// Exhaustive check ensures all pattern types are handled
|
|
57
53
|
const _exhaustive = type;
|
|
@@ -61,9 +57,7 @@ class PatternFactory {
|
|
|
61
57
|
};
|
|
62
58
|
}
|
|
63
59
|
}
|
|
64
|
-
|
|
60
|
+
// Re-export types for convenience
|
|
61
|
+
export { Payload };
|
|
65
62
|
// Re-export type guards
|
|
66
|
-
|
|
67
|
-
Object.defineProperty(exports, "isPayloadPattern", { enumerable: true, get: function () { return pattern_js_1.isPayloadPattern; } });
|
|
68
|
-
Object.defineProperty(exports, "isPattern", { enumerable: true, get: function () { return pattern_js_1.isPattern; } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvcGF0dGVybi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0ErQkc7OztBQUtILDZDQUF1QztBQWtFOUIsd0ZBbEVBLG9CQUFPLE9Ba0VBO0FBM0RoQjs7Ozs7R0FLRztBQUNILE1BQWEsY0FBYztJQTZCekI7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FDVixFQUFVLEVBQ1YsS0FBb0I7UUFFcEIsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFjLEVBQUU7WUFDaEQsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztZQUN2QixRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNiLEtBQUssU0FBUztvQkFDWixPQUFPLElBQUksb0JBQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDNUMsT0FBTyxDQUFDLENBQUMsQ0FBQztvQkFDUix5REFBeUQ7b0JBQ3pELE1BQU0sV0FBVyxHQUFVLElBQUksQ0FBQztvQkFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFsREQsd0NBa0RDO0FBY0Qsd0JBQXdCO0FBQ3hCLHNEQUFzRTtBQUE3RCw4R0FBQSxnQkFBZ0IsT0FBQTtBQUFFLHVHQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGF0dGVybiBGYWN0b3J5IGZvciBIaWdoLUxldmVsIEluZnJhc3RydWN0dXJlIFBhdHRlcm5zLlxuICpcbiAqIFBhdHRlcm5GYWN0b3J5IGNyZWF0ZXMgY29tcG9zaXRlIGluZnJhc3RydWN0dXJlIHBhdHRlcm5zIHRoYXQgZW5jYXBzdWxhdGVcbiAqIG11bHRpcGxlIHJlbGF0ZWQgcmVzb3VyY2VzIGludG8gYSBzaW5nbGUsIGNvaGVzaXZlIHVuaXQuIFRoaXMgcmVkdWNlc1xuICogYm9pbGVycGxhdGUgYW5kIGVuc3VyZXMgYmVzdCBwcmFjdGljZXMgZm9yIGNvbW1vbiBkZXBsb3ltZW50IHNjZW5hcmlvcy5cbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydGVkIHBhdHRlcm5zOlxuICogLSBgcGF5bG9hZGA6IFBheWxvYWQgQ01TIGRlcGxveW1lbnQgd2l0aCBPcGVuTmV4dFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBNaW5pbWFsIC0gd29ya3Mgb3V0IG9mIGJveFxuICogY29uc3QgcGF5bG9hZCA9IGFwcC5hZGRQYXR0ZXJuKFBhdHRlcm5GYWN0b3J5LmJ1aWxkKFwiUGF5bG9hZEFwcFwiLCB7XG4gKiAgIHR5cGU6IFwicGF5bG9hZFwiLFxuICogICBuYW1lOiBcIm15LWNtc1wiLFxuICogICBzb3VyY2U6IFwiLi4vLi5cIlxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b21pc2VkIHdpdGggZXNjYXBlIGhhdGNoZXNcbiAqIGNvbnN0IHBheWxvYWQgPSBhcHAuYWRkUGF0dGVybihQYXR0ZXJuRmFjdG9yeS5idWlsZChcIlBheWxvYWRBcHBcIiwge1xuICogICB0eXBlOiBcInBheWxvYWRcIixcbiAqICAgbmFtZTogXCJteS1jbXNcIixcbiAqICAgc291cmNlOiBcIi4uLy4uXCIsXG4gKiAgIGRhdGFiYXNlOiB7IHR5cGU6IFwiQXVyb3JhXCIsIHB1YmxpY2x5QWNjZXNzaWJsZTogZmFsc2UgfSxcbiAqICAgY29tcHV0ZTogeyBtZW1vcnlTaXplOiAyMDQ4IH1cbiAqIH0pKTtcbiAqXG4gKiAvLyBBY2Nlc3MgdW5kZXJseWluZyByZXNvdXJjZXMgZm9yIGFkdmFuY2VkIGN1c3RvbWlzYXRpb25cbiAqIHBheWxvYWQuZ2V0RGF0YWJhc2UoKS5ncmFudENvbm5lY3Qob3RoZXJMYW1iZGEpO1xuICogcGF5bG9hZC5nZXRTZXJ2ZXIoKS5nZXRMYW1iZGFGdW5jdGlvbigpLmFkZEVudmlyb25tZW50KFwiQ1VTVE9NXCIsIFwidmFsdWVcIik7XG4gKi9cblxuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgdHlwZSBBcHAgZnJvbSBcIi4uLy4uL2FwcC5qc1wiO1xuaW1wb3J0IHsgUGF5bG9hZCB9IGZyb20gXCIuL3BheWxvYWQuanNcIjtcbmltcG9ydCB7XG4gIHR5cGUgSVBheWxvYWRQcm9wcyxcbiAgdHlwZSBJUGF0dGVyblByb3BzLFxuICB0eXBlIEFueVBhdHRlcm5cbn0gZnJvbSBcIi4vaW50ZXJmYWNlcy9wYXR0ZXJuLmpzXCI7XG5cbi8qKlxuICogRmFjdG9yeSBmb3IgY3JlYXRpbmcgaGlnaC1sZXZlbCBpbmZyYXN0cnVjdHVyZSBwYXR0ZXJucy5cbiAqXG4gKiBVc2VzIGRpc2NyaW1pbmF0ZWQgdW5pb24gKHR5cGU6IFwicGF5bG9hZFwiIHwgLi4uKSB0byByb3V0ZSB0byBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuXG4gKiBFYWNoIHBhdHRlcm4gdHlwZSBoYXMgc3BlY2lmaWMgcHJvcHMgYW5kIHJldHVybnMgYSBzcGVjaWZpYyBpbnRlcmZhY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXR0ZXJuRmFjdG9yeSB7XG4gIC8qKlxuICAgKiBCdWlsZCBhIFBheWxvYWQgQ01TIHBhdHRlcm4uXG4gICAqXG4gICAqIENyZWF0ZXMgYSBjb21wbGV0ZSBQYXlsb2FkIENNUyBpbmZyYXN0cnVjdHVyZTpcbiAgICogLSBSRFMgUG9zdGdyZVNRTCBkYXRhYmFzZSAoQXVyb3JhIG9yIEluc3RhbmNlKVxuICAgKiAtIFMzIGJ1Y2tldHMgKGFzc2V0cywgY2FjaGUsIG1lZGlhKVxuICAgKiAtIER5bmFtb0RCIHRhYmxlICh0YWcgY2FjaGUpXG4gICAqIC0gU1FTIEZJRk8gcXVldWUgKHJldmFsaWRhdGlvbilcbiAgICogLSBMYW1iZGEgZnVuY3Rpb25zIChzZXJ2ZXIsIGltYWdlIG9wdGltaXNhdGlvbiwgcmV2YWxpZGF0aW9uKVxuICAgKiAtIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIENvbnN0cnVjdCBJRCAodXNlZCBmb3IgcmVzb3VyY2UgbmFtaW5nKVxuICAgKiBAcGFyYW0gcHJvcHMgLSBQYXlsb2FkIHBhdHRlcm4gY29uZmlndXJhdGlvblxuICAgKiBAcmV0dXJucyBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUgcGF0dGVyblxuICAgKi9cbiAgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IElQYXlsb2FkUHJvcHNcbiAgKTogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBQYXlsb2FkO1xuXG4gIC8qKlxuICAgKiBHZW5lcmljIGJ1aWxkIG1ldGhvZCAoaW1wbGVtZW50YXRpb24gc2lnbmF0dXJlKS5cbiAgICovXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJUGF0dGVyblByb3BzXG4gICk6IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQW55UGF0dGVybjtcblxuICAvKipcbiAgICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWxkIG1ldGhvZC5cbiAgICogUm91dGVzIHRvIHNwZWNpZmljIHBhdHRlcm4gaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIHR5cGUgZGlzY3JpbWluYXRvci5cbiAgICovXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBJUGF0dGVyblByb3BzXG4gICk6IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQW55UGF0dGVybiB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCk6IEFueVBhdHRlcm4gPT4ge1xuICAgICAgY29uc3QgeyB0eXBlIH0gPSBwcm9wcztcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwicGF5bG9hZFwiOlxuICAgICAgICAgIHJldHVybiBuZXcgUGF5bG9hZChzY29wZSwgaWQsIGFwcCwgcHJvcHMpO1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgLy8gRXhoYXVzdGl2ZSBjaGVjayBlbnN1cmVzIGFsbCBwYXR0ZXJuIHR5cGVzIGFyZSBoYW5kbGVkXG4gICAgICAgICAgY29uc3QgX2V4aGF1c3RpdmU6IG5ldmVyID0gdHlwZTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHBhdHRlcm4gdHlwZTogJHtTdHJpbmcoX2V4aGF1c3RpdmUpfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufVxuXG4vLyBSZS1leHBvcnQgdHlwZXMgZm9yIGNvbnZlbmllbmNlXG5leHBvcnQgeyBQYXlsb2FkIH07XG5leHBvcnQgdHlwZSB7XG4gIElQYXlsb2FkUHJvcHMsXG4gIElQYXR0ZXJuUHJvcHMsXG4gIEFueVBhdHRlcm4sXG4gIElQYXlsb2FkLFxuICBQYXlsb2FkRGF0YWJhc2VDb25maWcsXG4gIFBheWxvYWRDb21wdXRlQ29uZmlnLFxuICBQYXlsb2FkQ2RuQ29uZmlnXG59IGZyb20gXCIuL2ludGVyZmFjZXMvcGF0dGVybi5qc1wiO1xuXG4vLyBSZS1leHBvcnQgdHlwZSBndWFyZHNcbmV4cG9ydCB7IGlzUGF5bG9hZFBhdHRlcm4sIGlzUGF0dGVybiB9IGZyb20gXCIuL2ludGVyZmFjZXMvcGF0dGVybi5qc1wiO1xuIl19
|
|
63
|
+
export { isPayloadPattern, isPattern } from "./interfaces/pattern.js";
|