@fjall/components-infrastructure 0.87.20 → 0.88.3
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 +14 -18
- package/dist/lib/app.js +58 -41
- 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.d.ts +4 -4
- package/dist/lib/config/aws/identityCenter.js +17 -63
- package/dist/lib/config/aws/identityCenterGroupMembership.js +27 -42
- package/dist/lib/config/aws/index.d.ts +0 -8
- package/dist/lib/config/aws/index.js +1 -9
- 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/layers/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets +30 -0
- package/dist/lib/layers/secrets-resolver/bin/resolve-secrets.mjs +212 -0
- package/dist/lib/patterns/aws/account.d.ts +12 -0
- package/dist/lib/patterns/aws/account.js +73 -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 +3 -3
- package/dist/lib/patterns/aws/database.js +18 -15
- 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 +38 -0
- package/dist/lib/patterns/aws/organisation.js +92 -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 +14 -1
- package/dist/lib/resources/aws/compute/lambda.js +45 -13
- 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.d.ts +0 -2
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +9 -46
- package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +1 -2
- package/dist/lib/resources/aws/iam/identityCenter/group.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/group.js +7 -85
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.d.ts +1 -3
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +9 -96
- 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 +76 -5
- 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 +5 -4
- package/dist/lib/resources/aws/storage/ecr.d.ts +3 -1
- package/dist/lib/resources/aws/storage/ecr.js +3 -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 +5 -1
- 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 +39 -35
- package/package.json +5 -6
|
@@ -4,9 +4,12 @@ exports.CustomerManagedKey = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
6
6
|
const constructs_1 = require("constructs");
|
|
7
|
+
const capitaliseString_1 = require("../../../utils/capitaliseString");
|
|
7
8
|
class CustomerManagedKey extends constructs_1.Construct {
|
|
8
9
|
constructor(scope, id, props) {
|
|
9
10
|
super(scope, id);
|
|
11
|
+
// Sanitise id for CloudFormation output keys (must be alphanumeric)
|
|
12
|
+
const outputName = (0, capitaliseString_1.toPascalCase)(id);
|
|
10
13
|
this.key = new aws_kms_1.Key(this, `${id}Key`, {
|
|
11
14
|
description: props.description || `${id} KMS Key`,
|
|
12
15
|
removalPolicy: props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
@@ -14,21 +17,21 @@ class CustomerManagedKey extends constructs_1.Construct {
|
|
|
14
17
|
? aws_cdk_lib_1.Duration.days(14)
|
|
15
18
|
: undefined
|
|
16
19
|
});
|
|
17
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
18
|
-
key: `${
|
|
20
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}KeyArn`, {
|
|
21
|
+
key: `${outputName}Arn`,
|
|
19
22
|
value: this.key.keyArn,
|
|
20
|
-
exportName: `${
|
|
23
|
+
exportName: `${outputName}KeyArn`
|
|
21
24
|
});
|
|
22
25
|
this.alias = new aws_kms_1.Alias(this, `${id}KeyAlias`, {
|
|
23
26
|
aliasName: props.aliasName || `cmk/${id}`,
|
|
24
27
|
targetKey: this.key
|
|
25
28
|
});
|
|
26
|
-
new aws_cdk_lib_1.CfnOutput(this, `${
|
|
27
|
-
key: `${
|
|
29
|
+
new aws_cdk_lib_1.CfnOutput(this, `${outputName}KeyAliasArn`, {
|
|
30
|
+
key: `${outputName}AliasArn`,
|
|
28
31
|
value: this.alias.aliasArn,
|
|
29
|
-
exportName: `${
|
|
32
|
+
exportName: `${outputName}KeyAliasArn`
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
exports.CustomerManagedKey = CustomerManagedKey;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9rbXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWlFO0FBQ2pFLGlEQUFpRDtBQUNqRCwyQ0FBdUM7QUFDdkMsc0VBQStEO0FBb0IvRCxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBSS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixvRUFBb0U7UUFDcEUsTUFBTSxVQUFVLEdBQUcsSUFBQSwrQkFBWSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxhQUFHLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUU7WUFDbkMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLFVBQVU7WUFDakQsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksMkJBQWEsQ0FBQyxNQUFNO1lBQzFELGFBQWEsRUFDWCxLQUFLLENBQUMsYUFBYSxLQUFLLDJCQUFhLENBQUMsT0FBTztnQkFDM0MsQ0FBQyxDQUFDLHNCQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQyxDQUFDLFNBQVM7U0FDaEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLFVBQVUsUUFBUSxFQUFFO1lBQ3pDLEdBQUcsRUFBRSxHQUFHLFVBQVUsS0FBSztZQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNO1lBQ3RCLFVBQVUsRUFBRSxHQUFHLFVBQVUsUUFBUTtTQUNsQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQzVDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sRUFBRSxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsVUFBVSxhQUFhLEVBQUU7WUFDOUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxVQUFVO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDMUIsVUFBVSxFQUFFLEdBQUcsVUFBVSxhQUFhO1NBQ3ZDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxDRCxnREFrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBBbGlhcywgS2V5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyB0b1Bhc2NhbENhc2UgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvY2FwaXRhbGlzZVN0cmluZ1wiO1xuXG5pbnRlcmZhY2UgQ3VzdG9tZXJNYW5hZ2VkS2V5UHJvcHMge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kgZm9yIHRoZSBLTVMga2V5LlxuICAgKlxuICAgKiBJTVBPUlRBTlQ6IEtNUyBrZXlzIGNhbm5vdCBiZSBpbW1lZGlhdGVseSBkZWxldGVkLiBXaGVuIFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgKiBpcyB1c2VkLCB0aGUga2V5IHdpbGwgYmUgc2NoZWR1bGVkIGZvciBkZWxldGlvbiB3aXRoIGEgNy1kYXkgd2FpdGluZyBwZXJpb2RcbiAgICogKEFXUyBtaW5pbXVtKS4gRHVyaW5nIHRoaXMgcGVyaW9kLCB0aGUga2V5IGlzIGRpc2FibGVkIGJ1dCBjYW4gYmUgcmVjb3ZlcmVkLlxuICAgKlxuICAgKiBGb3IgcHJvZHVjdGlvbiB3b3JrbG9hZHMsIGFsd2F5cyB1c2UgUkVUQUlOIChkZWZhdWx0KSB0byBwcmV2ZW50IGFjY2lkZW50YWxcbiAgICogZGF0YSBsb3NzIC0gZGVsZXRpbmcgYSBLTVMga2V5IG1ha2VzIGFsbCBlbmNyeXB0ZWQgZGF0YSBwZXJtYW5lbnRseSB1bnJlY292ZXJhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lck1hbmFnZWRLZXkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkga2V5OiBLZXk7XG4gIHB1YmxpYyByZWFkb25seSBhbGlhczogQWxpYXM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEN1c3RvbWVyTWFuYWdlZEtleVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIFNhbml0aXNlIGlkIGZvciBDbG91ZEZvcm1hdGlvbiBvdXRwdXQga2V5cyAobXVzdCBiZSBhbHBoYW51bWVyaWMpXG4gICAgY29uc3Qgb3V0cHV0TmFtZSA9IHRvUGFzY2FsQ2FzZShpZCk7XG5cbiAgICB0aGlzLmtleSA9IG5ldyBLZXkodGhpcywgYCR7aWR9S2V5YCwge1xuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgPz8gUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgICBwZW5kaW5nV2luZG93OlxuICAgICAgICBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgICAgICA/IER1cmF0aW9uLmRheXMoMTQpXG4gICAgICAgICAgOiB1bmRlZmluZWRcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke291dHB1dE5hbWV9S2V5QXJuYCwge1xuICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUFybmAsXG4gICAgICB2YWx1ZTogdGhpcy5rZXkua2V5QXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7b3V0cHV0TmFtZX1LZXlBcm5gXG4gICAgfSk7XG5cbiAgICB0aGlzLmFsaWFzID0gbmV3IEFsaWFzKHRoaXMsIGAke2lkfUtleUFsaWFzYCwge1xuICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWUgfHwgYGNtay8ke2lkfWAsXG4gICAgICB0YXJnZXRLZXk6IHRoaXMua2V5XG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtvdXRwdXROYW1lfUtleUFsaWFzQXJuYCwge1xuICAgICAga2V5OiBgJHtvdXRwdXROYW1lfUFsaWFzQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmFsaWFzLmFsaWFzQXJuLFxuICAgICAgZXhwb3J0TmFtZTogYCR7b3V0cHV0TmFtZX1LZXlBbGlhc0FybmBcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -32,14 +32,15 @@ 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",
|
|
39
38
|
parameters: {
|
|
40
39
|
Name: props.name,
|
|
41
40
|
Description: props.description || `${id} secure parameter`,
|
|
42
|
-
Value: props.value ||
|
|
41
|
+
Value: props.value ||
|
|
42
|
+
process.env[`CDK_SECURE_STRING_${id}`] ||
|
|
43
|
+
"placeholderValue",
|
|
43
44
|
Type: "SecureString",
|
|
44
45
|
KeyId: this.cmk.alias.keyId
|
|
45
46
|
// TODO: Add tags to the parameter
|
|
@@ -53,7 +54,7 @@ class SecureStringParameter extends constructs_1.Construct {
|
|
|
53
54
|
Name: props.name,
|
|
54
55
|
Description: props.description || `${id} secure parameter`,
|
|
55
56
|
Value: props.value ||
|
|
56
|
-
|
|
57
|
+
process.env[`CDK_SECURE_STRING_${id}`] ||
|
|
57
58
|
"placeholderValue",
|
|
58
59
|
Overwrite: props.overwrite,
|
|
59
60
|
Type: "SecureString",
|
|
@@ -96,4 +97,4 @@ class SecureStringParameter extends constructs_1.Construct {
|
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
99
|
exports.SecureStringParameter = SecureStringParameter;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc2VjcmV0cy9wYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTZDO0FBQzdDLGlEQUFzRDtBQUN0RCxtRUFHc0M7QUFDdEMsMkNBQXVDO0FBRXZDLHlCQUF3QztBQUN4QyxzRUFBbUU7QUFFbkUsTUFBYSxlQUFnQixTQUFRLHFCQUFHLENBQUMsZUFBZTtJQUN0RCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQStCO1FBQ3ZFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGdCQUFnQjtZQUN2RCxJQUFJLEVBQUUscUJBQUcsQ0FBQyxhQUFhLENBQUMsbUJBQW1CO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVJELDBDQVFDO0FBY0QsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUtsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBRXZCLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLHFCQUFrQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO2dCQUNsRCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsVUFBVTtnQkFDakQsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO2FBQzNCLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSx1QkFBdUIsRUFBRTtZQUN6RSxZQUFZLEVBQUUsK0JBQStCO1lBQzdDLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUscUJBQXFCO2dCQUM5QixNQUFNLEVBQUUsY0FBYztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLG1CQUFtQjtvQkFDMUQsS0FBSyxFQUNILEtBQUssQ0FBQyxLQUFLO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDO3dCQUN0QyxrQkFBa0I7b0JBQ3BCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxtQkFBbUI7b0JBQzFELEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSzt3QkFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQzt3QkFDdEMsa0JBQWtCO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDakI7YUFDRjtZQUNELE1BQU0sRUFBRSwwQ0FBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO3FCQUMzRTtpQkFDRixDQUFDO2dCQUNGLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLGFBQWEsS0FBSyxDQUFDLElBQUksRUFBRTtxQkFDeEU7aUJBQ0YsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdkZELHNEQXVGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19zc20gYXMgc3NtIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHtcbiAgQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3ksXG4gIFBoeXNpY2FsUmVzb3VyY2VJZFxufSBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IHR5cGUgS2V5VmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSB9IGZyb20gXCIuL1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdQYXJhbWV0ZXIgZXh0ZW5kcyBzc20uU3RyaW5nUGFyYW1ldGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHNzbS5TdHJpbmdQYXJhbWV0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IFNTTSBQYXJhbWV0ZXJgLFxuICAgICAgdGllcjogc3NtLlBhcmFtZXRlclRpZXIuSU5URUxMSUdFTlRfVElFUklOR1xuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBTZWN1cmVTdHJpbmdQYXJhbWV0ZXJQcm9wcyB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBhbGlhc05hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNtaz86IEN1c3RvbWVyTWFuYWdlZEtleTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVN0cmluZ1BhcmFtZXRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjbWs6IEN1c3RvbWVyTWFuYWdlZEtleTtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlcjogQXdzQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyZVN0cmluZ1BhcmFtZXRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMubmFtZSA9IHByb3BzLm5hbWU7XG5cbiAgICBpZiAocHJvcHMuY21rKSB7XG4gICAgICB0aGlzLmNtayA9IHByb3BzLmNtaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbWsgPSBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KHRoaXMsIGAke2lkfUtleWAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWVcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucGFyYW1ldGVyID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGAke2lkfVNlY3VyZVN0cmluZ1BhcmFtZXRlcmAsIHtcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlNlY3VyZVN0cmluZ1BhcmFtZXRlclwiLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBwcm9jZXNzLmVudltgQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gXSB8fFxuICAgICAgICAgICAgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwiY3JlYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8XG4gICAgICAgICAgICBwcm9jZXNzLmVudltgQ0RLX1NFQ1VSRV9TVFJJTkdfJHtpZH1gXSB8fFxuICAgICAgICAgICAgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgT3ZlcndyaXRlOiBwcm9wcy5vdmVyd3JpdGUsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJEZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBvbGljeTogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RW5jcnlwdFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmttczoke3Byb3BzLnJlZ2lvbn06JHtwcm9wcy5hY2NvdW50SWR9OmtleS8ke3RoaXMuY21rLmtleS5rZXlJZH1gXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJzc206RGVsZXRlUGFyYW1ldGVyXCIsXG4gICAgICAgICAgICBcInNzbTpQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIFwic3NtOkFkZFRhZ3NUb1Jlc291cmNlXCIsXG4gICAgICAgICAgICBcImxvZ3M6RGVsZXRlUmV0ZW50aW9uUG9saWN5XCIsXG4gICAgICAgICAgICBcImxvZ3M6UHV0UmV0ZW50aW9uUG9saWN5XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6c3NtOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnRJZH06cGFyYW1ldGVyJHtwcm9wcy5uYW1lfWBcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgaWYgKCFwcm9wcy5jbWspIHtcbiAgICAgIHRoaXMucGFyYW1ldGVyLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmNtayk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -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,17 @@ 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(new aws_cdk_lib_1.CfnOutput(this,
|
|
25
|
+
this.outputs.push(new aws_cdk_lib_1.CfnOutput(this, `${id}RepositoryName`, {
|
|
26
26
|
key: `${id}RepositoryName`,
|
|
27
27
|
value: this.repositoryName,
|
|
28
28
|
exportName: `${id}RepositoryName`
|
|
29
29
|
}));
|
|
30
30
|
}
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
31
|
static getRepositoryProps(props) {
|
|
33
32
|
// todo: lifeCycleRules
|
|
34
33
|
// todo: Encryption & EncryptionKey (default is AWS managed KMS key)
|
|
35
34
|
return {
|
|
35
|
+
...(props?.repositoryName && { repositoryName: props.repositoryName }),
|
|
36
36
|
imageScanOnPush: true,
|
|
37
37
|
imageTagMutability: aws_ecr_1.TagMutability.MUTABLE,
|
|
38
38
|
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN
|
|
@@ -43,4 +43,4 @@ class Ecr extends aws_ecr_1.Repository {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
exports.Ecr = Ecr;
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBSTZCO0FBQzdCLDZDQUF1RDtBQVV2RCxNQUFhLFVBQVU7SUFDckIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEdBQVEsRUFBRSxLQUFnQixFQUFFLEVBQUU7WUFDcEMsTUFBTSxRQUFRLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBRXpDLG9FQUFvRTtZQUNwRSxNQUFNLFdBQVcsR0FBZ0I7Z0JBQy9CLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYzthQUNuQyxDQUFDO1lBQ0YsR0FBRyxDQUFDLG9CQUFvQixFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRS9DLE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBZkQsZ0NBZUM7QUFFRCxNQUFhLEdBQUksU0FBUSxvQkFBVTtJQUdqQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWdCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBSDFDLFlBQU8sR0FBZ0IsRUFBRSxDQUFDO1FBS2hDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUNmLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLGdCQUFnQixFQUFFO1lBQ3pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCO1lBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsY0FBYztZQUMxQixVQUFVLEVBQUUsR0FBRyxFQUFFLGdCQUFnQjtTQUNsQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBZ0I7UUFDeEMsdUJBQXVCO1FBQ3ZCLG9FQUFvRTtRQUNwRSxPQUFPO1lBQ0wsR0FBRyxDQUFDLEtBQUssRUFBRSxjQUFjLElBQUksRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3RFLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGtCQUFrQixFQUFFLHVCQUFhLENBQUMsT0FBTztZQUN6QyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO1NBQ3BDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFVLEVBQUUsS0FBZ0I7UUFDdkMsT0FBTyxDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQztDQUNGO0FBN0JELGtCQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIFJlcG9zaXRvcnksXG4gIHR5cGUgUmVwb3NpdG9yeVByb3BzLFxuICBUYWdNdXRhYmlsaXR5XG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWNyXCI7XG5pbXBvcnQgeyBDZm5PdXRwdXQsIFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IHR5cGUgQXBwIGZyb20gXCIuLi8uLi8uLi9hcHBcIjtcbmltcG9ydCB7IHR5cGUgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2Jhc2UvYXdzU3RhY2tcIjtcbmltcG9ydCB7IHR5cGUgTWFuaWZlc3RFY3IgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbWFuaWZlc3RXcml0ZXIuanNcIjtcblxuaW50ZXJmYWNlIEVjclByb3BzIHtcbiAgcmVwb3NpdG9yeU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBFY3JGYWN0b3J5IHtcbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzPzogRWNyUHJvcHMpIHtcbiAgICByZXR1cm4gKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiB7XG4gICAgICBjb25zdCBlY3JQcm9wcyA9IHByb3BzID8/IHt9O1xuICAgICAgY29uc3QgZWNyID0gbmV3IEVjcihzY29wZSwgaWQsIGVjclByb3BzKTtcblxuICAgICAgLy8gUmVnaXN0ZXIgRUNSIHJlcG9zaXRvcnkgd2l0aCBtYW5pZmVzdCBjb2xsZWN0b3IgZm9yIENMSSBkaXNjb3ZlcnlcbiAgICAgIGNvbnN0IG1hbmlmZXN0RWNyOiBNYW5pZmVzdEVjciA9IHtcbiAgICAgICAgcmVwb3NpdG9yeU5hbWU6IGVjci5yZXBvc2l0b3J5TmFtZVxuICAgICAgfTtcbiAgICAgIGFwcC5nZXRNYW5pZmVzdENvbGxlY3RvcigpLnNldEVjcihtYW5pZmVzdEVjcik7XG5cbiAgICAgIHJldHVybiBlY3I7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgRWNyIGV4dGVuZHMgUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgb3V0cHV0czogQ2ZuT3V0cHV0W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEVjclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBFY3IuZ2V0UmVwb3NpdG9yeVByb3BzKHByb3BzKSk7XG5cbiAgICB0aGlzLm91dHB1dHMucHVzaChcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9UmVwb3NpdG9yeU5hbWVgLCB7XG4gICAgICAgIGtleTogYCR7aWR9UmVwb3NpdG9yeU5hbWVgLFxuICAgICAgICB2YWx1ZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7aWR9UmVwb3NpdG9yeU5hbWVgXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgZ2V0UmVwb3NpdG9yeVByb3BzKHByb3BzPzogRWNyUHJvcHMpOiBSZXBvc2l0b3J5UHJvcHMge1xuICAgIC8vIHRvZG86IGxpZmVDeWNsZVJ1bGVzXG4gICAgLy8gdG9kbzogRW5jcnlwdGlvbiAmIEVuY3J5cHRpb25LZXkgKGRlZmF1bHQgaXMgQVdTIG1hbmFnZWQgS01TIGtleSlcbiAgICByZXR1cm4ge1xuICAgICAgLi4uKHByb3BzPy5yZXBvc2l0b3J5TmFtZSAmJiB7IHJlcG9zaXRvcnlOYW1lOiBwcm9wcy5yZXBvc2l0b3J5TmFtZSB9KSxcbiAgICAgIGltYWdlU2Nhbk9uUHVzaDogdHJ1ZSxcbiAgICAgIGltYWdlVGFnTXV0YWJpbGl0eTogVGFnTXV0YWJpbGl0eS5NVVRBQkxFLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkKGlkOiBzdHJpbmcsIHByb3BzPzogRWNyUHJvcHMpOiAoc2NvcGU6IFN0YWNrQnVpbGRlcikgPT4gRWNyIHtcbiAgICByZXR1cm4gKHNjb3BlOiBTdGFja0J1aWxkZXIpID0+IG5ldyBFY3Ioc2NvcGUuZ2V0U3RhY2soKSwgaWQsIHByb3BzKTtcbiAgfVxufVxuIl19
|
|
@@ -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=
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type Account } from "@aws-sdk/client-organizations";
|
|
2
|
-
|
|
2
|
+
export interface ICostAllocationTags {
|
|
3
|
+
TagKey: string;
|
|
4
|
+
Status: string;
|
|
5
|
+
}
|
|
3
6
|
export interface Config {
|
|
4
7
|
region: string;
|
|
5
8
|
environment: string;
|
|
@@ -7,6 +10,7 @@ export interface Config {
|
|
|
7
10
|
costAllocationTags: ICostAllocationTags[];
|
|
8
11
|
accountId?: string;
|
|
9
12
|
accountName?: string;
|
|
13
|
+
accountIds?: Record<string, string>;
|
|
10
14
|
primaryRegion?: string;
|
|
11
15
|
secondaryRegions: string[];
|
|
12
16
|
allRegions: string[];
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3V0aWxzL2dldENvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXlCQSw4QkE0RUM7QUFuR0QsZ0NBQXlCO0FBQ3pCLHNDQUFvRDtBQUNwRCx5REFBaUQ7QUFxQmpELFNBQWdCLFNBQVMsQ0FBQyxXQUFvQjtJQUM1QyxNQUFNLEdBQUcsR0FBRyxhQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFOUIsTUFBTSxNQUFNLEdBQVc7UUFDckIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLFdBQVc7UUFDN0MsV0FBVyxFQUFFLFNBQVM7UUFDdEIsZ0JBQWdCLEVBQUUsRUFBRTtRQUNwQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsVUFBVSxFQUFFLEVBQUU7S0FDZixDQUFDO0lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtRQUN6Qiw4QkFBVyxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBRXJFLDJDQUEyQztJQUMzQyxNQUFNLFdBQVcsR0FBRyxhQUFXLENBQUMsVUFBVSxFQUFFLENBQUM7SUFFN0Msd0JBQXdCO0lBQ3hCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUU1RCwyREFBMkQ7SUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztJQUN2RSxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUN2QixLQUFLLE1BQU0sRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQyxDQUFDO0lBQ0gsQ0FBQztJQUVELDJCQUEyQjtJQUMzQixNQUFNLENBQUMsa0JBQWtCLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFFaEUsNEJBQTRCO0lBQzVCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDdEQsTUFBTSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNsRSxNQUFNLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNoRCxNQUFNLENBQUMsc0JBQXNCLEdBQUcsV0FBVyxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFFeEUsNkRBQTZEO0lBQzdELElBQUksQ0FBQyxXQUFXO1FBQUUsV0FBVyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLG9FQUFvRTtJQUNwRSxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNwRSxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDMUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0lBRUQsa0ZBQWtGO0lBQ2xGLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsd0VBQXdFO1FBQ3hFLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxNQUFNLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUU3QixNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdEUsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDO2dCQUMxQyxNQUFNLENBQUMsV0FBVyxHQUFHLGVBQWUsQ0FBQyxXQUFXLENBQUM7WUFDbkQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsd0RBQXdEO0lBQ3hELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakUsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUM7SUFDMUMsQ0FBQztTQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN2RSw2REFBNkQ7UUFDN0QsTUFBTSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELGtCQUFlLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQWNjb3VudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtb3JnYW5pemF0aW9uc1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi9hcHBcIjtcbmltcG9ydCB7IENvbmZpZyBhcyBGamFsbENvbmZpZyB9IGZyb20gXCJAZmphbGwvdXRpbFwiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi92YWxpZGF0aW9uTG9nZ2VyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvc3RBbGxvY2F0aW9uVGFncyB7XG4gIFRhZ0tleTogc3RyaW5nO1xuICBTdGF0dXM6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICByZWdpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZXhpc3RpbmdBY2NvdW50czogQWNjb3VudFtdO1xuICBjb3N0QWxsb2NhdGlvblRhZ3M6IElDb3N0QWxsb2NhdGlvblRhZ3NbXTtcbiAgYWNjb3VudElkPzogc3RyaW5nO1xuICBhY2NvdW50TmFtZT86IHN0cmluZztcbiAgYWNjb3VudElkcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHByaW1hcnlSZWdpb24/OiBzdHJpbmc7XG4gIHNlY29uZGFyeVJlZ2lvbnM6IHN0cmluZ1tdO1xuICBhbGxSZWdpb25zOiBzdHJpbmdbXTtcbiAgZGlzYXN0ZXJSZWNvdmVyeVJlZ2lvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZyhhY2NvdW50TmFtZT86IHN0cmluZyk6IENvbmZpZyB7XG4gIGNvbnN0IGFwcCA9IEFwcC5nZXRJbnN0YW5jZSgpO1xuXG4gIGNvbnN0IGNvbmZpZzogQ29uZmlnID0ge1xuICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBcInVzLWVhc3QtMVwiLFxuICAgIGVudmlyb25tZW50OiBcInVua25vd25cIixcbiAgICBleGlzdGluZ0FjY291bnRzOiBbXSxcbiAgICBjb3N0QWxsb2NhdGlvblRhZ3M6IFtdLFxuICAgIHNlY29uZGFyeVJlZ2lvbnM6IFtdLFxuICAgIGFsbFJlZ2lvbnM6IFtdXG4gIH07XG5cbiAgaWYgKCFwcm9jZXNzLmVudi5BV1NfUkVHSU9OKVxuICAgIEZqYWxsTG9nZ2VyLndhcm4oXCJBV1NfUkVHSU9OIGlzIG5vdCBzZXQsIGRlZmF1bHRpbmcgdG8gdXMtZWFzdC0xXCIpO1xuXG4gIC8vIFJldHJpZXZlIGFueSBwcmUtZXhpc3RpbmcgYWNjb3VudCBjb25maWdcbiAgY29uc3QgZmphbGxDb25maWcgPSBGamFsbENvbmZpZy5sb2FkQ29uZmlnKCk7XG5cbiAgLy8gR2V0IGV4aXN0aW5nIGFjY291bnRzXG4gIGNvbmZpZy5leGlzdGluZ0FjY291bnRzID0gZmphbGxDb25maWcuZ2V0RXhpc3RpbmdBY2NvdW50cygpO1xuXG4gIC8vIEJ1aWxkIGFjY291bnQgSURzIG1hcCBmcm9tIHByb3ZpZGVyIGFjY291bnRzIChuYW1lIOKGkiBpZClcbiAgY29uc3QgcHJvdmlkZXJBY2NvdW50cyA9IGZqYWxsQ29uZmlnLnJvb3RDb25maWcucHJvdmlkZXJBY2NvdW50cyB8fCBbXTtcbiAgaWYgKHByb3ZpZGVyQWNjb3VudHMubGVuZ3RoID4gMCkge1xuICAgIGNvbmZpZy5hY2NvdW50SWRzID0ge307XG4gICAgZm9yIChjb25zdCBwYSBvZiBwcm92aWRlckFjY291bnRzKSB7XG4gICAgICBjb25maWcuYWNjb3VudElkc1twYS5uYW1lXSA9IHBhLmlkO1xuICAgIH1cbiAgfVxuXG4gIC8vIEdldCBjb3N0IGFsbG9jYXRpb24gdGFnc1xuICBjb25maWcuY29zdEFsbG9jYXRpb25UYWdzID0gZmphbGxDb25maWcuZ2V0Q29zdEFsbG9jYXRpb25UYWdzKCk7XG5cbiAgLy8gR2V0IHJlZ2lvbnMgY29uZmlndXJhdGlvblxuICBjb25maWcucHJpbWFyeVJlZ2lvbiA9IGZqYWxsQ29uZmlnLmdldFByaW1hcnlSZWdpb24oKTtcbiAgY29uZmlnLnNlY29uZGFyeVJlZ2lvbnMgPSBmamFsbENvbmZpZy5nZXRTZWNvbmRhcnlSZWdpb25zKCkgfHwgW107XG4gIGNvbmZpZy5hbGxSZWdpb25zID0gZmphbGxDb25maWcuZ2V0QWxsUmVnaW9ucygpO1xuICBjb25maWcuZGlzYXN0ZXJSZWNvdmVyeVJlZ2lvbiA9IGZqYWxsQ29uZmlnLmdldERpc2FzdGVyUmVjb3ZlcnlSZWdpb24oKTtcblxuICAvLyBJZiB1bnNwZWNpZmllZCBhY2NvdW50IG5hbWUgLSB0cnkgdG8gcmV0cmlldmUgZnJvbSBjb250ZXh0XG4gIGlmICghYWNjb3VudE5hbWUpIGFjY291bnROYW1lID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dChcImFjY291bnROYW1lXCIpO1xuICAvLyBJZiB3ZSBoYXZlIGFuIGFjY291bnQgbmFtZSAtIGxvb2sgZm9yIGFzc29jaWF0ZWQgcHJvdmlkZXIgYWNjb3VudFxuICBpZiAoYWNjb3VudE5hbWUpIHtcbiAgICBjb25zdCBwcm92aWRlckFjY291bnQgPSBmamFsbENvbmZpZy5nZXRQcm92aWRlckFjY291bnQoYWNjb3VudE5hbWUpO1xuICAgIGlmIChwcm92aWRlckFjY291bnQpIHtcbiAgICAgIGNvbmZpZy5hY2NvdW50SWQgPSBwcm92aWRlckFjY291bnQuaWQ7XG4gICAgICBjb25maWcuYWNjb3VudE5hbWUgPSBwcm92aWRlckFjY291bnQubmFtZTtcbiAgICAgIGNvbmZpZy5lbnZpcm9ubWVudCA9IHByb3ZpZGVyQWNjb3VudC5lbnZpcm9ubWVudDtcbiAgICB9XG4gIH1cblxuICAvLyBJZiB3ZSBzdGlsbCBkb24ndCBoYXZlIGFuIGFjY291bnQgbmFtZSAtIHRyeSB0byByZXRyaWV2ZSBhY2NvdW50SWQgZnJvbSBjb250ZXh0XG4gIGlmICghY29uZmlnLmFjY291bnROYW1lKSB7XG4gICAgY29uc3QgYWNjb3VudElkID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dChcImFjY291bnRJZFwiKTtcbiAgICAvLyBJZiB3ZSBmaW5kIGFuIGFjY291bnRJZCAtIHJldHJpZXZlIHRoZSBhc3NvY2lhdGVkIGFjY291bnQgZnJvbSBjb25maWdcbiAgICBpZiAoYWNjb3VudElkKSB7XG4gICAgICBjb25maWcuYWNjb3VudElkID0gYWNjb3VudElkO1xuXG4gICAgICBjb25zdCBwcm92aWRlckFjY291bnQgPSBmamFsbENvbmZpZy5nZXRQcm92aWRlckFjY291bnRCeUlkKGFjY291bnRJZCk7XG4gICAgICBpZiAocHJvdmlkZXJBY2NvdW50KSB7XG4gICAgICAgIGNvbmZpZy5hY2NvdW50TmFtZSA9IHByb3ZpZGVyQWNjb3VudC5uYW1lO1xuICAgICAgICBjb25maWcuZW52aXJvbm1lbnQgPSBwcm92aWRlckFjY291bnQuZW52aXJvbm1lbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgZm9yIGVudmlyb25tZW50IGZyb20gY29udGV4dCAoaGlnaGVzdCBwcmlvcml0eSlcbiAgY29uc3QgY29udGV4dEVudmlyb25tZW50ID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dChcImVudmlyb25tZW50XCIpO1xuICBpZiAoY29udGV4dEVudmlyb25tZW50KSB7XG4gICAgY29uZmlnLmVudmlyb25tZW50ID0gY29udGV4dEVudmlyb25tZW50O1xuICB9IGVsc2UgaWYgKHByb2Nlc3MuZW52LkVOVklST05NRU5UICYmIGNvbmZpZy5lbnZpcm9ubWVudCA9PT0gXCJ1bmtub3duXCIpIHtcbiAgICAvLyBGYWxsIGJhY2sgdG8gRU5WSVJPTk1FTlQgdmFyaWFibGUgaWYgbm8gb3RoZXIgc291cmNlIGZvdW5kXG4gICAgY29uZmlnLmVudmlyb25tZW50ID0gcHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQ7XG4gIH1cblxuICByZXR1cm4gY29uZmlnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRDb25maWc7XG4iXX0=
|
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
|
}
|