@inizioevoke/evosynth 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +12 -0
- package/dist/constructs/certificatemanager.d.ts +12 -0
- package/dist/constructs/certificatemanager.js +19 -0
- package/dist/constructs/cloudfront.d.ts +55 -0
- package/dist/constructs/cloudfront.js +84 -0
- package/dist/constructs/codebuild.d.ts +31 -0
- package/dist/constructs/codebuild.js +95 -0
- package/dist/constructs/codepipeline.d.ts +30 -0
- package/dist/constructs/codepipeline.js +63 -0
- package/dist/constructs/route53.d.ts +14 -0
- package/dist/constructs/route53.js +24 -0
- package/dist/constructs/s3.d.ts +11 -0
- package/dist/constructs/s3.js +17 -0
- package/dist/constructs/ssm.d.ts +9 -0
- package/dist/constructs/ssm.js +17 -0
- package/dist/constructs/waf.d.ts +21 -0
- package/dist/constructs/waf.js +89 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.js +26 -0
- package/dist/lib/const.d.ts +1 -0
- package/dist/lib/const.js +2 -0
- package/dist/lib/csv-redirects.d.ts +3 -0
- package/dist/lib/csv-redirects.js +124 -0
- package/dist/lib/tags.d.ts +19 -0
- package/dist/lib/tags.js +47 -0
- package/dist/lib/types.d.ts +14 -0
- package/dist/lib/types.js +2 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.js +7 -0
- package/dist/lib/version.d.ts +1 -0
- package/dist/lib/version.js +5 -0
- package/dist/stacks/web-static-serverless/codepipeline-stack.d.ts +17 -0
- package/dist/stacks/web-static-serverless/codepipeline-stack.js +28 -0
- package/dist/stacks/web-static-serverless/web-global-stack.d.ts +43 -0
- package/dist/stacks/web-static-serverless/web-global-stack.js +142 -0
- package/dist/stages/str8r-clm-stage.d.ts +17 -0
- package/dist/stages/str8r-clm-stage.js +41 -0
- package/dist/stages/web-static-serverless-stage.d.ts +19 -0
- package/dist/stages/web-static-serverless-stage.js +51 -0
- package/dist/templates/cffn-default-doc-basic-auth.js +155 -0
- package/dist/templates/cffn-default-doc.js +132 -0
- package/inizioevoke-evosynth.code-workspace +8 -0
- package/package.json +24 -0
- package/readme.md +114 -0
- package/samples/app.ts +103 -0
- package/samples/codebuild/buildspec.yml +24 -0
- package/samples/config/redirects.csv +6 -0
- package/src/constructs/certificatemanager.ts +28 -0
- package/src/constructs/cloudfront.ts +148 -0
- package/src/constructs/codebuild.ts +124 -0
- package/src/constructs/codepipeline.ts +93 -0
- package/src/constructs/route53.ts +34 -0
- package/src/constructs/s3.ts +25 -0
- package/src/constructs/ssm.ts +24 -0
- package/src/constructs/waf.ts +118 -0
- package/src/index.ts +35 -0
- package/src/lib/const.ts +1 -0
- package/src/lib/csv-redirects.ts +139 -0
- package/src/lib/tags.ts +55 -0
- package/src/lib/types.ts +17 -0
- package/src/lib/utils.ts +7 -0
- package/src/lib/version.ts +6 -0
- package/src/stacks/web-static-serverless/codepipeline-stack.ts +42 -0
- package/src/stacks/web-static-serverless/web-global-stack.ts +184 -0
- package/src/stages/str8r-clm-stage.ts +57 -0
- package/src/stages/web-static-serverless-stage.ts +69 -0
- package/src/templates/cffn-default-doc-basic-auth.js +155 -0
- package/src/templates/cffn-default-doc.js +132 -0
- package/tasks/clean.js +7 -0
- package/tasks/copy-templates.js +13 -0
- package/tsconfig.json +32 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { RemovalPolicy } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
4
|
+
import { tagResource } from '../lib/tags.js';
|
|
5
|
+
import { cleanResourceName } from '../lib/utils.js';
|
|
6
|
+
export class CloudFrontWebAcl extends Construct {
|
|
7
|
+
acl;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id);
|
|
10
|
+
props.name = cleanResourceName(props.name);
|
|
11
|
+
if (!props.managedRules) {
|
|
12
|
+
props.managedRules = [
|
|
13
|
+
'AWSManagedRulesAmazonIpReputationList',
|
|
14
|
+
'AWSManagedRulesAnonymousIpList',
|
|
15
|
+
'AWSManagedRulesCommonRuleSet',
|
|
16
|
+
'AWSManagedRulesKnownBadInputsRuleSet',
|
|
17
|
+
'AWSManagedRulesBotControlRuleSet'
|
|
18
|
+
];
|
|
19
|
+
}
|
|
20
|
+
this.acl = new CfnWebACL(this, 'CloudFrontWebAcl', {
|
|
21
|
+
scope: 'CLOUDFRONT',
|
|
22
|
+
name: props.name,
|
|
23
|
+
defaultAction: { allow: {} },
|
|
24
|
+
visibilityConfig: {
|
|
25
|
+
cloudWatchMetricsEnabled: true,
|
|
26
|
+
sampledRequestsEnabled: true,
|
|
27
|
+
metricName: `${props.name}-metrics`
|
|
28
|
+
},
|
|
29
|
+
rules: transformManagedRules(props.managedRules)
|
|
30
|
+
});
|
|
31
|
+
tagResource(this.acl, props.tags);
|
|
32
|
+
if (typeof props.destroy == 'boolean') {
|
|
33
|
+
this.acl.applyRemovalPolicy(props.destroy ? RemovalPolicy.DESTROY : RemovalPolicy.RETAIN);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export class ApiGatewayWebAcl extends Construct {
|
|
38
|
+
acl;
|
|
39
|
+
constructor(scope, id, props) {
|
|
40
|
+
super(scope, id);
|
|
41
|
+
props.name = cleanResourceName(props.name);
|
|
42
|
+
if (!props.managedRules) {
|
|
43
|
+
props.managedRules = [
|
|
44
|
+
'AWSManagedRulesAmazonIpReputationList',
|
|
45
|
+
'AWSManagedRulesAnonymousIpList',
|
|
46
|
+
'AWSManagedRulesCommonRuleSet',
|
|
47
|
+
'AWSManagedRulesSQLiRuleSet',
|
|
48
|
+
'AWSManagedRulesKnownBadInputsRuleSet',
|
|
49
|
+
'AWSManagedRulesBotControlRuleSet'
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
this.acl = new CfnWebACL(this, 'ApiGatewayWebAcl', {
|
|
53
|
+
scope: props.aclScope ?? 'REGIONAL',
|
|
54
|
+
name: props.name,
|
|
55
|
+
defaultAction: { allow: {} },
|
|
56
|
+
visibilityConfig: {
|
|
57
|
+
cloudWatchMetricsEnabled: true,
|
|
58
|
+
sampledRequestsEnabled: true,
|
|
59
|
+
metricName: `${props.name}-metrics`
|
|
60
|
+
},
|
|
61
|
+
rules: transformManagedRules(props.managedRules)
|
|
62
|
+
});
|
|
63
|
+
tagResource(this.acl, props.tags);
|
|
64
|
+
if (typeof props.destroy == 'boolean') {
|
|
65
|
+
this.acl.applyRemovalPolicy(props.destroy ? RemovalPolicy.DESTROY : RemovalPolicy.RETAIN);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function transformManagedRules(rules) {
|
|
70
|
+
return rules.map((ruleName, i) => {
|
|
71
|
+
return {
|
|
72
|
+
name: `AWS-${ruleName}`,
|
|
73
|
+
priority: i,
|
|
74
|
+
statement: {
|
|
75
|
+
managedRuleGroupStatement: {
|
|
76
|
+
name: ruleName,
|
|
77
|
+
vendorName: 'AWS'
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
overrideAction: { none: {} },
|
|
81
|
+
visibilityConfig: {
|
|
82
|
+
cloudWatchMetricsEnabled: true,
|
|
83
|
+
sampledRequestsEnabled: true,
|
|
84
|
+
metricName: `AWS-${ruleName}`
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnN0cnVjdHMvd2FmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0JwRCxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsU0FBUztJQUM3QixHQUFHLENBQVk7SUFFL0IsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE0QjtRQUNwRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLEtBQUssQ0FBQyxJQUFJLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLFlBQVksR0FBRztnQkFDbkIsdUNBQXVDO2dCQUN2QyxnQ0FBZ0M7Z0JBQ2hDLDhCQUE4QjtnQkFDOUIsc0NBQXNDO2dCQUN0QyxrQ0FBa0M7YUFDbkMsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUNqRCxLQUFLLEVBQUUsWUFBWTtZQUNuQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUM1QixnQkFBZ0IsRUFBRTtnQkFDaEIsd0JBQXdCLEVBQUUsSUFBSTtnQkFDOUIsc0JBQXNCLEVBQUUsSUFBSTtnQkFDNUIs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b2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2ZuV2ViQUNMIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXdhZnYyJztcbmltcG9ydCB7IHRhZ1Jlc291cmNlIH0gZnJvbSAnLi4vbGliL3RhZ3MuanMnO1xuaW1wb3J0IHsgY2xlYW5SZXNvdXJjZU5hbWUgfSBmcm9tICcuLi9saWIvdXRpbHMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVByb3BzIH0gZnJvbSAnLi4vbGliL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgV2ViQWNsTWFuYWdlZFJ1bGUgPSBcbiAgJ0FXU01hbmFnZWRSdWxlc0FtYXpvbklwUmVwdXRhdGlvbkxpc3QnIHxcbiAgJ0FXU01hbmFnZWRSdWxlc0Fub255bW91c0lwTGlzdCcgfCBcbiAgJ0FXU01hbmFnZWRSdWxlc0FudGlERG9TUnVsZVNldCcgfCBcbiAgJ0FXU01hbmFnZWRSdWxlc0JvdENvbnRyb2xSdWxlU2V0JyB8XG4gICdBV1NNYW5hZ2VkUnVsZXNDb21tb25SdWxlU2V0JyB8XG4gICdBV1NNYW5hZ2VkUnVsZXNLbm93bkJhZElucHV0c1J1bGVTZXQnIHxcbiAgJ0FXU01hbmFnZWRSdWxlc1NRTGlSdWxlU2V0JztcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250V2ViQWNsUHJvcHMgZXh0ZW5kcyBSZXNvdXJjZVByb3BzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBtYW5hZ2VkUnVsZXM/OiAoV2ViQWNsTWFuYWdlZFJ1bGUgJiBzdHJpbmcpW107XG59XG5leHBvcnQgY2xhc3MgQ2xvdWRGcm9udFdlYkFjbCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBhY2w6IENmbldlYkFDTDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRGcm9udFdlYkFjbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHByb3BzLm5hbWUgPSBjbGVhblJlc291cmNlTmFtZShwcm9wcy5uYW1lKTtcblxuICAgIGlmICghcHJvcHMubWFuYWdlZFJ1bGVzKSB7XG4gICAgICBwcm9wcy5tYW5hZ2VkUnVsZXMgPSBbXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNBbWF6b25JcFJlcHV0YXRpb25MaXN0JyxcbiAgICAgICAgJ0FXU01hbmFnZWRSdWxlc0Fub255bW91c0lwTGlzdCcsXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNDb21tb25SdWxlU2V0JyxcbiAgICAgICAgJ0FXU01hbmFnZWRSdWxlc0tub3duQmFkSW5wdXRzUnVsZVNldCcsXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNCb3RDb250cm9sUnVsZVNldCdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgdGhpcy5hY2wgPSBuZXcgQ2ZuV2ViQUNMKHRoaXMsICdDbG91ZEZyb250V2ViQWNsJywge1xuICAgICAgc2NvcGU6ICdDTE9VREZST05UJyxcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZWZhdWx0QWN0aW9uOiB7IGFsbG93OiB7fSB9LFxuICAgICAgdmlzaWJpbGl0eUNvbmZpZzoge1xuICAgICAgICBjbG91ZFdhdGNoTWV0cmljc0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIHNhbXBsZWRSZXF1ZXN0c0VuYWJsZWQ6IHRydWUsXG4gICAgICAgIG1ldHJpY05hbWU6IGAke3Byb3BzLm5hbWV9LW1ldHJpY3NgXG4gICAgICB9LFxuICAgICAgcnVsZXM6IHRyYW5zZm9ybU1hbmFnZWRSdWxlcyhwcm9wcy5tYW5hZ2VkUnVsZXMpXG4gICAgfSk7XG4gICAgdGFnUmVzb3VyY2UodGhpcy5hY2wsIHByb3BzLnRhZ3MpO1xuICAgIGlmICh0eXBlb2YgcHJvcHMuZGVzdHJveSA9PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuYWNsLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5kZXN0cm95ID8gUmVtb3ZhbFBvbGljeS5ERVNUUk9ZIDogUmVtb3ZhbFBvbGljeS5SRVRBSU4pO1xuICAgIH0gXG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlHYXRld2F5V2ViQWNsUHJvcHMgZXh0ZW5kcyBSZXNvdXJjZVByb3BzIHtcbiAgbmFtZTogc3RyaW5nO1xuICBhY2xTY29wZT86ICdDTE9VREZST05UJyB8ICdSRUdJT05BTCc7XG4gIG1hbmFnZWRSdWxlcz86IChXZWJBY2xNYW5hZ2VkUnVsZSAmIHN0cmluZylbXTtcbn1cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5V2ViQWNsIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGFjbDogQ2ZuV2ViQUNMO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBpR2F0ZXdheVdlYkFjbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHByb3BzLm5hbWUgPSBjbGVhblJlc291cmNlTmFtZShwcm9wcy5uYW1lKTtcblxuICAgIGlmICghcHJvcHMubWFuYWdlZFJ1bGVzKSB7XG4gICAgICBwcm9wcy5tYW5hZ2VkUnVsZXMgPSBbXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNBbWF6b25JcFJlcHV0YXRpb25MaXN0JyxcbiAgICAgICAgJ0FXU01hbmFnZWRSdWxlc0Fub255bW91c0lwTGlzdCcsXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNDb21tb25SdWxlU2V0JyxcbiAgICAgICAgJ0FXU01hbmFnZWRSdWxlc1NRTGlSdWxlU2V0JyxcbiAgICAgICAgJ0FXU01hbmFnZWRSdWxlc0tub3duQmFkSW5wdXRzUnVsZVNldCcsXG4gICAgICAgICdBV1NNYW5hZ2VkUnVsZXNCb3RDb250cm9sUnVsZVNldCdcbiAgICAgIF07XG4gICAgfVxuXG4gICAgdGhpcy5hY2wgPSBuZXcgQ2ZuV2ViQUNMKHRoaXMsICdBcGlHYXRld2F5V2ViQWNsJywge1xuICAgICAgc2NvcGU6IHByb3BzLmFjbFNjb3BlID8/ICdSRUdJT05BTCcsXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgZGVmYXVsdEFjdGlvbjogeyBhbGxvdzoge30gfSxcbiAgICAgIHZpc2liaWxpdHlDb25maWc6IHtcbiAgICAgICAgY2xvdWRXYXRjaE1ldHJpY3NFbmFibGVkOiB0cnVlLFxuICAgICAgICBzYW1wbGVkUmVxdWVzdHNFbmFibGVkOiB0cnVlLFxuICAgICAgICBtZXRyaWNOYW1lOiBgJHtwcm9wcy5uYW1lfS1tZXRyaWNzYFxuICAgICAgfSxcbiAgICAgIHJ1bGVzOiB0cmFuc2Zvcm1NYW5hZ2VkUnVsZXMocHJvcHMubWFuYWdlZFJ1bGVzKVxuICAgIH0pO1xuICAgIHRhZ1Jlc291cmNlKHRoaXMuYWNsLCBwcm9wcy50YWdzKTtcbiAgICBpZiAodHlwZW9mIHByb3BzLmRlc3Ryb3kgPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLmFjbC5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMuZGVzdHJveSA/IFJlbW92YWxQb2xpY3kuREVTVFJPWSA6IFJlbW92YWxQb2xpY3kuUkVUQUlOKTtcbiAgICB9IFxuICB9XG59XG5cblxuZnVuY3Rpb24gdHJhbnNmb3JtTWFuYWdlZFJ1bGVzKHJ1bGVzOiAoV2ViQWNsTWFuYWdlZFJ1bGUgfCBzdHJpbmcpW10pOiBDZm5XZWJBQ0wuUnVsZVByb3BlcnR5W10ge1xuICByZXR1cm4gcnVsZXMubWFwKChydWxlTmFtZSwgaSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBgQVdTLSR7cnVsZU5hbWV9YCxcbiAgICAgIHByaW9yaXR5OiBpLFxuICAgICAgc3RhdGVtZW50OiB7XG4gICAgICAgIG1hbmFnZWRSdWxlR3JvdXBTdGF0ZW1lbnQ6IHtcbiAgICAgICAgICBuYW1lOiBydWxlTmFtZSxcbiAgICAgICAgICB2ZW5kb3JOYW1lOiAnQVdTJ1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb3ZlcnJpZGVBY3Rpb246IHsgbm9uZToge30gfSxcbiAgICAgIHZpc2liaWxpdHlDb25maWc6IHsgXG4gICAgICAgIGNsb3VkV2F0Y2hNZXRyaWNzRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgc2FtcGxlZFJlcXVlc3RzRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgbWV0cmljTmFtZTogYEFXUy0ke3J1bGVOYW1lfWBcbiAgICAgIH1cbiAgICB9IGFzIENmbldlYkFDTC5SdWxlUHJvcGVydHk7XG4gIH0pO1xufSJdfQ==
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Environment } from "aws-cdk-lib";
|
|
2
|
+
export * from './lib/tags.ts';
|
|
3
|
+
interface GetEnvParams {
|
|
4
|
+
account?: number | string;
|
|
5
|
+
region?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function getEnv(region?: string): Environment;
|
|
8
|
+
export declare function getEnv(account?: string | number): Environment;
|
|
9
|
+
export declare function getEnv({ account, region }: GetEnvParams): Environment;
|
|
10
|
+
export declare function getEnv(env?: Environment): Environment;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export * from "./lib/tags.js";
|
|
2
|
+
export function getEnv(env) {
|
|
3
|
+
let account = process.env.CDK_DEFAULT_ACCOUNT || '';
|
|
4
|
+
let region = process.env.CDK_DEFAULT_REGION || 'us-east-1';
|
|
5
|
+
if (env) {
|
|
6
|
+
switch (typeof env) {
|
|
7
|
+
case 'number':
|
|
8
|
+
account = env.toString();
|
|
9
|
+
break;
|
|
10
|
+
case 'string':
|
|
11
|
+
if (/^\d+$/.test(env)) {
|
|
12
|
+
account = env;
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
region = env;
|
|
16
|
+
}
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
account = env.account ?? '';
|
|
20
|
+
region = env.region ?? region;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return { account, region };
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsY0FBYyxlQUFlLENBQUM7QUFVOUIsTUFBTSxVQUFVLE1BQU0sQ0FBQyxHQUFrRDtJQUN2RSxJQUFJLE9BQU8sR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixJQUFJLEVBQUUsQ0FBQztJQUM1RCxJQUFJLE1BQU0sR0FBVyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLFdBQVcsQ0FBQztJQUNuRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1IsUUFBUSxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ25CLEtBQUssUUFBUTtnQkFDWCxPQUFPLEdBQUcsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUN6QixNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN0QixPQUFPLEdBQUcsR0FBRyxDQUFDO2dCQUNoQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxHQUFHLEdBQUcsQ0FBQztnQkFDZixDQUFDO2dCQUNELE1BQU07WUFDUjtnQkFDRSxPQUFPLEdBQUksR0FBbUIsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUM3QyxNQUFNLEdBQUksR0FBbUIsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDO2dCQUMvQyxNQUFNO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWdzLnRzJztcblxuaW50ZXJmYWNlIEdldEVudlBhcmFtcyB7IFxuICBhY2NvdW50PzogbnVtYmVyIHwgc3RyaW5nO1xuICByZWdpb24/OiBzdHJpbmc7IFxufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudihyZWdpb24/OiBzdHJpbmcpOiBFbnZpcm9ubWVudDtcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnYoYWNjb3VudD86IHN0cmluZyB8IG51bWJlcik6IEVudmlyb25tZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGdldEVudih7IGFjY291bnQsIHJlZ2lvbiB9OiBHZXRFbnZQYXJhbXMpOiBFbnZpcm9ubWVudDtcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnYoZW52PzogRW52aXJvbm1lbnQpOiBFbnZpcm9ubWVudDtcbmV4cG9ydCBmdW5jdGlvbiBnZXRFbnYoZW52Pzogc3RyaW5nIHwgbnVtYmVyIHwgR2V0RW52UGFyYW1zIHwgRW52aXJvbm1lbnQpIHtcbiAgbGV0IGFjY291bnQ6IHN0cmluZyA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQgfHwgJyc7XG4gIGxldCByZWdpb246IHN0cmluZyA9IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCAndXMtZWFzdC0xJztcbiAgaWYgKGVudikge1xuICAgIHN3aXRjaCAodHlwZW9mIGVudikge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgYWNjb3VudCA9IGVudi50b1N0cmluZygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgIGlmICgvXlxcZCskLy50ZXN0KGVudikpIHtcbiAgICAgICAgICBhY2NvdW50ID0gZW52O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZ2lvbiA9IGVudjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFjY291bnQgPSAoZW52IGFzIEVudmlyb25tZW50KS5hY2NvdW50ID8/ICcnO1xuICAgICAgICByZWdpb24gPSAoZW52IGFzIEVudmlyb25tZW50KS5yZWdpb24gPz8gcmVnaW9uO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgYWNjb3VudCwgcmVnaW9uIH07XG59Il19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const NPM_LIBRARY_NAME = "@inizioevoke/evosynth";
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export const NPM_LIBRARY_NAME = '@inizioevoke/evosynth';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IE5QTV9MSUJSQVJZX05BTUUgPSAnQGluaXppb2V2b2tlL2V2b3N5bnRoJzsiXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CloudFrontFunctionRedirectPaths } from '../constructs/cloudfront.js';
|
|
2
|
+
export declare function parseCsvRedirects(filePath: string): CloudFrontFunctionRedirectPaths;
|
|
3
|
+
export declare function mergeRedirects(base: CloudFrontFunctionRedirectPaths | undefined, override: CloudFrontFunctionRedirectPaths | undefined): CloudFrontFunctionRedirectPaths;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { resolve, isAbsolute } from 'node:path';
|
|
3
|
+
const VALID_HTTP_CODES = [301, 302, 303, 307, 308];
|
|
4
|
+
function parseCsvLine(line) {
|
|
5
|
+
const fields = [];
|
|
6
|
+
let current = '';
|
|
7
|
+
let inQuotes = false;
|
|
8
|
+
for (let i = 0; i < line.length; i++) {
|
|
9
|
+
const ch = line[i];
|
|
10
|
+
if (inQuotes) {
|
|
11
|
+
if (ch === '"') {
|
|
12
|
+
if (i + 1 < line.length && line[i + 1] === '"') {
|
|
13
|
+
current += '"';
|
|
14
|
+
i++;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
inQuotes = false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
current += ch;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (ch === '"') {
|
|
26
|
+
inQuotes = true;
|
|
27
|
+
}
|
|
28
|
+
else if (ch === ',') {
|
|
29
|
+
fields.push(current.trim());
|
|
30
|
+
current = '';
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
current += ch;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
fields.push(current.trim());
|
|
38
|
+
return fields;
|
|
39
|
+
}
|
|
40
|
+
export function parseCsvRedirects(filePath) {
|
|
41
|
+
const resolvedPath = isAbsolute(filePath) ? filePath : resolve(process.cwd(), filePath);
|
|
42
|
+
const content = readFileSync(resolvedPath, 'utf8');
|
|
43
|
+
const lines = content.split(/\r?\n/).filter(line => line.trim() !== '');
|
|
44
|
+
if (lines.length === 0) {
|
|
45
|
+
return {};
|
|
46
|
+
}
|
|
47
|
+
const headers = parseCsvLine(lines[0]).map(h => h.toLowerCase());
|
|
48
|
+
const sourceIdx = headers.indexOf('source');
|
|
49
|
+
const destIdx = headers.indexOf('destination');
|
|
50
|
+
const codeIdx = headers.indexOf('http_code');
|
|
51
|
+
if (sourceIdx === -1) {
|
|
52
|
+
throw new Error("redirects.csv: Required column 'source' is missing.");
|
|
53
|
+
}
|
|
54
|
+
if (destIdx === -1) {
|
|
55
|
+
throw new Error("redirects.csv: Required column 'destination' is missing.");
|
|
56
|
+
}
|
|
57
|
+
const result = {};
|
|
58
|
+
for (let i = 1; i < lines.length; i++) {
|
|
59
|
+
const rowNum = i + 1;
|
|
60
|
+
const fields = parseCsvLine(lines[i]);
|
|
61
|
+
const source = fields[sourceIdx] ?? '';
|
|
62
|
+
const destination = fields[destIdx] ?? '';
|
|
63
|
+
if (!source) {
|
|
64
|
+
throw new Error(`redirects.csv: Row ${rowNum} has an empty 'source' value.`);
|
|
65
|
+
}
|
|
66
|
+
if (!destination) {
|
|
67
|
+
throw new Error(`redirects.csv: Row ${rowNum} has an empty 'destination' value.`);
|
|
68
|
+
}
|
|
69
|
+
if (source === destination) {
|
|
70
|
+
throw new Error(`redirects.csv: Row ${rowNum} contains a circular redirect — source and destination are the same: '${source}'.`);
|
|
71
|
+
}
|
|
72
|
+
let httpCode = 302;
|
|
73
|
+
if (codeIdx !== -1) {
|
|
74
|
+
const rawCode = fields[codeIdx] ?? '';
|
|
75
|
+
if (rawCode !== '') {
|
|
76
|
+
const parsed = parseInt(rawCode, 10);
|
|
77
|
+
if (!VALID_HTTP_CODES.includes(parsed)) {
|
|
78
|
+
throw new Error(`redirects.csv: Row ${rowNum} has an invalid 'http_code' value: '${rawCode}'. Expected a redirect status code (e.g. 301, 302, 307, 308).`);
|
|
79
|
+
}
|
|
80
|
+
httpCode = parsed;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
result[source] = httpCode === 302 ? destination : [destination, httpCode];
|
|
84
|
+
}
|
|
85
|
+
// Detect indirect circular chains
|
|
86
|
+
detectCircularChains(result);
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
function detectCircularChains(redirects) {
|
|
90
|
+
const graph = new Map();
|
|
91
|
+
for (const [source, value] of Object.entries(redirects)) {
|
|
92
|
+
const dest = Array.isArray(value) ? value[0] : value;
|
|
93
|
+
graph.set(source, dest);
|
|
94
|
+
}
|
|
95
|
+
for (const start of graph.keys()) {
|
|
96
|
+
const visited = new Set();
|
|
97
|
+
let current = start;
|
|
98
|
+
while (current !== undefined && graph.has(current)) {
|
|
99
|
+
if (visited.has(current)) {
|
|
100
|
+
const chain = [...visited, current].join(' → ');
|
|
101
|
+
throw new Error(`redirects.csv: Circular redirect chain detected: ${chain}`);
|
|
102
|
+
}
|
|
103
|
+
visited.add(current);
|
|
104
|
+
current = graph.get(current);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export function mergeRedirects(base, override) {
|
|
109
|
+
if (!base && !override)
|
|
110
|
+
return {};
|
|
111
|
+
if (!base)
|
|
112
|
+
return { ...override };
|
|
113
|
+
if (!override)
|
|
114
|
+
return { ...base };
|
|
115
|
+
const merged = { ...base };
|
|
116
|
+
for (const [key, value] of Object.entries(override)) {
|
|
117
|
+
if (key in merged) {
|
|
118
|
+
console.warn(`Redirect conflict for '${key}': override wins.`);
|
|
119
|
+
}
|
|
120
|
+
merged[key] = value;
|
|
121
|
+
}
|
|
122
|
+
return merged;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3N2LXJlZGlyZWN0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY3N2LXJlZGlyZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2hELE1BQU0sZ0JBQWdCLEdBQXNCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXRFLFNBQVMsWUFBWSxDQUFDLElBQVk7SUFDaEMsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO0lBQzVCLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFFckIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQy9DLE9BQU8sSUFBSSxHQUFHLENBQUM7b0JBQ2YsQ0FBQyxFQUFFLENBQUM7Z0JBQ04sQ0FBQztxQkFBTSxDQUFDO29CQUNOLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ25CLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFD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LEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxDQUFDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyByZXNvbHZlLCBpc0Fic29sdXRlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RQYXRocywgSHR0cFJlZGlyZWN0Q29kZSB9IGZyb20gJy4uL2NvbnN0cnVjdHMvY2xvdWRmcm9udC5qcyc7XG5cbmNvbnN0IFZBTElEX0hUVFBfQ09ERVM6IHJlYWRvbmx5IG51bWJlcltdID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XTtcblxuZnVuY3Rpb24gcGFyc2VDc3ZMaW5lKGxpbmU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgZmllbGRzOiBzdHJpbmdbXSA9IFtdO1xuICBsZXQgY3VycmVudCA9ICcnO1xuICBsZXQgaW5RdW90ZXMgPSBmYWxzZTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaCA9IGxpbmVbaV07XG4gICAgaWYgKGluUXVvdGVzKSB7XG4gICAgICBpZiAoY2ggPT09ICdcIicpIHtcbiAgICAgICAgaWYgKGkgKyAxIDwgbGluZS5sZW5ndGggJiYgbGluZVtpICsgMV0gPT09ICdcIicpIHtcbiAgICAgICAgICBjdXJyZW50ICs9ICdcIic7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGluUXVvdGVzID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnQgKz0gY2g7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICBpblF1b3RlcyA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKGNoID09PSAnLCcpIHtcbiAgICAgICAgZmllbGRzLnB1c2goY3VycmVudC50cmltKCkpO1xuICAgICAgICBjdXJyZW50ID0gJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdXJyZW50ICs9IGNoO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmaWVsZHMucHVzaChjdXJyZW50LnRyaW0oKSk7XG4gIHJldHVybiBmaWVsZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNzdlJlZGlyZWN0cyhmaWxlUGF0aDogc3RyaW5nKTogQ2xvdWRGcm9udEZ1bmN0aW9uUmVkaXJlY3RQYXRocyB7XG4gIGNvbnN0IHJlc29sdmVkUGF0aCA9IGlzQWJzb2x1dGUoZmlsZVBhdGgpID8gZmlsZVBhdGggOiByZXNvbHZlKHByb2Nlc3MuY3dkKCksIGZpbGVQYXRoKTtcbiAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhyZXNvbHZlZFBhdGgsICd1dGY4Jyk7XG4gIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgvXFxyP1xcbi8pLmZpbHRlcihsaW5lID0+IGxpbmUudHJpbSgpICE9PSAnJyk7XG5cbiAgaWYgKGxpbmVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGhlYWRlcnMgPSBwYXJzZUNzdkxpbmUobGluZXNbMF0pLm1hcChoID0+IGgudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IHNvdXJjZUlkeCA9IGhlYWRlcnMuaW5kZXhPZignc291cmNlJyk7XG4gIGNvbnN0IGRlc3RJZHggPSBoZWFkZXJzLmluZGV4T2YoJ2Rlc3RpbmF0aW9uJyk7XG4gIGNvbnN0IGNvZGVJZHggPSBoZWFkZXJzLmluZGV4T2YoJ2h0dHBfY29kZScpO1xuXG4gIGlmIChzb3VyY2VJZHggPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwicmVkaXJlY3RzLmNzdjogUmVxdWlyZWQgY29sdW1uICdzb3VyY2UnIGlzIG1pc3NpbmcuXCIpO1xuICB9XG4gIGlmIChkZXN0SWR4ID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInJlZGlyZWN0cy5jc3Y6IFJlcXVpcmVkIGNvbHVtbiAnZGVzdGluYXRpb24nIGlzIG1pc3NpbmcuXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdFBhdGhzID0ge307XG5cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJvd051bSA9IGkgKyAxO1xuICAgIGNvbnN0IGZpZWxkcyA9IHBhcnNlQ3N2TGluZShsaW5lc1tpXSk7XG5cbiAgICBjb25zdCBzb3VyY2UgPSBmaWVsZHNbc291cmNlSWR4XSA/PyAnJztcbiAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGZpZWxkc1tkZXN0SWR4XSA/PyAnJztcblxuICAgIGlmICghc291cmNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlZGlyZWN0cy5jc3Y6IFJvdyAke3Jvd051bX0gaGFzIGFuIGVtcHR5ICdzb3VyY2UnIHZhbHVlLmApO1xuICAgIH1cbiAgICBpZiAoIWRlc3RpbmF0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlZGlyZWN0cy5jc3Y6IFJvdyAke3Jvd051bX0gaGFzIGFuIGVtcHR5ICdkZXN0aW5hdGlvbicgdmFsdWUuYCk7XG4gICAgfVxuXG4gICAgaWYgKHNvdXJjZSA9PT0gZGVzdGluYXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcmVkaXJlY3RzLmNzdjogUm93ICR7cm93TnVtfSBjb250YWlucyBhIGNpcmN1bGFyIHJlZGlyZWN0IOKAlCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSB0aGUgc2FtZTogJyR7c291cmNlfScuYCk7XG4gICAgfVxuXG4gICAgbGV0IGh0dHBDb2RlOiBIdHRwUmVkaXJlY3RDb2RlID0gMzAyO1xuICAgIGlmIChjb2RlSWR4ICE9PSAtMSkge1xuICAgICAgY29uc3QgcmF3Q29kZSA9IGZpZWxkc1tjb2RlSWR4XSA/PyAnJztcbiAgICAgIGlmIChyYXdDb2RlICE9PSAnJykge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChyYXdDb2RlLCAxMCk7XG4gICAgICAgIGlmICghVkFMSURfSFRUUF9DT0RFUy5pbmNsdWRlcyhwYXJzZWQpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGByZWRpcmVjdHMuY3N2OiBSb3cgJHtyb3dOdW19IGhhcyBhbiBpbnZhbGlkICdodHRwX2NvZGUnIHZhbHVlOiAnJHtyYXdDb2RlfScuIEV4cGVjdGVkIGEgcmVkaXJlY3Qgc3RhdHVzIGNvZGUgKGUuZy4gMzAxLCAzMDIsIDMwNywgMzA4KS5gKTtcbiAgICAgICAgfVxuICAgICAgICBodHRwQ29kZSA9IHBhcnNlZCBhcyBIdHRwUmVkaXJlY3RDb2RlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlc3VsdFtzb3VyY2VdID0gaHR0cENvZGUgPT09IDMwMiA/IGRlc3RpbmF0aW9uIDogW2Rlc3RpbmF0aW9uLCBodHRwQ29kZV07XG4gIH1cblxuICAvLyBEZXRlY3QgaW5kaXJlY3QgY2lyY3VsYXIgY2hhaW5zXG4gIGRldGVjdENpcmN1bGFyQ2hhaW5zKHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZGV0ZWN0Q2lyY3VsYXJDaGFpbnMocmVkaXJlY3RzOiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdFBhdGhzKTogdm9pZCB7XG4gIGNvbnN0IGdyYXBoID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBbc291cmNlLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMocmVkaXJlY3RzKSkge1xuICAgIGNvbnN0IGRlc3QgPSBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlWzBdIDogdmFsdWU7XG4gICAgZ3JhcGguc2V0KHNvdXJjZSwgZGVzdCk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHN0YXJ0IG9mIGdyYXBoLmtleXMoKSkge1xuICAgIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBsZXQgY3VycmVudDogc3RyaW5nIHwgdW5kZWZpbmVkID0gc3RhcnQ7XG4gICAgd2hpbGUgKGN1cnJlbnQgIT09IHVuZGVmaW5lZCAmJiBncmFwaC5oYXMoY3VycmVudCkpIHtcbiAgICAgIGlmICh2aXNpdGVkLmhhcyhjdXJyZW50KSkge1xuICAgICAgICBjb25zdCBjaGFpbiA9IFsuLi52aXNpdGVkLCBjdXJyZW50XS5qb2luKCcg4oaSICcpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHJlZGlyZWN0cy5jc3Y6IENpcmN1bGFyIHJlZGlyZWN0IGNoYWluIGRldGVjdGVkOiAke2NoYWlufWApO1xuICAgICAgfVxuICAgICAgdmlzaXRlZC5hZGQoY3VycmVudCk7XG4gICAgICBjdXJyZW50ID0gZ3JhcGguZ2V0KGN1cnJlbnQpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VSZWRpcmVjdHMoXG4gIGJhc2U6IENsb3VkRnJvbnRGdW5jdGlvblJlZGlyZWN0UGF0aHMgfCB1bmRlZmluZWQsXG4gIG92ZXJyaWRlOiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdFBhdGhzIHwgdW5kZWZpbmVkXG4pOiBDbG91ZEZyb250RnVuY3Rpb25SZWRpcmVjdFBhdGhzIHtcbiAgaWYgKCFiYXNlICYmICFvdmVycmlkZSkgcmV0dXJuIHt9O1xuICBpZiAoIWJhc2UpIHJldHVybiB7IC4uLm92ZXJyaWRlISB9O1xuICBpZiAoIW92ZXJyaWRlKSByZXR1cm4geyAuLi5iYXNlIH07XG5cbiAgY29uc3QgbWVyZ2VkID0geyAuLi5iYXNlIH07XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG92ZXJyaWRlKSkge1xuICAgIGlmIChrZXkgaW4gbWVyZ2VkKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFJlZGlyZWN0IGNvbmZsaWN0IGZvciAnJHtrZXl9Jzogb3ZlcnJpZGUgd2lucy5gKTtcbiAgICB9XG4gICAgbWVyZ2VkW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gbWVyZ2VkO1xufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { IConstruct } from 'constructs';
|
|
2
|
+
export declare const TAG_EVO_VERSION = "EvoSynthToolVersion";
|
|
3
|
+
export declare const TAG_EVO_STAGE = "EvoSynthStageName";
|
|
4
|
+
export declare const TAG_EVO_STACK = "EvoSynthStackName";
|
|
5
|
+
export declare function createEvoVersionTag(): {
|
|
6
|
+
[TAG_EVO_VERSION]: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function addEvoVersionTag(resource: IConstruct): void;
|
|
9
|
+
export declare function createEvoStackTag(value: string): {
|
|
10
|
+
[TAG_EVO_STACK]: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function addEvoStackTags(resource: IConstruct, value: string): void;
|
|
13
|
+
export declare function createEvoStageTag(value: string): {
|
|
14
|
+
[TAG_EVO_STAGE]: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function addEvoStageTags(resource: IConstruct, value: string): void;
|
|
17
|
+
export declare function mergeTags(...tags: (Record<string, string> | null | undefined)[]): Record<string, string>;
|
|
18
|
+
export declare function tagResource(resource: IConstruct, tags?: Record<string, string>): void;
|
|
19
|
+
export declare function tagResource(resource: IConstruct, tag: string, value: string): void;
|
package/dist/lib/tags.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Tags } from 'aws-cdk-lib/core';
|
|
2
|
+
import { NPM_LIBRARY_NAME } from "./const.js";
|
|
3
|
+
import { TOOL_VERSION } from "./version.js";
|
|
4
|
+
export const TAG_EVO_VERSION = 'EvoSynthToolVersion';
|
|
5
|
+
export const TAG_EVO_STAGE = 'EvoSynthStageName';
|
|
6
|
+
export const TAG_EVO_STACK = 'EvoSynthStackName';
|
|
7
|
+
export function createEvoVersionTag() {
|
|
8
|
+
return { [TAG_EVO_VERSION]: `${NPM_LIBRARY_NAME}@${TOOL_VERSION}` };
|
|
9
|
+
}
|
|
10
|
+
export function addEvoVersionTag(resource) {
|
|
11
|
+
tagResource(resource, createEvoVersionTag());
|
|
12
|
+
}
|
|
13
|
+
export function createEvoStackTag(value) {
|
|
14
|
+
return { [TAG_EVO_STACK]: value };
|
|
15
|
+
}
|
|
16
|
+
export function addEvoStackTags(resource, value) {
|
|
17
|
+
addEvoVersionTag(resource);
|
|
18
|
+
tagResource(resource, createEvoStackTag(value));
|
|
19
|
+
}
|
|
20
|
+
export function createEvoStageTag(value) {
|
|
21
|
+
return { [TAG_EVO_STAGE]: value };
|
|
22
|
+
}
|
|
23
|
+
export function addEvoStageTags(resource, value) {
|
|
24
|
+
addEvoVersionTag(resource);
|
|
25
|
+
tagResource(resource, createEvoStageTag(value));
|
|
26
|
+
}
|
|
27
|
+
export function mergeTags(...tags) {
|
|
28
|
+
const _tags = tags.filter(t => t !== undefined && t !== null) ?? [];
|
|
29
|
+
return Object.assign({}, ..._tags);
|
|
30
|
+
}
|
|
31
|
+
export function tagResource(resource, ...args) {
|
|
32
|
+
let tags = undefined;
|
|
33
|
+
switch (args.length) {
|
|
34
|
+
case 1:
|
|
35
|
+
tags = tags || undefined;
|
|
36
|
+
break;
|
|
37
|
+
case 2:
|
|
38
|
+
tags = { [args[0]]: args[1] };
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
if (tags) {
|
|
42
|
+
for (const [key, value] of Object.entries(tags)) {
|
|
43
|
+
Tags.of(resource).add(key, value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdGFncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDeEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQztBQUNqRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUM7QUFFakQsTUFBTSxVQUFVLG1CQUFtQjtJQUNqQyxPQUFPLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxHQUFHLGdCQUFnQixJQUFJLFlBQVksRUFBRSxFQUFFLENBQUM7QUFDdEUsQ0FBQztBQUNELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFvQjtJQUNuRCxXQUFXLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDN0MsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUNELE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBb0IsRUFBRSxLQUFhO0lBQ2pFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWE7SUFDN0MsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDcEMsQ0FBQztBQUNELE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBb0IsRUFBRSxLQUFhO0lBQ2pFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNCLFdBQVcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBQyxHQUFHLElBQW1EO0lBQzlFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEUsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFJRCxNQUFNLFVBQVUsV0FBVyxDQUFDLFFBQW9CLEVBQUUsR0FBRyxJQUFXO0lBQzlELElBQUksSUFBSSxHQUF1QyxTQUFTLENBQUM7SUFDekQsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDO1lBQ0osSUFBSSxHQUFHLElBQUksSUFBSSxTQUFTLENBQUM7WUFDekIsTUFBTTtRQUNSLEtBQUssQ0FBQztZQUNKLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUIsTUFBTTtJQUNWLENBQUM7SUFDRCxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ1QsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgTlBNX0xJQlJBUllfTkFNRSB9IGZyb20gJy4vY29uc3QudHMnO1xuaW1wb3J0IHsgVE9PTF9WRVJTSU9OIH0gZnJvbSAnLi92ZXJzaW9uLnRzJztcblxuZXhwb3J0IGNvbnN0IFRBR19FVk9fVkVSU0lPTiA9ICdFdm9TeW50aFRvb2xWZXJzaW9uJztcbmV4cG9ydCBjb25zdCBUQUdfRVZPX1NUQUdFID0gJ0V2b1N5bnRoU3RhZ2VOYW1lJztcbmV4cG9ydCBjb25zdCBUQUdfRVZPX1NUQUNLID0gJ0V2b1N5bnRoU3RhY2tOYW1lJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV2b1ZlcnNpb25UYWcoKTogeyBbVEFHX0VWT19WRVJTSU9OXTogc3RyaW5nIH0ge1xuICByZXR1cm4geyBbVEFHX0VWT19WRVJTSU9OXTogYCR7TlBNX0xJQlJBUllfTkFNRX1AJHtUT09MX1ZFUlNJT059YCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFkZEV2b1ZlcnNpb25UYWcocmVzb3VyY2U6IElDb25zdHJ1Y3QpIHtcbiAgdGFnUmVzb3VyY2UocmVzb3VyY2UsIGNyZWF0ZUV2b1ZlcnNpb25UYWcoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFdm9TdGFja1RhZyh2YWx1ZTogc3RyaW5nKTogeyBbVEFHX0VWT19TVEFDS106IHN0cmluZyB9IHtcbiAgcmV0dXJuIHsgW1RBR19FVk9fU1RBQ0tdOiB2YWx1ZSB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFkZEV2b1N0YWNrVGFncyhyZXNvdXJjZTogSUNvbnN0cnVjdCwgdmFsdWU6IHN0cmluZyl7XG4gIGFkZEV2b1ZlcnNpb25UYWcocmVzb3VyY2UpO1xuICB0YWdSZXNvdXJjZShyZXNvdXJjZSwgY3JlYXRlRXZvU3RhY2tUYWcodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUV2b1N0YWdlVGFnKHZhbHVlOiBzdHJpbmcpOiB7IFtUQUdfRVZPX1NUQUdFXTogc3RyaW5nIH0ge1xuICByZXR1cm4geyBbVEFHX0VWT19TVEFHRV06IHZhbHVlIH07XG59XG5leHBvcnQgZnVuY3Rpb24gYWRkRXZvU3RhZ2VUYWdzKHJlc291cmNlOiBJQ29uc3RydWN0LCB2YWx1ZTogc3RyaW5nKSB7XG4gIGFkZEV2b1ZlcnNpb25UYWcocmVzb3VyY2UpO1xuICB0YWdSZXNvdXJjZShyZXNvdXJjZSwgY3JlYXRlRXZvU3RhZ2VUYWcodmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlVGFncyguLi50YWdzOiAoUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGwgfCB1bmRlZmluZWQpW10pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgY29uc3QgX3RhZ3MgPSB0YWdzLmZpbHRlcih0ID0+IHQgIT09IHVuZGVmaW5lZCAmJiB0ICE9PSBudWxsKSA/PyBbXTtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIC4uLl90YWdzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRhZ1Jlc291cmNlKHJlc291cmNlOiBJQ29uc3RydWN0LCB0YWdzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGFnUmVzb3VyY2UocmVzb3VyY2U6IElDb25zdHJ1Y3QsIHRhZzogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB0YWdSZXNvdXJjZShyZXNvdXJjZTogSUNvbnN0cnVjdCwgLi4uYXJnczogYW55W10pOiB2b2lkIHtcbiAgbGV0IHRhZ3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDE6XG4gICAgICB0YWdzID0gdGFncyB8fCB1bmRlZmluZWQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI6XG4gICAgICB0YWdzID0geyBbYXJnc1swXV06IGFyZ3NbMV0gfTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIGlmICh0YWdzKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModGFncykpIHtcbiAgICAgIFRhZ3Mub2YocmVzb3VyY2UpLmFkZChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type DeepPartial<T> = T extends object ? {
|
|
2
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
3
|
+
} : T;
|
|
4
|
+
export type WithRequiredProperty<Type, Key extends keyof Type> = Omit<Type, Key> & {
|
|
5
|
+
[Property in Key]-?: Type[Property];
|
|
6
|
+
};
|
|
7
|
+
export interface ResourceProps {
|
|
8
|
+
destroy?: boolean;
|
|
9
|
+
tags?: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export interface SsmStringParameter {
|
|
12
|
+
path: string;
|
|
13
|
+
version?: number;
|
|
14
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEZWVwUGFydGlhbDxUPiA9IFQgZXh0ZW5kcyBvYmplY3QgPyB7XG4gIFtQIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtQXT47XG59IDogVDtcblxuZXhwb3J0IHR5cGUgV2l0aFJlcXVpcmVkUHJvcGVydHk8VHlwZSwgS2V5IGV4dGVuZHMga2V5b2YgVHlwZT4gPSBPbWl0PFR5cGUsIEtleT4gJiB7XG4gIFtQcm9wZXJ0eSBpbiBLZXldLT86IFR5cGVbUHJvcGVydHldO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVByb3BzIHtcbiAgZGVzdHJveT86IGJvb2xlYW47XG4gIHRhZ3M/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNzbVN0cmluZ1BhcmFtZXRlciB7XG4gIHBhdGg6IHN0cmluZztcbiAgdmVyc2lvbj86IG51bWJlcjtcbn0iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function domainAsId(domain) {
|
|
2
|
+
return domain.replace(/\./g, '-');
|
|
3
|
+
}
|
|
4
|
+
export function cleanResourceName(name) {
|
|
5
|
+
return name.replace(/[^0-9a-z_\-]/gi, '');
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxVQUFVLENBQUMsTUFBYztJQUN2QyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsSUFBWTtJQUM1QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBkb21haW5Bc0lkKGRvbWFpbjogc3RyaW5nKSB7XG4gIHJldHVybiBkb21haW4ucmVwbGFjZSgvXFwuL2csICctJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhblJlc291cmNlTmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW14wLTlhLXpfXFwtXS9naSwgJycpO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TOOL_VERSION: string;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { resolve } from 'node:path';
|
|
3
|
+
const pkg = JSON.parse(readFileSync(resolve(import.meta.dirname, '../../package.json'), 'utf8'));
|
|
4
|
+
export const TOOL_VERSION = pkg.version;
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFcEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUVqRyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLE9BQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHJlc29sdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuXG5jb25zdCBwa2cgPSBKU09OLnBhcnNlKHJlYWRGaWxlU3luYyhyZXNvbHZlKGltcG9ydC5tZXRhLmRpcm5hbWUsICcuLi8uLi9wYWNrYWdlLmpzb24nKSwgJ3V0ZjgnKSk7XG5cbmV4cG9ydCBjb25zdCBUT09MX1ZFUlNJT04gPSBwa2cudmVyc2lvbiBhcyBzdHJpbmc7Il19
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Stack, StackProps } from 'aws-cdk-lib/core';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { CodeBuildPipelineProject, CodeBuildPipelineProjectProps } from '../../constructs/codebuild.js';
|
|
4
|
+
import { CodePipelineProject, AddSourceStageParams, AddBuildStageParams } from '../../constructs/codepipeline.js';
|
|
5
|
+
export interface CodePipelineStackProps {
|
|
6
|
+
pipelineName?: string;
|
|
7
|
+
sourceStage: AddSourceStageParams;
|
|
8
|
+
buildStage?: Pick<AddBuildStageParams, 'stageName' | 'environmentVariables'>;
|
|
9
|
+
codeBuildProject?: Omit<CodeBuildPipelineProjectProps, 'destroy' | 'tags'>;
|
|
10
|
+
destroy?: boolean;
|
|
11
|
+
tags?: Record<string, string>;
|
|
12
|
+
}
|
|
13
|
+
export declare class CodePipelineStack extends Stack {
|
|
14
|
+
readonly codeBuildPipelineProject: CodeBuildPipelineProject;
|
|
15
|
+
readonly codePipelineProject: CodePipelineProject;
|
|
16
|
+
constructor(scope: Construct, id: string, props: CodePipelineStackProps & StackProps);
|
|
17
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Stack } from 'aws-cdk-lib/core';
|
|
2
|
+
import { CodeBuildPipelineProject } from '../../constructs/codebuild.js';
|
|
3
|
+
import { CodePipelineProject } from '../../constructs/codepipeline.js';
|
|
4
|
+
import { addEvoStackTags } from "../../lib/tags.js";
|
|
5
|
+
export class CodePipelineStack extends Stack {
|
|
6
|
+
codeBuildPipelineProject;
|
|
7
|
+
codePipelineProject;
|
|
8
|
+
constructor(scope, id, props) {
|
|
9
|
+
super(scope, id, props);
|
|
10
|
+
addEvoStackTags(this, 'CodePipelineStack');
|
|
11
|
+
this.codeBuildPipelineProject = new CodeBuildPipelineProject(this, 'CodeBuildPipelineProject', {
|
|
12
|
+
...(props.codeBuildProject ?? {}),
|
|
13
|
+
destroy: props.destroy
|
|
14
|
+
});
|
|
15
|
+
this.codePipelineProject = new CodePipelineProject(this, 'CodePipelineProject', {
|
|
16
|
+
pipelineName: props.pipelineName,
|
|
17
|
+
destroy: props.destroy
|
|
18
|
+
});
|
|
19
|
+
const sourceArtifact = this.codePipelineProject.addSourceStage(props.sourceStage);
|
|
20
|
+
this.codePipelineProject.addBuildStage({
|
|
21
|
+
stageName: props.buildStage?.stageName,
|
|
22
|
+
codeBuildProject: this.codeBuildPipelineProject.project,
|
|
23
|
+
sourceArtifact: sourceArtifact,
|
|
24
|
+
environmentVariables: props.buildStage?.environmentVariables
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZXBpcGVsaW5lLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YWNrcy93ZWItc3RhdGljLXNlcnZlcmxlc3MvY29kZXBpcGVsaW5lLXN0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQWlDLE1BQU0sK0JBQStCLENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixFQUE2QyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVVwRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsS0FBSztJQUMxQix3QkFBd0IsQ0FBMkI7SUFDbkQsbUJBQW1CLENBQXNCO0lBRXpELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEM7UUFDbEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsZUFBZSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSwwQkFBMEIsRUFBRTtZQUM3RixHQUFHLENBQUMsS0FBSyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksbUJBQW1CLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQzlFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQztZQUNyQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxTQUFTO1lBQ3RDLGdCQUFnQixFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPO1lBQ3ZELGNBQWMsRUFBRSxjQUFjO1lBQzlCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsb0JBQW9CO1NBQzdELENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IENvZGVCdWlsZFBpcGVsaW5lUHJvamVjdCwgQ29kZUJ1aWxkUGlwZWxpbmVQcm9qZWN0UHJvcHMgfSBmcm9tICcuLi8uLi9jb25zdHJ1Y3RzL2NvZGVidWlsZC5qcyc7XG5pbXBvcnQgeyBDb2RlUGlwZWxpbmVQcm9qZWN0LCBBZGRTb3VyY2VTdGFnZVBhcmFtcywgQWRkQnVpbGRTdGFnZVBhcmFtcyB9IGZyb20gJy4uLy4uL2NvbnN0cnVjdHMvY29kZXBpcGVsaW5lLmpzJztcbmltcG9ydCB7IGFkZEV2b1N0YWNrVGFncyB9IGZyb20gJy4uLy4uL2xpYi90YWdzLnRzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2RlUGlwZWxpbmVTdGFja1Byb3BzIHtcbiAgcGlwZWxpbmVOYW1lPzogc3RyaW5nO1xuICBzb3VyY2VTdGFnZTogQWRkU291cmNlU3RhZ2VQYXJhbXM7XG4gIGJ1aWxkU3RhZ2U/OiBQaWNrPEFkZEJ1aWxkU3RhZ2VQYXJhbXMsICdzdGFnZU5hbWUnIHwgJ2Vudmlyb25tZW50VmFyaWFibGVzJz47XG4gIGNvZGVCdWlsZFByb2plY3Q/OiBPbWl0PENvZGVCdWlsZFBpcGVsaW5lUHJvamVjdFByb3BzLCAnZGVzdHJveScgfCAndGFncyc+LFxuICBkZXN0cm95PzogYm9vbGVhbjtcbiAgdGFncz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59XG5leHBvcnQgY2xhc3MgQ29kZVBpcGVsaW5lU3RhY2sgZXh0ZW5kcyBTdGFjayB7XG4gIHB1YmxpYyByZWFkb25seSBjb2RlQnVpbGRQaXBlbGluZVByb2plY3Q6IENvZGVCdWlsZFBpcGVsaW5lUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IGNvZGVQaXBlbGluZVByb2plY3Q6IENvZGVQaXBlbGluZVByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZGVQaXBlbGluZVN0YWNrUHJvcHMgJiBTdGFja1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgYWRkRXZvU3RhY2tUYWdzKHRoaXMsICdDb2RlUGlwZWxpbmVTdGFjaycpO1xuXG4gICAgdGhpcy5jb2RlQnVpbGRQaXBlbGluZVByb2plY3QgPSBuZXcgQ29kZUJ1aWxkUGlwZWxpbmVQcm9qZWN0KHRoaXMsICdDb2RlQnVpbGRQaXBlbGluZVByb2plY3QnLCB7XG4gICAgICAuLi4ocHJvcHMuY29kZUJ1aWxkUHJvamVjdCA/PyB7fSksXG4gICAgICBkZXN0cm95OiBwcm9wcy5kZXN0cm95XG4gICAgfSk7XG5cbiAgICB0aGlzLmNvZGVQaXBlbGluZVByb2plY3QgPSBuZXcgQ29kZVBpcGVsaW5lUHJvamVjdCh0aGlzLCAnQ29kZVBpcGVsaW5lUHJvamVjdCcsIHtcbiAgICAgIHBpcGVsaW5lTmFtZTogcHJvcHMucGlwZWxpbmVOYW1lLFxuICAgICAgZGVzdHJveTogcHJvcHMuZGVzdHJveVxuICAgIH0pO1xuXG4gICAgY29uc3Qgc291cmNlQXJ0aWZhY3QgPSB0aGlzLmNvZGVQaXBlbGluZVByb2plY3QuYWRkU291cmNlU3RhZ2UocHJvcHMuc291cmNlU3RhZ2UpO1xuXG4gICAgdGhpcy5jb2RlUGlwZWxpbmVQcm9qZWN0LmFkZEJ1aWxkU3RhZ2Uoe1xuICAgICAgc3RhZ2VOYW1lOiBwcm9wcy5idWlsZFN0YWdlPy5zdGFnZU5hbWUsXG4gICAgICBjb2RlQnVpbGRQcm9qZWN0OiB0aGlzLmNvZGVCdWlsZFBpcGVsaW5lUHJvamVjdC5wcm9qZWN0LFxuICAgICAgc291cmNlQXJ0aWZhY3Q6IHNvdXJjZUFydGlmYWN0LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHByb3BzLmJ1aWxkU3RhZ2U/LmVudmlyb25tZW50VmFyaWFibGVzXG4gICAgfSk7XG4gIH1cbn0iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Stack, StackProps } from 'aws-cdk-lib/core';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { Certificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
|
+
import { Distribution, Function, IResponseHeadersPolicy, ResponseHeadersPolicyProps } from 'aws-cdk-lib/aws-cloudfront';
|
|
5
|
+
import { ARecord, AaaaRecord } from "aws-cdk-lib/aws-route53";
|
|
6
|
+
import { Bucket } from "aws-cdk-lib/aws-s3";
|
|
7
|
+
import { CfnWebACL } from 'aws-cdk-lib/aws-wafv2';
|
|
8
|
+
import { CloudFrontFunctionRedirects } from '../../constructs/cloudfront.js';
|
|
9
|
+
import { SsmStringParameter } from '../../lib/types.ts';
|
|
10
|
+
export interface BasicAuthCredentials {
|
|
11
|
+
user: string;
|
|
12
|
+
password: string;
|
|
13
|
+
}
|
|
14
|
+
type AWSManagedResponseHeadersPolicy = 'CORS_ALLOW_ALL_ORIGINS' | 'CORS_ALLOW_ALL_ORIGINS_AND_SECURITY_HEADERS' | 'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT' | 'CORS_ALLOW_ALL_ORIGINS_WITH_PREFLIGHT_AND_SECURITY_HEADERS' | 'SECURITY_HEADERS';
|
|
15
|
+
type UUID = `${string}-${string}-${string}-${string}-${string}`;
|
|
16
|
+
export interface WebGlobalStackProps {
|
|
17
|
+
envType: 'NOT_PROD' | 'PROD';
|
|
18
|
+
description?: string;
|
|
19
|
+
bucketName?: string;
|
|
20
|
+
hostedZone: string;
|
|
21
|
+
domainName: string;
|
|
22
|
+
basicAuth?: string | BasicAuthCredentials | SsmStringParameter;
|
|
23
|
+
viewerRequestResponse?: string;
|
|
24
|
+
redirects?: CloudFrontFunctionRedirects;
|
|
25
|
+
redirectsCsvPath?: string;
|
|
26
|
+
webAcl?: boolean | string | SsmStringParameter;
|
|
27
|
+
responseHeadersPolicy?: false | AWSManagedResponseHeadersPolicy | UUID | SsmStringParameter;
|
|
28
|
+
responseHeadersPolicyProps?: ResponseHeadersPolicyProps;
|
|
29
|
+
destroy?: boolean;
|
|
30
|
+
tags?: Record<string, string>;
|
|
31
|
+
}
|
|
32
|
+
export declare class WebGlobalStack extends Stack {
|
|
33
|
+
readonly sslCertificate: Certificate;
|
|
34
|
+
readonly s3Bucket: Bucket;
|
|
35
|
+
readonly cloudFrontFunction: Function;
|
|
36
|
+
readonly cloudFrontDistribution: Distribution;
|
|
37
|
+
readonly webAcl: CfnWebACL | undefined;
|
|
38
|
+
readonly responseHeadersPolicy: IResponseHeadersPolicy | undefined;
|
|
39
|
+
readonly aRecord: ARecord;
|
|
40
|
+
readonly aaaaRecord: AaaaRecord;
|
|
41
|
+
constructor(scope: Construct, id: string, props: WebGlobalStackProps & StackProps);
|
|
42
|
+
}
|
|
43
|
+
export {};
|