@fjall/components-infrastructure 0.87.20 → 0.88.1
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 +13 -17
- package/dist/lib/app.js +56 -40
- package/dist/lib/config/aws/accountId.js +1 -2
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -2
- package/dist/lib/config/aws/costAllocationTags.js +3 -4
- package/dist/lib/config/aws/identityCenter.js +1 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.js +1 -6
- package/dist/lib/config/aws/index.d.ts +0 -1
- package/dist/lib/config/aws/index.js +1 -2
- package/dist/lib/config/aws/ipamDelegateAdmin.js +1 -2
- package/dist/lib/config/aws/ipamPoolId.js +1 -2
- package/dist/lib/config/aws/organisationId.js +1 -2
- package/dist/lib/config/aws/organisationsAccess.js +1 -2
- package/dist/lib/config/aws/ramSharing.js +1 -2
- package/dist/lib/patterns/aws/account.d.ts +12 -0
- package/dist/lib/patterns/aws/account.js +59 -0
- package/dist/lib/patterns/aws/buildkite.js +1 -2
- package/dist/lib/patterns/aws/cdn.d.ts +5 -10
- package/dist/lib/patterns/aws/cdn.js +5 -13
- package/dist/lib/patterns/aws/compute.d.ts +20 -3
- package/dist/lib/patterns/aws/compute.js +29 -5
- package/dist/lib/patterns/aws/database.d.ts +1 -1
- package/dist/lib/patterns/aws/database.js +16 -13
- package/dist/lib/patterns/aws/index.d.ts +4 -3
- package/dist/lib/patterns/aws/index.js +6 -4
- package/dist/lib/patterns/aws/interfaces/index.d.ts +2 -1
- package/dist/lib/patterns/aws/interfaces/index.js +8 -5
- package/dist/lib/patterns/aws/interfaces/organisation.d.ts +22 -0
- package/dist/lib/patterns/aws/interfaces/organisation.js +28 -0
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +5 -5
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/interfaces/storage.d.ts +10 -120
- package/dist/lib/patterns/aws/interfaces/storage.js +6 -43
- package/dist/lib/patterns/aws/organisation.d.ts +51 -0
- package/dist/lib/patterns/aws/organisation.js +150 -0
- package/dist/lib/patterns/aws/organisationFactory.d.ts +20 -0
- package/dist/lib/patterns/aws/organisationFactory.js +24 -0
- package/dist/lib/patterns/aws/pattern.d.ts +1 -1
- package/dist/lib/patterns/aws/pattern.js +1 -1
- package/dist/lib/patterns/aws/payload.d.ts +6 -5
- package/dist/lib/patterns/aws/payload.js +92 -42
- package/dist/lib/patterns/aws/platform.d.ts +11 -0
- package/dist/lib/patterns/aws/platform.js +29 -0
- package/dist/lib/patterns/aws/storage.d.ts +40 -125
- package/dist/lib/patterns/aws/storage.js +63 -191
- package/dist/lib/resources/aws/compute/ec2.d.ts +1 -1
- package/dist/lib/resources/aws/compute/ec2.js +3 -4
- package/dist/lib/resources/aws/compute/ecs.d.ts +6 -9
- package/dist/lib/resources/aws/compute/ecs.js +58 -26
- package/dist/lib/resources/aws/compute/lambda.d.ts +2 -0
- package/dist/lib/resources/aws/compute/lambda.js +11 -6
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +16 -16
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +1 -0
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +14 -10
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +5 -4
- package/dist/lib/resources/aws/database/rdsInstance.js +18 -7
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/group.js +1 -4
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +1 -4
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +2 -1
- package/dist/lib/resources/aws/logging/cloudTrail.js +7 -4
- package/dist/lib/resources/aws/networking/ipamPool.js +21 -3
- package/dist/lib/resources/aws/organisation/index.d.ts +4 -0
- package/dist/lib/resources/aws/organisation/index.js +10 -0
- package/dist/lib/resources/aws/organisation/organisation.d.ts +12 -0
- package/dist/lib/resources/aws/organisation/organisation.js +14 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.d.ts +18 -0
- package/dist/lib/resources/aws/organisation/organisationAccount.js +31 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.d.ts +13 -0
- package/dist/lib/resources/aws/organisation/organisationPolicy.js +32 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.d.ts +10 -0
- package/dist/lib/resources/aws/organisation/organisationalUnit.js +9 -0
- package/dist/lib/resources/aws/secrets/kms.js +10 -7
- package/dist/lib/resources/aws/secrets/parameter.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +3 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -3
- package/dist/lib/resources/aws/storage/s3.d.ts +6 -39
- package/dist/lib/resources/aws/storage/s3.js +31 -34
- package/dist/lib/utils/capitaliseString.d.ts +12 -0
- package/dist/lib/utils/capitaliseString.js +30 -0
- package/dist/lib/utils/capitalizeString.d.ts +11 -0
- package/dist/lib/utils/capitalizeString.js +24 -1
- package/dist/lib/utils/getConfig.d.ts +1 -0
- package/dist/lib/utils/getConfig.js +9 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/resourceNaming.d.ts +22 -19
- package/dist/lib/utils/resourceNaming.js +42 -35
- package/package.json +3 -4
|
@@ -32,7 +32,6 @@ class SecureStringParameter extends constructs_1.Construct {
|
|
|
32
32
|
}
|
|
33
33
|
this.parameter = new awsCustomResource_1.AwsCustomResource(this, `${id}SecureStringParameter`, {
|
|
34
34
|
resourceType: "Custom::SecureStringParameter",
|
|
35
|
-
functionName: `${id}SecureStringParameter`,
|
|
36
35
|
onCreate: {
|
|
37
36
|
service: "@aws-sdk/client-ssm",
|
|
38
37
|
action: "PutParameter",
|
|
@@ -96,4 +95,4 @@ class SecureStringParameter extends constructs_1.Construct {
|
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
exports.SecureStringParameter = SecureStringParameter;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9wYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTZDO0FBQzdDLGlEQUFzRDtBQUN0RCxtRUFHc0M7QUFDdEMsMkNBQXVDO0FBRXZDLHlCQUF3QztBQUN4QyxzRUFBbUU7QUFFbkUsTUFBYSxlQUFnQixTQUFRLHFCQUFHLENBQUMsZUFBZTtJQUN0RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGdCQUFnQjtZQUN2RCxJQUFJLEVBQUUscUJBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDBDQVFDO0FBY0QsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUtsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXZCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLHFCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNsRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsVUFBVTtnQkFDakQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRTtZQUN6RSxZQUFZLEVBQUUsK0JBQStCO1lBQzdDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsY0FBYztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLG1CQUFtQjtvQkFDMUQsS0FBSyxFQUNILEtBQUssQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxrQkFBa0I7b0JBQ3BFLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxtQkFBbUI7b0JBQzFELEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSzt3QkFDWCxpQ0FBaUMsRUFBRSxFQUFFO3dCQUNyQyxrQkFBa0I7b0JBQ3BCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDMUIsSUFBSSxFQUFFLGNBQWM7b0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO29CQUMzQixrQ0FBa0M7aUJBQ25DO2dCQUNELGtCQUFrQixFQUFFLHFDQUFrQixDQUFDLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQzthQUN6RTtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUNqQjthQUNGO1lBQ0QsTUFBTSxFQUFFLDBDQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0MsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7b0JBQ3hCLFNBQVMsRUFBRTt3QkFDVCxlQUFlLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7cUJBQzNFO2lCQUNGLENBQUM7Z0JBQ0YsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ1AscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHVCQUF1Qjt3QkFDdkIsNEJBQTRCO3dCQUM1Qix5QkFBeUI7cUJBQzFCO29CQUNELFNBQVMsRUFBRTt3QkFDVCxlQUFlLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsYUFBYSxLQUFLLENBQUMsSUFBSSxFQUFFO3FCQUN4RTtpQkFDRixDQUFDO2FBQ0gsQ0FBQztTQUNILENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyRkQsc0RBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3NzbSBhcyBzc20gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZVBvbGljeSxcbiAgUGh5c2ljYWxSZXNvdXJjZUlkXG59IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgdHlwZSBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkS2V5IH0gZnJvbSBcIi4vXCI7XG5pbXBvcnQgeyBBd3NDdXN0b21SZXNvdXJjZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXdzQ3VzdG9tUmVzb3VyY2VcIjtcblxuZXhwb3J0IGNsYXNzIFN0cmluZ1BhcmFtZXRlciBleHRlbmRzIHNzbS5TdHJpbmdQYXJhbWV0ZXIge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogc3NtLlN0cmluZ1BhcmFtZXRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbiB8fCBgJHtpZH0gU1NNIFBhcmFtZXRlcmAsXG4gICAgICB0aWVyOiBzc20uUGFyYW1ldGVyVGllci5JTlRFTExJR0VOVF9USUVSSU5HXG4gICAgfSk7XG4gIH1cbn1cblxuaW50ZXJmYWNlIFNlY3VyZVN0cmluZ1BhcmFtZXRlclByb3BzIHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGFsaWFzTmFtZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgb3ZlcndyaXRlPzogYm9vbGVhbjtcbiAgcmVnaW9uOiBzdHJpbmc7XG4gIHRhZ3M6IEtleVZhbHVlO1xuICB2YWx1ZT86IHN0cmluZztcbiAgY21rPzogQ3VzdG9tZXJNYW5hZ2VkS2V5O1xufVxuXG5leHBvcnQgY2xhc3MgU2VjdXJlU3RyaW5nUGFyYW1ldGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNtazogQ3VzdG9tZXJNYW5hZ2VkS2V5O1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyOiBBd3NDdXN0b21SZXNvdXJjZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjdXJlU3RyaW5nUGFyYW1ldGVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5uYW1lID0gcHJvcHMubmFtZTtcblxuICAgIGlmIChwcm9wcy5jbWspIHtcbiAgICAgIHRoaXMuY21rID0gcHJvcHMuY21rO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNtayA9IG5ldyBDdXN0b21lck1hbmFnZWRLZXkodGhpcywgYCR7aWR9S2V5YCwge1xuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IEtNUyBLZXlgLFxuICAgICAgICBhbGlhc05hbWU6IHByb3BzLmFsaWFzTmFtZVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXJhbWV0ZXIgPSBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYCR7aWR9U2VjdXJlU3RyaW5nUGFyYW1ldGVyYCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6U2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIsXG4gICAgICBvbkNyZWF0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkBhd3Mtc2RrL2NsaWVudC1zc21cIixcbiAgICAgICAgYWN0aW9uOiBcIlB1dFBhcmFtZXRlclwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMubmFtZSxcbiAgICAgICAgICBEZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IHNlY3VyZSBwYXJhbWV0ZXJgLFxuICAgICAgICAgIFZhbHVlOlxuICAgICAgICAgICAgcHJvcHMudmFsdWUgfHwgcHJvY2Vzcy5lbnYuQ0RLX1NFQ1VSRV9TVFJJTkcgfHwgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBgcHJvY2Vzcy5lbnYuQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gIHx8XG4gICAgICAgICAgICBcInBsYWNlaG9sZGVyVmFsdWVcIixcbiAgICAgICAgICBPdmVyd3JpdGU6IHByb3BzLm92ZXJ3cml0ZSxcbiAgICAgICAgICBUeXBlOiBcIlNlY3VyZVN0cmluZ1wiLFxuICAgICAgICAgIEtleUlkOiB0aGlzLmNtay5hbGlhcy5rZXlJZFxuICAgICAgICAgIC8vIFRPRE86IEFkZCB0YWdzIHRvIHRoZSBwYXJhbWV0ZXJcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXCJ1cGRhdGVTZWN1cmVTdHJpbmdQYXJhbWV0ZXJcIilcbiAgICAgIH0sXG4gICAgICBvbkRlbGV0ZToge1xuICAgICAgICBzZXJ2aWNlOiBcIkBhd3Mtc2RrL2NsaWVudC1zc21cIixcbiAgICAgICAgYWN0aW9uOiBcIkRlbGV0ZVBhcmFtZXRlclwiLFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmFtZTogcHJvcHMubmFtZVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFtcImttczpFbmNyeXB0XCJdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6a21zOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnRJZH06a2V5LyR7dGhpcy5jbWsua2V5LmtleUlkfWBcbiAgICAgICAgICBdXG4gICAgICAgIH0pLFxuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICBcInNzbTpEZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIFwic3NtOlB1dFBhcmFtZXRlclwiLFxuICAgICAgICAgICAgXCJzc206QWRkVGFnc1RvUmVzb3VyY2VcIixcbiAgICAgICAgICAgIFwibG9nczpEZWxldGVSZXRlbnRpb25Qb2xpY3lcIixcbiAgICAgICAgICAgIFwibG9nczpQdXRSZXRlbnRpb25Qb2xpY3lcIlxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICBgYXJuOmF3czpzc206JHtwcm9wcy5yZWdpb259OiR7cHJvcHMuYWNjb3VudElkfTpwYXJhbWV0ZXIke3Byb3BzLm5hbWV9YFxuICAgICAgICAgIF1cbiAgICAgICAgfSlcbiAgICAgIF0pXG4gICAgfSk7XG5cbiAgICBpZiAoIXByb3BzLmNtaykge1xuICAgICAgdGhpcy5wYXJhbWV0ZXIubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMuY21rKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -2,7 +2,9 @@ import { type Construct } from "constructs";
|
|
|
2
2
|
import { Repository, type RepositoryProps } from "aws-cdk-lib/aws-ecr";
|
|
3
3
|
import type App from "../../../app";
|
|
4
4
|
import { type StackBuilder } from "../base/awsStack";
|
|
5
|
-
|
|
5
|
+
interface EcrProps {
|
|
6
|
+
repositoryName?: string;
|
|
7
|
+
}
|
|
6
8
|
export declare class EcrFactory {
|
|
7
9
|
static build(id: string, props?: EcrProps): (app: App, scope: Construct) => Ecr;
|
|
8
10
|
}
|
|
@@ -22,17 +22,19 @@ class Ecr extends aws_ecr_1.Repository {
|
|
|
22
22
|
constructor(scope, id, props) {
|
|
23
23
|
super(scope, id, Ecr.getRepositoryProps(props));
|
|
24
24
|
this.outputs = [];
|
|
25
|
-
this.outputs.push(
|
|
25
|
+
this.outputs.push(
|
|
26
|
+
// TODO: revert to `${id}RepositoryName` after webapp redeploy (temp fix to preserve cross-stack export)
|
|
27
|
+
new aws_cdk_lib_1.CfnOutput(this, "ecrRepository", {
|
|
26
28
|
key: `${id}RepositoryName`,
|
|
27
29
|
value: this.repositoryName,
|
|
28
30
|
exportName: `${id}RepositoryName`
|
|
29
31
|
}));
|
|
30
32
|
}
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
33
|
static getRepositoryProps(props) {
|
|
33
34
|
// todo: lifeCycleRules
|
|
34
35
|
// todo: Encryption & EncryptionKey (default is AWS managed KMS key)
|
|
35
36
|
return {
|
|
37
|
+
...(props?.repositoryName && { repositoryName: props.repositoryName }),
|
|
36
38
|
imageScanOnPush: true,
|
|
37
39
|
imageTagMutability: aws_ecr_1.TagMutability.MUTABLE,
|
|
38
40
|
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
|
|
@@ -43,4 +45,4 @@ class Ecr extends aws_ecr_1.Repository {
|
|
|
43
45
|
}
|
|
44
46
|
}
|
|
45
47
|
exports.Ecr = Ecr;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQVV2RCxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXpDLG9FQUFvRTtZQUNwRSxNQUFNLFdBQVcsR0FBZ0I7Z0JBQy9CLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYzthQUNuQyxDQUFDO1lBQ0YsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBZkQsZ0NBZUM7QUFFRCxNQUFhLEdBQUksU0FBUSxvQkFBVTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBSDFDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBS2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSTtRQUNmLHdHQUF3RztRQUN4RyxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtZQUMxQixLQUFLLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxnQkFBZ0I7U0FDbEMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQWdCO1FBQ3hDLHVCQUF1QjtRQUN2QixvRUFBb0U7UUFDcEUsT0FBTztZQUNMLEdBQUcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RSxlQUFlLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSx1QkFBYSxDQUFDLE9BQU87WUFDekMsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTtTQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxLQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7Q0FDRjtBQTlCRCxrQkE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1xuICBSZXBvc2l0b3J5LFxuICB0eXBlIFJlcG9zaXRvcnlQcm9wcyxcbiAgVGFnTXV0YWJpbGl0eVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyB0eXBlIFN0YWNrQnVpbGRlciB9IGZyb20gXCIuLi9iYXNlL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyB0eXBlIE1hbmlmZXN0RWNyIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL21hbmlmZXN0V3JpdGVyLmpzXCI7XG5cbmludGVyZmFjZSBFY3JQcm9wcyB7XG4gIHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRWNyRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgcmV0dXJuIChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4ge1xuICAgICAgY29uc3QgZWNyUHJvcHMgPSBwcm9wcyA/PyB7fTtcbiAgICAgIGNvbnN0IGVjciA9IG5ldyBFY3Ioc2NvcGUsIGlkLCBlY3JQcm9wcyk7XG5cbiAgICAgIC8vIFJlZ2lzdGVyIEVDUiByZXBvc2l0b3J5IHdpdGggbWFuaWZlc3QgY29sbGVjdG9yIGZvciBDTEkgZGlzY292ZXJ5XG4gICAgICBjb25zdCBtYW5pZmVzdEVjcjogTWFuaWZlc3RFY3IgPSB7XG4gICAgICAgIHJlcG9zaXRvcnlOYW1lOiBlY3IucmVwb3NpdG9yeU5hbWVcbiAgICAgIH07XG4gICAgICBhcHAuZ2V0TWFuaWZlc3RDb2xsZWN0b3IoKS5zZXRFY3IobWFuaWZlc3RFY3IpO1xuXG4gICAgICByZXR1cm4gZWNyO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVjciBleHRlbmRzIFJlcG9zaXRvcnkge1xuICBwcml2YXRlIG91dHB1dHM6IENmbk91dHB1dFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBFY3JQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgRWNyLmdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcykpO1xuXG4gICAgdGhpcy5vdXRwdXRzLnB1c2goXG4gICAgICAvLyBUT0RPOiByZXZlcnQgdG8gYCR7aWR9UmVwb3NpdG9yeU5hbWVgIGFmdGVyIHdlYmFwcCByZWRlcGxveSAodGVtcCBmaXggdG8gcHJlc2VydmUgY3Jvc3Mtc3RhY2sgZXhwb3J0KVxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBcImVjclJlcG9zaXRvcnlcIiwge1xuICAgICAgICBrZXk6IGAke2lkfVJlcG9zaXRvcnlOYW1lYCxcbiAgICAgICAgdmFsdWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgIGV4cG9ydE5hbWU6IGAke2lkfVJlcG9zaXRvcnlOYW1lYFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldFJlcG9zaXRvcnlQcm9wcyhwcm9wcz86IEVjclByb3BzKTogUmVwb3NpdG9yeVByb3BzIHtcbiAgICAvLyB0b2RvOiBsaWZlQ3ljbGVSdWxlc1xuICAgIC8vIHRvZG86IEVuY3J5cHRpb24gJiBFbmNyeXB0aW9uS2V5IChkZWZhdWx0IGlzIEFXUyBtYW5hZ2VkIEtNUyBrZXkpXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihwcm9wcz8ucmVwb3NpdG9yeU5hbWUgJiYgeyByZXBvc2l0b3J5TmFtZTogcHJvcHMucmVwb3NpdG9yeU5hbWUgfSksXG4gICAgICBpbWFnZVNjYW5PblB1c2g6IHRydWUsXG4gICAgICBpbWFnZVRhZ011dGFiaWxpdHk6IFRhZ011dGFiaWxpdHkuTVVUQUJMRSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKTogKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IEVjciB7XG4gICAgcmV0dXJuIChzY29wZTogU3RhY2tCdWlsZGVyKSA9PiBuZXcgRWNyKHNjb3BlLmdldFN0YWNrKCksIGlkLCBwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,49 +1,16 @@
|
|
|
1
1
|
import { Bucket, type BucketProps } from "aws-cdk-lib/aws-s3";
|
|
2
2
|
import { type Construct } from "constructs";
|
|
3
|
-
/**
|
|
4
|
-
* Backup vault tiers for disaster recovery.
|
|
5
|
-
* Determines which AWS Backup plan includes this bucket.
|
|
6
|
-
*/
|
|
7
3
|
export type BackupVaultTier = "standard" | "resilient" | "enterprise";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
export interface WebsiteHostingConfig {
|
|
5
|
+
readonly indexDocument: string;
|
|
6
|
+
readonly errorDocument?: string;
|
|
7
|
+
}
|
|
11
8
|
export interface S3BucketProps extends BucketProps {
|
|
12
|
-
/**
|
|
13
|
-
* Backup vault tier for disaster recovery.
|
|
14
|
-
*
|
|
15
|
-
* When set, tags the bucket with "fjall:disasterRecovery:tier": "<tier>"
|
|
16
|
-
* which automatically includes it in the corresponding backup plan.
|
|
17
|
-
*
|
|
18
|
-
* Tiers:
|
|
19
|
-
* - standard: Daily backups, 90-day retention
|
|
20
|
-
* - resilient: Daily + continuous, 35-day retention, cross-region replication
|
|
21
|
-
* - enterprise: Continuous + hourly, 7-year compliance, cross-region + cross-account
|
|
22
|
-
*
|
|
23
|
-
* @default undefined - Bucket will NOT be backed up automatically
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* // Critical user data bucket
|
|
27
|
-
* backupVaultTier: "resilient"
|
|
28
|
-
*
|
|
29
|
-
* // Compliance data
|
|
30
|
-
* backupVaultTier: "enterprise"
|
|
31
|
-
*
|
|
32
|
-
* // Logs bucket (no backups needed)
|
|
33
|
-
* // Don't set this property
|
|
34
|
-
*/
|
|
35
9
|
backupVaultTier?: BackupVaultTier;
|
|
10
|
+
publicReadAccess?: boolean;
|
|
11
|
+
websiteHosting?: WebsiteHostingConfig;
|
|
36
12
|
}
|
|
37
13
|
export declare class S3Bucket extends Bucket {
|
|
38
|
-
/**
|
|
39
|
-
* Backup vault tier if set. Used by StandardTagsAspect to apply DR tags.
|
|
40
|
-
*/
|
|
41
14
|
readonly backupVaultTier?: BackupVaultTier;
|
|
42
15
|
constructor(scope: Construct, id: string, props?: S3BucketProps);
|
|
43
16
|
}
|
|
44
|
-
export declare class S3WebsiteBucket extends S3Bucket {
|
|
45
|
-
constructor(scope: Construct, id: string, props?: S3BucketProps);
|
|
46
|
-
}
|
|
47
|
-
export declare class S3PublicReadBucket extends S3Bucket {
|
|
48
|
-
constructor(scope: Construct, id: string, props?: S3BucketProps);
|
|
49
|
-
}
|
|
@@ -1,45 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.S3Bucket = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
6
|
+
function shouldAutoVersion(tier) {
|
|
7
|
+
return tier === "resilient" || tier === "enterprise";
|
|
8
|
+
}
|
|
6
9
|
class S3Bucket extends aws_s3_1.Bucket {
|
|
7
|
-
constructor(scope, id, props) {
|
|
10
|
+
constructor(scope, id, props = {}) {
|
|
11
|
+
const { websiteHosting, backupVaultTier, ...cdkProps } = props;
|
|
12
|
+
const isPublic = props.publicReadAccess === true || websiteHosting !== undefined;
|
|
13
|
+
const isRetained = props.removalPolicy === aws_cdk_lib_1.RemovalPolicy.RETAIN;
|
|
14
|
+
const versioned = props.versioned ?? shouldAutoVersion(backupVaultTier);
|
|
8
15
|
super(scope, id, {
|
|
9
|
-
...
|
|
10
|
-
autoDeleteObjects: true,
|
|
16
|
+
...cdkProps,
|
|
11
17
|
enforceSSL: true,
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
autoDeleteObjects: !isRetained,
|
|
19
|
+
removalPolicy: props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
20
|
+
publicReadAccess: isPublic,
|
|
21
|
+
...(isPublic && {
|
|
22
|
+
blockPublicAccess: new aws_s3_1.BlockPublicAccess({
|
|
23
|
+
blockPublicAcls: false,
|
|
24
|
+
blockPublicPolicy: false,
|
|
25
|
+
ignorePublicAcls: false,
|
|
26
|
+
restrictPublicBuckets: false
|
|
27
|
+
})
|
|
28
|
+
}),
|
|
29
|
+
...(websiteHosting && {
|
|
30
|
+
websiteIndexDocument: websiteHosting.indexDocument,
|
|
31
|
+
websiteErrorDocument: websiteHosting.errorDocument ?? "error.html"
|
|
32
|
+
}),
|
|
33
|
+
versioned,
|
|
34
|
+
lifecycleRules: versioned && !props.lifecycleRules
|
|
35
|
+
? [{ noncurrentVersionExpiration: aws_cdk_lib_1.Duration.days(30), enabled: true }]
|
|
36
|
+
: props.lifecycleRules
|
|
14
37
|
});
|
|
15
|
-
this.backupVaultTier =
|
|
38
|
+
this.backupVaultTier = backupVaultTier;
|
|
16
39
|
}
|
|
17
40
|
}
|
|
18
41
|
exports.S3Bucket = S3Bucket;
|
|
19
|
-
|
|
20
|
-
constructor(scope, id, props) {
|
|
21
|
-
super(scope, id, {
|
|
22
|
-
...props,
|
|
23
|
-
websiteErrorDocument: "error.html",
|
|
24
|
-
websiteIndexDocument: "index.html",
|
|
25
|
-
publicReadAccess: true
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
exports.S3WebsiteBucket = S3WebsiteBucket;
|
|
30
|
-
class S3PublicReadBucket extends S3Bucket {
|
|
31
|
-
constructor(scope, id, props) {
|
|
32
|
-
super(scope, id, {
|
|
33
|
-
...props,
|
|
34
|
-
publicReadAccess: true,
|
|
35
|
-
blockPublicAccess: new aws_s3_1.BlockPublicAccess({
|
|
36
|
-
blockPublicAcls: false,
|
|
37
|
-
blockPublicPolicy: false,
|
|
38
|
-
ignorePublicAcls: false,
|
|
39
|
-
restrictPublicBuckets: false
|
|
40
|
-
})
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
exports.S3PublicReadBucket = S3PublicReadBucket;
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yYWdlL3MzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE0QztBQUM1QywrQ0FJNEI7QUF1QzVCLE1BQWEsUUFBUyxTQUFRLGVBQU07SUFNbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsVUFBVSxFQUFFLElBQUk7WUFDaEIsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1lBQzVELFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxFQUFFLGVBQWUsQ0FBQztJQUNoRCxDQUFDO0NBQ0Y7QUFqQkQsNEJBaUJDO0FBRUQsTUFBYSxlQUFnQixTQUFRLFFBQVE7SUFDM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFxQjtRQUM3RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLG9CQUFvQixFQUFFLFlBQVk7WUFDbEMsb0JBQW9CLEVBQUUsWUFBWTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDBDQVNDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxRQUFRO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUI7UUFDN0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGlCQUFpQixFQUFFLElBQUksMEJBQWlCLENBQUM7Z0JBQ3ZDLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFiRCxnREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIEJsb2NrUHVibGljQWNjZXNzLFxuICBCdWNrZXQsXG4gIHR5cGUgQnVja2V0UHJvcHNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIEJhY2t1cCB2YXVsdCB0aWVycyBmb3IgZGlzYXN0ZXIgcmVjb3ZlcnkuXG4gKiBEZXRlcm1pbmVzIHdoaWNoIEFXUyBCYWNrdXAgcGxhbiBpbmNsdWRlcyB0aGlzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IHR5cGUgQmFja3VwVmF1bHRUaWVyID0gXCJzdGFuZGFyZFwiIHwgXCJyZXNpbGllbnRcIiB8IFwiZW50ZXJwcmlzZVwiO1xuXG4vKipcbiAqIEV4dGVuZGVkIHByb3BzIGZvciBTM0J1Y2tldCB0aGF0IGluY2x1ZGUgZGlzYXN0ZXIgcmVjb3ZlcnkgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0J1Y2tldFByb3BzIGV4dGVuZHMgQnVja2V0UHJvcHMge1xuICAvKipcbiAgICogQmFja3VwIHZhdWx0IHRpZXIgZm9yIGRpc2FzdGVyIHJlY292ZXJ5LlxuICAgKlxuICAgKiBXaGVuIHNldCwgdGFncyB0aGUgYnVja2V0IHdpdGggXCJmamFsbDpkaXNhc3RlclJlY292ZXJ5OnRpZXJcIjogXCI8dGllcj5cIlxuICAgKiB3aGljaCBhdXRvbWF0aWNhbGx5IGluY2x1ZGVzIGl0IGluIHRoZSBjb3JyZXNwb25kaW5nIGJhY2t1cCBwbGFuLlxuICAgKlxuICAgKiBUaWVyczpcbiAgICogLSBzdGFuZGFyZDogRGFpbHkgYmFja3VwcywgOTAtZGF5IHJldGVudGlvblxuICAgKiAtIHJlc2lsaWVudDogRGFpbHkgKyBjb250aW51b3VzLCAzNS1kYXkgcmV0ZW50aW9uLCBjcm9zcy1yZWdpb24gcmVwbGljYXRpb25cbiAgICogLSBlbnRlcnByaXNlOiBDb250aW51b3VzICsgaG91cmx5LCA3LXllYXIgY29tcGxpYW5jZSwgY3Jvc3MtcmVnaW9uICsgY3Jvc3MtYWNjb3VudFxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBCdWNrZXQgd2lsbCBOT1QgYmUgYmFja2VkIHVwIGF1dG9tYXRpY2FsbHlcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogLy8gQ3JpdGljYWwgdXNlciBkYXRhIGJ1Y2tldFxuICAgKiBiYWNrdXBWYXVsdFRpZXI6IFwicmVzaWxpZW50XCJcbiAgICpcbiAgICogLy8gQ29tcGxpYW5jZSBkYXRhXG4gICAqIGJhY2t1cFZhdWx0VGllcjogXCJlbnRlcnByaXNlXCJcbiAgICpcbiAgICogLy8gTG9ncyBidWNrZXQgKG5vIGJhY2t1cHMgbmVlZGVkKVxuICAgKiAvLyBEb24ndCBzZXQgdGhpcyBwcm9wZXJ0eVxuICAgKi9cbiAgYmFja3VwVmF1bHRUaWVyPzogQmFja3VwVmF1bHRUaWVyO1xufVxuXG5leHBvcnQgY2xhc3MgUzNCdWNrZXQgZXh0ZW5kcyBCdWNrZXQge1xuICAvKipcbiAgICogQmFja3VwIHZhdWx0IHRpZXIgaWYgc2V0LiBVc2VkIGJ5IFN0YW5kYXJkVGFnc0FzcGVjdCB0byBhcHBseSBEUiB0YWdzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGJhY2t1cFZhdWx0VGllcj86IEJhY2t1cFZhdWx0VGllcjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFMzQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHM/LnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgdmVyc2lvbmVkOiB0cnVlXG4gICAgfSk7XG5cbiAgICB0aGlzLmJhY2t1cFZhdWx0VGllciA9IHByb3BzPy5iYWNrdXBWYXVsdFRpZXI7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFMzV2Vic2l0ZUJ1Y2tldCBleHRlbmRzIFMzQnVja2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTM0J1Y2tldFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHdlYnNpdGVFcnJvckRvY3VtZW50OiBcImVycm9yLmh0bWxcIixcbiAgICAgIHdlYnNpdGVJbmRleERvY3VtZW50OiBcImluZGV4Lmh0bWxcIixcbiAgICAgIHB1YmxpY1JlYWRBY2Nlc3M6IHRydWVcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUzNQdWJsaWNSZWFkQnVja2V0IGV4dGVuZHMgUzNCdWNrZXQge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IFMzQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBuZXcgQmxvY2tQdWJsaWNBY2Nlc3Moe1xuICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICBibG9ja1B1YmxpY1BvbGljeTogZmFsc2UsXG4gICAgICAgIGlnbm9yZVB1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICByZXN0cmljdFB1YmxpY0J1Y2tldHM6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yYWdlL3MzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFzRDtBQUN0RCwrQ0FJNEI7QUFnQjVCLFNBQVMsaUJBQWlCLENBQUMsSUFBc0I7SUFDL0MsT0FBTyxJQUFJLEtBQUssV0FBVyxJQUFJLElBQUksS0FBSyxZQUFZLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQWEsUUFBUyxTQUFRLGVBQU07SUFHbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUF1QixFQUFFO1FBQ2pFLE1BQU0sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBQy9ELE1BQU0sUUFBUSxHQUNaLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLElBQUksY0FBYyxLQUFLLFNBQVMsQ0FBQztRQUNsRSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsYUFBYSxLQUFLLDJCQUFhLENBQUMsTUFBTSxDQUFDO1FBQ2hFLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksaUJBQWlCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLFFBQVE7WUFDWCxVQUFVLEVBQUUsSUFBSTtZQUNoQixpQkFBaUIsRUFBRSxDQUFDLFVBQVU7WUFDOUIsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1lBRTNELGdCQUFnQixFQUFFLFFBQVE7WUFDMUIsR0FBRyxDQUFDLFFBQVEsSUFBSTtnQkFDZCxpQkFBaUIsRUFBRSxJQUFJLDBCQUFpQixDQUFDO29CQUN2QyxlQUFlLEVBQUUsS0FBSztvQkFDdEIsaUJBQWlCLEVBQUUsS0FBSztvQkFDeEIsZ0JBQWdCLEVBQUUsS0FBSztvQkFDdkIscUJBQXFCLEVBQUUsS0FBSztpQkFDN0IsQ0FBQzthQUNILENBQUM7WUFFRixHQUFHLENBQUMsY0FBYyxJQUFJO2dCQUNwQixvQkFBb0IsRUFBRSxjQUFjLENBQUMsYUFBYTtnQkFDbEQsb0JBQW9CLEVBQUUsY0FBYyxDQUFDLGFBQWEsSUFBSSxZQUFZO2FBQ25FLENBQUM7WUFFRixTQUFTO1lBQ1QsY0FBYyxFQUNaLFNBQVMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjO2dCQUNoQyxDQUFDLENBQUMsQ0FBQyxFQUFFLDJCQUEyQixFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDckUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjO1NBQzNCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7Q0FDRjtBQXhDRCw0QkF3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldCxcbiAgdHlwZSBCdWNrZXRQcm9wc1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCB0eXBlIEJhY2t1cFZhdWx0VGllciA9IFwic3RhbmRhcmRcIiB8IFwicmVzaWxpZW50XCIgfCBcImVudGVycHJpc2VcIjtcblxuZXhwb3J0IGludGVyZmFjZSBXZWJzaXRlSG9zdGluZ0NvbmZpZyB7XG4gIHJlYWRvbmx5IGluZGV4RG9jdW1lbnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3JEb2N1bWVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTM0J1Y2tldFByb3BzIGV4dGVuZHMgQnVja2V0UHJvcHMge1xuICBiYWNrdXBWYXVsdFRpZXI/OiBCYWNrdXBWYXVsdFRpZXI7XG4gIHB1YmxpY1JlYWRBY2Nlc3M/OiBib29sZWFuO1xuICB3ZWJzaXRlSG9zdGluZz86IFdlYnNpdGVIb3N0aW5nQ29uZmlnO1xufVxuXG5mdW5jdGlvbiBzaG91bGRBdXRvVmVyc2lvbih0aWVyPzogQmFja3VwVmF1bHRUaWVyKTogYm9vbGVhbiB7XG4gIHJldHVybiB0aWVyID09PSBcInJlc2lsaWVudFwiIHx8IHRpZXIgPT09IFwiZW50ZXJwcmlzZVwiO1xufVxuXG5leHBvcnQgY2xhc3MgUzNCdWNrZXQgZXh0ZW5kcyBCdWNrZXQge1xuICBwdWJsaWMgcmVhZG9ubHkgYmFja3VwVmF1bHRUaWVyPzogQmFja3VwVmF1bHRUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTM0J1Y2tldFByb3BzID0ge30pIHtcbiAgICBjb25zdCB7IHdlYnNpdGVIb3N0aW5nLCBiYWNrdXBWYXVsdFRpZXIsIC4uLmNka1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBpc1B1YmxpYyA9XG4gICAgICBwcm9wcy5wdWJsaWNSZWFkQWNjZXNzID09PSB0cnVlIHx8IHdlYnNpdGVIb3N0aW5nICE9PSB1bmRlZmluZWQ7XG4gICAgY29uc3QgaXNSZXRhaW5lZCA9IHByb3BzLnJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IHZlcnNpb25lZCA9IHByb3BzLnZlcnNpb25lZCA/PyBzaG91bGRBdXRvVmVyc2lvbihiYWNrdXBWYXVsdFRpZXIpO1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5jZGtQcm9wcyxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogIWlzUmV0YWluZWQsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcblxuICAgICAgcHVibGljUmVhZEFjY2VzczogaXNQdWJsaWMsXG4gICAgICAuLi4oaXNQdWJsaWMgJiYge1xuICAgICAgICBibG9ja1B1YmxpY0FjY2VzczogbmV3IEJsb2NrUHVibGljQWNjZXNzKHtcbiAgICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICAgIGJsb2NrUHVibGljUG9saWN5OiBmYWxzZSxcbiAgICAgICAgICBpZ25vcmVQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICByZXN0cmljdFB1YmxpY0J1Y2tldHM6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9KSxcblxuICAgICAgLi4uKHdlYnNpdGVIb3N0aW5nICYmIHtcbiAgICAgICAgd2Vic2l0ZUluZGV4RG9jdW1lbnQ6IHdlYnNpdGVIb3N0aW5nLmluZGV4RG9jdW1lbnQsXG4gICAgICAgIHdlYnNpdGVFcnJvckRvY3VtZW50OiB3ZWJzaXRlSG9zdGluZy5lcnJvckRvY3VtZW50ID8/IFwiZXJyb3IuaHRtbFwiXG4gICAgICB9KSxcblxuICAgICAgdmVyc2lvbmVkLFxuICAgICAgbGlmZWN5Y2xlUnVsZXM6XG4gICAgICAgIHZlcnNpb25lZCAmJiAhcHJvcHMubGlmZWN5Y2xlUnVsZXNcbiAgICAgICAgICA/IFt7IG5vbmN1cnJlbnRWZXJzaW9uRXhwaXJhdGlvbjogRHVyYXRpb24uZGF5cygzMCksIGVuYWJsZWQ6IHRydWUgfV1cbiAgICAgICAgICA6IHByb3BzLmxpZmVjeWNsZVJ1bGVzXG4gICAgfSk7XG5cbiAgICB0aGlzLmJhY2t1cFZhdWx0VGllciA9IGJhY2t1cFZhdWx0VGllcjtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare function capitaliseString(string: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Convert a kebab-case or snake_case name to PascalCase.
|
|
4
|
+
* e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
|
|
5
|
+
*/
|
|
6
|
+
export declare function toPascalCase(name: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
|
|
9
|
+
* Three-pass regex: split acronyms, split camel boundaries, replace separators.
|
|
10
|
+
* e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
|
|
11
|
+
*/
|
|
12
|
+
export declare function toKebab(str: string): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.capitaliseString = capitaliseString;
|
|
4
|
+
exports.toPascalCase = toPascalCase;
|
|
5
|
+
exports.toKebab = toKebab;
|
|
6
|
+
function capitaliseString(string) {
|
|
7
|
+
return String(string).charAt(0).toUpperCase() + String(string).slice(1);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert a kebab-case or snake_case name to PascalCase.
|
|
11
|
+
* e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
|
|
12
|
+
*/
|
|
13
|
+
function toPascalCase(name) {
|
|
14
|
+
return name
|
|
15
|
+
.replace(/[-_](.)/g, (_, c) => c.toUpperCase())
|
|
16
|
+
.replace(/^./, (c) => c.toUpperCase());
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
|
|
20
|
+
* Three-pass regex: split acronyms, split camel boundaries, replace separators.
|
|
21
|
+
* e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
|
|
22
|
+
*/
|
|
23
|
+
function toKebab(str) {
|
|
24
|
+
return str
|
|
25
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
|
|
26
|
+
.replace(/([a-z\d])([A-Z])/g, "$1-$2")
|
|
27
|
+
.replace(/[\s_]+/g, "-")
|
|
28
|
+
.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGlzZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXNlU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBRUM7QUFNRCxvQ0FJQztBQU9ELDBCQU1DO0FBekJELFNBQWdCLGdCQUFnQixDQUFDLE1BQWM7SUFDN0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixPQUFPLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO1NBQ3pDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7U0FDckMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXNlU3RyaW5nKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgU3RyaW5nKHN0cmluZykuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGtlYmFiLWNhc2Ugb3Igc25ha2VfY2FzZSBuYW1lIHRvIFBhc2NhbENhc2UuXG4gKiBlLmcuLCBcIm15LWFwcFwiIC0+IFwiTXlBcHBcIiwgXCJteV9hcHBcIiAtPiBcIk15QXBwXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZVxuICAgIC5yZXBsYWNlKC9bLV9dKC4pL2csIChfLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL14uLywgKGMpID0+IGMudG9VcHBlckNhc2UoKSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbnkgY2FzZSAoUGFzY2FsQ2FzZSwgY2FtZWxDYXNlLCBrZWJhYi1jYXNlLCBzbmFrZV9jYXNlKSB0byBrZWJhYi1jYXNlLlxuICogVGhyZWUtcGFzcyByZWdleDogc3BsaXQgYWNyb255bXMsIHNwbGl0IGNhbWVsIGJvdW5kYXJpZXMsIHJlcGxhY2Ugc2VwYXJhdG9ycy5cbiAqIGUuZy4sIFwiTXlBcHBcIiAtPiBcIm15LWFwcFwiLCBcIkFXU0xhbWJkYVwiIC0+IFwiYXdzLWxhbWJkYVwiLCBcIm15QXBwXCIgLT4gXCJteS1hcHBcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9LZWJhYihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZSgvKFtBLVpdKykoW0EtWl1bYS16XSkvZywgXCIkMS0kMlwiKVxuICAgIC5yZXBsYWNlKC8oW2EtelxcZF0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=
|
|
@@ -1 +1,12 @@
|
|
|
1
1
|
export declare function capitalizeString(string: string): string;
|
|
2
|
+
/**
|
|
3
|
+
* Convert a kebab-case or snake_case name to PascalCase.
|
|
4
|
+
* e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
|
|
5
|
+
*/
|
|
6
|
+
export declare function toPascalCase(name: string): string;
|
|
7
|
+
/**
|
|
8
|
+
* Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
|
|
9
|
+
* Three-pass regex: split acronyms, split camel boundaries, replace separators.
|
|
10
|
+
* e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
|
|
11
|
+
*/
|
|
12
|
+
export declare function toKebab(str: string): string;
|
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.capitalizeString = capitalizeString;
|
|
4
|
+
exports.toPascalCase = toPascalCase;
|
|
5
|
+
exports.toKebab = toKebab;
|
|
4
6
|
function capitalizeString(string) {
|
|
5
7
|
return String(string).charAt(0).toUpperCase() + String(string).slice(1);
|
|
6
8
|
}
|
|
7
|
-
|
|
9
|
+
/**
|
|
10
|
+
* Convert a kebab-case or snake_case name to PascalCase.
|
|
11
|
+
* e.g., "my-app" -> "MyApp", "my_app" -> "MyApp"
|
|
12
|
+
*/
|
|
13
|
+
function toPascalCase(name) {
|
|
14
|
+
return name
|
|
15
|
+
.replace(/[-_](.)/g, (_, c) => c.toUpperCase())
|
|
16
|
+
.replace(/^./, (c) => c.toUpperCase());
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Convert any case (PascalCase, camelCase, kebab-case, snake_case) to kebab-case.
|
|
20
|
+
* Three-pass regex: split acronyms, split camel boundaries, replace separators.
|
|
21
|
+
* e.g., "MyApp" -> "my-app", "AWSLambda" -> "aws-lambda", "myApp" -> "my-app"
|
|
22
|
+
*/
|
|
23
|
+
function toKebab(str) {
|
|
24
|
+
return str
|
|
25
|
+
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1-$2")
|
|
26
|
+
.replace(/([a-z\d])([A-Z])/g, "$1-$2")
|
|
27
|
+
.replace(/[\s_]+/g, "-")
|
|
28
|
+
.toLowerCase();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwaXRhbGl6ZVN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi91dGlscy9jYXBpdGFsaXplU3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNENBRUM7QUFNRCxvQ0FJQztBQU9ELDBCQU1DO0FBekJELFNBQWdCLGdCQUFnQixDQUFDLE1BQWM7SUFDN0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sSUFBSTtTQUNSLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixPQUFPLENBQUMsR0FBVztJQUNqQyxPQUFPLEdBQUc7U0FDUCxPQUFPLENBQUMsdUJBQXVCLEVBQUUsT0FBTyxDQUFDO1NBQ3pDLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLENBQUM7U0FDckMsT0FBTyxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUM7U0FDdkIsV0FBVyxFQUFFLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplU3RyaW5nKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgU3RyaW5nKHN0cmluZykuc2xpY2UoMSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIGtlYmFiLWNhc2Ugb3Igc25ha2VfY2FzZSBuYW1lIHRvIFBhc2NhbENhc2UuXG4gKiBlLmcuLCBcIm15LWFwcFwiIC0+IFwiTXlBcHBcIiwgXCJteV9hcHBcIiAtPiBcIk15QXBwXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFzY2FsQ2FzZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gbmFtZVxuICAgIC5yZXBsYWNlKC9bLV9dKC4pL2csIChfLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpXG4gICAgLnJlcGxhY2UoL14uLywgKGMpID0+IGMudG9VcHBlckNhc2UoKSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhbnkgY2FzZSAoUGFzY2FsQ2FzZSwgY2FtZWxDYXNlLCBrZWJhYi1jYXNlLCBzbmFrZV9jYXNlKSB0byBrZWJhYi1jYXNlLlxuICogVGhyZWUtcGFzcyByZWdleDogc3BsaXQgYWNyb255bXMsIHNwbGl0IGNhbWVsIGJvdW5kYXJpZXMsIHJlcGxhY2Ugc2VwYXJhdG9ycy5cbiAqIGUuZy4sIFwiTXlBcHBcIiAtPiBcIm15LWFwcFwiLCBcIkFXU0xhbWJkYVwiIC0+IFwiYXdzLWxhbWJkYVwiLCBcIm15QXBwXCIgLT4gXCJteS1hcHBcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9LZWJhYihzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHJcbiAgICAucmVwbGFjZSgvKFtBLVpdKykoW0EtWl1bYS16XSkvZywgXCIkMS0kMlwiKVxuICAgIC5yZXBsYWNlKC8oW2EtelxcZF0pKFtBLVpdKS9nLCBcIiQxLSQyXCIpXG4gICAgLnJlcGxhY2UoL1tcXHNfXSsvZywgXCItXCIpXG4gICAgLnRvTG93ZXJDYXNlKCk7XG59XG4iXX0=
|
|
@@ -20,6 +20,14 @@ function getConfig(accountName) {
|
|
|
20
20
|
const fjallConfig = util_1.Config.loadConfig();
|
|
21
21
|
// Get existing accounts
|
|
22
22
|
config.existingAccounts = fjallConfig.getExistingAccounts();
|
|
23
|
+
// Build account IDs map from provider accounts (name → id)
|
|
24
|
+
const providerAccounts = fjallConfig.rootConfig.providerAccounts || [];
|
|
25
|
+
if (providerAccounts.length > 0) {
|
|
26
|
+
config.accountIds = {};
|
|
27
|
+
for (const pa of providerAccounts) {
|
|
28
|
+
config.accountIds[pa.name] = pa.id;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
23
31
|
// Get cost allocation tags
|
|
24
32
|
config.costAllocationTags = fjallConfig.getCostAllocationTags();
|
|
25
33
|
// Get regions configuration
|
|
@@ -64,4 +72,4 @@ function getConfig(accountName) {
|
|
|
64
72
|
return config;
|
|
65
73
|
}
|
|
66
74
|
exports.default = getConfig;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2dldENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4QkE0RUM7QUEvRkQsZ0NBQXlCO0FBQ3pCLHNDQUFvRDtBQUVwRCx5REFBaUQ7QUFnQmpELFNBQWdCLFNBQVMsQ0FBQyxXQUFvQjtJQUM1QyxNQUFNLEdBQUcsR0FBRyxhQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFOUIsTUFBTSxNQUFNLEdBQVc7UUFDckIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFdBQVc7UUFDN0MsV0FBVyxFQUFFLFNBQVM7UUFDdEIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEVBQUU7S0FDZixDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtRQUN6Qiw4QkFBVyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBRXJFLDJDQUEyQztJQUMzQyxNQUFNLFdBQVcsR0FBRyxhQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFN0Msd0JBQXdCO0lBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUU1RCwyREFBMkQ7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztJQUN2RSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixNQUFNLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFaEUsNEJBQTRCO0lBQzVCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdEQsTUFBTSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxNQUFNLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoRCxNQUFNLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFFeEUsNkRBQTZEO0lBQzdELElBQUksQ0FBQyxXQUFXO1FBQUUsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLG9FQUFvRTtJQUNwRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDMUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsd0VBQXdFO1FBQ3hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUU3QixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxNQUFNLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFDMUMsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2RSw2REFBNkQ7UUFDN0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELGtCQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQWNjb3VudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtb3JnYW5pemF0aW9uc1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi9hcHBcIjtcbmltcG9ydCB7IENvbmZpZyBhcyBGamFsbENvbmZpZyB9IGZyb20gXCJAZmphbGwvdXRpbFwiO1xuaW1wb3J0IHsgdHlwZSBJQ29zdEFsbG9jYXRpb25UYWdzIH0gZnJvbSBcIi4uL2NvbmZpZy9hd3NcIjtcbmltcG9ydCB7IEZqYWxsTG9nZ2VyIH0gZnJvbSBcIi4vdmFsaWRhdGlvbkxvZ2dlclwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZyB7XG4gIHJlZ2lvbjogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogc3RyaW5nO1xuICBleGlzdGluZ0FjY291bnRzOiBBY2NvdW50W107XG4gIGNvc3RBbGxvY2F0aW9uVGFnczogSUNvc3RBbGxvY2F0aW9uVGFnc1tdO1xuICBhY2NvdW50SWQ/OiBzdHJpbmc7XG4gIGFjY291bnROYW1lPzogc3RyaW5nO1xuICBhY2NvdW50SWRzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgcHJpbWFyeVJlZ2lvbj86IHN0cmluZztcbiAgc2Vjb25kYXJ5UmVnaW9uczogc3RyaW5nW107XG4gIGFsbFJlZ2lvbnM6IHN0cmluZ1tdO1xuICBkaXNhc3RlclJlY292ZXJ5UmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnKGFjY291bnROYW1lPzogc3RyaW5nKTogQ29uZmlnIHtcbiAgY29uc3QgYXBwID0gQXBwLmdldEluc3RhbmNlKCk7XG5cbiAgY29uc3QgY29uZmlnOiBDb25maWcgPSB7XG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIHx8IFwidXMtZWFzdC0xXCIsXG4gICAgZW52aXJvbm1lbnQ6IFwidW5rbm93blwiLFxuICAgIGV4aXN0aW5nQWNjb3VudHM6IFtdLFxuICAgIGNvc3RBbGxvY2F0aW9uVGFnczogW10sXG4gICAgc2Vjb25kYXJ5UmVnaW9uczogW10sXG4gICAgYWxsUmVnaW9uczogW11cbiAgfTtcblxuICBpZiAoIXByb2Nlc3MuZW52LkFXU19SRUdJT04pXG4gICAgRmphbGxMb2dnZXIud2FybihcIkFXU19SRUdJT04gaXMgbm90IHNldCwgZGVmYXVsdGluZyB0byB1cy1lYXN0LTFcIik7XG5cbiAgLy8gUmV0cmlldmUgYW55IHByZS1leGlzdGluZyBhY2NvdW50IGNvbmZpZ1xuICBjb25zdCBmamFsbENvbmZpZyA9IEZqYWxsQ29uZmlnLmxvYWRDb25maWcoKTtcblxuICAvLyBHZXQgZXhpc3RpbmcgYWNjb3VudHNcbiAgY29uZmlnLmV4aXN0aW5nQWNjb3VudHMgPSBmamFsbENvbmZpZy5nZXRFeGlzdGluZ0FjY291bnRzKCk7XG5cbiAgLy8gQnVpbGQgYWNjb3VudCBJRHMgbWFwIGZyb20gcHJvdmlkZXIgYWNjb3VudHMgKG5hbWUg4oaSIGlkKVxuICBjb25zdCBwcm92aWRlckFjY291bnRzID0gZmphbGxDb25maWcucm9vdENvbmZpZy5wcm92aWRlckFjY291bnRzIHx8IFtdO1xuICBpZiAocHJvdmlkZXJBY2NvdW50cy5sZW5ndGggPiAwKSB7XG4gICAgY29uZmlnLmFjY291bnRJZHMgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHBhIG9mIHByb3ZpZGVyQWNjb3VudHMpIHtcbiAgICAgIGNvbmZpZy5hY2NvdW50SWRzW3BhLm5hbWVdID0gcGEuaWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gR2V0IGNvc3QgYWxsb2NhdGlvbiB0YWdzXG4gIGNvbmZpZy5jb3N0QWxsb2NhdGlvblRhZ3MgPSBmamFsbENvbmZpZy5nZXRDb3N0QWxsb2NhdGlvblRhZ3MoKTtcblxuICAvLyBHZXQgcmVnaW9ucyBjb25maWd1cmF0aW9uXG4gIGNvbmZpZy5wcmltYXJ5UmVnaW9uID0gZmphbGxDb25maWcuZ2V0UHJpbWFyeVJlZ2lvbigpO1xuICBjb25maWcuc2Vjb25kYXJ5UmVnaW9ucyA9IGZqYWxsQ29uZmlnLmdldFNlY29uZGFyeVJlZ2lvbnMoKSB8fCBbXTtcbiAgY29uZmlnLmFsbFJlZ2lvbnMgPSBmamFsbENvbmZpZy5nZXRBbGxSZWdpb25zKCk7XG4gIGNvbmZpZy5kaXNhc3RlclJlY292ZXJ5UmVnaW9uID0gZmphbGxDb25maWcuZ2V0RGlzYXN0ZXJSZWNvdmVyeVJlZ2lvbigpO1xuXG4gIC8vIElmIHVuc3BlY2lmaWVkIGFjY291bnQgbmFtZSAtIHRyeSB0byByZXRyaWV2ZSBmcm9tIGNvbnRleHRcbiAgaWYgKCFhY2NvdW50TmFtZSkgYWNjb3VudE5hbWUgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwiYWNjb3VudE5hbWVcIik7XG4gIC8vIElmIHdlIGhhdmUgYW4gYWNjb3VudCBuYW1lIC0gbG9vayBmb3IgYXNzb2NpYXRlZCBwcm92aWRlciBhY2NvdW50XG4gIGlmIChhY2NvdW50TmFtZSkge1xuICAgIGNvbnN0IHByb3ZpZGVyQWNjb3VudCA9IGZqYWxsQ29uZmlnLmdldFByb3ZpZGVyQWNjb3VudChhY2NvdW50TmFtZSk7XG4gICAgaWYgKHByb3ZpZGVyQWNjb3VudCkge1xuICAgICAgY29uZmlnLmFjY291bnRJZCA9IHByb3ZpZGVyQWNjb3VudC5pZDtcbiAgICAgIGNvbmZpZy5hY2NvdW50TmFtZSA9IHByb3ZpZGVyQWNjb3VudC5uYW1lO1xuICAgICAgY29uZmlnLmVudmlyb25tZW50ID0gcHJvdmlkZXJBY2NvdW50LmVudmlyb25tZW50O1xuICAgIH1cbiAgfVxuXG4gIC8vIElmIHdlIHN0aWxsIGRvbid0IGhhdmUgYW4gYWNjb3VudCBuYW1lIC0gdHJ5IHRvIHJldHJpZXZlIGFjY291bnRJZCBmcm9tIGNvbnRleHRcbiAgaWYgKCFjb25maWcuYWNjb3VudE5hbWUpIHtcbiAgICBjb25zdCBhY2NvdW50SWQgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwiYWNjb3VudElkXCIpO1xuICAgIC8vIElmIHdlIGZpbmQgYW4gYWNjb3VudElkIC0gcmV0cmlldmUgdGhlIGFzc29jaWF0ZWQgYWNjb3VudCBmcm9tIGNvbmZpZ1xuICAgIGlmIChhY2NvdW50SWQpIHtcbiAgICAgIGNvbmZpZy5hY2NvdW50SWQgPSBhY2NvdW50SWQ7XG5cbiAgICAgIGNvbnN0IHByb3ZpZGVyQWNjb3VudCA9IGZqYWxsQ29uZmlnLmdldFByb3ZpZGVyQWNjb3VudEJ5SWQoYWNjb3VudElkKTtcbiAgICAgIGlmIChwcm92aWRlckFjY291bnQpIHtcbiAgICAgICAgY29uZmlnLmFjY291bnROYW1lID0gcHJvdmlkZXJBY2NvdW50Lm5hbWU7XG4gICAgICAgIGNvbmZpZy5lbnZpcm9ubWVudCA9IHByb3ZpZGVyQWNjb3VudC5lbnZpcm9ubWVudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGVjayBmb3IgZW52aXJvbm1lbnQgZnJvbSBjb250ZXh0IChoaWdoZXN0IHByaW9yaXR5KVxuICBjb25zdCBjb250ZXh0RW52aXJvbm1lbnQgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KFwiZW52aXJvbm1lbnRcIik7XG4gIGlmIChjb250ZXh0RW52aXJvbm1lbnQpIHtcbiAgICBjb25maWcuZW52aXJvbm1lbnQgPSBjb250ZXh0RW52aXJvbm1lbnQ7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQgJiYgY29uZmlnLmVudmlyb25tZW50ID09PSBcInVua25vd25cIikge1xuICAgIC8vIEZhbGwgYmFjayB0byBFTlZJUk9OTUVOVCB2YXJpYWJsZSBpZiBubyBvdGhlciBzb3VyY2UgZm91bmRcbiAgICBjb25maWcuZW52aXJvbm1lbnQgPSBwcm9jZXNzLmVudi5FTlZJUk9OTUVOVDtcbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldENvbmZpZztcbiJdfQ==
|
package/dist/lib/utils/index.js
CHANGED
|
@@ -14,8 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./capitaliseString"), exports);
|
|
17
18
|
__exportStar(require("./getConfig"), exports);
|
|
18
19
|
__exportStar(require("./resourceNaming"), exports);
|
|
19
20
|
__exportStar(require("./standardTagsAspect"), exports);
|
|
20
21
|
__exportStar(require("./validationLogger"), exports);
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFtQztBQUNuQyw4Q0FBNEI7QUFDNUIsbURBQWlDO0FBQ2pDLHVEQUFxQztBQUNyQyxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jYXBpdGFsaXNlU3RyaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9nZXRDb25maWdcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Jlc291cmNlTmFtaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFuZGFyZFRhZ3NBc3BlY3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3ZhbGlkYXRpb25Mb2dnZXJcIjtcbiJdfQ==
|
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Centralised resource naming for infrastructure.
|
|
3
3
|
* Ensures consistent, predictable names across constructs and tests.
|
|
4
4
|
*
|
|
5
5
|
* AWS Naming Constraints:
|
|
6
6
|
* - DB Instance/Cluster ID: max 63 chars, alphanumeric + hyphens, case-insensitive (lowercased by AWS)
|
|
7
|
-
* - Secret Name: max 512 chars, case-sensitive
|
|
7
|
+
* - Secret Name: max 512 chars, case-sensitive, path-style with `/` is conventional
|
|
8
8
|
* - Proxy Name: max 60 chars, alphanumeric + hyphens
|
|
9
|
+
*
|
|
10
|
+
* RDS identifiers use toKebab() to handle PascalCase/camelCase inputs.
|
|
11
|
+
* Secret names preserve the user's original casing (Secrets Manager is case-sensitive).
|
|
9
12
|
*/
|
|
10
13
|
export declare class ResourceNaming {
|
|
11
14
|
/** RDS Instance identifier. AWS lowercases this. */
|
|
12
|
-
static dbInstanceId(
|
|
15
|
+
static dbInstanceId(name: string): string;
|
|
13
16
|
/** Aurora cluster identifier. Must be lowercase. */
|
|
14
|
-
static clusterId(
|
|
17
|
+
static clusterId(name: string): string;
|
|
15
18
|
/** Global Aurora cluster identifier. Must be lowercase. */
|
|
16
|
-
static globalClusterId(
|
|
19
|
+
static globalClusterId(name: string): string;
|
|
17
20
|
/** Primary cluster ID for GlobalAurora. Must be lowercase. */
|
|
18
|
-
static primaryClusterId(
|
|
21
|
+
static primaryClusterId(name: string): string;
|
|
19
22
|
/** Secondary cluster ID for GlobalAurora. Must be lowercase. */
|
|
20
|
-
static secondaryClusterId(
|
|
23
|
+
static secondaryClusterId(name: string, region: string): string;
|
|
21
24
|
/** RDS Proxy name. Must be lowercase for consistency. */
|
|
22
|
-
static proxyName(
|
|
25
|
+
static proxyName(name: string): string;
|
|
23
26
|
/** Aurora writer instance identifier. */
|
|
24
|
-
static writerInstanceId(
|
|
27
|
+
static writerInstanceId(name: string, suffix?: string): string;
|
|
25
28
|
/** Aurora reader instance identifier. */
|
|
26
|
-
static readerInstanceId(
|
|
29
|
+
static readerInstanceId(name: string, index: number, suffix?: string): string;
|
|
27
30
|
/** RDS read replica identifier. */
|
|
28
|
-
static readReplicaId(
|
|
29
|
-
/** Credentials secret name.
|
|
30
|
-
static credentialsSecretName(
|
|
31
|
-
/** Master secret name for rotation.
|
|
32
|
-
static masterSecretName(
|
|
31
|
+
static readReplicaId(name: string): string;
|
|
32
|
+
/** Credentials secret name. Preserves original casing (Secrets Manager is case-sensitive). */
|
|
33
|
+
static credentialsSecretName(name: string): string;
|
|
34
|
+
/** Master secret name for rotation. Preserves original casing (Secrets Manager is case-sensitive). */
|
|
35
|
+
static masterSecretName(name: string): string;
|
|
33
36
|
/** Security group description for RDS Instance. */
|
|
34
|
-
static instanceSecurityGroupDescription(
|
|
37
|
+
static instanceSecurityGroupDescription(name: string): string;
|
|
35
38
|
/** Security group description for Aurora cluster. */
|
|
36
|
-
static clusterSecurityGroupDescription(
|
|
39
|
+
static clusterSecurityGroupDescription(name: string): string;
|
|
37
40
|
/** Security group description for RDS Proxy. */
|
|
38
|
-
static proxySecurityGroupDescription(
|
|
41
|
+
static proxySecurityGroupDescription(name: string): string;
|
|
39
42
|
/** Security group description for read replica. */
|
|
40
|
-
static readReplicaSecurityGroupDescription(
|
|
43
|
+
static readReplicaSecurityGroupDescription(name: string): string;
|
|
41
44
|
}
|