@fjall/components-infrastructure 0.76.0 → 0.77.2
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/dist/lib/app.d.ts +93 -12
- package/dist/lib/app.js +117 -48
- package/dist/lib/aspects/resourceInventory.d.ts +41 -0
- package/dist/lib/aspects/resourceInventory.js +56 -0
- package/dist/lib/config/audit.d.ts +18 -0
- package/dist/lib/config/audit.js +22 -0
- package/dist/lib/config/aws/ecrDefaultImage.js +3 -3
- package/dist/lib/patterns/aws/auditRole.d.ts +44 -0
- package/dist/lib/patterns/aws/auditRole.js +58 -0
- package/dist/lib/patterns/aws/basicApp.d.ts +0 -0
- package/dist/lib/patterns/aws/basicApp.js +150 -0
- package/dist/lib/patterns/aws/compute.d.ts +10 -4
- package/dist/lib/patterns/aws/compute.js +5 -5
- package/dist/lib/patterns/aws/database.d.ts +24 -30
- package/dist/lib/patterns/aws/database.js +93 -14
- package/dist/lib/patterns/aws/ec2.d.ts +43 -0
- package/dist/lib/patterns/aws/ec2.js +123 -0
- package/dist/lib/patterns/aws/freeTierApp.d.ts +44 -0
- package/dist/lib/patterns/aws/freeTierApp.js +83 -0
- package/dist/lib/patterns/aws/index.d.ts +1 -0
- package/dist/lib/patterns/aws/index.js +2 -1
- package/dist/lib/patterns/aws/network.d.ts +75 -0
- package/dist/lib/patterns/aws/network.js +99 -0
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +45 -0
- package/dist/lib/patterns/aws/spotInstanceApp.js +85 -0
- package/dist/lib/resources/aws/audit/auditRole.d.ts +32 -0
- package/dist/lib/resources/aws/audit/auditRole.js +46 -0
- package/dist/lib/resources/aws/base/awsStack.js +1 -4
- package/dist/lib/resources/aws/compute/ec2.d.ts +1 -0
- package/dist/lib/resources/aws/compute/ec2.js +5 -3
- package/dist/lib/resources/aws/compute/ecs.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ecs.js +6 -2
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +15 -4
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ecsSpot.js +17 -4
- package/dist/lib/resources/aws/compute/lambda.d.ts +12 -7
- package/dist/lib/resources/aws/compute/lambda.js +27 -19
- package/dist/lib/resources/aws/database/databaseFreeTier.d.ts +15 -0
- package/dist/lib/resources/aws/database/databaseFreeTier.js +29 -0
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +36 -37
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +2 -0
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +7 -6
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +37 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.js +84 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +3 -0
- package/dist/lib/resources/aws/database/rdsInstance.js +117 -33
- package/dist/lib/resources/aws/networking/index.d.ts +0 -1
- package/dist/lib/resources/aws/networking/index.js +1 -2
- package/dist/lib/resources/aws/networking/vpc.d.ts +40 -21
- package/dist/lib/resources/aws/networking/vpc.js +185 -36
- package/dist/lib/resources/aws/networking/vpcEndpoint.d.ts +2 -2
- package/dist/lib/resources/aws/networking/vpcEndpoint.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.d.ts +8 -6
- package/dist/lib/resources/aws/utilities/customResource.js +35 -11
- package/dist/lib/utils/getCidr.d.ts +8 -0
- package/dist/lib/utils/getCidr.js +40 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/resourceNaming.d.ts +41 -0
- package/dist/lib/utils/resourceNaming.js +77 -0
- package/package.json +3 -3
|
@@ -61,8 +61,8 @@ class EcrDefaultImage extends constructs_1.Construct {
|
|
|
61
61
|
phases: {
|
|
62
62
|
build: {
|
|
63
63
|
commands: [
|
|
64
|
-
"docker pull public.ecr.aws/
|
|
65
|
-
"docker tag public.ecr.aws/
|
|
64
|
+
"docker pull public.ecr.aws/fjall/welcome:latest",
|
|
65
|
+
"docker tag public.ecr.aws/fjall/welcome:latest $ECR_REPOSITORY:latest",
|
|
66
66
|
`aws ecr get-login-password --region ${props.region} | docker login --username AWS --password-stdin ${props.accountId}.dkr.ecr.${props.region}.amazonaws.com`,
|
|
67
67
|
"docker push $ECR_REPOSITORY:latest"
|
|
68
68
|
]
|
|
@@ -119,4 +119,4 @@ class EcrDefaultImage extends constructs_1.Construct {
|
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
121
|
exports.EcrDefaultImage = EcrDefaultImage;
|
|
122
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyRGVmYXVsdEltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvZWNyRGVmYXVsdEltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx1RUFBMkU7QUFDM0UsNkRBR21DO0FBQ25DLG1FQUFnRTtBQUNoRSw2Q0FBNkQ7QUFDN0QsdURBQW9EO0FBQ3BELGlEQUk2QjtBQUM3Qix1REFLZ0M7QUFDaEMsMERBQTBEO0FBQzFELGlGQUEwRTtBQUMxRSxxRUFBeUQ7QUFRekQsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBQzVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM5QyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsR0FBRztZQUNyQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2hFLFFBQVEsRUFBRSx1QkFBdUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pFLFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMseUJBQXlCLENBQUM7WUFDMUQsY0FBYyxFQUFFO2dCQUNkLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSx3QkFBYyxDQUFDO29CQUNuQyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixPQUFPLEVBQUU7Z0NBQ1AseUJBQXlCO2dDQUN6QiwyQkFBMkI7Z0NBQzNCLHFCQUFxQjtnQ0FDckIseUJB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QUNGO0FBdkhELDBDQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDb2RlQnVpbGRQcm9qZWN0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2NvZGVCdWlsZFwiO1xuaW1wb3J0IHtcbiAgQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSxcbiAgQnVpbGRTcGVjXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQgeyBMb2dHcm91cCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2xvZ2dpbmcvbG9nR3JvdXBcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIHR5cGUgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9yb2xlXCI7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBTZXJ2aWNlUHJpbmNpcGFsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBFdmVudEJ1cyxcbiAgRXZlbnRGaWVsZCxcbiAgUnVsZSxcbiAgUnVsZVRhcmdldElucHV0XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzXCI7XG5pbXBvcnQgKiBhcyBUYXJnZXRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHNcIjtcbmltcG9ydCB7IENvZGVCdWlsZFN0YXJ0QnVpbGQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3NcIjtcbmltcG9ydCB7IEpzb25QYXRoIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zXCI7XG5cbmludGVyZmFjZSBFY3JEZWZhdWx0SW1hZ2VQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICByZWdpb246IHN0cmluZztcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGV2ZW50QnVzQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY3JEZWZhdWx0SW1hZ2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWNyRGVmYXVsdEltYWdlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgYGxvZ0dyb3VwYCwge1xuICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9jb2RlYnVpbGQvJHtpZH0vYCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgIH0pO1xuXG4gICAgY29uc3QgZWNyRGVmYXVsdEltYWdlUm9sZSA9IG5ldyBSb2xlKHRoaXMsIFwiZWNyRGVmYXVsdEltYWdlUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogYGVjckRlZmF1bHRJbWFnZVJvbGUtJHtwcm9wcy5yZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiUm9sZSB0byBwdXNoIGRlZmF1bHQgRUNSIGltYWdlcyBpbnRvIG5ldyByZXBvc2l0b3JpZXNcIixcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJjb2RlYnVpbGQuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFtcInB1c2hFY3JJbWFnZVwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwiZWNyOkNvbXBsZXRlTGF5ZXJVcGxvYWRcIixcbiAgICAgICAgICAgICAgICBcImVjcjpHZXRBdXRob3JpemF0aW9uVG9rZW5cIixcbiAgICAgICAgICAgICAgICBcImVjcjpVcGxvYWRMYXllclBhcnRcIixcbiAgICAgICAgICAgICAgICBcImVjcjpJbml0aWF0ZUxheWVyVXBsb2FkXCIsXG4gICAgICAgICAgICAgICAgXCJlY3I6QmF0Y2hDaGVja0xheWVyQXZhaWxhYmlsaXR5XCIsXG4gICAgICAgICAgICAgICAgXCJlY3I6UHV0SW1hZ2VcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wid3JpdGVMb2dzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ1N0cmVhbVwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpQdXRMb2dFdmVudHNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtsb2dHcm91cC5sb2dHcm91cEFybl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkUHJvamVjdCA9IG5ldyBDb2RlQnVpbGRQcm9qZWN0KHRoaXMsIFwiY29kZUJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCdWlsZCBhbmQgcHVzaCB0aGUgZGVmYXVsdCBFQ1IgaW1hZ2UgdG8gbmV3IHJlcG9zaXRvcmllc1wiLFxuICAgICAgcHJvamVjdE5hbWU6IFwiZWNyRGVmYXVsdEltYWdlXCIsXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogMC4yLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJkb2NrZXIgcHVsbCBwdWJsaWMuZWNyLmF3cy9iNWQ1bDduOS93ZWxjb21lOmxhdGVzdFwiLFxuICAgICAgICAgICAgICBcImRvY2tlciB0YWcgcHVibGljLmVjci5hd3MvYjVkNWw3bjkvd2VsY29tZTpsYXRlc3QgJEVDUl9SRVBPU0lUT1JZOmxhdGVzdFwiLFxuICAgICAgICAgICAgICBgYXdzIGVjciBnZXQtbG9naW4tcGFzc3dvcmQgLS1yZWdpb24gJHtwcm9wcy5yZWdpb259IHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJHtwcm9wcy5hY2NvdW50SWR9LmRrci5lY3IuJHtwcm9wcy5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgICBcImRvY2tlciBwdXNoICRFQ1JfUkVQT1NJVE9SWTpsYXRlc3RcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBsb2dnaW5nOiB7XG4gICAgICAgIGNsb3VkV2F0Y2g6IHtcbiAgICAgICAgICBsb2dHcm91cDogbG9nR3JvdXBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJvbGU6IGVjckRlZmF1bHRJbWFnZVJvbGVcbiAgICB9KTtcblxuICAgIG5ldyBDb2RlQnVpbGRTdGFydEJ1aWxkKHRoaXMsIFwiY29kZUJ1aWxkVGFza1wiLCB7XG4gICAgICBwcm9qZWN0OiBjb2RlQnVpbGRQcm9qZWN0LnByb2plY3QsXG4gICAgICBpbnB1dFBhdGg6IEpzb25QYXRoLnN0cmluZ0F0KFwiJC5zb3VyY2VcIiksXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlc092ZXJyaWRlOiB7XG4gICAgICAgIEVDUl9SRVBPU0lUT1JZOiB7XG4gICAgICAgICAgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QTEFJTlRFWFQsXG4gICAgICAgICAgdmFsdWU6IEpzb25QYXRoLnN0cmluZ0F0KFwiJC5zb3VyY2VcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZXZlbnRJbnB1dE1hcHBpbmcgPSB7XG4gICAgICByZXBvc2l0b3J5VXJpOiBFdmVudEZpZWxkLmZyb21QYXRoKFxuICAgICAgICBcIiQuZGV0YWlsLnJlc3BvbnNlRWxlbWVudHMucmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpXCJcbiAgICAgIClcbiAgICB9O1xuXG4gICAgY29uc3QgZXZlbnRJbnB1dFRlbXBsYXRlID0ge1xuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXNPdmVycmlkZTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJFQ1JfUkVQT1NJVE9SWVwiLFxuICAgICAgICAgIHZhbHVlOiBldmVudElucHV0TWFwcGluZy5yZXBvc2l0b3J5VXJpXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgbmV3IFJ1bGUodGhpcywgXCJlY3JDcmVhdGlvblJ1bGVcIiwge1xuICAgICAgcnVsZU5hbWU6IFwiZWNyQ3JlYXRpb25SdWxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJUcmlnZ2VyIHRoZSBkZWZhdWx0IEVDUiBpbWFnZSBidWlsZCB3aGVuIGEgbmV3IHJlcG9zaXRvcnkgaXMgY3JlYXRlZFwiLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGV2ZW50QnVzOiBFdmVudEJ1cy5mcm9tRXZlbnRCdXNBcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiZGVmYXVsdEV2ZW50QnVzXCIsXG4gICAgICAgIHByb3BzLmV2ZW50QnVzQXJuXG4gICAgICApLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogW1wiYXdzLmVjclwiXSxcbiAgICAgICAgZGV0YWlsVHlwZTogW1wiQVdTIEFQSSBDYWxsIHZpYSBDbG91ZFRyYWlsXCJdLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBldmVudFNvdXJjZTogW1wiZWNyLmFtYXpvbmF3cy5jb21cIl0sXG4gICAgICAgICAgZXZlbnROYW1lOiBbXCJDcmVhdGVSZXBvc2l0b3J5XCJdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbXG4gICAgICAgIG5ldyBUYXJnZXRzLkNvZGVCdWlsZFByb2plY3QoY29kZUJ1aWxkUHJvamVjdC5wcm9qZWN0LCB7XG4gICAgICAgICAgZXZlbnQ6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KGV2ZW50SW5wdXRUZW1wbGF0ZSlcbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyRGVmYXVsdEltYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2NvbmZpZy9hd3MvZWNyRGVmYXVsdEltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2Qyx1RUFBMkU7QUFDM0UsNkRBR21DO0FBQ25DLG1FQUFnRTtBQUNoRSw2Q0FBNkQ7QUFDN0QsdURBQW9EO0FBQ3BELGlEQUk2QjtBQUM3Qix1REFLZ0M7QUFDaEMsMERBQTBEO0FBQzFELGlGQUEwRTtBQUMxRSxxRUFBeUQ7QUFRekQsTUFBYSxlQUFnQixTQUFRLHNCQUFTO0lBQzVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUM5QyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsR0FBRztZQUNyQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxXQUFJLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2hFLFFBQVEsRUFBRSx1QkFBdUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFO1lBQ2pFLFdBQVcsRUFBRSx1REFBdUQ7WUFDcEUsU0FBUyxFQUFFLElBQUksMEJBQWdCLENBQUMseUJBQXlCLENBQUM7WUFDMUQsY0FBYyxFQUFFO2dCQUNkLENBQUMsY0FBYyxDQUFDLEVBQUUsSUFBSSx3QkFBYyxDQUFDO29CQUNuQyxVQUFVLEVBQUU7d0JBQ1YsSUFBSSx5QkFBZSxDQUFDOzRCQUNsQixPQUFPLEVBQUU7Z0NBQ1AseUJBQXlCO2dDQUN6QiwyQkFBMkI7Z0NBQzNCLHFCQUFxQjtnQ0FDckIseUJB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QUNGO0FBdkhELDBDQXVIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDb2RlQnVpbGRQcm9qZWN0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvdXRpbGl0aWVzL2NvZGVCdWlsZFwiO1xuaW1wb3J0IHtcbiAgQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZSxcbiAgQnVpbGRTcGVjXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkXCI7XG5pbXBvcnQgeyBMb2dHcm91cCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2xvZ2dpbmcvbG9nR3JvdXBcIjtcbmltcG9ydCB7IFJlbW92YWxQb2xpY3ksIHR5cGUgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2lhbS9yb2xlXCI7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBTZXJ2aWNlUHJpbmNpcGFsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBFdmVudEJ1cyxcbiAgRXZlbnRGaWVsZCxcbiAgUnVsZSxcbiAgUnVsZVRhcmdldElucHV0XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzXCI7XG5pbXBvcnQgKiBhcyBUYXJnZXRzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZXZlbnRzLXRhcmdldHNcIjtcbmltcG9ydCB7IENvZGVCdWlsZFN0YXJ0QnVpbGQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMtdGFza3NcIjtcbmltcG9ydCB7IEpzb25QYXRoIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zXCI7XG5cbmludGVyZmFjZSBFY3JEZWZhdWx0SW1hZ2VQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICByZWdpb246IHN0cmluZztcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGV2ZW50QnVzQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY3JEZWZhdWx0SW1hZ2UgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRWNyRGVmYXVsdEltYWdlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgTG9nR3JvdXAodGhpcywgYGxvZ0dyb3VwYCwge1xuICAgICAgbG9nR3JvdXBOYW1lOiBgL3ZwYy9jb2RlYnVpbGQvJHtpZH0vYCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgIH0pO1xuXG4gICAgY29uc3QgZWNyRGVmYXVsdEltYWdlUm9sZSA9IG5ldyBSb2xlKHRoaXMsIFwiZWNyRGVmYXVsdEltYWdlUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogYGVjckRlZmF1bHRJbWFnZVJvbGUtJHtwcm9wcy5yZWdpb24ucmVwbGFjZSgvLS9nLCBcIlwiKX1gLFxuICAgICAgZGVzY3JpcHRpb246IFwiUm9sZSB0byBwdXNoIGRlZmF1bHQgRUNSIGltYWdlcyBpbnRvIG5ldyByZXBvc2l0b3JpZXNcIixcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoXCJjb2RlYnVpbGQuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFtcInB1c2hFY3JJbWFnZVwiXTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgIFwiZWNyOkNvbXBsZXRlTGF5ZXJVcGxvYWRcIixcbiAgICAgICAgICAgICAgICBcImVjcjpHZXRBdXRob3JpemF0aW9uVG9rZW5cIixcbiAgICAgICAgICAgICAgICBcImVjcjpVcGxvYWRMYXllclBhcnRcIixcbiAgICAgICAgICAgICAgICBcImVjcjpJbml0aWF0ZUxheWVyVXBsb2FkXCIsXG4gICAgICAgICAgICAgICAgXCJlY3I6QmF0Y2hDaGVja0xheWVyQXZhaWxhYmlsaXR5XCIsXG4gICAgICAgICAgICAgICAgXCJlY3I6UHV0SW1hZ2VcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgW1wid3JpdGVMb2dzXCJdOiBuZXcgUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ0dyb3VwXCIsXG4gICAgICAgICAgICAgICAgXCJsb2dzOkNyZWF0ZUxvZ1N0cmVhbVwiLFxuICAgICAgICAgICAgICAgIFwibG9nczpQdXRMb2dFdmVudHNcIlxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICByZXNvdXJjZXM6IFtsb2dHcm91cC5sb2dHcm91cEFybl1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29kZUJ1aWxkUHJvamVjdCA9IG5ldyBDb2RlQnVpbGRQcm9qZWN0KHRoaXMsIFwiY29kZUJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBkZXNjcmlwdGlvbjogXCJCdWlsZCBhbmQgcHVzaCB0aGUgZGVmYXVsdCBFQ1IgaW1hZ2UgdG8gbmV3IHJlcG9zaXRvcmllc1wiLFxuICAgICAgcHJvamVjdE5hbWU6IFwiZWNyRGVmYXVsdEltYWdlXCIsXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogMC4yLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJkb2NrZXIgcHVsbCBwdWJsaWMuZWNyLmF3cy9mamFsbC93ZWxjb21lOmxhdGVzdFwiLFxuICAgICAgICAgICAgICBcImRvY2tlciB0YWcgcHVibGljLmVjci5hd3MvZmphbGwvd2VsY29tZTpsYXRlc3QgJEVDUl9SRVBPU0lUT1JZOmxhdGVzdFwiLFxuICAgICAgICAgICAgICBgYXdzIGVjciBnZXQtbG9naW4tcGFzc3dvcmQgLS1yZWdpb24gJHtwcm9wcy5yZWdpb259IHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJHtwcm9wcy5hY2NvdW50SWR9LmRrci5lY3IuJHtwcm9wcy5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgICBcImRvY2tlciBwdXNoICRFQ1JfUkVQT1NJVE9SWTpsYXRlc3RcIlxuICAgICAgICAgICAgXVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBsb2dnaW5nOiB7XG4gICAgICAgIGNsb3VkV2F0Y2g6IHtcbiAgICAgICAgICBsb2dHcm91cDogbG9nR3JvdXBcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHJvbGU6IGVjckRlZmF1bHRJbWFnZVJvbGVcbiAgICB9KTtcblxuICAgIG5ldyBDb2RlQnVpbGRTdGFydEJ1aWxkKHRoaXMsIFwiY29kZUJ1aWxkVGFza1wiLCB7XG4gICAgICBwcm9qZWN0OiBjb2RlQnVpbGRQcm9qZWN0LnByb2plY3QsXG4gICAgICBpbnB1dFBhdGg6IEpzb25QYXRoLnN0cmluZ0F0KFwiJC5zb3VyY2VcIiksXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlc092ZXJyaWRlOiB7XG4gICAgICAgIEVDUl9SRVBPU0lUT1JZOiB7XG4gICAgICAgICAgdHlwZTogQnVpbGRFbnZpcm9ubWVudFZhcmlhYmxlVHlwZS5QTEFJTlRFWFQsXG4gICAgICAgICAgdmFsdWU6IEpzb25QYXRoLnN0cmluZ0F0KFwiJC5zb3VyY2VcIilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgZXZlbnRJbnB1dE1hcHBpbmcgPSB7XG4gICAgICByZXBvc2l0b3J5VXJpOiBFdmVudEZpZWxkLmZyb21QYXRoKFxuICAgICAgICBcIiQuZGV0YWlsLnJlc3BvbnNlRWxlbWVudHMucmVwb3NpdG9yeS5yZXBvc2l0b3J5VXJpXCJcbiAgICAgIClcbiAgICB9O1xuXG4gICAgY29uc3QgZXZlbnRJbnB1dFRlbXBsYXRlID0ge1xuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXNPdmVycmlkZTogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJFQ1JfUkVQT1NJVE9SWVwiLFxuICAgICAgICAgIHZhbHVlOiBldmVudElucHV0TWFwcGluZy5yZXBvc2l0b3J5VXJpXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9O1xuXG4gICAgbmV3IFJ1bGUodGhpcywgXCJlY3JDcmVhdGlvblJ1bGVcIiwge1xuICAgICAgcnVsZU5hbWU6IFwiZWNyQ3JlYXRpb25SdWxlXCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJUcmlnZ2VyIHRoZSBkZWZhdWx0IEVDUiBpbWFnZSBidWlsZCB3aGVuIGEgbmV3IHJlcG9zaXRvcnkgaXMgY3JlYXRlZFwiLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIGV2ZW50QnVzOiBFdmVudEJ1cy5mcm9tRXZlbnRCdXNBcm4oXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiZGVmYXVsdEV2ZW50QnVzXCIsXG4gICAgICAgIHByb3BzLmV2ZW50QnVzQXJuXG4gICAgICApLFxuICAgICAgZXZlbnRQYXR0ZXJuOiB7XG4gICAgICAgIHNvdXJjZTogW1wiYXdzLmVjclwiXSxcbiAgICAgICAgZGV0YWlsVHlwZTogW1wiQVdTIEFQSSBDYWxsIHZpYSBDbG91ZFRyYWlsXCJdLFxuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBldmVudFNvdXJjZTogW1wiZWNyLmFtYXpvbmF3cy5jb21cIl0sXG4gICAgICAgICAgZXZlbnROYW1lOiBbXCJDcmVhdGVSZXBvc2l0b3J5XCJdXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB0YXJnZXRzOiBbXG4gICAgICAgIG5ldyBUYXJnZXRzLkNvZGVCdWlsZFByb2plY3QoY29kZUJ1aWxkUHJvamVjdC5wcm9qZWN0LCB7XG4gICAgICAgICAgZXZlbnQ6IFJ1bGVUYXJnZXRJbnB1dC5mcm9tT2JqZWN0KGV2ZW50SW5wdXRUZW1wbGF0ZSlcbiAgICAgICAgfSlcbiAgICAgIF1cbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { Role } from "aws-cdk-lib/aws-iam";
|
|
3
|
+
export interface AuditRoleProps {
|
|
4
|
+
/**
|
|
5
|
+
* Override the default Fjall webapp account ID
|
|
6
|
+
* Defaults to the account ID specified in FJALL_AUDIT_CONFIG
|
|
7
|
+
*/
|
|
8
|
+
webappAccountId?: string;
|
|
9
|
+
/**
|
|
10
|
+
* External ID for additional security when assuming the role
|
|
11
|
+
* If not provided, a unique external ID will be generated
|
|
12
|
+
*/
|
|
13
|
+
externalId?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* High-level pattern for adding CloudQuery audit capabilities to an application.
|
|
17
|
+
*
|
|
18
|
+
* This creates a cross-account IAM role that grants the Fjall platform read-only
|
|
19
|
+
* access to all AWS resources for security auditing via CloudQuery.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { App, AuditRole } from "@fjall/components-infrastructure";
|
|
24
|
+
*
|
|
25
|
+
* const app = App.getApp("MyApp");
|
|
26
|
+
*
|
|
27
|
+
* // Explicit opt-in to audit capabilities
|
|
28
|
+
* const auditRole = new AuditRole(app, "AuditRole");
|
|
29
|
+
*
|
|
30
|
+
* // Continue with normal application setup
|
|
31
|
+
* app.addCompute(/* ... *\/);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class AuditRole extends Construct {
|
|
35
|
+
readonly role: Role;
|
|
36
|
+
readonly externalId: string;
|
|
37
|
+
constructor(scope: Construct, id: string, props?: AuditRoleProps);
|
|
38
|
+
/**
|
|
39
|
+
* Generate a unique external ID for this application
|
|
40
|
+
* Format: fjall-audit-{appName}-{timestamp}
|
|
41
|
+
*/
|
|
42
|
+
private generateExternalId;
|
|
43
|
+
}
|
|
44
|
+
export default AuditRole;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuditRole = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const app_1 = require("../../app");
|
|
6
|
+
const auditRole_1 = require("../../resources/aws/audit/auditRole");
|
|
7
|
+
const audit_1 = require("../../config/audit");
|
|
8
|
+
/**
|
|
9
|
+
* High-level pattern for adding CloudQuery audit capabilities to an application.
|
|
10
|
+
*
|
|
11
|
+
* This creates a cross-account IAM role that grants the Fjall platform read-only
|
|
12
|
+
* access to all AWS resources for security auditing via CloudQuery.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { App, AuditRole } from "@fjall/components-infrastructure";
|
|
17
|
+
*
|
|
18
|
+
* const app = App.getApp("MyApp");
|
|
19
|
+
*
|
|
20
|
+
* // Explicit opt-in to audit capabilities
|
|
21
|
+
* const auditRole = new AuditRole(app, "AuditRole");
|
|
22
|
+
*
|
|
23
|
+
* // Continue with normal application setup
|
|
24
|
+
* app.addCompute(/* ... *\/);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
class AuditRole extends constructs_1.Construct {
|
|
28
|
+
constructor(scope, id, props) {
|
|
29
|
+
super(scope, id);
|
|
30
|
+
// Get the App instance to access the network stack
|
|
31
|
+
const app = scope instanceof app_1.default ? scope : app_1.default.getInstance();
|
|
32
|
+
const networkStack = app.getDefaultNetworkStack();
|
|
33
|
+
// Generate or use provided external ID
|
|
34
|
+
this.externalId = props?.externalId || this.generateExternalId(app);
|
|
35
|
+
// Create the audit role using the factory
|
|
36
|
+
this.role = auditRole_1.default.build(`${app["name"]}AuditRole`, {
|
|
37
|
+
webappAccountId: props?.webappAccountId || audit_1.FJALL_AUDIT_CONFIG.webappAwsAccountId,
|
|
38
|
+
appName: app["name"],
|
|
39
|
+
externalId: this.externalId,
|
|
40
|
+
roleNamePrefix: audit_1.FJALL_AUDIT_CONFIG.roleNamePrefix,
|
|
41
|
+
rolePath: audit_1.FJALL_AUDIT_CONFIG.rolePath
|
|
42
|
+
})(app, networkStack.getStack());
|
|
43
|
+
// Register the role with the network stack
|
|
44
|
+
networkStack.addConstruct(this.role);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Generate a unique external ID for this application
|
|
48
|
+
* Format: fjall-audit-{appName}-{timestamp}
|
|
49
|
+
*/
|
|
50
|
+
generateExternalId(app) {
|
|
51
|
+
const appName = app["name"];
|
|
52
|
+
const timestamp = Date.now();
|
|
53
|
+
return `fjall-audit-${appName.toLowerCase()}-${timestamp}`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.AuditRole = AuditRole;
|
|
57
|
+
exports.default = AuditRole;
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRSb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9hdWRpdFJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBRXZDLG1DQUE0QjtBQUM1QixtRUFBbUU7QUFDbkUsOENBQXdEO0FBZ0J4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsTUFBYSxTQUFVLFNBQVEsc0JBQVM7SUFJdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLG1EQUFtRDtRQUNuRCxNQUFNLEdBQUcsR0FBRyxLQUFLLFlBQVksYUFBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM3RCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUVsRCx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwRSwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxtQkFBZ0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUM1RCxlQUFlLEVBQ2IsS0FBSyxFQUFFLGVBQWUsSUFBSSwwQkFBa0IsQ0FBQyxrQkFBa0I7WUFDakUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUM7WUFDcEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGNBQWMsRUFBRSwwQkFBa0IsQ0FBQyxjQUFjO1lBQ2pELFFBQVEsRUFBRSwwQkFBa0IsQ0FBQyxRQUFRO1NBQ3RDLENBQUMsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFFakMsMkNBQTJDO1FBQzNDLFlBQVksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSyxrQkFBa0IsQ0FBQyxHQUFRO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsT0FBTyxlQUFlLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxTQUFTLEVBQUUsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyQ0QsOEJBcUNDO0FBRUQsa0JBQWUsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgQXVkaXRSb2xlRmFjdG9yeSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9hdWRpdC9hdWRpdFJvbGVcIjtcbmltcG9ydCB7IEZKQUxMX0FVRElUX0NPTkZJRyB9IGZyb20gXCIuLi8uLi9jb25maWcvYXVkaXRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdWRpdFJvbGVQcm9wcyB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgZGVmYXVsdCBGamFsbCB3ZWJhcHAgYWNjb3VudCBJRFxuICAgKiBEZWZhdWx0cyB0byB0aGUgYWNjb3VudCBJRCBzcGVjaWZpZWQgaW4gRkpBTExfQVVESVRfQ09ORklHXG4gICAqL1xuICB3ZWJhcHBBY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIGZvciBhZGRpdGlvbmFsIHNlY3VyaXR5IHdoZW4gYXNzdW1pbmcgdGhlIHJvbGVcbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIHVuaXF1ZSBleHRlcm5hbCBJRCB3aWxsIGJlIGdlbmVyYXRlZFxuICAgKi9cbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBIaWdoLWxldmVsIHBhdHRlcm4gZm9yIGFkZGluZyBDbG91ZFF1ZXJ5IGF1ZGl0IGNhcGFiaWxpdGllcyB0byBhbiBhcHBsaWNhdGlvbi5cbiAqXG4gKiBUaGlzIGNyZWF0ZXMgYSBjcm9zcy1hY2NvdW50IElBTSByb2xlIHRoYXQgZ3JhbnRzIHRoZSBGamFsbCBwbGF0Zm9ybSByZWFkLW9ubHlcbiAqIGFjY2VzcyB0byBhbGwgQVdTIHJlc291cmNlcyBmb3Igc2VjdXJpdHkgYXVkaXRpbmcgdmlhIENsb3VkUXVlcnkuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydCB7IEFwcCwgQXVkaXRSb2xlIH0gZnJvbSBcIkBmamFsbC9jb21wb25lbnRzLWluZnJhc3RydWN0dXJlXCI7XG4gKlxuICogY29uc3QgYXBwID0gQXBwLmdldEFwcChcIk15QXBwXCIpO1xuICpcbiAqIC8vIEV4cGxpY2l0IG9wdC1pbiB0byBhdWRpdCBjYXBhYmlsaXRpZXNcbiAqIGNvbnN0IGF1ZGl0Um9sZSA9IG5ldyBBdWRpdFJvbGUoYXBwLCBcIkF1ZGl0Um9sZVwiKTtcbiAqXG4gKiAvLyBDb250aW51ZSB3aXRoIG5vcm1hbCBhcHBsaWNhdGlvbiBzZXR1cFxuICogYXBwLmFkZENvbXB1dGUoLyogLi4uICpcXC8pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBBdWRpdFJvbGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGV4dGVybmFsSWQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEF1ZGl0Um9sZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIEdldCB0aGUgQXBwIGluc3RhbmNlIHRvIGFjY2VzcyB0aGUgbmV0d29yayBzdGFja1xuICAgIGNvbnN0IGFwcCA9IHNjb3BlIGluc3RhbmNlb2YgQXBwID8gc2NvcGUgOiBBcHAuZ2V0SW5zdGFuY2UoKTtcbiAgICBjb25zdCBuZXR3b3JrU3RhY2sgPSBhcHAuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpO1xuXG4gICAgLy8gR2VuZXJhdGUgb3IgdXNlIHByb3ZpZGVkIGV4dGVybmFsIElEXG4gICAgdGhpcy5leHRlcm5hbElkID0gcHJvcHM/LmV4dGVybmFsSWQgfHwgdGhpcy5nZW5lcmF0ZUV4dGVybmFsSWQoYXBwKTtcblxuICAgIC8vIENyZWF0ZSB0aGUgYXVkaXQgcm9sZSB1c2luZyB0aGUgZmFjdG9yeVxuICAgIHRoaXMucm9sZSA9IEF1ZGl0Um9sZUZhY3RvcnkuYnVpbGQoYCR7YXBwW1wibmFtZVwiXX1BdWRpdFJvbGVgLCB7XG4gICAgICB3ZWJhcHBBY2NvdW50SWQ6XG4gICAgICAgIHByb3BzPy53ZWJhcHBBY2NvdW50SWQgfHwgRkpBTExfQVVESVRfQ09ORklHLndlYmFwcEF3c0FjY291bnRJZCxcbiAgICAgIGFwcE5hbWU6IGFwcFtcIm5hbWVcIl0sXG4gICAgICBleHRlcm5hbElkOiB0aGlzLmV4dGVybmFsSWQsXG4gICAgICByb2xlTmFtZVByZWZpeDogRkpBTExfQVVESVRfQ09ORklHLnJvbGVOYW1lUHJlZml4LFxuICAgICAgcm9sZVBhdGg6IEZKQUxMX0FVRElUX0NPTkZJRy5yb2xlUGF0aFxuICAgIH0pKGFwcCwgbmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuXG4gICAgLy8gUmVnaXN0ZXIgdGhlIHJvbGUgd2l0aCB0aGUgbmV0d29yayBzdGFja1xuICAgIG5ldHdvcmtTdGFjay5hZGRDb25zdHJ1Y3QodGhpcy5yb2xlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHVuaXF1ZSBleHRlcm5hbCBJRCBmb3IgdGhpcyBhcHBsaWNhdGlvblxuICAgKiBGb3JtYXQ6IGZqYWxsLWF1ZGl0LXthcHBOYW1lfS17dGltZXN0YW1wfVxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUV4dGVybmFsSWQoYXBwOiBBcHApOiBzdHJpbmcge1xuICAgIGNvbnN0IGFwcE5hbWUgPSBhcHBbXCJuYW1lXCJdO1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gICAgcmV0dXJuIGBmamFsbC1hdWRpdC0ke2FwcE5hbWUudG9Mb3dlckNhc2UoKX0tJHt0aW1lc3RhbXB9YDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBdWRpdFJvbGU7XG4iXX0=
|
|
File without changes
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import AwsStack, { AwsStackProps } from "../../resources/aws/base/awsStack";
|
|
3
|
+
// import { Vpc } from "../../resources/aws/networking/vpc";
|
|
4
|
+
// import Fargate, {
|
|
5
|
+
// ContainerSecret,
|
|
6
|
+
// ScalingType,
|
|
7
|
+
// Protocol
|
|
8
|
+
// } from "../../resources/aws/compute/ecs";
|
|
9
|
+
// import Database from "../../resources/aws/database/database";
|
|
10
|
+
// import { Secret } from "../../resources/aws/secrets";
|
|
11
|
+
// import { Ecr } from "../../resources/aws/storage";
|
|
12
|
+
// import { Fn, SecretValue } from "aws-cdk-lib";
|
|
13
|
+
// import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
14
|
+
// import { KeyValue } from "../../types";
|
|
15
|
+
// /**
|
|
16
|
+
// * Intersected with BasicAppProps in the getProps method. This allows the BasicApp construct
|
|
17
|
+
// * to treat these as required properties and avoid constant null checking.
|
|
18
|
+
// */
|
|
19
|
+
// export interface BasicAppPropDefaults {
|
|
20
|
+
// tags: KeyValue;
|
|
21
|
+
// serviceName: string;
|
|
22
|
+
// clusterName: string;
|
|
23
|
+
// protocol: Protocol;
|
|
24
|
+
// scalingType: ScalingType;
|
|
25
|
+
// containerPort: number;
|
|
26
|
+
// }
|
|
27
|
+
// export interface BasicAppProps {
|
|
28
|
+
// accountId?: string;
|
|
29
|
+
// clusterName?: string;
|
|
30
|
+
// containerCommand?: string[];
|
|
31
|
+
// containerEnvironment?: KeyValue;
|
|
32
|
+
// containerPort?: number;
|
|
33
|
+
// containerSecrets?: string[];
|
|
34
|
+
// environment: string;
|
|
35
|
+
// // The team/domain/business-unit that is responsible for this service
|
|
36
|
+
// owner?: string;
|
|
37
|
+
// parentDomain?: string; // Fix to make a dependency of protocol
|
|
38
|
+
// listenerPort?: number;
|
|
39
|
+
// protocol?: Protocol;
|
|
40
|
+
// region?: string;
|
|
41
|
+
// scalingType?: ScalingType;
|
|
42
|
+
// serviceName?: string;
|
|
43
|
+
// taskRoleInlinePolicies?: {
|
|
44
|
+
// [name: string]: PolicyDocument;
|
|
45
|
+
// };
|
|
46
|
+
// taskRoleManagedPolicies?: IManagedPolicy[];
|
|
47
|
+
// tags?: KeyValue;
|
|
48
|
+
// }
|
|
49
|
+
// export class BasicApp {
|
|
50
|
+
// private vpcStack: AwsStack;
|
|
51
|
+
// private databaseStack: AwsStack;
|
|
52
|
+
// private secretStack: AwsStack;
|
|
53
|
+
// private computeStack: AwsStack;
|
|
54
|
+
// constructor(id: string, rawProps: BasicAppProps) {
|
|
55
|
+
// const props = this.getProps(id, rawProps);
|
|
56
|
+
// const stackProps = this.getStackProps(props);
|
|
57
|
+
// this.vpcStack = new AwsStack(`${id}Network`, [], stackProps)
|
|
58
|
+
// .addNetwork(
|
|
59
|
+
// Vpc.build(`${id}Vpc`, {
|
|
60
|
+
// accountId: props.accountId,
|
|
61
|
+
// ipv4IpamPoolId: Fn.importValue(`IpamPoolId${props?.accountId}`),
|
|
62
|
+
// region: props.region,
|
|
63
|
+
// tags: props.tags
|
|
64
|
+
// })
|
|
65
|
+
// )
|
|
66
|
+
// .addContainerRegistry(Ecr.build(`${id}Ecr`));
|
|
67
|
+
// this.databaseStack = new AwsStack(
|
|
68
|
+
// `${id}Database`,
|
|
69
|
+
// this.vpcStack,
|
|
70
|
+
// stackProps
|
|
71
|
+
// )
|
|
72
|
+
// .addNetwork(this.vpcStack.getNetwork())
|
|
73
|
+
// .addResource(Database.build(`${id}Database`));
|
|
74
|
+
// //TODO: validate id does not contain special characters (no hyphens - no slashes etc) database instances won't allow it
|
|
75
|
+
// const dbResource = this.databaseStack.getResource(
|
|
76
|
+
// `${id}Database`
|
|
77
|
+
// ) as Database;
|
|
78
|
+
// const secretObjectValue: ContainerSecret = {};
|
|
79
|
+
// if (props.containerSecrets) {
|
|
80
|
+
// for (const secretObject of props.containerSecrets) {
|
|
81
|
+
// secretObjectValue[secretObject] = SecretValue.unsafePlainText("");
|
|
82
|
+
// }
|
|
83
|
+
// }
|
|
84
|
+
// this.secretStack = new AwsStack(`${id}Secret`, [], stackProps).addResource(
|
|
85
|
+
// Secret.build(`${id}Secret`, {
|
|
86
|
+
// secretName: `/${props.clusterName}/${props.serviceName}`,
|
|
87
|
+
// secretObjectValue: secretObjectValue,
|
|
88
|
+
// tags: props.tags
|
|
89
|
+
// })
|
|
90
|
+
// );
|
|
91
|
+
// this.computeStack = new AwsStack(
|
|
92
|
+
// `${id}Compute`,
|
|
93
|
+
// [this.vpcStack, this.databaseStack, this.secretStack],
|
|
94
|
+
// stackProps
|
|
95
|
+
// )
|
|
96
|
+
// .addNetwork(this.vpcStack.getNetwork())
|
|
97
|
+
// .addResource(
|
|
98
|
+
// Fargate.build(`${id}Fargate`, {
|
|
99
|
+
// clusterName: props.clusterName,
|
|
100
|
+
// protocol: props.protocol,
|
|
101
|
+
// //TODO: This should work via line 126, but doesn't work (at least on update)
|
|
102
|
+
// databaseConnection: dbResource.connections,
|
|
103
|
+
// containerCommand: props.containerCommand,
|
|
104
|
+
// containerEnvironment: props.containerEnvironment,
|
|
105
|
+
// containerPort: props.containerPort,
|
|
106
|
+
// containerSecrets: secretObjectValue,
|
|
107
|
+
// ecrRepository: this.vpcStack.getContainerRegistry(),
|
|
108
|
+
// parentDomain: props.parentDomain?.toLowerCase(),
|
|
109
|
+
// listenerPort: props.listenerPort,
|
|
110
|
+
// scalingType: props.scalingType,
|
|
111
|
+
// serviceName: props.serviceName,
|
|
112
|
+
// taskRoleInlinePolicies: props.taskRoleInlinePolicies,
|
|
113
|
+
// taskRoleManagedPolicies: props.taskRoleManagedPolicies,
|
|
114
|
+
// tags: props.tags
|
|
115
|
+
// })
|
|
116
|
+
// )
|
|
117
|
+
// .connect(`${id}Fargate`, `${id}Database`, 5432);
|
|
118
|
+
// }
|
|
119
|
+
// getStackProps(props: BasicAppProps): AwsStackProps | undefined {
|
|
120
|
+
// if (!props) return;
|
|
121
|
+
// return {
|
|
122
|
+
// accountId: props.accountId,
|
|
123
|
+
// region: props.region
|
|
124
|
+
// };
|
|
125
|
+
// }
|
|
126
|
+
// getProps(
|
|
127
|
+
// id: string,
|
|
128
|
+
// rawProps: BasicAppProps
|
|
129
|
+
// ): BasicAppProps & BasicAppPropDefaults {
|
|
130
|
+
// const defaultProps = {
|
|
131
|
+
// tags: {
|
|
132
|
+
// "fjall:costAllocation:service": "app",
|
|
133
|
+
// "fjall:costAllocation:environment":
|
|
134
|
+
// rawProps.environment || "production",
|
|
135
|
+
// "fjall:costAllocation:owner": rawProps.owner || "engineer"
|
|
136
|
+
// },
|
|
137
|
+
// scalingType: ScalingType.CPU,
|
|
138
|
+
// protocol: rawProps.parentDomain ? Protocol.HTTPS : Protocol.HTTP,
|
|
139
|
+
// containerPort: 3000,
|
|
140
|
+
// serviceName: `${id}Service`,
|
|
141
|
+
// clusterName: `${id}Cluster`
|
|
142
|
+
// };
|
|
143
|
+
// return {
|
|
144
|
+
// ...defaultProps,
|
|
145
|
+
// ...rawProps
|
|
146
|
+
// };
|
|
147
|
+
// }
|
|
148
|
+
// }
|
|
149
|
+
// export default BasicApp;
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzaWNBcHAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2Jhc2ljQXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrRUFBK0U7QUFDL0UsNERBQTREO0FBQzVELG9CQUFvQjtBQUNwQixxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYiw0Q0FBNEM7QUFDNUMsZ0VBQWdFO0FBQ2hFLHdEQUF3RDtBQUN4RCxxREFBcUQ7QUFDckQsaURBQWlEO0FBQ2pELHdFQUF3RTtBQUN4RSwwQ0FBMEM7QUFFMUMsTUFBTTtBQUNOLCtGQUErRjtBQUMvRiw2RUFBNkU7QUFDN0UsTUFBTTtBQUNOLDBDQUEwQztBQUMxQyxvQkFBb0I7QUFDcEIseUJBQXlCO0FBQ3pCLHlCQUF5QjtBQUN6Qix3QkFBd0I7QUFDeEIsOEJBQThCO0FBQzlCLDJCQUEyQjtBQUMzQixJQUFJO0FBRUosbUNBQW1DO0FBQ25DLHdCQUF3QjtBQUN4QiwwQkFBMEI7QUFDMUIsaUNBQWlDO0FBQ2pDLHFDQUFxQztBQUNyQyw0QkFBNEI7QUFDNUIsaUNBQWlDO0FBQ2pDLHlCQUF5QjtBQUN6QiwwRUFBMEU7QUFDMUUsb0JBQW9CO0FBQ3BCLG1FQUFtRTtBQUNuRSwyQkFBMkI7QUFDM0IseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQiwrQkFBK0I7QUFDL0IsMEJBQTBCO0FBQzFCLCtCQUErQjtBQUMvQixzQ0FBc0M7QUFDdEMsT0FBTztBQUNQLGdEQUFnRDtBQUNoRCxxQkFBcUI7QUFDckIsSUFBSTtBQUVKLDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMscUNBQXFDO0FBQ3JDLG1DQUFtQztBQUNuQyxvQ0FBb0M7QUFFcEMsdURBQXVEO0FBQ3ZELGlEQUFpRDtBQUNqRCxvREFBb0Q7QUFFcEQsbUVBQW1FO0FBQ25FLHFCQUFxQjtBQUNyQixrQ0FBa0M7QUFDbEMsd0NBQXdDO0FBQ3hDLDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYixVQUFVO0FBQ1Ysc0RBQXNEO0FBRXRELHlDQUF5QztBQUN6Qyx5QkFBeUI7QUFDekIsdUJBQXVCO0FBQ3ZCLG1CQUFtQjtBQUNuQixRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hELHVEQUF1RDtBQUV2RCw4SEFBOEg7QUFFOUgseURBQXlEO0FBQ3pELHdCQUF3QjtBQUN4QixxQkFBcUI7QUFFckIscURBQXFEO0FBQ3JELG9DQUFvQztBQUNwQyw2REFBNkQ7QUFDN0QsNkVBQTZFO0FBQzdFLFVBQVU7QUFDVixRQUFRO0FBRVIsa0ZBQWtGO0FBQ2xGLHNDQUFzQztBQUN0QyxvRUFBb0U7QUFDcEUsZ0RBQWdEO0FBQ2hELDJCQUEyQjtBQUMzQixXQUFXO0FBQ1gsU0FBUztBQUVULHdDQUF3QztBQUN4Qyx3QkFBd0I7QUFDeEIsK0RBQStEO0FBQy9ELG1CQUFtQjtBQUNuQixRQUFRO0FBQ1IsZ0RBQWdEO0FBQ2hELHNCQUFzQjtBQUN0QiwwQ0FBMEM7QUFDMUMsNENBQTRDO0FBQzVDLHNDQUFzQztBQUN0Qyx5RkFBeUY7QUFDekYsd0RBQXdEO0FBQ3hELHNEQUFzRDtBQUN0RCw4REFBOEQ7QUFDOUQsZ0RBQWdEO0FBQ2hELGlEQUFpRDtBQUNqRCxpRUFBaUU7QUFDakUsNkRBQTZEO0FBQzdELDhDQUE4QztBQUM5Qyw0Q0FBNEM7QUFDNUMsNENBQTRDO0FBQzVDLGtFQUFrRTtBQUNsRSxvRUFBb0U7QUFDcEUsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYixVQUFVO0FBQ1YseURBQXlEO0FBQ3pELE1BQU07QUFFTixxRUFBcUU7QUFDckUsMEJBQTBCO0FBRTFCLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsNkJBQTZCO0FBQzdCLFNBQVM7QUFDVCxNQUFNO0FBRU4sY0FBYztBQUNkLGtCQUFrQjtBQUNsQiw4QkFBOEI7QUFDOUIsOENBQThDO0FBQzlDLDZCQUE2QjtBQUM3QixnQkFBZ0I7QUFDaEIsaURBQWlEO0FBQ2pELDhDQUE4QztBQUM5QyxrREFBa0Q7QUFDbEQscUVBQXFFO0FBQ3JFLFdBQVc7QUFDWCxzQ0FBc0M7QUFDdEMsMEVBQTBFO0FBQzFFLDZCQUE2QjtBQUM3QixxQ0FBcUM7QUFDckMsb0NBQW9DO0FBQ3BDLFNBQVM7QUFFVCxlQUFlO0FBQ2YseUJBQXlCO0FBQ3pCLG9CQUFvQjtBQUNwQixTQUFTO0FBQ1QsTUFBTTtBQUNOLElBQUk7QUFDSiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgQXdzU3RhY2ssIHsgQXdzU3RhY2tQcm9wcyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2Jhc2UvYXdzU3RhY2tcIjtcbi8vIGltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvdnBjXCI7XG4vLyBpbXBvcnQgRmFyZ2F0ZSwge1xuLy8gICBDb250YWluZXJTZWNyZXQsXG4vLyAgIFNjYWxpbmdUeXBlLFxuLy8gICBQcm90b2NvbFxuLy8gfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1wiO1xuLy8gaW1wb3J0IERhdGFiYXNlIGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlXCI7XG4vLyBpbXBvcnQgeyBTZWNyZXQgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zZWNyZXRzXCI7XG4vLyBpbXBvcnQgeyBFY3IgfSBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9zdG9yYWdlXCI7XG4vLyBpbXBvcnQgeyBGbiwgU2VjcmV0VmFsdWUgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbi8vIGltcG9ydCB7IElNYW5hZ2VkUG9saWN5LCBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG4vLyBpbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG4vLyAvKipcbi8vICAqIEludGVyc2VjdGVkIHdpdGggQmFzaWNBcHBQcm9wcyBpbiB0aGUgZ2V0UHJvcHMgbWV0aG9kLiBUaGlzIGFsbG93cyB0aGUgQmFzaWNBcHAgY29uc3RydWN0XG4vLyAgKiB0byB0cmVhdCB0aGVzZSBhcyByZXF1aXJlZCBwcm9wZXJ0aWVzIGFuZCBhdm9pZCBjb25zdGFudCBudWxsIGNoZWNraW5nLlxuLy8gICovXG4vLyBleHBvcnQgaW50ZXJmYWNlIEJhc2ljQXBwUHJvcERlZmF1bHRzIHtcbi8vICAgdGFnczogS2V5VmFsdWU7XG4vLyAgIHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4vLyAgIGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4vLyAgIHByb3RvY29sOiBQcm90b2NvbDtcbi8vICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlO1xuLy8gICBjb250YWluZXJQb3J0OiBudW1iZXI7XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgQmFzaWNBcHBQcm9wcyB7XG4vLyAgIGFjY291bnRJZD86IHN0cmluZztcbi8vICAgY2x1c3Rlck5hbWU/OiBzdHJpbmc7XG4vLyAgIGNvbnRhaW5lckNvbW1hbmQ/OiBzdHJpbmdbXTtcbi8vICAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiBLZXlWYWx1ZTtcbi8vICAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcbi8vICAgY29udGFpbmVyU2VjcmV0cz86IHN0cmluZ1tdO1xuLy8gICBlbnZpcm9ubWVudDogc3RyaW5nO1xuLy8gICAvLyBUaGUgdGVhbS9kb21haW4vYnVzaW5lc3MtdW5pdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciB0aGlzIHNlcnZpY2Vcbi8vICAgb3duZXI/OiBzdHJpbmc7XG4vLyAgIHBhcmVudERvbWFpbj86IHN0cmluZzsgLy8gRml4IHRvIG1ha2UgYSBkZXBlbmRlbmN5IG9mIHByb3RvY29sXG4vLyAgIGxpc3RlbmVyUG9ydD86IG51bWJlcjtcbi8vICAgcHJvdG9jb2w/OiBQcm90b2NvbDtcbi8vICAgcmVnaW9uPzogc3RyaW5nO1xuLy8gICBzY2FsaW5nVHlwZT86IFNjYWxpbmdUeXBlO1xuLy8gICBzZXJ2aWNlTmFtZT86IHN0cmluZztcbi8vICAgdGFza1JvbGVJbmxpbmVQb2xpY2llcz86IHtcbi8vICAgICBbbmFtZTogc3RyaW5nXTogUG9saWN5RG9jdW1lbnQ7XG4vLyAgIH07XG4vLyAgIHRhc2tSb2xlTWFuYWdlZFBvbGljaWVzPzogSU1hbmFnZWRQb2xpY3lbXTtcbi8vICAgdGFncz86IEtleVZhbHVlO1xuLy8gfVxuXG4vLyBleHBvcnQgY2xhc3MgQmFzaWNBcHAge1xuLy8gICBwcml2YXRlIHZwY1N0YWNrOiBBd3NTdGFjaztcbi8vICAgcHJpdmF0ZSBkYXRhYmFzZVN0YWNrOiBBd3NTdGFjaztcbi8vICAgcHJpdmF0ZSBzZWNyZXRTdGFjazogQXdzU3RhY2s7XG4vLyAgIHByaXZhdGUgY29tcHV0ZVN0YWNrOiBBd3NTdGFjaztcblxuLy8gICBjb25zdHJ1Y3RvcihpZDogc3RyaW5nLCByYXdQcm9wczogQmFzaWNBcHBQcm9wcykge1xuLy8gICAgIGNvbnN0IHByb3BzID0gdGhpcy5nZXRQcm9wcyhpZCwgcmF3UHJvcHMpO1xuLy8gICAgIGNvbnN0IHN0YWNrUHJvcHMgPSB0aGlzLmdldFN0YWNrUHJvcHMocHJvcHMpO1xuXG4vLyAgICAgdGhpcy52cGNTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1OZXR3b3JrYCwgW10sIHN0YWNrUHJvcHMpXG4vLyAgICAgICAuYWRkTmV0d29yayhcbi8vICAgICAgICAgVnBjLmJ1aWxkKGAke2lkfVZwY2AsIHtcbi8vICAgICAgICAgICBhY2NvdW50SWQ6IHByb3BzLmFjY291bnRJZCxcbi8vICAgICAgICAgICBpcHY0SXBhbVBvb2xJZDogRm4uaW1wb3J0VmFsdWUoYElwYW1Qb29sSWQke3Byb3BzPy5hY2NvdW50SWR9YCksXG4vLyAgICAgICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4vLyAgICAgICAgICAgdGFnczogcHJvcHMudGFnc1xuLy8gICAgICAgICB9KVxuLy8gICAgICAgKVxuLy8gICAgICAgLmFkZENvbnRhaW5lclJlZ2lzdHJ5KEVjci5idWlsZChgJHtpZH1FY3JgKSk7XG5cbi8vICAgICB0aGlzLmRhdGFiYXNlU3RhY2sgPSBuZXcgQXdzU3RhY2soXG4vLyAgICAgICBgJHtpZH1EYXRhYmFzZWAsXG4vLyAgICAgICB0aGlzLnZwY1N0YWNrLFxuLy8gICAgICAgc3RhY2tQcm9wc1xuLy8gICAgIClcbi8vICAgICAgIC5hZGROZXR3b3JrKHRoaXMudnBjU3RhY2suZ2V0TmV0d29yaygpKVxuLy8gICAgICAgLmFkZFJlc291cmNlKERhdGFiYXNlLmJ1aWxkKGAke2lkfURhdGFiYXNlYCkpO1xuXG4vLyAgICAgLy9UT0RPOiB2YWxpZGF0ZSBpZCBkb2VzIG5vdCBjb250YWluIHNwZWNpYWwgY2hhcmFjdGVycyAobm8gaHlwaGVucyAtIG5vIHNsYXNoZXMgZXRjKSBkYXRhYmFzZSBpbnN0YW5jZXMgd29uJ3QgYWxsb3cgaXRcblxuLy8gICAgIGNvbnN0IGRiUmVzb3VyY2UgPSB0aGlzLmRhdGFiYXNlU3RhY2suZ2V0UmVzb3VyY2UoXG4vLyAgICAgICBgJHtpZH1EYXRhYmFzZWBcbi8vICAgICApIGFzIERhdGFiYXNlO1xuXG4vLyAgICAgY29uc3Qgc2VjcmV0T2JqZWN0VmFsdWU6IENvbnRhaW5lclNlY3JldCA9IHt9O1xuLy8gICAgIGlmIChwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4vLyAgICAgICBmb3IgKGNvbnN0IHNlY3JldE9iamVjdCBvZiBwcm9wcy5jb250YWluZXJTZWNyZXRzKSB7XG4vLyAgICAgICAgIHNlY3JldE9iamVjdFZhbHVlW3NlY3JldE9iamVjdF0gPSBTZWNyZXRWYWx1ZS51bnNhZmVQbGFpblRleHQoXCJcIik7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuXG4vLyAgICAgdGhpcy5zZWNyZXRTdGFjayA9IG5ldyBBd3NTdGFjayhgJHtpZH1TZWNyZXRgLCBbXSwgc3RhY2tQcm9wcykuYWRkUmVzb3VyY2UoXG4vLyAgICAgICBTZWNyZXQuYnVpbGQoYCR7aWR9U2VjcmV0YCwge1xuLy8gICAgICAgICBzZWNyZXROYW1lOiBgLyR7cHJvcHMuY2x1c3Rlck5hbWV9LyR7cHJvcHMuc2VydmljZU5hbWV9YCxcbi8vICAgICAgICAgc2VjcmV0T2JqZWN0VmFsdWU6IHNlY3JldE9iamVjdFZhbHVlLFxuLy8gICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4vLyAgICAgICB9KVxuLy8gICAgICk7XG5cbi8vICAgICB0aGlzLmNvbXB1dGVTdGFjayA9IG5ldyBBd3NTdGFjayhcbi8vICAgICAgIGAke2lkfUNvbXB1dGVgLFxuLy8gICAgICAgW3RoaXMudnBjU3RhY2ssIHRoaXMuZGF0YWJhc2VTdGFjaywgdGhpcy5zZWNyZXRTdGFja10sXG4vLyAgICAgICBzdGFja1Byb3BzXG4vLyAgICAgKVxuLy8gICAgICAgLmFkZE5ldHdvcmsodGhpcy52cGNTdGFjay5nZXROZXR3b3JrKCkpXG4vLyAgICAgICAuYWRkUmVzb3VyY2UoXG4vLyAgICAgICAgIEZhcmdhdGUuYnVpbGQoYCR7aWR9RmFyZ2F0ZWAsIHtcbi8vICAgICAgICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4vLyAgICAgICAgICAgcHJvdG9jb2w6IHByb3BzLnByb3RvY29sLFxuLy8gICAgICAgICAgIC8vVE9ETzogVGhpcyBzaG91bGQgd29yayB2aWEgbGluZSAxMjYsIGJ1dCBkb2Vzbid0IHdvcmsgKGF0IGxlYXN0IG9uIHVwZGF0ZSlcbi8vICAgICAgICAgICBkYXRhYmFzZUNvbm5lY3Rpb246IGRiUmVzb3VyY2UuY29ubmVjdGlvbnMsXG4vLyAgICAgICAgICAgY29udGFpbmVyQ29tbWFuZDogcHJvcHMuY29udGFpbmVyQ29tbWFuZCxcbi8vICAgICAgICAgICBjb250YWluZXJFbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnQsXG4vLyAgICAgICAgICAgY29udGFpbmVyUG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCxcbi8vICAgICAgICAgICBjb250YWluZXJTZWNyZXRzOiBzZWNyZXRPYmplY3RWYWx1ZSxcbi8vICAgICAgICAgICBlY3JSZXBvc2l0b3J5OiB0aGlzLnZwY1N0YWNrLmdldENvbnRhaW5lclJlZ2lzdHJ5KCksXG4vLyAgICAgICAgICAgcGFyZW50RG9tYWluOiBwcm9wcy5wYXJlbnREb21haW4/LnRvTG93ZXJDYXNlKCksXG4vLyAgICAgICAgICAgbGlzdGVuZXJQb3J0OiBwcm9wcy5saXN0ZW5lclBvcnQsXG4vLyAgICAgICAgICAgc2NhbGluZ1R5cGU6IHByb3BzLnNjYWxpbmdUeXBlLFxuLy8gICAgICAgICAgIHNlcnZpY2VOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbi8vICAgICAgICAgICB0YXNrUm9sZUlubGluZVBvbGljaWVzOiBwcm9wcy50YXNrUm9sZUlubGluZVBvbGljaWVzLFxuLy8gICAgICAgICAgIHRhc2tSb2xlTWFuYWdlZFBvbGljaWVzOiBwcm9wcy50YXNrUm9sZU1hbmFnZWRQb2xpY2llcyxcbi8vICAgICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4vLyAgICAgICAgIH0pXG4vLyAgICAgICApXG4vLyAgICAgICAuY29ubmVjdChgJHtpZH1GYXJnYXRlYCwgYCR7aWR9RGF0YWJhc2VgLCA1NDMyKTtcbi8vICAgfVxuXG4vLyAgIGdldFN0YWNrUHJvcHMocHJvcHM6IEJhc2ljQXBwUHJvcHMpOiBBd3NTdGFja1Byb3BzIHwgdW5kZWZpbmVkIHtcbi8vICAgICBpZiAoIXByb3BzKSByZXR1cm47XG5cbi8vICAgICByZXR1cm4ge1xuLy8gICAgICAgYWNjb3VudElkOiBwcm9wcy5hY2NvdW50SWQsXG4vLyAgICAgICByZWdpb246IHByb3BzLnJlZ2lvblxuLy8gICAgIH07XG4vLyAgIH1cblxuLy8gICBnZXRQcm9wcyhcbi8vICAgICBpZDogc3RyaW5nLFxuLy8gICAgIHJhd1Byb3BzOiBCYXNpY0FwcFByb3BzXG4vLyAgICk6IEJhc2ljQXBwUHJvcHMgJiBCYXNpY0FwcFByb3BEZWZhdWx0cyB7XG4vLyAgICAgY29uc3QgZGVmYXVsdFByb3BzID0ge1xuLy8gICAgICAgdGFnczoge1xuLy8gICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOnNlcnZpY2VcIjogXCJhcHBcIixcbi8vICAgICAgICAgXCJmamFsbDpjb3N0QWxsb2NhdGlvbjplbnZpcm9ubWVudFwiOlxuLy8gICAgICAgICAgIHJhd1Byb3BzLmVudmlyb25tZW50IHx8IFwicHJvZHVjdGlvblwiLFxuLy8gICAgICAgICBcImZqYWxsOmNvc3RBbGxvY2F0aW9uOm93bmVyXCI6IHJhd1Byb3BzLm93bmVyIHx8IFwiZW5naW5lZXJcIlxuLy8gICAgICAgfSxcbi8vICAgICAgIHNjYWxpbmdUeXBlOiBTY2FsaW5nVHlwZS5DUFUsXG4vLyAgICAgICBwcm90b2NvbDogcmF3UHJvcHMucGFyZW50RG9tYWluID8gUHJvdG9jb2wuSFRUUFMgOiBQcm90b2NvbC5IVFRQLFxuLy8gICAgICAgY29udGFpbmVyUG9ydDogMzAwMCxcbi8vICAgICAgIHNlcnZpY2VOYW1lOiBgJHtpZH1TZXJ2aWNlYCxcbi8vICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtpZH1DbHVzdGVyYFxuLy8gICAgIH07XG5cbi8vICAgICByZXR1cm4ge1xuLy8gICAgICAgLi4uZGVmYXVsdFByb3BzLFxuLy8gICAgICAgLi4ucmF3UHJvcHNcbi8vICAgICB9O1xuLy8gICB9XG4vLyB9XG4vLyBleHBvcnQgZGVmYXVsdCBCYXNpY0FwcDtcbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
|
3
3
|
import { Connections, type IConnectable, type IVpc, type UserData, type IMachineImage } from "aws-cdk-lib/aws-ec2";
|
|
4
4
|
import { Code, Runtime, type FunctionUrlAuthType } from "aws-cdk-lib/aws-lambda";
|
|
5
5
|
import { type Duration } from "aws-cdk-lib";
|
|
6
|
-
import { type
|
|
6
|
+
import { type PolicyStatement } from "aws-cdk-lib/aws-iam";
|
|
7
7
|
import { Construct } from "constructs";
|
|
8
8
|
import type App from "../../app";
|
|
9
9
|
import { type DomainConfig } from "../../resources/aws/compute/ecs";
|
|
@@ -34,6 +34,14 @@ interface IComputeProps {
|
|
|
34
34
|
* Port the container listens on (default: 80)
|
|
35
35
|
*/
|
|
36
36
|
containerPort?: number;
|
|
37
|
+
/**
|
|
38
|
+
* CPU units for Fargate tasks (256, 512, 1024, 2048, 4096)
|
|
39
|
+
*/
|
|
40
|
+
cpu?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Memory in MiB for Fargate tasks (512-30720)
|
|
43
|
+
*/
|
|
44
|
+
memoryLimitMiB?: number;
|
|
37
45
|
/**
|
|
38
46
|
* Environmnet variables to pass to the container
|
|
39
47
|
*/
|
|
@@ -60,9 +68,7 @@ interface IComputeProps {
|
|
|
60
68
|
memorySize?: number;
|
|
61
69
|
lambdaDescription?: string;
|
|
62
70
|
roleDescription?: string;
|
|
63
|
-
inlinePolicy?:
|
|
64
|
-
[name: string]: PolicyDocument;
|
|
65
|
-
};
|
|
71
|
+
inlinePolicy?: PolicyStatement[];
|
|
66
72
|
enableFunctionUrl?: boolean;
|
|
67
73
|
functionUrlAuthType?: FunctionUrlAuthType;
|
|
68
74
|
functionUrlCors?: SimplifiedCorsOptions;
|
|
@@ -49,7 +49,7 @@ class ComputeFactory {
|
|
|
49
49
|
return (app, scope) => {
|
|
50
50
|
const computeProps = {
|
|
51
51
|
...{
|
|
52
|
-
vpc: app.
|
|
52
|
+
vpc: app.getVpc(),
|
|
53
53
|
ecrRepository: app.getDefaultContainerRegistry()
|
|
54
54
|
},
|
|
55
55
|
...props
|
|
@@ -93,7 +93,7 @@ class Compute extends constructs_1.Construct {
|
|
|
93
93
|
this.connections = this.compute.connections;
|
|
94
94
|
if (props.connections) {
|
|
95
95
|
for (const conn of props.connections) {
|
|
96
|
-
this.compute.connections.
|
|
96
|
+
this.compute.connections.allowToDefaultPort(conn);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
}
|
|
@@ -130,7 +130,7 @@ class Compute extends constructs_1.Construct {
|
|
|
130
130
|
}
|
|
131
131
|
if (props.connections) {
|
|
132
132
|
for (const conn of props.connections) {
|
|
133
|
-
this.compute.connections.
|
|
133
|
+
this.compute.connections.allowToDefaultPort(conn);
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
this.connections = this.compute.connections;
|
|
@@ -158,7 +158,7 @@ class Compute extends constructs_1.Construct {
|
|
|
158
158
|
memorySize: props.memorySize,
|
|
159
159
|
lambdaDescription: props.lambdaDescription,
|
|
160
160
|
roleDescription: props.roleDescription,
|
|
161
|
-
inlinePolicy: props.inlinePolicy ||
|
|
161
|
+
inlinePolicy: props.inlinePolicy || [],
|
|
162
162
|
enableFunctionUrl: props.enableFunctionUrl,
|
|
163
163
|
functionUrlAuthType: props.functionUrlAuthType,
|
|
164
164
|
functionUrlCors: convertCorsOptions(props.functionUrlCors),
|
|
@@ -171,4 +171,4 @@ class Compute extends constructs_1.Construct {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
exports.Compute = Compute;
|
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBaUQ7QUFDakQsaURBTTZCO0FBQzdCLHVEQU1nQztBQUloQywyQ0FBdUM7QUFJdkMseURBS3lDO0FBQ3pDLHlFQUFrRTtBQUNsRSxpRUFBMEQ7QUFDMUQseURBQThEO0FBQzlELCtEQUFvRTtBQTRGcEUsb0VBQW9FO0FBQ3BFLFNBQVMsa0JBQWtCLENBQUMsT0FBMkI7SUFDckQsTUFBTSxTQUFTLEdBQXlDO1FBQ3RELEdBQUcsRUFBRSx1QkFBVSxDQUFDLEdBQUc7UUFDbkIsSUFBSSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUNyQixHQUFHLEVBQUUsdUJBQVUsQ0FBQyxHQUFHO1FBQ25CLE1BQU0sRUFBRSx1QkFBVSxDQUFDLE1BQU07UUFDekIsSUFBSSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUNyQixPQUFPLEVBQUUsdUJBQVUsQ0FBQyxPQUFPO1FBQzNCLEtBQUssRUFBRSx1QkFBVSxDQUFDLEtBQUs7S0FDeEIsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzVCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYix3QkFBd0IsTUFBTSx3QkFBd0IsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDMUYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBUyxrQkFBa0IsQ0FDekIsY0FBc0M7SUFFdEMsSUFB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LElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7WUFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksb0JBQU8sQ0FBQyxXQUFXO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtZQUN0QyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNsQixXQUFXLENBQ1osQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF4SkQsMEJBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBSZXBvc2l0b3J5SW1hZ2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNyXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgdHlwZSBJQ29ubmVjdGFibGUsXG4gIHR5cGUgSVZwYyxcbiAgdHlwZSBVc2VyRGF0YSxcbiAgdHlwZSBJTWFjaGluZUltYWdlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBDb2RlLFxuICBSdW50aW1lLFxuICB0eXBlIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIEh0dHBNZXRob2QsXG4gIHR5cGUgRnVuY3Rpb25VcmxDb3JzT3B0aW9uc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgdHlwZSBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCBGYXJnYXRlQ2x1c3Rlciwge1xuICB0eXBlIEZhcmdhdGVDbHVzdGVyUHJvcHMsXG4gIFByb3RvY29sLFxuICBTY2FsaW5nVHlwZSxcbiAgdHlwZSBEb21haW5Db25maWdcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NcIjtcbmltcG9ydCBFY3NGcmVlVGllciBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc0ZyZWVUaWVyXCI7XG5pbXBvcnQgRWNzU3BvdCBmcm9tIFwiLi4vLi4vcmVzb3VyY2VzL2F3cy9jb21wdXRlL2Vjc1Nwb3RcIjtcbmltcG9ydCB7IEVjMkluc3RhbmNlIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzJcIjtcbmltcG9ydCB7IExhbWJkYUZ1bmN0aW9uIH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9sYW1iZGFcIjtcbmltcG9ydCB7IHR5cGUgU2VjcmV0SW1wb3J0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuXG4vLyBVc2VyLWZyaWVuZGx5IEhUVFAgbWV0aG9kIHR5cGVcbmV4cG9ydCB0eXBlIEh0dHBNZXRob2RTdHJpbmcgPVxuICB8IFwiR0VUXCJcbiAgfCBcIlBPU1RcIlxuICB8IFwiUFVUXCJcbiAgfCBcIkRFTEVURVwiXG4gIHwgXCJIRUFEXCJcbiAgfCBcIk9QVElPTlNcIlxuICB8IFwiUEFUQ0hcIjtcblxuLy8gVXNlci1mcmllbmRseSBDT1JTIG9wdGlvbnMgdGhhdCBhY2NlcHQgc3RyaW5nIG1ldGhvZHNcbmV4cG9ydCBpbnRlcmZhY2UgU2ltcGxpZmllZENvcnNPcHRpb25zIHtcbiAgYWxsb3dlZE9yaWdpbnM/OiBzdHJpbmdbXTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBIdHRwTWV0aG9kU3RyaW5nW107XG4gIGFsbG93ZWRIZWFkZXJzPzogc3RyaW5nW107XG4gIG1heEFnZT86IER1cmF0aW9uO1xuICBhbGxvd0NyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgZXhwb3NlSGVhZGVycz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUNvbXB1dGVQcm9wcyB7XG4gIHZwYz86IElWcGM7XG4gIGVjclJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlO1xuXG4gIC8vIENvbXB1dGUgdHlwZSBzZWxlY3Rpb25cbiAgdHlwZT86IFwiZWNzXCIgfCBcImVjMlwiIHwgXCJsYW1iZGFcIjtcblxuICAvLyBFQ1Mgc3VidHlwZSBzZWxlY3Rpb24gKG9ubHkgYXBwbGljYWJsZSB3aGVuIHR5cGUgaXMgXCJlY3NcIilcbiAgZWNzVHlwZT86IFwiZmFyZ2F0ZVwiIHwgXCJmcmVldGllclwiIHwgXCJzcG90XCI7XG5cbiAgLy8gRUNTLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgcGFyZW50RG9tYWluPzogc3RyaW5nO1xuICBkb21haW5Db25maWc/OiBEb21haW5Db25maWc7XG5cbiAgLyoqXG4gICAqIFBhdGggdG8gRG9ja2VyZmlsZSBmb3IgYnVpbGRpbmcgY3VzdG9tIGltYWdlLlxuICAgKiBOb3RlOiBUaGlzIGlzIG1ldGFkYXRhIGZvciB0aGUgQ0xJIGJ1aWxkIHByb2Nlc3MsXG4gICAqIG5vdCB1c2VkIGR1cmluZyBDREsgc3ludGhlc2lzXG4gICAqL1xuICBkb2NrZXJmaWxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogUG9ydCB0aGUgY29udGFpbmVyIGxpc3RlbnMgb24gKGRlZmF1bHQ6IDgwKVxuICAgKi9cbiAgY29udGFpbmVyUG9ydD86IG51bWJlcjtcblxuICAvKipcbiAgICogRW52aXJvbm1uZXQgdmFyaWFibGVzIHRvIHBhc3MgdG8gdGhlIGNvbnRhaW5lclxuICAgKi9cbiAgY29udGFpbmVyRW52aXJvbm1lbnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBTYWZlbHkgaW1wb3J0IHNlY3JldHMgZnJvbSBhbm90aGVyIHJlc291cmNlLFxuICAgKiAgb2JqZWN0IGtleSBpcyB1c2VkIGFzIG5hbWUgd2hlbiBwYXNzaW5nIHRvIGNvbnRhaW5lclxuICAgKi9cbiAgY29udGFpbmVyU2VjcmV0c0ltcG9ydD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBTZWNyZXRJbXBvcnQ7XG4gIH07XG5cbiAgLy8gRUMyLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgaW5zdGFuY2VUeXBlPzogc3RyaW5nO1xuICBlbmFibGVTU0g/OiBib29sZWFuO1xuICB1c2VyRGF0YT86IFVzZXJEYXRhO1xuICBtYWNoaW5lSW1hZ2U/OiBJTWFjaGluZUltYWdlO1xuICBtaW5DYXBhY2l0eT86IG51bWJlcjtcbiAgbWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLy8gTGFtYmRhLXNwZWNpZmljIHByb3BlcnRpZXNcbiAgcnVudGltZT86IFJ1bnRpbWU7XG4gIGhhbmRsZXI/OiBzdHJpbmc7XG4gIGNvZGU/OiBDb2RlO1xuICB0aW1lb3V0PzogbnVtYmVyO1xuICBtZW1vcnlTaXplPzogbnVtYmVyO1xuICBsYW1iZGFEZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcm9sZURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBpbmxpbmVQb2xpY3k/OiB7XG4gICAgW25hbWU6IHN0cmluZ106IFBvbGljeURvY3VtZW50O1xuICB9O1xuXG4gIC8vIExhbWJkYSBVUkwgcHJvcGVydGllc1xuICBlbmFibGVGdW5jdGlvblVybD86IGJvb2xlYW47XG4gIGZ1bmN0aW9uVXJsQXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuICBmdW5jdGlvblVybENvcnM/OiBTaW1wbGlmaWVkQ29yc09wdGlvbnM7XG5cbiAgY29ubmVjdGlvbnM/OiBJQ29ubmVjdGFibGVbXTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgc3RyaW5nIEhUVFAgbWV0aG9kcyB0byBIdHRwTWV0aG9kIGVudW1cbmZ1bmN0aW9uIGNvbnZlcnRIdHRwTWV0aG9kcyhtZXRob2RzOiBIdHRwTWV0aG9kU3RyaW5nW10pOiBIdHRwTWV0aG9kW10ge1xuICBjb25zdCBtZXRob2RNYXA6IFJlY29yZDxIdHRwTWV0aG9kU3RyaW5nLCBIdHRwTWV0aG9kPiA9IHtcbiAgICBHRVQ6IEh0dHBNZXRob2QuR0VULFxuICAgIFBPU1Q6IEh0dHBNZXRob2QuUE9TVCxcbiAgICBQVVQ6IEh0dHBNZXRob2QuUFVULFxuICAgIERFTEVURTogSHR0cE1ldGhvZC5ERUxFVEUsXG4gICAgSEVBRDogSHR0cE1ldGhvZC5IRUFELFxuICAgIE9QVElPTlM6IEh0dHBNZXRob2QuT1BUSU9OUyxcbiAgICBQQVRDSDogSHR0cE1ldGhvZC5QQVRDSFxuICB9O1xuXG4gIHJldHVybiBtZXRob2RzLm1hcCgobWV0aG9kKSA9PiB7XG4gICAgY29uc3QgaHR0cE1ldGhvZCA9IG1ldGhvZE1hcFttZXRob2RdO1xuICAgIGlmICghaHR0cE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBIVFRQIG1ldGhvZDogJHttZXRob2R9LiBWYWxpZCBtZXRob2RzIGFyZTogJHtPYmplY3Qua2V5cyhtZXRob2RNYXApLmpvaW4oXCIsIFwiKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cE1ldGhvZDtcbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgc2ltcGxpZmllZCBDT1JTIG9wdGlvbnMgdG8gQ0RLIENPUlMgb3B0aW9uc1xuZnVuY3Rpb24gY29udmVydENvcnNPcHRpb25zKFxuICBzaW1wbGlmaWVkQ29ycz86IFNpbXBsaWZpZWRDb3JzT3B0aW9uc1xuKTogRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc2ltcGxpZmllZENvcnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGxvd2VkT3JpZ2luczogc2ltcGxpZmllZENvcnMuYWxsb3dlZE9yaWdpbnMsXG4gICAgYWxsb3dlZE1ldGhvZHM6IHNpbXBsaWZpZWRDb3JzLmFsbG93ZWRNZXRob2RzXG4gICAgICA/IGNvbnZlcnRIdHRwTWV0aG9kcyhzaW1wbGlmaWVkQ29ycy5hbGxvd2VkTWV0aG9kcylcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGFsbG93ZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd2VkSGVhZGVycyxcbiAgICBtYXhBZ2U6IHNpbXBsaWZpZWRDb3JzLm1heEFnZSxcbiAgICBhbGxvd0NyZWRlbnRpYWxzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd0NyZWRlbnRpYWxzLFxuICAgIGV4cG9zZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5leHBvc2VIZWFkZXJzXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogYXBwLmdldERlZmF1bHRWcGMoKSxcbiAgICAgICAgICBlY3JSZXBvc2l0b3J5OiBhcHAuZ2V0RGVmYXVsdENvbnRhaW5lclJlZ2lzdHJ5KClcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgQ29tcHV0ZShzY29wZSwgaWQsIGNvbXB1dGVQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgc2NvcGU6IENvbnN0cnVjdDtcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY29tcHV0ZTpcbiAgICB8IEZhcmdhdGVDbHVzdGVyXG4gICAgfCBFY3NGcmVlVGllclxuICAgIHwgRWNzU3BvdFxuICAgIHwgRWMySW5zdGFuY2VcbiAgICB8IExhbWJkYUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuXG4gICAgdGhpcy5hZGRDb21wdXRlKHByb3BzKTtcbiAgfVxuXG4gIGFkZENvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBjb25zdCBjb21wdXRlVHlwZSA9IHByb3BzLnR5cGUgfHwgXCJlY3NcIjtcblxuICAgIGlmIChjb21wdXRlVHlwZSA9PT0gXCJlYzJcIikge1xuICAgICAgdGhpcy5hZGRFYzJDb21wdXRlKHByb3BzKTtcbiAgICB9IGVsc2UgaWYgKGNvbXB1dGVUeXBlID09PSBcImxhbWJkYVwiKSB7XG4gICAgICB0aGlzLmFkZExhbWJkYUNvbXB1dGUocHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZEVjc0NvbXB1dGUocHJvcHMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRWMyQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGVjMlByb3BzID0ge1xuICAgICAgc2VydmljZU5hbWU6IGAke3RoaXMuaWR9U2VydmljZWAsXG4gICAgICBpbnN0YW5jZVR5cGU6IHByb3BzLmluc3RhbmNlVHlwZSB8fCBcInQzLm1pY3JvXCIsXG4gICAgICBlbmFibGVTU0g6IHByb3BzLmVuYWJsZVNTSCB8fCBmYWxzZSxcbiAgICAgIHVzZXJEYXRhOiBwcm9wcy51c2VyRGF0YSxcbiAgICAgIG1hY2hpbmVJbWFnZTogcHJvcHMubWFjaGluZUltYWdlLFxuICAgICAgbWluQ2FwYWNpdHk6IHByb3BzLm1pbkNhcGFjaXR5IHx8IDEsXG4gICAgICBtYXhDYXBhY2l0eTogcHJvcHMubWF4Q2FwYWNpdHkgfHwgMSxcbiAgICAgIHZwYzogcHJvcHMudnBjXG4gICAgfTtcblxuICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBFYzJJbnN0YW5jZSh0aGlzLnNjb3BlLCBgJHt0aGlzLmlkfUVjMmAsIGVjMlByb3BzKTtcbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zO1xuXG4gICAgaWYgKHByb3BzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbm4gb2YgcHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRUbyhjb25uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEVjc0NvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBjb25zdCBlY3NUeXBlID0gcHJvcHMuZWNzVHlwZSB8fCBcImZhcmdhdGVcIjtcblxuICAgIC8vIENvbW1vbiBFQ1MgcHJvcHNcbiAgICBjb25zdCBiYXNlRWNzUHJvcHMgPSB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfHwgODAsXG4gICAgICBzZXJ2aWNlTmFtZTogYCR7dGhpcy5pZH1TZXJ2aWNlYCxcbiAgICAgIGNsdXN0ZXJOYW1lOiBgJHt0aGlzLmlkfUNsdXN0ZXJgLFxuICAgICAgZWNyUmVwb3NpdG9yeTogcHJvcHMuZWNyUmVwb3NpdG9yeSB8fCBcImFtYXpvbi9hbWF6b24tZWNzLXNhbXBsZVwiLFxuICAgICAgY29udGFpbmVyRW52aXJvbm1lbnQ6IHByb3BzLmNvbnRhaW5lckVudmlyb25tZW50IHx8IHt9LFxuICAgICAgY29udGFpbmVyU2VjcmV0c0ltcG9ydDogcHJvcHMuY29udGFpbmVyU2VjcmV0c0ltcG9ydCB8fCB7fSxcbiAgICAgIHZwYzogcHJvcHMudnBjXG4gICAgfTtcblxuICAgIGlmIChlY3NUeXBlID09PSBcImZyZWV0aWVyXCIpIHtcbiAgICAgIC8vIFVzZSBFQzItYmFzZWQgRUNTIGZvciBmcmVlIHRpZXJcbiAgICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBFY3NGcmVlVGllcihcbiAgICAgICAgdGhpcy5zY29wZSxcbiAgICAgICAgYCR7dGhpcy5pZH1FY3NGcmVlVGllcmAsXG4gICAgICAgIGJhc2VFY3NQcm9wc1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKGVjc1R5cGUgPT09IFwic3BvdFwiKSB7XG4gICAgICAvLyBVc2UgRUMyIFNwb3QgaW5zdGFuY2VzIGZvciBjb3N0IG9wdGltaXphdGlvblxuICAgICAgdGhpcy5jb21wdXRlID0gbmV3IEVjc1Nwb3QodGhpcy5zY29wZSwgYCR7dGhpcy5pZH1FY3NTcG90YCwgYmFzZUVjc1Byb3BzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVmYXVsdCB0byBGYXJnYXRlXG4gICAgICBjb25zdCBmYXJnYXRlUHJvcHMgPSB7XG4gICAgICAgIC4uLmJhc2VFY3NQcm9wcyxcbiAgICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgICAgcHJvdG9jb2w6IHByb3BzLmRvbWFpbkNvbmZpZyA/IFByb3RvY29sLkhUVFBTIDogUHJvdG9jb2wuSFRUUCxcbiAgICAgICAgZG9tYWluQ29uZmlnOiBwcm9wcy5kb21haW5Db25maWdcbiAgICAgIH0gYXMgRmFyZ2F0ZUNsdXN0ZXJQcm9wcztcblxuICAgICAgdGhpcy5jb21wdXRlID0gbmV3IEZhcmdhdGVDbHVzdGVyKFxuICAgICAgICB0aGlzLnNjb3BlLFxuICAgICAgICBgJHt0aGlzLmlkfUZhcmdhdGVgLFxuICAgICAgICBmYXJnYXRlUHJvcHNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmNvbm5lY3Rpb25zKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbm4gb2YgcHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgICAgdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRUbyhjb25uKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRMYW1iZGFDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgbGV0IGNvZGUgPSBwcm9wcy5jb2RlO1xuXG4gICAgaWYgKCFjb2RlKSB7XG4gICAgICBpZiAoIXByb3BzLmVjclJlcG9zaXRvcnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiRWl0aGVyIGNvZGUgb3IgZWNyUmVwb3NpdG9yeSBtdXN0IGJlIHByb3ZpZGVkIGZvciBMYW1iZGEgY29tcHV0ZSB0eXBlXCJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmVjclJlcG9zaXRvcnkgaW5zdGFuY2VvZiBSZXBvc2l0b3J5KSB7XG4gICAgICAgIGNvZGUgPSBDb2RlLmZyb21FY3JJbWFnZShwcm9wcy5lY3JSZXBvc2l0b3J5LCB7XG4gICAgICAgICAgdGFnT3JEaWdlc3Q6IFwibGF0ZXN0XCJcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJlY3JSZXBvc2l0b3J5IG11c3QgYmUgYSBSZXBvc2l0b3J5IGluc3RhbmNlIGZvciBMYW1iZGEgY29tcHV0ZSB0eXBlXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBsYW1iZGFQcm9wcyA9IHtcbiAgICAgIGNvZGU6IGNvZGUsXG4gICAgICBoYW5kbGVyOiBwcm9wcy5oYW5kbGVyIHx8IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogcHJvcHMucnVudGltZSB8fCBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgdGltZW91dDogcHJvcHMudGltZW91dCxcbiAgICAgIG1lbW9yeVNpemU6IHByb3BzLm1lbW9yeVNpemUsXG4gICAgICBsYW1iZGFEZXNjcmlwdGlvbjogcHJvcHMubGFtYmRhRGVzY3JpcHRpb24sXG4gICAgICByb2xlRGVzY3JpcHRpb246IHByb3BzLnJvbGVEZXNjcmlwdGlvbixcbiAgICAgIGlubGluZVBvbGljeTogcHJvcHMuaW5saW5lUG9saWN5IHx8IHt9LFxuICAgICAgZW5hYmxlRnVuY3Rpb25Vcmw6IHByb3BzLmVuYWJsZUZ1bmN0aW9uVXJsLFxuICAgICAgZnVuY3Rpb25VcmxBdXRoVHlwZTogcHJvcHMuZnVuY3Rpb25VcmxBdXRoVHlwZSxcbiAgICAgIGZ1bmN0aW9uVXJsQ29yczogY29udmVydENvcnNPcHRpb25zKHByb3BzLmZ1bmN0aW9uVXJsQ29ycyksXG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnRcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlID0gbmV3IExhbWJkYUZ1bmN0aW9uKFxuICAgICAgdGhpcy5zY29wZSxcbiAgICAgIGAke3RoaXMuaWR9TGFtYmRhYCxcbiAgICAgIGxhbWJkYVByb3BzXG4gICAgKTtcblxuICAgIC8vIExhbWJkYSBmdW5jdGlvbnMgZG9uJ3QgdXNlIHNlY3VyaXR5IGdyb3VwcyB1bmxlc3MgVlBDLWVuYWJsZWRcbiAgICAvLyBDcmVhdGUgZW1wdHkgY29ubmVjdGlvbnMgb2JqZWN0IGZvciBpbnRlcmZhY2UgY29tcGF0aWJpbGl0eVxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoKTtcbiAgfVxufVxuIl19
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpREFBaUQ7QUFDakQsaURBTTZCO0FBQzdCLHVEQU1nQztBQUloQywyQ0FBdUM7QUFJdkMseURBS3lDO0FBQ3pDLHlFQUFrRTtBQUNsRSxpRUFBMEQ7QUFDMUQseURBQThEO0FBQzlELCtEQUFvRTtBQW9HcEUsb0VBQW9FO0FBQ3BFLFNBQVMsa0JBQWtCLENBQUMsT0FBMkI7SUFDckQsTUFBTSxTQUFTLEdBQXlDO1FBQ3RELEdBQUcsRUFBRSx1QkFBVSxDQUFDLEdBQUc7UUFDbkIsSUFBSSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUNyQixHQUFHLEVBQUUsdUJBQVUsQ0FBQyxHQUFHO1FBQ25CLE1BQU0sRUFBRSx1QkFBVSxDQUFDLE1BQU07UUFDekIsSUFBSSxFQUFFLHVCQUFVLENBQUMsSUFBSTtRQUNyQixPQUFPLEVBQUUsdUJBQVUsQ0FBQyxPQUFPO1FBQzNCLEtBQUssRUFBRSx1QkFBVSxDQUFDLEtBQUs7S0FDeEIsQ0FBQztJQUVGLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzVCLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FDYix3QkFBd0IsTUFBTSx3QkFBd0IsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDMUYsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsU0FBUyxrQkFBa0IsQ0FDekIsY0FBc0M7SUFFdEMsSUFB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LElBQUksS0FBSyxDQUNiLHFFQUFxRSxDQUN0RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRztZQUNsQixJQUFJLEVBQUUsSUFBSTtZQUNWLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxJQUFJLGVBQWU7WUFDekMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLElBQUksb0JBQU8sQ0FBQyxXQUFXO1lBQzdDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksRUFBRTtZQUN0QyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsaUJBQWlCO1lBQzFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDMUQsV0FBVyxFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDeEMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSx1QkFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUNsQixXQUFXLENBQ1osQ0FBQztRQUVGLGdFQUFnRTtRQUNoRSw4REFBOEQ7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUF4SkQsMEJBd0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBSZXBvc2l0b3J5SW1hZ2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjc1wiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNyXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgdHlwZSBJQ29ubmVjdGFibGUsXG4gIHR5cGUgSVZwYyxcbiAgdHlwZSBVc2VyRGF0YSxcbiAgdHlwZSBJTWFjaGluZUltYWdlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQge1xuICBDb2RlLFxuICBSdW50aW1lLFxuICB0eXBlIEZ1bmN0aW9uVXJsQXV0aFR5cGUsXG4gIEh0dHBNZXRob2QsXG4gIHR5cGUgRnVuY3Rpb25VcmxDb3JzT3B0aW9uc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgdHlwZSBEdXJhdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgdHlwZSBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgdHlwZSBBcHAgZnJvbSBcIi4uLy4uL2FwcFwiO1xuXG5pbXBvcnQgRmFyZ2F0ZUNsdXN0ZXIsIHtcbiAgdHlwZSBGYXJnYXRlQ2x1c3RlclByb3BzLFxuICBQcm90b2NvbCxcbiAgU2NhbGluZ1R5cGUsXG4gIHR5cGUgRG9tYWluQ29uZmlnXG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzXCI7XG5pbXBvcnQgRWNzRnJlZVRpZXIgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NGcmVlVGllclwiO1xuaW1wb3J0IEVjc1Nwb3QgZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lY3NTcG90XCI7XG5pbXBvcnQgeyBFYzJJbnN0YW5jZSB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWMyXCI7XG5pbXBvcnQgeyBMYW1iZGFGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvbGFtYmRhXCI7XG5pbXBvcnQgeyB0eXBlIFNlY3JldEltcG9ydCB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL3NlY3JldHNcIjtcblxuLy8gVXNlci1mcmllbmRseSBIVFRQIG1ldGhvZCB0eXBlXG5leHBvcnQgdHlwZSBIdHRwTWV0aG9kU3RyaW5nID1cbiAgfCBcIkdFVFwiXG4gIHwgXCJQT1NUXCJcbiAgfCBcIlBVVFwiXG4gIHwgXCJERUxFVEVcIlxuICB8IFwiSEVBRFwiXG4gIHwgXCJPUFRJT05TXCJcbiAgfCBcIlBBVENIXCI7XG5cbi8vIFVzZXItZnJpZW5kbHkgQ09SUyBvcHRpb25zIHRoYXQgYWNjZXB0IHN0cmluZyBtZXRob2RzXG5leHBvcnQgaW50ZXJmYWNlIFNpbXBsaWZpZWRDb3JzT3B0aW9ucyB7XG4gIGFsbG93ZWRPcmlnaW5zPzogc3RyaW5nW107XG4gIGFsbG93ZWRNZXRob2RzPzogSHR0cE1ldGhvZFN0cmluZ1tdO1xuICBhbGxvd2VkSGVhZGVycz86IHN0cmluZ1tdO1xuICBtYXhBZ2U/OiBEdXJhdGlvbjtcbiAgYWxsb3dDcmVkZW50aWFscz86IGJvb2xlYW47XG4gIGV4cG9zZUhlYWRlcnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElDb21wdXRlUHJvcHMge1xuICB2cGM/OiBJVnBjO1xuICBlY3JSZXBvc2l0b3J5PzogUmVwb3NpdG9yeSB8IFJlcG9zaXRvcnlJbWFnZTtcblxuICAvLyBDb21wdXRlIHR5cGUgc2VsZWN0aW9uXG4gIHR5cGU/OiBcImVjc1wiIHwgXCJlYzJcIiB8IFwibGFtYmRhXCI7XG5cbiAgLy8gRUNTIHN1YnR5cGUgc2VsZWN0aW9uIChvbmx5IGFwcGxpY2FibGUgd2hlbiB0eXBlIGlzIFwiZWNzXCIpXG4gIGVjc1R5cGU/OiBcImZhcmdhdGVcIiB8IFwiZnJlZXRpZXJcIiB8IFwic3BvdFwiO1xuXG4gIC8vIEVDUy1zcGVjaWZpYyBwcm9wZXJ0aWVzXG4gIHBhcmVudERvbWFpbj86IHN0cmluZztcbiAgZG9tYWluQ29uZmlnPzogRG9tYWluQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBQYXRoIHRvIERvY2tlcmZpbGUgZm9yIGJ1aWxkaW5nIGN1c3RvbSBpbWFnZS5cbiAgICogTm90ZTogVGhpcyBpcyBtZXRhZGF0YSBmb3IgdGhlIENMSSBidWlsZCBwcm9jZXNzLFxuICAgKiBub3QgdXNlZCBkdXJpbmcgQ0RLIHN5bnRoZXNpc1xuICAgKi9cbiAgZG9ja2VyZmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBvcnQgdGhlIGNvbnRhaW5lciBsaXN0ZW5zIG9uIChkZWZhdWx0OiA4MClcbiAgICovXG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENQVSB1bml0cyBmb3IgRmFyZ2F0ZSB0YXNrcyAoMjU2LCA1MTIsIDEwMjQsIDIwNDgsIDQwOTYpXG4gICAqL1xuICBjcHU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1lbW9yeSBpbiBNaUIgZm9yIEZhcmdhdGUgdGFza3MgKDUxMi0zMDcyMClcbiAgICovXG4gIG1lbW9yeUxpbWl0TWlCPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubW5ldCB2YXJpYWJsZXMgdG8gcGFzcyB0byB0aGUgY29udGFpbmVyXG4gICAqL1xuICBjb250YWluZXJFbnZpcm9ubWVudD86IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG5cbiAgLyoqXG4gICAqIFNhZmVseSBpbXBvcnQgc2VjcmV0cyBmcm9tIGFub3RoZXIgcmVzb3VyY2UsXG4gICAqICBvYmplY3Qga2V5IGlzIHVzZWQgYXMgbmFtZSB3aGVuIHBhc3NpbmcgdG8gY29udGFpbmVyXG4gICAqL1xuICBjb250YWluZXJTZWNyZXRzSW1wb3J0Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IFNlY3JldEltcG9ydDtcbiAgfTtcblxuICAvLyBFQzItc3BlY2lmaWMgcHJvcGVydGllc1xuICBpbnN0YW5jZVR5cGU/OiBzdHJpbmc7XG4gIGVuYWJsZVNTSD86IGJvb2xlYW47XG4gIHVzZXJEYXRhPzogVXNlckRhdGE7XG4gIG1hY2hpbmVJbWFnZT86IElNYWNoaW5lSW1hZ2U7XG4gIG1pbkNhcGFjaXR5PzogbnVtYmVyO1xuICBtYXhDYXBhY2l0eT86IG51bWJlcjtcblxuICAvLyBMYW1iZGEtc3BlY2lmaWMgcHJvcGVydGllc1xuICBydW50aW1lPzogUnVudGltZTtcbiAgaGFuZGxlcj86IHN0cmluZztcbiAgY29kZT86IENvZGU7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIG1lbW9yeVNpemU/OiBudW1iZXI7XG4gIGxhbWJkYURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByb2xlRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGlubGluZVBvbGljeT86IFBvbGljeVN0YXRlbWVudFtdO1xuXG4gIC8vIExhbWJkYSBVUkwgcHJvcGVydGllc1xuICBlbmFibGVGdW5jdGlvblVybD86IGJvb2xlYW47XG4gIGZ1bmN0aW9uVXJsQXV0aFR5cGU/OiBGdW5jdGlvblVybEF1dGhUeXBlO1xuICBmdW5jdGlvblVybENvcnM/OiBTaW1wbGlmaWVkQ29yc09wdGlvbnM7XG5cbiAgY29ubmVjdGlvbnM/OiBJQ29ubmVjdGFibGVbXTtcbn1cblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgc3RyaW5nIEhUVFAgbWV0aG9kcyB0byBIdHRwTWV0aG9kIGVudW1cbmZ1bmN0aW9uIGNvbnZlcnRIdHRwTWV0aG9kcyhtZXRob2RzOiBIdHRwTWV0aG9kU3RyaW5nW10pOiBIdHRwTWV0aG9kW10ge1xuICBjb25zdCBtZXRob2RNYXA6IFJlY29yZDxIdHRwTWV0aG9kU3RyaW5nLCBIdHRwTWV0aG9kPiA9IHtcbiAgICBHRVQ6IEh0dHBNZXRob2QuR0VULFxuICAgIFBPU1Q6IEh0dHBNZXRob2QuUE9TVCxcbiAgICBQVVQ6IEh0dHBNZXRob2QuUFVULFxuICAgIERFTEVURTogSHR0cE1ldGhvZC5ERUxFVEUsXG4gICAgSEVBRDogSHR0cE1ldGhvZC5IRUFELFxuICAgIE9QVElPTlM6IEh0dHBNZXRob2QuT1BUSU9OUyxcbiAgICBQQVRDSDogSHR0cE1ldGhvZC5QQVRDSFxuICB9O1xuXG4gIHJldHVybiBtZXRob2RzLm1hcCgobWV0aG9kKSA9PiB7XG4gICAgY29uc3QgaHR0cE1ldGhvZCA9IG1ldGhvZE1hcFttZXRob2RdO1xuICAgIGlmICghaHR0cE1ldGhvZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW52YWxpZCBIVFRQIG1ldGhvZDogJHttZXRob2R9LiBWYWxpZCBtZXRob2RzIGFyZTogJHtPYmplY3Qua2V5cyhtZXRob2RNYXApLmpvaW4oXCIsIFwiKX1gXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gaHR0cE1ldGhvZDtcbiAgfSk7XG59XG5cbi8vIENvbnZlcnQgc2ltcGxpZmllZCBDT1JTIG9wdGlvbnMgdG8gQ0RLIENPUlMgb3B0aW9uc1xuZnVuY3Rpb24gY29udmVydENvcnNPcHRpb25zKFxuICBzaW1wbGlmaWVkQ29ycz86IFNpbXBsaWZpZWRDb3JzT3B0aW9uc1xuKTogRnVuY3Rpb25VcmxDb3JzT3B0aW9ucyB8IHVuZGVmaW5lZCB7XG4gIGlmICghc2ltcGxpZmllZENvcnMpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICBhbGxvd2VkT3JpZ2luczogc2ltcGxpZmllZENvcnMuYWxsb3dlZE9yaWdpbnMsXG4gICAgYWxsb3dlZE1ldGhvZHM6IHNpbXBsaWZpZWRDb3JzLmFsbG93ZWRNZXRob2RzXG4gICAgICA/IGNvbnZlcnRIdHRwTWV0aG9kcyhzaW1wbGlmaWVkQ29ycy5hbGxvd2VkTWV0aG9kcylcbiAgICAgIDogdW5kZWZpbmVkLFxuICAgIGFsbG93ZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd2VkSGVhZGVycyxcbiAgICBtYXhBZ2U6IHNpbXBsaWZpZWRDb3JzLm1heEFnZSxcbiAgICBhbGxvd0NyZWRlbnRpYWxzOiBzaW1wbGlmaWVkQ29ycy5hbGxvd0NyZWRlbnRpYWxzLFxuICAgIGV4cG9zZWRIZWFkZXJzOiBzaW1wbGlmaWVkQ29ycy5leHBvc2VIZWFkZXJzXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogYXBwLmdldFZwYygpLFxuICAgICAgICAgIGVjclJlcG9zaXRvcnk6IGFwcC5nZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKVxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wc1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyBDb21wdXRlKHNjb3BlLCBpZCwgY29tcHV0ZVByb3BzKTtcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGlkOiBzdHJpbmc7XG4gIHB1YmxpYyBzY29wZTogQ29uc3RydWN0O1xuICBwdWJsaWMgdnBjOiBJVnBjO1xuXG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgcHJpdmF0ZSBjb21wdXRlOlxuICAgIHwgRmFyZ2F0ZUNsdXN0ZXJcbiAgICB8IEVjc0ZyZWVUaWVyXG4gICAgfCBFY3NTcG90XG4gICAgfCBFYzJJbnN0YW5jZVxuICAgIHwgTGFtYmRhRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmFkZENvbXB1dGUocHJvcHMpO1xuICB9XG5cbiAgYWRkQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGNvbXB1dGVUeXBlID0gcHJvcHMudHlwZSB8fCBcImVjc1wiO1xuXG4gICAgaWYgKGNvbXB1dGVUeXBlID09PSBcImVjMlwiKSB7XG4gICAgICB0aGlzLmFkZEVjMkNvbXB1dGUocHJvcHMpO1xuICAgIH0gZWxzZSBpZiAoY29tcHV0ZVR5cGUgPT09IFwibGFtYmRhXCIpIHtcbiAgICAgIHRoaXMuYWRkTGFtYmRhQ29tcHV0ZShwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWRkRWNzQ29tcHV0ZShwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRFYzJDb21wdXRlKHByb3BzOiBJQ29tcHV0ZVByb3BzKSB7XG4gICAgY29uc3QgZWMyUHJvcHMgPSB7XG4gICAgICBzZXJ2aWNlTmFtZTogYCR7dGhpcy5pZH1TZXJ2aWNlYCxcbiAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlIHx8IFwidDMubWljcm9cIixcbiAgICAgIGVuYWJsZVNTSDogcHJvcHMuZW5hYmxlU1NIIHx8IGZhbHNlLFxuICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhLFxuICAgICAgbWFjaGluZUltYWdlOiBwcm9wcy5tYWNoaW5lSW1hZ2UsXG4gICAgICBtaW5DYXBhY2l0eTogcHJvcHMubWluQ2FwYWNpdHkgfHwgMSxcbiAgICAgIG1heENhcGFjaXR5OiBwcm9wcy5tYXhDYXBhY2l0eSB8fCAxLFxuICAgICAgdnBjOiBwcm9wcy52cGNcbiAgICB9O1xuXG4gICAgdGhpcy5jb21wdXRlID0gbmV3IEVjMkluc3RhbmNlKHRoaXMuc2NvcGUsIGAke3RoaXMuaWR9RWMyYCwgZWMyUHJvcHMpO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnM7XG5cbiAgICBpZiAocHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUb0RlZmF1bHRQb3J0KGNvbm4pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkRWNzQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGVjc1R5cGUgPSBwcm9wcy5lY3NUeXBlIHx8IFwiZmFyZ2F0ZVwiO1xuXG4gICAgLy8gQ29tbW9uIEVDUyBwcm9wc1xuICAgIGNvbnN0IGJhc2VFY3NQcm9wcyA9IHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udGFpbmVyUG9ydDogcHJvcHMuY29udGFpbmVyUG9ydCB8fCA4MCxcbiAgICAgIHNlcnZpY2VOYW1lOiBgJHt0aGlzLmlkfVNlcnZpY2VgLFxuICAgICAgY2x1c3Rlck5hbWU6IGAke3RoaXMuaWR9Q2x1c3RlcmAsXG4gICAgICBlY3JSZXBvc2l0b3J5OiBwcm9wcy5lY3JSZXBvc2l0b3J5IHx8IFwiYW1hem9uL2FtYXpvbi1lY3Mtc2FtcGxlXCIsXG4gICAgICBjb250YWluZXJFbnZpcm9ubWVudDogcHJvcHMuY29udGFpbmVyRW52aXJvbm1lbnQgfHwge30sXG4gICAgICBjb250YWluZXJTZWNyZXRzSW1wb3J0OiBwcm9wcy5jb250YWluZXJTZWNyZXRzSW1wb3J0IHx8IHt9LFxuICAgICAgdnBjOiBwcm9wcy52cGNcbiAgICB9O1xuXG4gICAgaWYgKGVjc1R5cGUgPT09IFwiZnJlZXRpZXJcIikge1xuICAgICAgLy8gVXNlIEVDMi1iYXNlZCBFQ1MgZm9yIGZyZWUgdGllclxuICAgICAgdGhpcy5jb21wdXRlID0gbmV3IEVjc0ZyZWVUaWVyKFxuICAgICAgICB0aGlzLnNjb3BlLFxuICAgICAgICBgJHt0aGlzLmlkfUVjc0ZyZWVUaWVyYCxcbiAgICAgICAgYmFzZUVjc1Byb3BzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoZWNzVHlwZSA9PT0gXCJzcG90XCIpIHtcbiAgICAgIC8vIFVzZSBFQzIgU3BvdCBpbnN0YW5jZXMgZm9yIGNvc3Qgb3B0aW1pemF0aW9uXG4gICAgICB0aGlzLmNvbXB1dGUgPSBuZXcgRWNzU3BvdCh0aGlzLnNjb3BlLCBgJHt0aGlzLmlkfUVjc1Nwb3RgLCBiYXNlRWNzUHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZWZhdWx0IHRvIEZhcmdhdGVcbiAgICAgIGNvbnN0IGZhcmdhdGVQcm9wcyA9IHtcbiAgICAgICAgLi4uYmFzZUVjc1Byb3BzLFxuICAgICAgICBzY2FsaW5nVHlwZTogU2NhbGluZ1R5cGUuQ1BVLFxuICAgICAgICBwcm90b2NvbDogcHJvcHMuZG9tYWluQ29uZmlnID8gUHJvdG9jb2wuSFRUUFMgOiBQcm90b2NvbC5IVFRQLFxuICAgICAgICBkb21haW5Db25maWc6IHByb3BzLmRvbWFpbkNvbmZpZ1xuICAgICAgfSBhcyBGYXJnYXRlQ2x1c3RlclByb3BzO1xuXG4gICAgICB0aGlzLmNvbXB1dGUgPSBuZXcgRmFyZ2F0ZUNsdXN0ZXIoXG4gICAgICAgIHRoaXMuc2NvcGUsXG4gICAgICAgIGAke3RoaXMuaWR9RmFyZ2F0ZWAsXG4gICAgICAgIGZhcmdhdGVQcm9wc1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuY29ubmVjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUb0RlZmF1bHRQb3J0KGNvbm4pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGFkZExhbWJkYUNvbXB1dGUocHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBsZXQgY29kZSA9IHByb3BzLmNvZGU7XG5cbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIGlmICghcHJvcHMuZWNyUmVwb3NpdG9yeSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJFaXRoZXIgY29kZSBvciBlY3JSZXBvc2l0b3J5IG11c3QgYmUgcHJvdmlkZWQgZm9yIExhbWJkYSBjb21wdXRlIHR5cGVcIlxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuZWNyUmVwb3NpdG9yeSBpbnN0YW5jZW9mIFJlcG9zaXRvcnkpIHtcbiAgICAgICAgY29kZSA9IENvZGUuZnJvbUVjckltYWdlKHByb3BzLmVjclJlcG9zaXRvcnksIHtcbiAgICAgICAgICB0YWdPckRpZ2VzdDogXCJsYXRlc3RcIlxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcImVjclJlcG9zaXRvcnkgbXVzdCBiZSBhIFJlcG9zaXRvcnkgaW5zdGFuY2UgZm9yIExhbWJkYSBjb21wdXRlIHR5cGVcIlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGxhbWJkYVByb3BzID0ge1xuICAgICAgY29kZTogY29kZSxcbiAgICAgIGhhbmRsZXI6IHByb3BzLmhhbmRsZXIgfHwgXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICBydW50aW1lOiBwcm9wcy5ydW50aW1lIHx8IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgbWVtb3J5U2l6ZTogcHJvcHMubWVtb3J5U2l6ZSxcbiAgICAgIGxhbWJkYURlc2NyaXB0aW9uOiBwcm9wcy5sYW1iZGFEZXNjcmlwdGlvbixcbiAgICAgIHJvbGVEZXNjcmlwdGlvbjogcHJvcHMucm9sZURlc2NyaXB0aW9uLFxuICAgICAgaW5saW5lUG9saWN5OiBwcm9wcy5pbmxpbmVQb2xpY3kgfHwgW10sXG4gICAgICBlbmFibGVGdW5jdGlvblVybDogcHJvcHMuZW5hYmxlRnVuY3Rpb25VcmwsXG4gICAgICBmdW5jdGlvblVybEF1dGhUeXBlOiBwcm9wcy5mdW5jdGlvblVybEF1dGhUeXBlLFxuICAgICAgZnVuY3Rpb25VcmxDb3JzOiBjb252ZXJ0Q29yc09wdGlvbnMocHJvcHMuZnVuY3Rpb25VcmxDb3JzKSxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5jb250YWluZXJFbnZpcm9ubWVudFxuICAgIH07XG5cbiAgICB0aGlzLmNvbXB1dGUgPSBuZXcgTGFtYmRhRnVuY3Rpb24oXG4gICAgICB0aGlzLnNjb3BlLFxuICAgICAgYCR7dGhpcy5pZH1MYW1iZGFgLFxuICAgICAgbGFtYmRhUHJvcHNcbiAgICApO1xuXG4gICAgLy8gTGFtYmRhIGZ1bmN0aW9ucyBkb24ndCB1c2Ugc2VjdXJpdHkgZ3JvdXBzIHVubGVzcyBWUEMtZW5hYmxlZFxuICAgIC8vIENyZWF0ZSBlbXB0eSBjb25uZWN0aW9ucyBvYmplY3QgZm9yIGludGVyZmFjZSBjb21wYXRpYmlsaXR5XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucygpO1xuICB9XG59XG4iXX0=
|
|
@@ -48,52 +48,36 @@ export interface SecretRotationConfig {
|
|
|
48
48
|
export interface EncryptionConfig {
|
|
49
49
|
storageKey?: EncryptionKeySpec;
|
|
50
50
|
}
|
|
51
|
-
/**
|
|
52
|
-
* Valid Performance Insights retention periods in days.
|
|
53
|
-
* - 7: Free tier (no charge)
|
|
54
|
-
* - 31: 1 month (default for paid)
|
|
55
|
-
* - 93: 3 months
|
|
56
|
-
* - 186: 6 months
|
|
57
|
-
* - 372: 1 year
|
|
58
|
-
* - 731: 2 years (maximum)
|
|
59
|
-
*/
|
|
60
51
|
export type PerformanceInsightsRetentionPeriod = 7 | 31 | 93 | 186 | 372 | 731;
|
|
61
52
|
export interface PerformanceInsightsConfig {
|
|
62
53
|
encryptionKey?: EncryptionKeySpec;
|
|
63
54
|
/** Retention period in days. Default: 31 (1 month). */
|
|
64
55
|
retentionPeriod?: PerformanceInsightsRetentionPeriod;
|
|
65
56
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Marker for AWS managed encryption key (aws/rds, aws/s3, etc.)
|
|
68
|
-
* Use this instead of a Customer Managed Key when:
|
|
69
|
-
* - Cost optimization is a priority
|
|
70
|
-
* - You don't need cross-account access
|
|
71
|
-
* - You don't need custom key policies
|
|
72
|
-
*/
|
|
73
57
|
export interface AwsManagedKey {
|
|
74
58
|
readonly awsManaged: true;
|
|
75
59
|
}
|
|
60
|
+
export interface CustomerManagedKeyMarker {
|
|
61
|
+
readonly useCMK: true;
|
|
62
|
+
}
|
|
63
|
+
export type EncryptionKeySpec = IKey | AwsManagedKey | CustomerManagedKeyMarker;
|
|
64
|
+
export declare function isAwsManagedKey(spec: EncryptionKeySpec | undefined): spec is AwsManagedKey;
|
|
76
65
|
/**
|
|
77
|
-
*
|
|
78
|
-
* - `IKey`: Use a specific KMS key you control
|
|
79
|
-
* - `{ awsManaged: true }`: Use AWS managed key (aws/rds) - cost-effective
|
|
80
|
-
* - `undefined`: Auto-create a Customer Managed Key (secure default)
|
|
66
|
+
* Type guard to check if CMK is explicitly requested.
|
|
81
67
|
*/
|
|
82
|
-
export
|
|
68
|
+
export declare function isCMKRequested(spec: EncryptionKeySpec | undefined): spec is CustomerManagedKeyMarker;
|
|
83
69
|
/**
|
|
84
|
-
*
|
|
70
|
+
* Convenience constant for specifying AWS managed encryption (the default).
|
|
85
71
|
* @example
|
|
86
|
-
*
|
|
87
|
-
* // Use AWS managed key
|
|
88
|
-
* }
|
|
72
|
+
* encryption: { storageKey: AWS_MANAGED }
|
|
89
73
|
*/
|
|
90
|
-
export declare
|
|
74
|
+
export declare const AWS_MANAGED: AwsManagedKey;
|
|
91
75
|
/**
|
|
92
|
-
* Convenience constant for
|
|
76
|
+
* Convenience constant for explicitly requesting CMK.
|
|
93
77
|
* @example
|
|
94
|
-
* encryption: { storageKey:
|
|
78
|
+
* encryption: { storageKey: USE_CMK }
|
|
95
79
|
*/
|
|
96
|
-
export declare const
|
|
80
|
+
export declare const USE_CMK: CustomerManagedKeyMarker;
|
|
97
81
|
/**
|
|
98
82
|
* **DESTRUCTIVE**: Changing `storageKey` after cluster creation causes cluster REPLACEMENT.
|
|
99
83
|
*/
|
|
@@ -119,8 +103,11 @@ export interface AuroraReadersConfig {
|
|
|
119
103
|
instances?: AuroraReaderConfig[];
|
|
120
104
|
defaultEnablePerformanceInsights?: boolean;
|
|
121
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Base props for database configuration.
|
|
108
|
+
*/
|
|
122
109
|
type BaseDatabaseProps = {
|
|
123
|
-
vpc
|
|
110
|
+
vpc?: IVpc;
|
|
124
111
|
databaseName: string;
|
|
125
112
|
instanceType?: string;
|
|
126
113
|
};
|
|
@@ -140,6 +127,8 @@ export interface AuroraDatabaseProps extends BaseDatabaseProps {
|
|
|
140
127
|
preferredMaintenanceWindow?: string;
|
|
141
128
|
port?: number;
|
|
142
129
|
performanceInsights?: PerformanceInsightsConfig | false;
|
|
130
|
+
/** ARN or identifier of DB cluster snapshot to restore from */
|
|
131
|
+
snapshotIdentifier?: string;
|
|
143
132
|
}
|
|
144
133
|
export interface GlobalAuroraDatabaseProps extends BaseDatabaseProps {
|
|
145
134
|
type: "GlobalAurora";
|
|
@@ -161,6 +150,8 @@ export interface GlobalAuroraDatabaseProps extends BaseDatabaseProps {
|
|
|
161
150
|
preferredMaintenanceWindow?: string;
|
|
162
151
|
port?: number;
|
|
163
152
|
performanceInsights?: PerformanceInsightsConfig | false;
|
|
153
|
+
/** ARN or identifier of DB cluster snapshot to restore from */
|
|
154
|
+
snapshotIdentifier?: string;
|
|
164
155
|
}
|
|
165
156
|
export interface InstanceDatabaseProps extends BaseDatabaseProps {
|
|
166
157
|
type: "Instance";
|
|
@@ -175,6 +166,9 @@ export interface InstanceDatabaseProps extends BaseDatabaseProps {
|
|
|
175
166
|
readReplica?: ReadReplicaConfig | false;
|
|
176
167
|
credentials?: CredentialsConfig;
|
|
177
168
|
encryption?: EncryptionConfig;
|
|
169
|
+
publiclyAccessible?: boolean;
|
|
170
|
+
/** ARN or identifier of DB instance snapshot to restore from */
|
|
171
|
+
snapshotIdentifier?: string;
|
|
178
172
|
}
|
|
179
173
|
export type IDatabaseProps = AuroraDatabaseProps | InstanceDatabaseProps | GlobalAuroraDatabaseProps;
|
|
180
174
|
export declare class DatabaseFactory {
|