@fjall/components-infrastructure 0.1.5 → 0.1.10
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/config/aws/costAllocationTags.js +58 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +5 -0
- package/dist/lib/config/aws/delegateHostedZoneRole.js +77 -0
- package/dist/lib/config/aws/identityCenter.js +107 -0
- package/dist/lib/config/aws/index.d.ts +8 -0
- package/dist/lib/config/aws/index.js +25 -0
- package/dist/lib/config/aws/ipam.d.ts +5 -0
- package/dist/lib/config/aws/ipam.js +30 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +9 -0
- package/dist/lib/config/aws/ipamDelegateAdmin.js +62 -0
- package/dist/lib/config/aws/ipamPool.d.ts +5 -0
- package/dist/lib/config/aws/ipamPool.js +56 -0
- package/dist/lib/config/aws/{base/iamIdentityCenter.d.ts → ipamPoolResourceShare.d.ts} +2 -2
- package/dist/lib/config/aws/ipamPoolResourceShare.js +42 -0
- package/dist/lib/config/aws/organisationId.d.ts +5 -0
- package/dist/lib/config/aws/organisationId.js +40 -0
- package/dist/lib/config/aws/{base/ipamPool.d.ts → ramEnableSharing.d.ts} +1 -1
- package/dist/lib/config/aws/ramEnableSharing.js +35 -0
- package/dist/lib/config/aws/{base/ipam.d.ts → users.d.ts} +1 -1
- package/dist/lib/config/aws/users.js +126 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +10 -0
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +25 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +4 -1
- package/dist/lib/patterns/aws/basicApp.d.ts +47 -0
- package/dist/lib/patterns/aws/basicApp.js +90 -0
- package/dist/lib/patterns/aws/buildkite.d.ts +50 -0
- package/dist/lib/patterns/aws/buildkite.js +344 -0
- package/dist/lib/patterns/aws/index.d.ts +2 -2
- package/dist/lib/patterns/aws/index.js +3 -3
- package/dist/lib/patterns/aws/{multiEnvironmentOrganisation.d.ts → managedOrganisation.d.ts} +8 -10
- package/dist/lib/patterns/aws/managedOrganisation.js +159 -0
- package/dist/lib/resources/aws/awsStack.d.ts +5 -0
- package/dist/lib/resources/aws/awsStack.js +11 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +76 -0
- package/dist/lib/resources/aws/compute/ecs.js +265 -0
- package/dist/lib/resources/aws/compute/lambda.d.ts +12 -5
- package/dist/lib/resources/aws/compute/lambda.js +23 -5
- package/dist/lib/resources/aws/constant/ecr.js +4 -3
- package/dist/lib/resources/aws/constant/vpc.d.ts +10 -2
- package/dist/lib/resources/aws/constant/vpc.js +18 -8
- package/dist/lib/resources/aws/iam/identityCenter/assignment.js +13 -0
- package/dist/lib/resources/aws/iam/identityCenter/group.js +14 -0
- package/dist/lib/resources/aws/iam/identityCenter/permissionSet.js +13 -0
- package/dist/lib/resources/aws/iam/index.d.ts +5 -0
- package/dist/lib/resources/aws/iam/index.js +22 -0
- package/dist/lib/resources/aws/iam/instanceProfile.d.ts +5 -0
- package/dist/lib/resources/aws/iam/instanceProfile.js +13 -0
- package/dist/lib/resources/aws/iam/managedPolicy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/managedPolicy.js +14 -0
- package/dist/lib/resources/aws/iam/policy.d.ts +5 -0
- package/dist/lib/resources/aws/iam/policy.js +13 -0
- package/dist/lib/resources/aws/iam/role.js +2 -7
- package/dist/lib/resources/aws/iam/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/iam/securityGroup.js +14 -0
- package/dist/lib/resources/aws/index.d.ts +1 -0
- package/dist/lib/resources/aws/index.js +18 -0
- package/dist/lib/resources/aws/logging/logGroup.d.ts +5 -1
- package/dist/lib/resources/aws/logging/logGroup.js +4 -5
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +19 -3
- package/dist/lib/resources/aws/networking/hostedZone.js +59 -11
- package/dist/lib/resources/aws/networking/index.d.ts +3 -0
- package/dist/lib/resources/aws/networking/index.js +20 -0
- package/dist/lib/resources/aws/networking/ipam.d.ts +2 -2
- package/dist/lib/resources/aws/networking/ipam.js +3 -3
- package/dist/lib/resources/aws/networking/ipamPool.d.ts +3 -7
- package/dist/lib/resources/aws/networking/ipamPool.js +5 -27
- package/dist/lib/resources/aws/store/alias.d.ts +5 -0
- package/dist/lib/resources/aws/store/alias.js +13 -0
- package/dist/lib/resources/aws/store/database.d.ts +7 -2
- package/dist/lib/resources/aws/store/database.js +9 -5
- package/dist/lib/resources/aws/store/index.d.ts +7 -0
- package/dist/lib/resources/aws/store/index.js +24 -0
- package/dist/lib/resources/aws/store/kms.d.ts +14 -0
- package/dist/lib/resources/aws/store/kms.js +34 -0
- package/dist/lib/resources/aws/store/parameter.d.ts +26 -0
- package/dist/lib/resources/aws/store/parameter.js +100 -0
- package/dist/lib/resources/aws/store/rds.d.ts +15 -15
- package/dist/lib/resources/aws/store/rds.js +110 -68
- package/dist/lib/resources/aws/store/s3.d.ts +11 -0
- package/dist/lib/resources/aws/store/s3.js +43 -0
- package/dist/lib/resources/aws/store/secret.d.ts +26 -0
- package/dist/lib/resources/aws/store/secret.js +55 -0
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -6
- package/dist/lib/resources/aws/utilities/cfnOutput.js +2 -5
- package/dist/lib/resources/aws/utilities/customResource.d.ts +20 -3
- package/dist/lib/resources/aws/utilities/customResource.js +24 -5
- package/dist/lib/resources/aws/utilities/customResourceProvider.js +1 -5
- package/dist/lib/resources/aws/utilities/resourceShare.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/resourceShare.js +13 -0
- package/dist/lib/resources/index.d.ts +1 -0
- package/dist/lib/resources/index.js +18 -0
- package/dist/lib/utils/getAccountId.d.ts +1 -0
- package/dist/lib/utils/getAccountId.js +11 -0
- package/dist/lib/utils/getConfig.d.ts +4 -3
- package/dist/lib/utils/getConfig.js +26 -12
- package/dist/lib/utils/getStackOutput.d.ts +1 -0
- package/dist/lib/utils/getStackOutput.js +20 -0
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +18 -0
- package/dist/lib/utils/tagResource.d.ts +4 -0
- package/dist/lib/utils/tagResource.js +10 -0
- package/package.json +23 -18
- package/dist/lib/config/aws/base/costAllocationTags.js +0 -57
- package/dist/lib/config/aws/base/iamIdentityCenter.js +0 -86
- package/dist/lib/config/aws/base/identityCenter.js +0 -90
- package/dist/lib/config/aws/base/ipam.js +0 -29
- package/dist/lib/config/aws/base/ipamPool.js +0 -46
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.d.ts +0 -2
- package/dist/lib/examples/custom-resources/lambda/aws-cost-allocation-tags/awsCostAllocationTagsLambda.js +0 -62
- package/dist/lib/examples/cutomResourceExample.d.ts +0 -6
- package/dist/lib/examples/cutomResourceExample.js +0 -45
- package/dist/lib/patterns/aws/customResource.d.ts +0 -7
- package/dist/lib/patterns/aws/customResource.js +0 -28
- package/dist/lib/patterns/aws/multiEnvironmentOrganisation.js +0 -107
- package/dist/lib/patterns/aws/webApp.d.ts +0 -17
- package/dist/lib/patterns/aws/webApp.js +0 -36
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.d.ts +0 -1
- package/dist/lib/resources/aws/compute/__tests__/fargate.test.js +0 -21
- package/dist/lib/resources/aws/compute/fargate.d.ts +0 -23
- package/dist/lib/resources/aws/compute/fargate.js +0 -50
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.d.ts +0 -1
- package/dist/lib/resources/aws/constant/__tests__/vpc.test.js +0 -13
- package/dist/lib/resources/aws/iam/assignment.js +0 -13
- package/dist/lib/resources/aws/iam/group.js +0 -15
- package/dist/lib/resources/aws/iam/iamRole.d.ts +0 -5
- package/dist/lib/resources/aws/iam/iamRole.js +0 -18
- package/dist/lib/resources/aws/iam/permissionSet.js +0 -13
- /package/dist/lib/config/aws/{base/costAllocationTags.d.ts → costAllocationTags.d.ts} +0 -0
- /package/dist/lib/config/aws/{base/identityCenter.d.ts → identityCenter.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{assignment.d.ts → identityCenter/assignment.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{group.d.ts → identityCenter/group.d.ts} +0 -0
- /package/dist/lib/resources/aws/iam/{permissionSet.d.ts → identityCenter/permissionSet.d.ts} +0 -0
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ManagedOrganisationStack = exports.ManagedOrganisation = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
const aws_cdk_lib_2 = require("aws-cdk-lib");
|
|
7
|
+
const app_1 = require("../../app");
|
|
8
|
+
const cdk_organizations_1 = require("@pepperize/cdk-organizations");
|
|
9
|
+
const addSuffixToEmail_1 = require("../../utils/addSuffixToEmail");
|
|
10
|
+
/**
|
|
11
|
+
* A construct for creating multi environment organisations with a production, staging and development account.
|
|
12
|
+
*/
|
|
13
|
+
class ManagedOrganisation extends constructs_1.Construct {
|
|
14
|
+
constructor(scope, id, props) {
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.organisationalUnits = [];
|
|
17
|
+
this.accounts = [];
|
|
18
|
+
this.props = props;
|
|
19
|
+
this.addOrganisation();
|
|
20
|
+
this.addOrganisationUnitsAndAccounts();
|
|
21
|
+
//todo: Consider adding the remaining AWS recommended organisational units
|
|
22
|
+
// https://aws.amazon.com/blogs/mt/best-practices-for-organizational-units-with-aws-organizations/
|
|
23
|
+
// - deployments (build agents - accounts may be specific per 'service')
|
|
24
|
+
// - security
|
|
25
|
+
// - sandbox (equivalent to development unit?)
|
|
26
|
+
// - workloads
|
|
27
|
+
}
|
|
28
|
+
addOrganisation() {
|
|
29
|
+
this.organisation = new cdk_organizations_1.Organization(this, this.props.organisationName, {
|
|
30
|
+
featureSet: cdk_organizations_1.FeatureSet.ALL
|
|
31
|
+
});
|
|
32
|
+
const enforcedPolicyTypes = [
|
|
33
|
+
cdk_organizations_1.PolicyType.SERVICE_CONTROL_POLICY,
|
|
34
|
+
cdk_organizations_1.PolicyType.TAG_POLICY,
|
|
35
|
+
cdk_organizations_1.PolicyType.BACKUP_POLICY,
|
|
36
|
+
cdk_organizations_1.PolicyType.AISERVICES_OPT_OUT_POLICY
|
|
37
|
+
];
|
|
38
|
+
for (const policyType of enforcedPolicyTypes) {
|
|
39
|
+
this.organisation.enablePolicyType(policyType);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
addOrganisationUnitsAndAccounts() {
|
|
43
|
+
const orgStructure = [
|
|
44
|
+
{
|
|
45
|
+
id: "productionOrganizationalUnit",
|
|
46
|
+
name: "Production",
|
|
47
|
+
accounts: [
|
|
48
|
+
{
|
|
49
|
+
id: "productionAccount",
|
|
50
|
+
name: "Production",
|
|
51
|
+
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "production")
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
id: "stagingOrganizationalUnit",
|
|
57
|
+
name: "Staging",
|
|
58
|
+
accounts: [
|
|
59
|
+
{
|
|
60
|
+
id: "stagingAccount",
|
|
61
|
+
name: "Staging",
|
|
62
|
+
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "staging")
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "developmentOrganizationalUnit",
|
|
68
|
+
name: "Development",
|
|
69
|
+
accounts: [
|
|
70
|
+
{
|
|
71
|
+
id: "developmentAccount",
|
|
72
|
+
name: "Development",
|
|
73
|
+
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "development")
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: "platformOrganizationalUnit",
|
|
79
|
+
name: "Platform",
|
|
80
|
+
accounts: [
|
|
81
|
+
{
|
|
82
|
+
id: "platformAccount",
|
|
83
|
+
name: "Platform",
|
|
84
|
+
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "platform")
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: "businessContinuityOrganizationalUnit",
|
|
90
|
+
name: "BusinessContinuity",
|
|
91
|
+
accounts: [
|
|
92
|
+
{
|
|
93
|
+
id: "businessContinuityAccount",
|
|
94
|
+
name: "BusinessContinuity",
|
|
95
|
+
email: (0, addSuffixToEmail_1.default)(this.props.accountEmail, "businessContinuity")
|
|
96
|
+
}
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
];
|
|
100
|
+
for (const orgUnitStructure of orgStructure) {
|
|
101
|
+
const orgUnit = this.addOrganisationalUnit(orgUnitStructure.id, orgUnitStructure.name);
|
|
102
|
+
for (const accountStructure of orgUnitStructure.accounts) {
|
|
103
|
+
this.addAccount(accountStructure.id, accountStructure.name, accountStructure.email, { env: orgUnitStructure.name.toLocaleLowerCase() }, orgUnit);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
addOrganisationalUnit(id, name) {
|
|
108
|
+
const ou = new cdk_organizations_1.OrganizationalUnit(this, id, {
|
|
109
|
+
organizationalUnitName: name,
|
|
110
|
+
parent: this.organisation.root,
|
|
111
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY //todo: validate if this is best practice
|
|
112
|
+
// defaults
|
|
113
|
+
// importOnDuplicate: false, //todo: should we import pre-existing organisational units?
|
|
114
|
+
});
|
|
115
|
+
this.organisationalUnits.push(ou);
|
|
116
|
+
return ou;
|
|
117
|
+
}
|
|
118
|
+
addAccount(id, name, email, tags, organisationalUnit) {
|
|
119
|
+
const acc = new cdk_organizations_1.Account(this, id, {
|
|
120
|
+
accountName: name,
|
|
121
|
+
email: email,
|
|
122
|
+
parent: organisationalUnit
|
|
123
|
+
});
|
|
124
|
+
this.accounts.push(acc);
|
|
125
|
+
for (const tag in tags) {
|
|
126
|
+
aws_cdk_lib_2.Tags.of(acc).add(tag, tags[tag]);
|
|
127
|
+
}
|
|
128
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}Id`, {
|
|
129
|
+
key: `${id}Id`,
|
|
130
|
+
value: acc.accountId,
|
|
131
|
+
exportName: `${id}Id`
|
|
132
|
+
});
|
|
133
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}Arn`, {
|
|
134
|
+
key: `${id}Arn`,
|
|
135
|
+
value: acc.accountId,
|
|
136
|
+
exportName: `${id}Arn`
|
|
137
|
+
});
|
|
138
|
+
return acc;
|
|
139
|
+
}
|
|
140
|
+
getAccounts() {
|
|
141
|
+
return this.accounts;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
exports.ManagedOrganisation = ManagedOrganisation;
|
|
145
|
+
exports.default = ManagedOrganisation;
|
|
146
|
+
/**
|
|
147
|
+
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
148
|
+
*/
|
|
149
|
+
class ManagedOrganisationStack extends aws_cdk_lib_1.Stack {
|
|
150
|
+
constructor(id, props) {
|
|
151
|
+
super(app_1.default.getInstance(), id);
|
|
152
|
+
this.resource = new ManagedOrganisation(this, id, props);
|
|
153
|
+
}
|
|
154
|
+
getAccounts() {
|
|
155
|
+
return this.resource.getAccounts();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.ManagedOrganisationStack = ManagedOrganisationStack;
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBOEQ7QUFDOUQsMkNBQXVDO0FBQ3ZDLDZDQUFtQztBQUVuQyxtQ0FBNEI7QUFFNUIsb0VBTXNDO0FBRXRDLG1FQUE0RDtBQW1CNUQ7O0dBRUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBT2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUpYLHdCQUFtQixHQUF5QixFQUFFLENBQUM7UUFDL0MsYUFBUSxHQUFjLEVBQUUsQ0FBQztRQUkvQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUVuQixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7UUFFdkMsMEVBQTBFO1FBQzFFLGtHQUFrRztRQUNsRyx3RUFBd0U7UUFDeEUsYUFBYTtRQUNiLDhDQUE4QztRQUM5QyxjQUFjO0lBQ2hCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxnQ0FBWSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQ3RFLFVBQVUsRUFBRSw4QkFBVSxDQUFDLEdBQUc7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxtQkFBbUIsR0FBaUI7WUFDeEMsOEJBQVUsQ0FBQyxzQkFBc0I7WUFDakMsOEJBQVUsQ0FBQyxVQUFVO1lBQ3JCLDhCQUFVLENBQUMsYUFBYTtZQUN4Qiw4QkFBVSxDQUFDLHlCQUF5QjtTQUNyQyxDQUFDO1FBRUYsS0FBSyxNQUFNLFVBQVUsSUFBSSxtQkFBbUIsRUFBRTtZQUM1QyxJ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QUFhLHdCQUF5QixTQUFRLG1CQUFLO0lBR2pELFlBQVksRUFBVSxFQUFFLEtBQStCO1FBQ3JELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7Q0FDRjtBQVhELDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFJlbW92YWxQb2xpY3ksIENmbk91dHB1dCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7XG4gIEFjY291bnQsXG4gIEZlYXR1cmVTZXQsXG4gIE9yZ2FuaXphdGlvbixcbiAgT3JnYW5pemF0aW9uYWxVbml0LFxuICBQb2xpY3lUeXBlXG59IGZyb20gXCJAcGVwcGVyaXplL2Nkay1vcmdhbml6YXRpb25zXCI7XG5cbmltcG9ydCBhZGRTdWZmaXhUb0VtYWlsIGZyb20gXCIuLi8uLi91dGlscy9hZGRTdWZmaXhUb0VtYWlsXCI7XG5cbmludGVyZmFjZSBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIGFjY291bnRFbWFpbDogc3RyaW5nO1xufVxuXG50eXBlIEFjY291bnRTdHJ1Y3R1cmUgPSB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbn07XG5cbnR5cGUgT3JnYW5pc2F0aW9uU3RydWN0dXJlID0ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGFjY291bnRzOiBBY2NvdW50U3RydWN0dXJlW107XG59O1xuXG4vKipcbiAqIEEgY29uc3RydWN0IGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE9yZ2FuaXNhdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzO1xuXG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbml6YXRpb247XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uYWxVbml0czogT3JnYW5pemF0aW9uYWxVbml0W10gPSBbXTtcbiAgcHJpdmF0ZSBhY2NvdW50czogQWNjb3VudFtdID0gW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5hZGRPcmdhbmlzYXRpb24oKTtcbiAgICB0aGlzLmFkZE9yZ2FuaXNhdGlvblVuaXRzQW5kQWNjb3VudHMoKTtcblxuICAgIC8vdG9kbzogQ29uc2lkZXIgYWRkaW5nIHRoZSByZW1haW5pbmcgQVdTIHJlY29tbWVuZGVkIG9yZ2FuaXNhdGlvbmFsIHVuaXRzXG4gICAgLy8gaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9ibG9ncy9tdC9iZXN0LXByYWN0aWNlcy1mb3Itb3JnYW5pemF0aW9uYWwtdW5pdHMtd2l0aC1hd3Mtb3JnYW5pemF0aW9ucy9cbiAgICAvLyAtIGRlcGxveW1lbnRzIChidWlsZCBhZ2VudHMgLSBhY2NvdW50cyBtYXkgYmUgc3BlY2lmaWMgcGVyICdzZXJ2aWNlJylcbiAgICAvLyAtIHNlY3VyaXR5XG4gICAgLy8gLSBzYW5kYm94IChlcXVpdmFsZW50IHRvIGRldmVsb3BtZW50IHVuaXQ/KVxuICAgIC8vIC0gd29ya2xvYWRzXG4gIH1cblxuICBwcml2YXRlIGFkZE9yZ2FuaXNhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLm9yZ2FuaXNhdGlvbiA9IG5ldyBPcmdhbml6YXRpb24odGhpcywgdGhpcy5wcm9wcy5vcmdhbmlzYXRpb25OYW1lLCB7XG4gICAgICBmZWF0dXJlU2V0OiBGZWF0dXJlU2V0LkFMTFxuICAgIH0pO1xuXG4gICAgY29uc3QgZW5mb3JjZWRQb2xpY3lUeXBlczogUG9saWN5VHlwZVtdID0gW1xuICAgICAgUG9saWN5VHlwZS5TRVJWSUNFX0NPTlRST0xfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5UQUdfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5CQUNLVVBfUE9MSUNZLFxuICAgICAgUG9saWN5VHlwZS5BSVNFUlZJQ0VTX09QVF9PVVRfUE9MSUNZXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgcG9saWN5VHlwZSBvZiBlbmZvcmNlZFBvbGljeVR5cGVzKSB7XG4gICAgICB0aGlzLm9yZ2FuaXNhdGlvbi5lbmFibGVQb2xpY3lUeXBlKHBvbGljeVR5cGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYWRkT3JnYW5pc2F0aW9uVW5pdHNBbmRBY2NvdW50cygpIHtcbiAgICBjb25zdCBvcmdTdHJ1Y3R1cmU6IE9yZ2FuaXNhdGlvblN0cnVjdHVyZVtdID0gW1xuICAgICAge1xuICAgICAgICBpZDogXCJwcm9kdWN0aW9uT3JnYW5pemF0aW9uYWxVbml0XCIsXG4gICAgICAgIG5hbWU6IFwiUHJvZHVjdGlvblwiLFxuICAgICAgICBhY2NvdW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcInByb2R1Y3Rpb25BY2NvdW50XCIsXG4gICAgICAgICAgICBuYW1lOiBcIlByb2R1Y3Rpb25cIixcbiAgICAgICAgICAgIGVtYWlsOiBhZGRTdWZmaXhUb0VtYWlsKHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLCBcInByb2R1Y3Rpb25cIilcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBcInN0YWdpbmdPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJTdGFnaW5nXCIsXG4gICAgICAgIGFjY291bnRzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IFwic3RhZ2luZ0FjY291bnRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiU3RhZ2luZ1wiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwodGhpcy5wcm9wcy5hY2NvdW50RW1haWwsIFwic3RhZ2luZ1wiKVxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6IFwiZGV2ZWxvcG1lbnRPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJEZXZlbG9wbWVudFwiLFxuICAgICAgICBhY2NvdW50czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiBcImRldmVsb3BtZW50QWNjb3VudFwiLFxuICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wbWVudFwiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwodGhpcy5wcm9wcy5hY2NvdW50RW1haWwsIFwiZGV2ZWxvcG1lbnRcIilcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiBcInBsYXRmb3JtT3JnYW5pemF0aW9uYWxVbml0XCIsXG4gICAgICAgIG5hbWU6IFwiUGxhdGZvcm1cIixcbiAgICAgICAgYWNjb3VudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJwbGF0Zm9ybUFjY291bnRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiUGxhdGZvcm1cIixcbiAgICAgICAgICAgIGVtYWlsOiBhZGRTdWZmaXhUb0VtYWlsKHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLCBcInBsYXRmb3JtXCIpXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogXCJidXNpbmVzc0NvbnRpbnVpdHlPcmdhbml6YXRpb25hbFVuaXRcIixcbiAgICAgICAgbmFtZTogXCJCdXNpbmVzc0NvbnRpbnVpdHlcIixcbiAgICAgICAgYWNjb3VudHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogXCJidXNpbmVzc0NvbnRpbnVpdHlBY2NvdW50XCIsXG4gICAgICAgICAgICBuYW1lOiBcIkJ1c2luZXNzQ29udGludWl0eVwiLFxuICAgICAgICAgICAgZW1haWw6IGFkZFN1ZmZpeFRvRW1haWwoXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMuYWNjb3VudEVtYWlsLFxuICAgICAgICAgICAgICBcImJ1c2luZXNzQ29udGludWl0eVwiXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICBdXG4gICAgICB9XG4gICAgXTtcblxuICAgIGZvciAoY29uc3Qgb3JnVW5pdFN0cnVjdHVyZSBvZiBvcmdTdHJ1Y3R1cmUpIHtcbiAgICAgIGNvbnN0IG9yZ1VuaXQgPSB0aGlzLmFkZE9yZ2FuaXNhdGlvbmFsVW5pdChcbiAgICAgICAgb3JnVW5pdFN0cnVjdHVyZS5pZCxcbiAgICAgICAgb3JnVW5pdFN0cnVjdHVyZS5uYW1lXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY291bnRTdHJ1Y3R1cmUgb2Ygb3JnVW5pdFN0cnVjdHVyZS5hY2NvdW50cykge1xuICAgICAgICB0aGlzLmFkZEFjY291bnQoXG4gICAgICAgICAgYWNjb3VudFN0cnVjdHVyZS5pZCxcbiAgICAgICAgICBhY2NvdW50U3RydWN0dXJlLm5hbWUsXG4gICAgICAgICAgYWNjb3VudFN0cnVjdHVyZS5lbWFpbCxcbiAgICAgICAgICB7IGVudjogb3JnVW5pdFN0cnVjdHVyZS5uYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkgfSxcbiAgICAgICAgICBvcmdVbml0XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRPcmdhbmlzYXRpb25hbFVuaXQoaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nKTogT3JnYW5pemF0aW9uYWxVbml0IHtcbiAgICBjb25zdCBvdSA9IG5ldyBPcmdhbml6YXRpb25hbFVuaXQodGhpcywgaWQsIHtcbiAgICAgIG9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IG5hbWUsXG4gICAgICBwYXJlbnQ6IHRoaXMub3JnYW5pc2F0aW9uLnJvb3QsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1kgLy90b2RvOiB2YWxpZGF0ZSBpZiB0aGlzIGlzIGJlc3QgcHJhY3RpY2VcbiAgICAgIC8vIGRlZmF1bHRzXG4gICAgICAvLyBpbXBvcnRPbkR1cGxpY2F0ZTogZmFsc2UsIC8vdG9kbzogc2hvdWxkIHdlIGltcG9ydCBwcmUtZXhpc3Rpbmcgb3JnYW5pc2F0aW9uYWwgdW5pdHM/XG4gICAgfSk7XG5cbiAgICB0aGlzLm9yZ2FuaXNhdGlvbmFsVW5pdHMucHVzaChvdSk7XG4gICAgcmV0dXJuIG91O1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRBY2NvdW50KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBvcmdhbmlzYXRpb25hbFVuaXQ6IE9yZ2FuaXphdGlvbmFsVW5pdFxuICApOiBBY2NvdW50IHtcbiAgICBjb25zdCBhY2MgPSBuZXcgQWNjb3VudCh0aGlzLCBpZCwge1xuICAgICAgYWNjb3VudE5hbWU6IG5hbWUsXG4gICAgICBlbWFpbDogZW1haWwsXG4gICAgICBwYXJlbnQ6IG9yZ2FuaXNhdGlvbmFsVW5pdFxuICAgIH0pO1xuICAgIHRoaXMuYWNjb3VudHMucHVzaChhY2MpO1xuXG4gICAgZm9yIChjb25zdCB0YWcgaW4gdGFncykge1xuICAgICAgVGFncy5vZihhY2MpLmFkZCh0YWcsIHRhZ3NbdGFnXSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1JZGAsIHtcbiAgICAgIGtleTogYCR7aWR9SWRgLFxuICAgICAgdmFsdWU6IGFjYy5hY2NvdW50SWQsXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1JZGBcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QXJuYCxcbiAgICAgIHZhbHVlOiBhY2MuYWNjb3VudElkLFxuICAgICAgZXhwb3J0TmFtZTogYCR7aWR9QXJuYFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGFjYztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBY2NvdW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5hY2NvdW50cztcbiAgfVxufVxuZXhwb3J0IGRlZmF1bHQgTWFuYWdlZE9yZ2FuaXNhdGlvbjtcblxuLyoqXG4gKiBBIHN0YWNrIGZvciBjcmVhdGluZyBtdWx0aSBlbnZpcm9ubWVudCBvcmdhbmlzYXRpb25zIHdpdGggYSBwcm9kdWN0aW9uLCBzdGFnaW5nIGFuZCBkZXZlbG9wbWVudCBhY2NvdW50LlxuICovXG5leHBvcnQgY2xhc3MgTWFuYWdlZE9yZ2FuaXNhdGlvblN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICBwcml2YXRlIHJlc291cmNlOiBNYW5hZ2VkT3JnYW5pc2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKGlkOiBzdHJpbmcsIHByb3BzOiBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihBcHAuZ2V0SW5zdGFuY2UoKSwgaWQpO1xuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgTWFuYWdlZE9yZ2FuaXNhdGlvbih0aGlzLCBpZCwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIGdldEFjY291bnRzKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmdldEFjY291bnRzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Stack } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
|
+
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
3
4
|
export interface StackBuilder {
|
|
4
5
|
addConstruct(resource: Construct): StackBuilder;
|
|
5
6
|
addResource(fn: (stackBuilder: StackBuilder) => Construct): StackBuilder;
|
|
@@ -20,6 +21,7 @@ export default class AwsStack implements StackBuilder {
|
|
|
20
21
|
};
|
|
21
22
|
private stack;
|
|
22
23
|
private network;
|
|
24
|
+
private containerRegistry;
|
|
23
25
|
constructor(id: string, dependencies?: AwsStack | AwsStack[], props?: AwsStackProps);
|
|
24
26
|
private addDependencies;
|
|
25
27
|
private getCdkStack;
|
|
@@ -29,8 +31,11 @@ export default class AwsStack implements StackBuilder {
|
|
|
29
31
|
addResource(fn: (stackBuilder: StackBuilder) => Construct): AwsStack;
|
|
30
32
|
addNetwork(resource: Construct): AwsStack;
|
|
31
33
|
addNetwork(resource: (stackBuilder: StackBuilder) => Construct): AwsStack;
|
|
34
|
+
addContainerRegistry(resource: Repository): AwsStack;
|
|
35
|
+
addContainerRegistry(resource: (stackBuilder: StackBuilder) => Repository): AwsStack;
|
|
32
36
|
getStack(): Stack;
|
|
33
37
|
getNetwork(): Construct;
|
|
38
|
+
getContainerRegistry(): Repository;
|
|
34
39
|
getResource(identifier: string): Construct;
|
|
35
40
|
connect(from: Construct | string, to: Construct | string, port?: number): this;
|
|
36
41
|
}
|
|
@@ -4,6 +4,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
4
4
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
5
5
|
const constructs_1 = require("constructs");
|
|
6
6
|
const app_1 = require("../../app");
|
|
7
|
+
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
7
8
|
class AwsStack {
|
|
8
9
|
constructor(id, dependencies, props) {
|
|
9
10
|
this.resources = {};
|
|
@@ -59,12 +60,21 @@ class AwsStack {
|
|
|
59
60
|
this.network = resourceActual;
|
|
60
61
|
return this;
|
|
61
62
|
}
|
|
63
|
+
addContainerRegistry(resource) {
|
|
64
|
+
const resourceActual = resource instanceof aws_ecr_1.Repository ? resource : resource(this);
|
|
65
|
+
this.resources[resourceActual.node.id] = resourceActual;
|
|
66
|
+
this.containerRegistry = resourceActual;
|
|
67
|
+
return this;
|
|
68
|
+
}
|
|
62
69
|
getStack() {
|
|
63
70
|
return this.stack;
|
|
64
71
|
}
|
|
65
72
|
getNetwork() {
|
|
66
73
|
return this.network;
|
|
67
74
|
}
|
|
75
|
+
getContainerRegistry() {
|
|
76
|
+
return this.containerRegistry;
|
|
77
|
+
}
|
|
68
78
|
getResource(identifier) {
|
|
69
79
|
return this.resources[identifier];
|
|
70
80
|
}
|
|
@@ -83,4 +93,4 @@ class AwsStack {
|
|
|
83
93
|
}
|
|
84
94
|
}
|
|
85
95
|
exports.default = AwsStack;
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9hd3NTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFnRDtBQUNoRCxpREFBeUQ7QUFDekQsMkNBQXVDO0FBRXZDLG1DQUE0QjtBQW9CNUIsTUFBcUIsUUFBUTtJQVEzQixZQUNFLEVBQVUsRUFDVixZQUFvQyxFQUNwQyxLQUFxQjtRQVZQLGNBQVMsR0FFckIsRUFBRSxDQUFDO1FBVUwseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsa0NBQWtDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVPLGVBQWUsQ0FBQyxZQUFvQztRQUMxRCxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFMUIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQy9CLEtBQUssTUFBTSxVQUFVLElBQUksWUFBWSxFQUFFO2dCQUNyQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUNqRDtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsRUFBVSxFQUFFLEtBQXFCO1FBQ25ELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFO1lBQzVDLE9BQU8sSUFBSSxtQkFBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsa0NBQWtDO1NBQy9GO1FB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QU8sQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUF0SEQsMkJBc0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElDb25uZWN0YWJsZSwgUG9ydCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0J1aWxkZXIge1xuICBhZGRDb25zdHJ1Y3QocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkUmVzb3VyY2UoZm46IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBDb25zdHJ1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF3c1N0YWNrIGltcGxlbWVudHMgU3RhY2tCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczoge1xuICAgIFtrZXk6IHN0cmluZ106IENvbnN0cnVjdDtcbiAgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIG5ldHdvcms6IENvbnN0cnVjdDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSxcbiAgICBwcm9wcz86IEF3c1N0YWNrUHJvcHNcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGlubmVyIENESyBTdGFja1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldENka1N0YWNrKGlkLCBwcm9wcyk7XG5cbiAgICAvLyBSZWdpc3RlciBhbGwgc3RhY2sgZGVwZW5kZW5jaWVzXG4gICAgdGhpcy5hZGREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSkge1xuICAgIGlmICghZGVwZW5kZW5jaWVzKSByZXR1cm47XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRoaXMuc3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5LmdldFN0YWNrKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jaWVzLmdldFN0YWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrU3RhY2soaWQ6IHN0cmluZywgcHJvcHM/OiBBd3NTdGFja1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhY2sodW5kZWZpbmVkLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7IC8vIENyZWF0ZSBhIG1vY2sgc3RhY2sgZm9yIHRlc3RpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN0YWNrKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWNrUHJvcHMoXG4gICAgcHJvcHM6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWRcbiAgKTogU3RhY2tQcm9wcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhY2tQcm9wczogU3RhY2tQcm9wcyA9IHtcbiAgICAgIGVudjpcbiAgICAgICAgcHJvcHMuYWNjb3VudCAmJiBwcm9wcy5yZWdpb25cbiAgICAgICAgICA/IHsgYWNjb3VudDogcHJvcHMuYWNjb3VudCwgcmVnaW9uOiBwcm9wcy5yZWdpb24gfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIHJldHVybiBzdGFja1Byb3BzO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSBpc0Nvbm5lY3RhYmxlKGFyZzogYW55KTogYXJnIGlzIElDb25uZWN0YWJsZSB7XG4gICAgcmV0dXJuIGFyZy5jb25uZWN0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb25zdHJ1Y3QoY29uc3RydWN0OiBDb25zdHJ1Y3QpOiBBd3NTdGFjayB7XG4gICAgdGhpcy5yZXNvdXJjZXNbY29uc3RydWN0Lm5vZGUuaWRdID0gY29uc3RydWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZFJlc291cmNlKGZuOiAoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IGZuKHRoaXMpO1xuICAgIHRoaXMucmVzb3VyY2VzW3Jlc291cmNlLm5vZGUuaWRdID0gcmVzb3VyY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYWRkTmV0d29yayhyZXNvdXJjZTogQ29uc3RydWN0KTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGROZXR3b3JrKFxuICAgIHJlc291cmNlOiAoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdFxuICApOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZE5ldHdvcmsoXG4gICAgcmVzb3VyY2U6IENvbnN0cnVjdCB8ICgoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdClcbiAgKTogQXdzU3RhY2sge1xuICAgIGNvbnN0IHJlc291cmNlQWN0dWFsID1cbiAgICAgIHJlc291cmNlIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gcmVzb3VyY2UgOiByZXNvdXJjZSh0aGlzKTtcbiAgICB0aGlzLnJlc291cmNlc1tyZXNvdXJjZUFjdHVhbC5ub2RlLmlkXSA9IHJlc291cmNlQWN0dWFsO1xuICAgIHRoaXMubmV0d29yayA9IHJlc291cmNlQWN0dWFsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGdldFN0YWNrKCkge1xuICAgIHJldHVybiB0aGlzLnN0YWNrO1xuICB9XG5cbiAgcHVibGljIGdldE5ldHdvcmsoKSB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29yaztcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXNvdXJjZShpZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZXNbaWRlbnRpZmllcl07XG4gIH1cblxuICBwdWJsaWMgY29ubmVjdChcbiAgICBmcm9tOiBDb25zdHJ1Y3QgfCBzdHJpbmcsXG4gICAgdG86IENvbnN0cnVjdCB8IHN0cmluZyxcbiAgICBwb3J0PzogbnVtYmVyXG4gICkge1xuICAgIGlmICghZnJvbSB8fCAhdG8pIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgZnJvbVJlc291cmNlID1cbiAgICAgIGZyb20gaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBmcm9tIDogdGhpcy5nZXRSZXNvdXJjZShmcm9tKTtcbiAgICBjb25zdCB0b1Jlc291cmNlID0gdG8gaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyB0byA6IHRoaXMuZ2V0UmVzb3VyY2UodG8pO1xuXG4gICAgaWYgKCFmcm9tUmVzb3VyY2UgfHwgIXRvUmVzb3VyY2UpIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKCF0aGlzLmlzQ29ubmVjdGFibGUoZnJvbVJlc291cmNlKSB8fCAhdGhpcy5pc0Nvbm5lY3RhYmxlKHRvUmVzb3VyY2UpKVxuICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICBjb25zdCBwb3J0QWN0dWFsID0gcG9ydCA/IFBvcnQudGNwKHBvcnQpIDogUG9ydC5hbGxUY3AoKTtcbiAgICBmcm9tUmVzb3VyY2UuY29ubmVjdGlvbnMuYWxsb3dUbyh0b1Jlc291cmNlLCBwb3J0QWN0dWFsKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iXX0=
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzU3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9hd3NTdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFnRDtBQUNoRCxpREFBeUQ7QUFDekQsMkNBQXVDO0FBRXZDLG1DQUE0QjtBQUM1QixpREFBaUQ7QUFvQmpELE1BQXFCLFFBQVE7SUFTM0IsWUFDRSxFQUFVLEVBQ1YsWUFBb0MsRUFDcEMsS0FBcUI7UUFYUCxjQUFTLEdBRXJCLEVBQUUsQ0FBQztRQVdMLHlCQUF5QjtRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXpDLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxlQUFlLENBQUMsWUFBb0M7UUFDMUQsSUFBSSxDQUFDLFlBQVk7WUFBRSxPQUFPO1FBRTFCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMvQixLQUFLLE1BQU0sVUFBVSxJQUFJLFlBQVksRUFBRTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDakQ7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7U0FDbkQ7SUFDSCxDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQVUsRUFBRSxLQUFxQjtRQUNuRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRTtZQUM1QyxPQUFPLElBQUksbUJBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtD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Q0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQztRQUU5QyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDO1lBQ3RFLE9BQU8sSUFBSSxDQUFDO1FBRWQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekQsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBeklELDJCQXlJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29ubmVjdGFibGUsIFBvcnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3JcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0J1aWxkZXIge1xuICBhZGRDb25zdHJ1Y3QocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkUmVzb3VyY2UoZm46IChzdGFja0J1aWxkZXI6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0KTogU3RhY2tCdWlsZGVyO1xuXG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCk6IFN0YWNrQnVpbGRlcjtcbiAgYWRkTmV0d29yayhmbjogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBDb25zdHJ1Y3QpOiBTdGFja0J1aWxkZXI7XG4gIGFkZE5ldHdvcmsocmVzb3VyY2U6IENvbnN0cnVjdCB8IHN0cmluZyk6IFN0YWNrQnVpbGRlcjtcblxuICBnZXRTdGFjaygpOiBTdGFjaztcbiAgZ2V0TmV0d29yaygpOiBDb25zdHJ1Y3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzU3RhY2tQcm9wcyB7XG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbiAgZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF3c1N0YWNrIGltcGxlbWVudHMgU3RhY2tCdWlsZGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczoge1xuICAgIFtrZXk6IHN0cmluZ106IENvbnN0cnVjdDtcbiAgfSA9IHt9O1xuXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrO1xuICBwcml2YXRlIG5ldHdvcms6IENvbnN0cnVjdDtcbiAgcHJpdmF0ZSBjb250YWluZXJSZWdpc3RyeTogUmVwb3NpdG9yeTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSxcbiAgICBwcm9wcz86IEF3c1N0YWNrUHJvcHNcbiAgKSB7XG4gICAgLy8gQ3JlYXRlIGlubmVyIENESyBTdGFja1xuICAgIHRoaXMuc3RhY2sgPSB0aGlzLmdldENka1N0YWNrKGlkLCBwcm9wcyk7XG5cbiAgICAvLyBSZWdpc3RlciBhbGwgc3RhY2sgZGVwZW5kZW5jaWVzXG4gICAgdGhpcy5hZGREZXBlbmRlbmNpZXMoZGVwZW5kZW5jaWVzKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRGVwZW5kZW5jaWVzKGRlcGVuZGVuY2llcz86IEF3c1N0YWNrIHwgQXdzU3RhY2tbXSkge1xuICAgIGlmICghZGVwZW5kZW5jaWVzKSByZXR1cm47XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShkZXBlbmRlbmNpZXMpKSB7XG4gICAgICBmb3IgKGNvbnN0IGRlcGVuZGVuY3kgb2YgZGVwZW5kZW5jaWVzKSB7XG4gICAgICAgIHRoaXMuc3RhY2suYWRkRGVwZW5kZW5jeShkZXBlbmRlbmN5LmdldFN0YWNrKCkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN0YWNrLmFkZERlcGVuZGVuY3koZGVwZW5kZW5jaWVzLmdldFN0YWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2RrU3RhY2soaWQ6IHN0cmluZywgcHJvcHM/OiBBd3NTdGFja1Byb3BzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52LkpFU1RfV09SS0VSX0lEICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBuZXcgU3RhY2sodW5kZWZpbmVkLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7IC8vIENyZWF0ZSBhIG1vY2sgc3RhY2sgZm9yIHRlc3RpbmdcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFN0YWNrKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgdGhpcy5nZXRTdGFja1Byb3BzKHByb3BzKSk7XG4gIH1cblxuICBwcml2YXRlIGdldFN0YWNrUHJvcHMoXG4gICAgcHJvcHM6IEF3c1N0YWNrUHJvcHMgfCB1bmRlZmluZWRcbiAgKTogU3RhY2tQcm9wcyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcykgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RhY2tQcm9wczogU3RhY2tQcm9wcyA9IHtcbiAgICAgIGVudjpcbiAgICAgICAgcHJvcHMuYWNjb3VudCAmJiBwcm9wcy5yZWdpb25cbiAgICAgICAgICA/IHsgYWNjb3VudDogcHJvcHMuYWNjb3VudCwgcmVnaW9uOiBwcm9wcy5yZWdpb24gfVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIHJldHVybiBzdGFja1Byb3BzO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgcHJpdmF0ZSBpc0Nvbm5lY3RhYmxlKGFyZzogYW55KTogYXJnIGlzIElDb25uZWN0YWJsZSB7XG4gICAgcmV0dXJuIGFyZy5jb25uZWN0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBhZGRDb25zdHJ1Y3QoY29uc3RydWN0OiBDb25zdHJ1Y3QpOiBBd3NTdGFjayB7XG4gICAgdGhpcy5yZXNvdXJjZXNbY29uc3RydWN0Lm5vZGUuaWRdID0gY29uc3RydWN0O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZFJlc291cmNlKGZuOiAoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCk6IEF3c1N0YWNrIHtcbiAgICBjb25zdCByZXNvdXJjZSA9IGZuKHRoaXMpO1xuICAgIHRoaXMucmVzb3VyY2VzW3Jlc291cmNlLm5vZGUuaWRdID0gcmVzb3VyY2U7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYWRkTmV0d29yayhyZXNvdXJjZTogQ29uc3RydWN0KTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGROZXR3b3JrKFxuICAgIHJlc291cmNlOiAoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdFxuICApOiBBd3NTdGFjaztcbiAgcHVibGljIGFkZE5ldHdvcmsoXG4gICAgcmVzb3VyY2U6IENvbnN0cnVjdCB8ICgoc3RhY2tCdWlsZGVyOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdClcbiAgKTogQXdzU3RhY2sge1xuICAgIGNvbnN0IHJlc291cmNlQWN0dWFsID1cbiAgICAgIHJlc291cmNlIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gcmVzb3VyY2UgOiByZXNvdXJjZSh0aGlzKTtcbiAgICB0aGlzLnJlc291cmNlc1tyZXNvdXJjZUFjdHVhbC5ub2RlLmlkXSA9IHJlc291cmNlQWN0dWFsO1xuICAgIHRoaXMubmV0d29yayA9IHJlc291cmNlQWN0dWFsO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZENvbnRhaW5lclJlZ2lzdHJ5KHJlc291cmNlOiBSZXBvc2l0b3J5KTogQXdzU3RhY2s7XG4gIHB1YmxpYyBhZGRDb250YWluZXJSZWdpc3RyeShcbiAgICByZXNvdXJjZTogKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBSZXBvc2l0b3J5XG4gICk6IEF3c1N0YWNrO1xuICBwdWJsaWMgYWRkQ29udGFpbmVyUmVnaXN0cnkoXG4gICAgcmVzb3VyY2U6IFJlcG9zaXRvcnkgfCAoKHN0YWNrQnVpbGRlcjogU3RhY2tCdWlsZGVyKSA9PiBSZXBvc2l0b3J5KVxuICApOiBBd3NTdGFjayB7XG4gICAgY29uc3QgcmVzb3VyY2VBY3R1YWwgPVxuICAgICAgcmVzb3VyY2UgaW5zdGFuY2VvZiBSZXBvc2l0b3J5ID8gcmVzb3VyY2UgOiByZXNvdXJjZSh0aGlzKTtcbiAgICB0aGlzLnJlc291cmNlc1tyZXNvdXJjZUFjdHVhbC5ub2RlLmlkXSA9IHJlc291cmNlQWN0dWFsO1xuICAgIHRoaXMuY29udGFpbmVyUmVnaXN0cnkgPSByZXNvdXJjZUFjdHVhbDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGFjaygpIHtcbiAgICByZXR1cm4gdGhpcy5zdGFjaztcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXR3b3JrKCkge1xuICAgIHJldHVybiB0aGlzLm5ldHdvcms7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q29udGFpbmVyUmVnaXN0cnkoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbmVyUmVnaXN0cnk7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmVzb3VyY2UoaWRlbnRpZmllcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2VzW2lkZW50aWZpZXJdO1xuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoXG4gICAgZnJvbTogQ29uc3RydWN0IHwgc3RyaW5nLFxuICAgIHRvOiBDb25zdHJ1Y3QgfCBzdHJpbmcsXG4gICAgcG9ydD86IG51bWJlclxuICApIHtcbiAgICBpZiAoIWZyb20gfHwgIXRvKSByZXR1cm4gdGhpcztcblxuICAgIGNvbnN0IGZyb21SZXNvdXJjZSA9XG4gICAgICBmcm9tIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gZnJvbSA6IHRoaXMuZ2V0UmVzb3VyY2UoZnJvbSk7XG4gICAgY29uc3QgdG9SZXNvdXJjZSA9IHRvIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdG8gOiB0aGlzLmdldFJlc291cmNlKHRvKTtcblxuICAgIGlmICghZnJvbVJlc291cmNlIHx8ICF0b1Jlc291cmNlKSByZXR1cm4gdGhpcztcblxuICAgIGlmICghdGhpcy5pc0Nvbm5lY3RhYmxlKGZyb21SZXNvdXJjZSkgfHwgIXRoaXMuaXNDb25uZWN0YWJsZSh0b1Jlc291cmNlKSlcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgY29uc3QgcG9ydEFjdHVhbCA9IHBvcnQgPyBQb3J0LnRjcChwb3J0KSA6IFBvcnQuYWxsVGNwKCk7XG4gICAgZnJvbVJlc291cmNlLmNvbm5lY3Rpb25zLmFsbG93VG8odG9SZXNvdXJjZSwgcG9ydEFjdHVhbCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { ContainerImage, RepositoryImage } from "aws-cdk-lib/aws-ecs";
|
|
2
|
+
import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
import { StackBuilder } from "../awsStack";
|
|
5
|
+
import { SecretValue } from "aws-cdk-lib";
|
|
6
|
+
import { IManagedPolicy, PolicyDocument } from "aws-cdk-lib/aws-iam";
|
|
7
|
+
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
8
|
+
export declare enum Protocol {
|
|
9
|
+
HTTP = 0,
|
|
10
|
+
HTTPS = 1
|
|
11
|
+
}
|
|
12
|
+
export declare enum ScalingType {
|
|
13
|
+
CPU = "ECSServiceAverageCPUUtilization",
|
|
14
|
+
MEMORY = "ECSServiceAverageMemoryUtilization"
|
|
15
|
+
}
|
|
16
|
+
export interface KeyValue {
|
|
17
|
+
[key: string]: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ContainerSecret {
|
|
20
|
+
[key: string]: SecretValue;
|
|
21
|
+
}
|
|
22
|
+
type FargateClusterProps = {
|
|
23
|
+
ecrRepository: Repository | RepositoryImage;
|
|
24
|
+
clusterName: string;
|
|
25
|
+
containerCommand?: string[];
|
|
26
|
+
containerEnvironment?: KeyValue;
|
|
27
|
+
containerSecrets?: ContainerSecret;
|
|
28
|
+
containerPort?: number;
|
|
29
|
+
cpu?: number;
|
|
30
|
+
databaseConnection: IConnectable;
|
|
31
|
+
parentDomain?: string;
|
|
32
|
+
desiredCount?: number;
|
|
33
|
+
healthCheckPath?: string;
|
|
34
|
+
listenerPort?: number;
|
|
35
|
+
memoryLimitMiB?: number;
|
|
36
|
+
publicLoadBalancer?: boolean;
|
|
37
|
+
protocol: Protocol;
|
|
38
|
+
scalingType?: ScalingType;
|
|
39
|
+
serviceName: string;
|
|
40
|
+
tags: KeyValue;
|
|
41
|
+
taskRoleInlinePolicies?: {
|
|
42
|
+
[name: string]: PolicyDocument;
|
|
43
|
+
};
|
|
44
|
+
taskRoleManagegedPolicies?: IManagedPolicy[];
|
|
45
|
+
vpc?: IVpc;
|
|
46
|
+
};
|
|
47
|
+
export default class FargateCluster extends Construct implements IConnectable {
|
|
48
|
+
connections: Connections;
|
|
49
|
+
private cluster;
|
|
50
|
+
private loadBalancer;
|
|
51
|
+
private executionRole;
|
|
52
|
+
private taskDefinition;
|
|
53
|
+
private containerDefinition;
|
|
54
|
+
private fargateService;
|
|
55
|
+
private scalingPolicy;
|
|
56
|
+
private hostedZone;
|
|
57
|
+
private certificate;
|
|
58
|
+
private aRecord;
|
|
59
|
+
private loadBalancerListener;
|
|
60
|
+
private secrets;
|
|
61
|
+
constructor(scope: Construct, id: string, props: FargateClusterProps);
|
|
62
|
+
addCluster(props: FargateClusterProps): void;
|
|
63
|
+
addSecrets(props: FargateClusterProps): void;
|
|
64
|
+
addExecutionRole(props: FargateClusterProps): void;
|
|
65
|
+
addTaskDefinition(props: FargateClusterProps): void;
|
|
66
|
+
addContainerDefinition(props: FargateClusterProps): void;
|
|
67
|
+
addFargateService(props: FargateClusterProps): void;
|
|
68
|
+
addScalingPolicy(props: FargateClusterProps): void;
|
|
69
|
+
registerLoadBalancerTargets(props: FargateClusterProps): void;
|
|
70
|
+
addLoadBalancer(props: FargateClusterProps): void;
|
|
71
|
+
addLoadBalancerListener(props: FargateClusterProps): void;
|
|
72
|
+
addHostedZone(props: FargateClusterProps): void;
|
|
73
|
+
getImage(props: FargateClusterProps): ContainerImage;
|
|
74
|
+
static build(id: string, props: FargateClusterProps): (sb: StackBuilder) => Construct;
|
|
75
|
+
}
|
|
76
|
+
export {};
|