@liflig/cdk 2.21.2 → 2.21.4
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/README.md +18 -2
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.d.ts +1 -1
- package/lib/cdk-pipelines/cloud-assembly-lookup-handler.js +46 -35
- package/lib/cdk-pipelines/liflig-cdk-pipeline.js +6 -6
- package/lib/index.d.ts +1 -4
- package/lib/index.js +2 -6
- package/lib/ses/configurationsetsnsdestination/handler.d.ts +1 -1
- package/lib/ses/configurationsetsnsdestination/handler.js +15 -25
- package/lib/ses/configurationsetsnsdestination/index.js +7 -7
- package/lib/ses/sesdomain/handler.d.ts +1 -1
- package/lib/ses/sesdomain/handler.js +31 -31
- package/lib/ses/sesdomain/index.js +6 -6
- package/lib/ses/sesverifyemail/handler.d.ts +1 -1
- package/lib/ses/sesverifyemail/handler.js +12 -10
- package/lib/ses/sesverifyemail/index.js +6 -6
- package/package.json +14 -3
- package/lib/cdk-deploy/cdk-deploy.d.ts +0 -63
- package/lib/cdk-deploy/cdk-deploy.js +0 -175
- package/lib/cdk-deploy/index.d.ts +0 -1
- package/lib/cdk-deploy/index.js +0 -6
- package/lib/cdk-deploy/start-deploy-handler.d.ts +0 -8
- package/lib/cdk-deploy/start-deploy-handler.js +0 -72
- package/lib/cdk-deploy/status-handler.d.ts +0 -6
- package/lib/cdk-deploy/status-handler.js +0 -83
- package/lib/ecs-update-image/artifact-status.d.ts +0 -39
- package/lib/ecs-update-image/artifact-status.js +0 -41
- package/lib/ecs-update-image/ecs-update-image.d.ts +0 -41
- package/lib/ecs-update-image/ecs-update-image.js +0 -98
- package/lib/ecs-update-image/index.d.ts +0 -3
- package/lib/ecs-update-image/index.js +0 -10
- package/lib/ecs-update-image/start-deploy-handler.d.ts +0 -6
- package/lib/ecs-update-image/start-deploy-handler.js +0 -104
- package/lib/ecs-update-image/status-handler.d.ts +0 -11
- package/lib/ecs-update-image/status-handler.js +0 -74
- package/lib/ecs-update-image/tag.d.ts +0 -47
- package/lib/ecs-update-image/tag.js +0 -67
- package/lib/pipelines/conventions.d.ts +0 -14
- package/lib/pipelines/conventions.js +0 -24
- package/lib/pipelines/deploy-env.d.ts +0 -18
- package/lib/pipelines/deploy-env.js +0 -96
- package/lib/pipelines/index.d.ts +0 -2
- package/lib/pipelines/index.js +0 -8
- package/lib/pipelines/liflig-cdk-deployer-deps.d.ts +0 -13
- package/lib/pipelines/liflig-cdk-deployer-deps.js +0 -35
- package/lib/pipelines/pipeline.d.ts +0 -78
- package/lib/pipelines/pipeline.js +0 -224
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
5
|
+
const client_sesv2_1 = require("@aws-sdk/client-sesv2");
|
|
6
|
+
const handler = async (event) => {
|
|
7
|
+
var _a;
|
|
8
|
+
const sesClient = new client_ses_1.SESClient();
|
|
9
|
+
const sesv2Client = new client_sesv2_1.SESv2Client();
|
|
8
10
|
const ttl = "1800";
|
|
9
|
-
const ses = new AWS.SES();
|
|
10
|
-
const sesv2 = new AWS.SESV2();
|
|
11
11
|
const domainName = event.ResourceProperties["DomainName"];
|
|
12
12
|
const includeVerificationRecord = event.ResourceProperties["IncludeVerificationRecord"] == "true";
|
|
13
13
|
const defaultConfigurationSetName = event.ResourceProperties["DefaultConfigurationSetName"];
|
|
@@ -36,39 +36,39 @@ const sesDomainHandler = async (event) => {
|
|
|
36
36
|
}
|
|
37
37
|
switch (event.RequestType) {
|
|
38
38
|
case "Delete":
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(`ses.deleteIdentity: ${JSON.stringify(
|
|
39
|
+
const deleteIdentityResp = await sesClient.send(new client_ses_1.DeleteIdentityCommand({
|
|
40
|
+
Identity: domainName,
|
|
41
|
+
}));
|
|
42
|
+
console.log(`ses.deleteIdentity: ${JSON.stringify(deleteIdentityResp)}`);
|
|
43
43
|
return {
|
|
44
44
|
PhysicalResourceId: event.PhysicalResourceId,
|
|
45
45
|
};
|
|
46
46
|
case "Create":
|
|
47
47
|
case "Update":
|
|
48
48
|
// Idempotent.
|
|
49
|
-
const
|
|
50
|
-
.verifyDomainIdentity({
|
|
49
|
+
const verifyDomainIdentityResp = await sesClient.send(new client_ses_1.VerifyDomainIdentityCommand({
|
|
51
50
|
Domain: domainName,
|
|
52
|
-
})
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
}));
|
|
52
|
+
console.log(`ses.verifyDomainIdentity: ${JSON.stringify(verifyDomainIdentityResp)}`);
|
|
53
|
+
const verificationToken = verifyDomainIdentityResp.VerificationToken;
|
|
54
|
+
if (!verificationToken) {
|
|
55
|
+
throw new Error("Verification token not returned");
|
|
56
|
+
}
|
|
56
57
|
// Idempotent.
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
console.log(`ses.verifyDomainDkim: ${JSON.stringify(
|
|
61
|
-
const dkimTokens =
|
|
58
|
+
const verifyDomainDkimResp = await sesClient.send(new client_ses_1.VerifyDomainDkimCommand({
|
|
59
|
+
Domain: domainName,
|
|
60
|
+
}));
|
|
61
|
+
console.log(`ses.verifyDomainDkim: ${JSON.stringify(verifyDomainDkimResp)}`);
|
|
62
|
+
const dkimTokens = (_a = verifyDomainDkimResp.DkimTokens) !== null && _a !== void 0 ? _a : [];
|
|
63
|
+
if (!dkimTokens) {
|
|
64
|
+
throw new Error("DKIM tokens not returned");
|
|
65
|
+
}
|
|
62
66
|
// Idempotent.
|
|
63
|
-
const
|
|
64
|
-
.putEmailIdentityConfigurationSetAttributes({
|
|
67
|
+
const putEmailIdentityConfigResp = await sesv2Client.send(new client_sesv2_1.PutEmailIdentityConfigurationSetAttributesCommand({
|
|
65
68
|
EmailIdentity: domainName,
|
|
66
|
-
// ConfigurationSetName can be set to undefined to remove
|
|
67
|
-
// the default configuration set from the identity.
|
|
68
69
|
ConfigurationSetName: defaultConfigurationSetName,
|
|
69
|
-
})
|
|
70
|
-
|
|
71
|
-
console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(response3)}`);
|
|
70
|
+
}));
|
|
71
|
+
console.log(`sesv2.putEmailIdentityConfigurationSetAttributes ${JSON.stringify(putEmailIdentityConfigResp)}`);
|
|
72
72
|
return {
|
|
73
73
|
PhysicalResourceId: `SesDomain${domainName}`,
|
|
74
74
|
Data: {
|
|
@@ -78,5 +78,5 @@ const sesDomainHandler = async (event) => {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
};
|
|
81
|
-
exports.
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
exports.handler = handler;
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzZG9tYWluL2hhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0RBSzRCO0FBRTVCLHdEQUc4QjtBQW9CdkIsTUFBTSxPQUFPLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTs7SUFDckQsTUFBTSxTQUFTLEdBQUcsSUFBSSxzQkFBUyxFQUFFLENBQUE7SUFDakMsTUFBTSxXQUFXLEdBQUcsSUFBSSwwQkFBVyxFQUFFLENBQUE7SUFFckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFBO0lBRWxCLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUN6RCxNQUFNLHlCQUF5QixHQUM3QixLQUFLLENBQUMsa0JBQWtCLENBQUMsMkJBQTJCLENBQUMsSUFBSSxNQUFNLENBQUE7SUFFakUsTUFBTSwyQkFBMkIsR0FDL0IsS0FBSyxDQUFDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDLENBQUE7SUFFekQsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFBO0lBQ2xELENBQUM7SUFFRCxTQUFTLHVCQUF1QixDQUM5QixpQkFBeUIsRUFDekIsVUFBb0I7UUFFcEIsTUFBTSxPQUFPLEdBQXdCLEVBQUUsQ0FBQTtRQUV2QyxJQUFJLHlCQUF5QixFQUFFLENBQUM7WUFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDWCxJQUFJLEVBQUUsY0FBYyxVQUFVLEdBQUc7Z0JBQ2pDLElBQUksRUFBRSxLQUFLO2dCQUNYLGVBQWUsRUFBRSxDQUFDLElBQUksaUJBQWlCLEdBQUcsQ0FBQztnQkFDM0MsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxHQUFHLEtBQUssZUFBZSxVQUFVLEdBQUc7Z0JBQzFDLElBQUksRUFBRSxPQUFPO2dCQUNiLGVBQWUsRUFBRSxDQUFDLEdBQUcsS0FBSyxzQkFBc0IsQ0FBQztnQkFDakQsR0FBRyxFQUFFLEdBQUc7YUFDVCxDQUFDLENBQUE7UUFDSixDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUE7SUFDaEIsQ0FBQztJQUVELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFCLEtBQUssUUFBUTtZQUNYLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUM3QyxJQUFJLGtDQUFxQixDQUFDO2dCQUN4QixRQUFRLEVBQUUsVUFBVTthQUNyQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFeEUsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO2FBQzdDLENBQUE7UUFFSCxLQUFLLFFBQVEsQ0FBQztRQUNkLEtBQUssUUFBUTtZQUNYLGNBQWM7WUFDZCxNQUFNLHdCQUF3QixHQUFHLE1BQU0sU0FBUyxDQUFDLElBQUksQ0FDbkQsSUFBSSx3Q0FBMkIsQ0FBQztnQkFDOUIsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUNILENBQUE7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUNULDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FDeEUsQ0FBQTtZQUNELE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUMsaUJBQWlCLENBQUE7WUFDcEUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtZQUNwRCxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sb0JBQW9CLEdBQUcsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUMvQyxJQUFJLG9DQUF1QixDQUFDO2dCQUMxQixNQUFNLEVBQUUsVUFBVTthQUNuQixDQUFDLENBQ0gsQ0FBQTtZQUNELE9BQU8sQ0FBQyxHQUFHLENBQ1QseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUNoRSxDQUFBO1lBQ0QsTUFBTSxVQUFVLEdBQUcsTUFBQSxvQkFBb0IsQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQTtZQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtZQUM3QyxDQUFDO1lBRUQsY0FBYztZQUNkLE1BQU0sMEJBQTBCLEdBQUcsTUFBTSxXQUFXLENBQUMsSUFBSSxDQUN2RCxJQUFJLGdFQUFpRCxDQUFDO2dCQUNwRCxhQUFhLEVBQUUsVUFBVTtnQkFDekIsb0JBQW9CLEVBQUUsMkJBQTJCO2FBQ2xELENBQUMsQ0FDSCxDQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxvREFBb0QsSUFBSSxDQUFDLFNBQVMsQ0FDaEUsMEJBQTBCLENBQzNCLEVBQUUsQ0FDSixDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxZQUFZLFVBQVUsRUFBRTtnQkFDNUMsSUFBSSxFQUFFO29CQUNKLGlCQUFpQixFQUFFLHVCQUF1QixDQUN4QyxpQkFBaUIsRUFDakIsVUFBVSxDQUNYO29CQUNELGlCQUFpQixFQUFFLGlCQUFpQjtpQkFDckM7YUFDRixDQUFBO0lBQ0wsQ0FBQztBQUNILENBQUMsQ0FBQTtBQTlHWSxRQUFBLE9BQU8sV0E4R25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU0VTQ2xpZW50LFxuICBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQsXG4gIFZlcmlmeURvbWFpbkRraW1Db21tYW5kLFxuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCJcblxuaW1wb3J0IHtcbiAgU0VTdjJDbGllbnQsXG4gIFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzdjJcIlxuXG50eXBlIE9uRXZlbnRIYW5kbGVyID0gKGV2ZW50OiB7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICBSZXF1ZXN0VHlwZTogXCJDcmVhdGVcIiB8IFwiVXBkYXRlXCIgfCBcIkRlbGV0ZVwiXG4gIFJlc291cmNlUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxufSkgPT4gUHJvbWlzZTx7XG4gIFBoeXNpY2FsUmVzb3VyY2VJZD86IHN0cmluZ1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBEYXRhPzogUmVjb3JkPHN0cmluZywgYW55PlxufT5cblxuLy8gVHlwZSB0byBtYWNoIENsb3VkRm9ybWF0aW9uIEFXUzo6Um91dGU1Mzo6UmVjb3JkU2V0R3JvdXAgUmVjb3JkU2V0XG5pbnRlcmZhY2UgUmVjb3JkU2V0UHJvcGVydHkge1xuICBOYW1lOiBzdHJpbmdcbiAgVHlwZTogc3RyaW5nXG4gIFJlc291cmNlUmVjb3Jkczogc3RyaW5nW11cbiAgVFRMOiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IGhhbmRsZXI6IE9uRXZlbnRIYW5kbGVyID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gIGNvbnN0IHNlc0NsaWVudCA9IG5ldyBTRVNDbGllbnQoKVxuICBjb25zdCBzZXN2MkNsaWVudCA9IG5ldyBTRVN2MkNsaWVudCgpXG5cbiAgY29uc3QgdHRsID0gXCIxODAwXCJcblxuICBjb25zdCBkb21haW5OYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRG9tYWluTmFtZVwiXVxuICBjb25zdCBpbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkXCJdID09IFwidHJ1ZVwiXG5cbiAgY29uc3QgZGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lID1cbiAgICBldmVudC5SZXNvdXJjZVByb3BlcnRpZXNbXCJEZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWVcIl1cblxuICBpZiAoIWluY2x1ZGVWZXJpZmljYXRpb25SZWNvcmQpIHtcbiAgICBjb25zb2xlLmxvZyhcIkV4Y2x1ZGluZyB2ZXJpZmljYXRpb24gVFhUIHJlY29yZFwiKVxuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlUm91dGU1M1JlY29yZFNldHMoXG4gICAgdmVyaWZpY2F0aW9uVG9rZW46IHN0cmluZyxcbiAgICBka2ltVG9rZW5zOiBzdHJpbmdbXSxcbiAgKSB7XG4gICAgY29uc3QgcmVjb3JkczogUmVjb3JkU2V0UHJvcGVydHlbXSA9IFtdXG5cbiAgICBpZiAoaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCkge1xuICAgICAgcmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgTmFtZTogYF9hbWF6b25zZXMuJHtkb21haW5OYW1lfS5gLFxuICAgICAgICBUeXBlOiBcIlRYVFwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgXCIke3ZlcmlmaWNhdGlvblRva2VufVwiYF0sXG4gICAgICAgIFRUTDogdHRsLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIGRraW1Ub2tlbnMpIHtcbiAgICAgIHJlY29yZHMucHVzaCh7XG4gICAgICAgIE5hbWU6IGAke3Rva2VufS5fZG9tYWlua2V5LiR7ZG9tYWluTmFtZX0uYCxcbiAgICAgICAgVHlwZTogXCJDTkFNRVwiLFxuICAgICAgICBSZXNvdXJjZVJlY29yZHM6IFtgJHt0b2tlbn0uZGtpbS5hbWF6b25zZXMuY29tLmBdLFxuICAgICAgICBUVEw6IHR0bCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzXG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBcIkRlbGV0ZVwiOlxuICAgICAgY29uc3QgZGVsZXRlSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBEZWxldGVJZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIElkZW50aXR5OiBkb21haW5OYW1lLFxuICAgICAgICB9KSxcbiAgICAgIClcbiAgICAgIGNvbnNvbGUubG9nKGBzZXMuZGVsZXRlSWRlbnRpdHk6ICR7SlNPTi5zdHJpbmdpZnkoZGVsZXRlSWRlbnRpdHlSZXNwKX1gKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICAgIH1cblxuICAgIGNhc2UgXCJDcmVhdGVcIjpcbiAgICBjYXNlIFwiVXBkYXRlXCI6XG4gICAgICAvLyBJZGVtcG90ZW50LlxuICAgICAgY29uc3QgdmVyaWZ5RG9tYWluSWRlbnRpdHlSZXNwID0gYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBWZXJpZnlEb21haW5JZGVudGl0eUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5JZGVudGl0eTogJHtKU09OLnN0cmluZ2lmeSh2ZXJpZnlEb21haW5JZGVudGl0eVJlc3ApfWAsXG4gICAgICApXG4gICAgICBjb25zdCB2ZXJpZmljYXRpb25Ub2tlbiA9IHZlcmlmeURvbWFpbklkZW50aXR5UmVzcC5WZXJpZmljYXRpb25Ub2tlblxuICAgICAgaWYgKCF2ZXJpZmljYXRpb25Ub2tlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWZXJpZmljYXRpb24gdG9rZW4gbm90IHJldHVybmVkXCIpXG4gICAgICB9XG5cbiAgICAgIC8vIElkZW1wb3RlbnQuXG4gICAgICBjb25zdCB2ZXJpZnlEb21haW5Ea2ltUmVzcCA9IGF3YWl0IHNlc0NsaWVudC5zZW5kKFxuICAgICAgICBuZXcgVmVyaWZ5RG9tYWluRGtpbUNvbW1hbmQoe1xuICAgICAgICAgIERvbWFpbjogZG9tYWluTmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlcy52ZXJpZnlEb21haW5Ea2ltOiAke0pTT04uc3RyaW5naWZ5KHZlcmlmeURvbWFpbkRraW1SZXNwKX1gLFxuICAgICAgKVxuICAgICAgY29uc3QgZGtpbVRva2VucyA9IHZlcmlmeURvbWFpbkRraW1SZXNwLkRraW1Ub2tlbnMgPz8gW11cbiAgICAgIGlmICghZGtpbVRva2Vucykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJES0lNIHRva2VucyBub3QgcmV0dXJuZWRcIilcbiAgICAgIH1cblxuICAgICAgLy8gSWRlbXBvdGVudC5cbiAgICAgIGNvbnN0IHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwID0gYXdhaXQgc2VzdjJDbGllbnQuc2VuZChcbiAgICAgICAgbmV3IFB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlc0NvbW1hbmQoe1xuICAgICAgICAgIEVtYWlsSWRlbnRpdHk6IGRvbWFpbk5hbWUsXG4gICAgICAgICAgQ29uZmlndXJhdGlvblNldE5hbWU6IGRlZmF1bHRDb25maWd1cmF0aW9uU2V0TmFtZSxcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgYHNlc3YyLnB1dEVtYWlsSWRlbnRpdHlDb25maWd1cmF0aW9uU2V0QXR0cmlidXRlcyAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHB1dEVtYWlsSWRlbnRpdHlDb25maWdSZXNwLFxuICAgICAgICApfWAsXG4gICAgICApXG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogYFNlc0RvbWFpbiR7ZG9tYWluTmFtZX1gLFxuICAgICAgICBEYXRhOiB7XG4gICAgICAgICAgUm91dGU1M1JlY29yZFNldHM6IGNyZWF0ZVJvdXRlNTNSZWNvcmRTZXRzKFxuICAgICAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgICAgICAgICBka2ltVG9rZW5zLFxuICAgICAgICAgICksXG4gICAgICAgICAgVmVyaWZpY2F0aW9uVG9rZW46IHZlcmlmaWNhdGlvblRva2VuLFxuICAgICAgICB9LFxuICAgICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -7,7 +7,7 @@ const lambda = require("aws-cdk-lib/aws-lambda");
|
|
|
7
7
|
const r53 = require("aws-cdk-lib/aws-route53");
|
|
8
8
|
const cdk = require("aws-cdk-lib");
|
|
9
9
|
const cr = require("aws-cdk-lib/custom-resources");
|
|
10
|
-
const
|
|
10
|
+
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
11
11
|
class SesDomain extends constructs.Construct {
|
|
12
12
|
constructor(scope, id, props) {
|
|
13
13
|
var _a, _b, _c, _d;
|
|
@@ -65,11 +65,11 @@ class SesDomainProvider extends constructs.Construct {
|
|
|
65
65
|
constructor(scope, id) {
|
|
66
66
|
super(scope, id);
|
|
67
67
|
this.provider = new cr.Provider(this, "Provider", {
|
|
68
|
-
onEventHandler: new
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
68
|
+
onEventHandler: new aws_lambda_nodejs_1.NodejsFunction(this, "Function", {
|
|
69
|
+
entry: require.resolve("./handler"),
|
|
70
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
72
71
|
timeout: cdk.Duration.minutes(5),
|
|
72
|
+
awsSdkConnectionReuse: false,
|
|
73
73
|
initialPolicy: [
|
|
74
74
|
new iam.PolicyStatement({
|
|
75
75
|
actions: [
|
|
@@ -91,4 +91,4 @@ class SesDomainProvider extends constructs.Construct {
|
|
|
91
91
|
this.serviceToken = this.provider.serviceToken;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc2RvbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0M7QUFDeEMsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCwrQ0FBOEM7QUFDOUMsbUNBQWtDO0FBQ2xDLG1EQUFrRDtBQUNsRCx1Q0FBNEM7QUFtRDVDLE1BQWEsU0FBVSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBSWpELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN4RCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7WUFDOUQsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIseUJBQXlCLEVBQUUsQ0FDekIsTUFBQSxLQUFLLENBQUMseUJBQXlCLG1DQUFJLElBQUksQ0FDeEMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osMkJBQTJCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDOUQsMkRBQTJEO2dCQUMzRCxnQkFBZ0I7Z0JBQ2hCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUNwQixDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUywwQ0FBRSxPQUFPLG1DQUFJLElBQUk7WUFDOUIsQ0FBQyxDQUFDO2dCQUNFO29CQUNFLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDeEIsR0FBRyxFQUFFLElBQUk7b0JBQ1QsZUFBZSxFQUFFO3dCQUNmLElBQUksQ0FBQyxTQUFTLENBQ1osQ0FBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLDBDQUFFLEtBQUssS0FBSSxtQ0FBbUMsQ0FDOUQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFUixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFbkUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNuQyxDQUFDLENBQUE7WUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3RELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVk7b0JBQzNDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckRELDhCQXFEQztBQUVELE1BQU0saUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDbEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQTJCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLGdDQUFnQyxDQUFBO1FBQzNDLE9BQU8sQ0FDSixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQXVCO1lBQ2xELElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUNqQyxDQUFBO0lBQ0gsQ0FBQztJQUtELFlBQVksS0FBMkIsRUFBRSxFQUFVO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRCxjQUFjLEVBQUUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ3BELElBQUksRUFBRSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQ3pCLHFCQUFxQiwwQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUNwRDtnQkFDRCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEMsYUFBYSxFQUFFO29CQUNiLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLG9CQUFvQjs0QkFDcEIsK0JBQStCOzRCQUMvQix5Q0FBeUM7NEJBQ3pDLHVDQUF1Qzs0QkFDdkMsNEJBQTRCOzRCQUM1QiwrQkFBK0I7NEJBQy9CLHNCQUFzQjs0QkFDdEIsMEJBQTBCOzRCQUMxQixnREFBZ0Q7eUJBQ2pEO3dCQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsQ0FBQztpQkFDSDthQUNGLENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFBO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyByNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgc2VzRG9tYWluSGFuZGxlciB9IGZyb20gXCIuL2hhbmRsZXJcIlxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIHRvIHJlZ2lzdGVyIGluIFNFUy5cbiAgICovXG4gIGRvbWFpbk5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgdG8gYXR0YWNoIEROUyByZWNvcmRzLiBJZiBub3QgZ2l2ZW4gaXQgbXVzdFxuICAgKiBiZSBwZXJmb3JtZWQgbWFudWFsbHkuXG4gICAqL1xuICBob3N0ZWRab25lPzogcjUzLklIb3N0ZWRab25lXG4gIC8qKlxuICAgKiBJbmNsdWRlIG9yIGV4Y2x1ZGUgdmVyaWZpY2F0aW9uIFRYVCByZWNvcmQuXG4gICAqXG4gICAqIENOQU1FIHJlY29yZHMgZm9yIERLSU0gdG9rZW5zIHdpbGwgc3RpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogUm91dGUgNTMgd2lsbCBub3QgYWxsb3cgbXVsdGlwbGUgVFhUIHJlY29yZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gXCJvcHQtb3V0XCIgb2YgdGhlIHJlY29yZHMgYW5kIGxlYXZpbmdcbiAgICogdGhlIGNhbGxlciByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzZXQgZm9yIGVtYWlscyBzZW50IGZyb20gdGhpcyBkb21haW4uXG4gICAqL1xuICBkZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIFNQRiByZWNvcmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gU1BGIHJlY29yZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBpcyBjcmVhdGVkLlxuICAgKi9cbiAgc3BmUmVjb3JkPzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByZWNvcmQgb3Igbm90LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGluY2x1ZGU/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBTUEYgcmVjb3JkLlxuICAgICAqXG4gICAgICogTk9URTogVGhlIHZhbHVlIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBmb3IgeW91LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2PXNwZjEgaW5jbHVkZTphbWF6b25zZXMuY29tIH5hbGxcIlxuICAgICAqL1xuICAgIHZhbHVlPzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlc0RvbWFpbiBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJvdXRlNTNSZWNvcmRTZXRzOiBjZGsuSVJlc29sdmFibGVcbiAgcHVibGljIHZlcmlmaWNhdGlvblRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogU2VzRG9tYWluUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcykuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBEb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgICBJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkOiAoXG4gICAgICAgICAgcHJvcHMuaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCA/PyB0cnVlXG4gICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgRGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lOiBwcm9wcy5kZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWUsXG4gICAgICAgIC8vIEJ1bXAgdGhpcyBpZiBjaGFuZ2luZyBsb2dpYyBpbiB0aGUgbGFtYmRhIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgIC8vIHJlLWV2YWx1YXRlZC5cbiAgICAgICAgU2VyaWFsOiAxLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RhdGljUmVjb3JkU2V0czogcjUzLkNmblJlY29yZFNldEdyb3VwLlJlY29yZFNldFByb3BlcnR5W10gPVxuICAgICAgcHJvcHMuc3BmUmVjb3JkPy5pbmNsdWRlID8/IHRydWVcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IHI1My5SZWNvcmRUeXBlLlRYVCxcbiAgICAgICAgICAgICAgdHRsOiBcIjYwXCIsXG4gICAgICAgICAgICAgIHJlc291cmNlUmVjb3JkczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgcHJvcHMuc3BmUmVjb3JkPy52YWx1ZSB8fCBcInY9c3BmMSBpbmNsdWRlOmFtYXpvbnNlcy5jb20gfmFsbFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuXG4gICAgdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyA9IHJlc291cmNlLmdldEF0dChcIlJvdXRlNTNSZWNvcmRTZXRzXCIpXG4gICAgdGhpcy52ZXJpZmljYXRpb25Ub2tlbiA9IHJlc291cmNlLmdldEF0dFN0cmluZyhcIlZlcmlmaWNhdGlvblRva2VuXCIpXG5cbiAgICBpZiAocHJvcHMuaG9zdGVkWm9uZSkge1xuICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlJlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgcmVjb3JkU2V0czogdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyxcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhdGljUmVjb3JkU2V0cy5sZW5ndGgpIHtcbiAgICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlN0YXRpY1JlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHJlY29yZFNldHM6IHN0YXRpY1JlY29yZFNldHMsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNlc0RvbWFpblByb3ZpZGVyIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWNkay5zZXMtZG9tYWluLnByb3ZpZGVyXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBTZXNEb21haW5Qcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNEb21haW5Qcm92aWRlcihzdGFjaywgaWQpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiRnVuY3Rpb25cIiwge1xuICAgICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c2VzRG9tYWluSGFuZGxlci50b1N0cmluZygpfTtgLFxuICAgICAgICApLFxuICAgICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICBcInNlczpEZWxldGVJZGVudGl0eVwiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eURraW1BdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgIFwic2VzOkdldElkZW50aXR5TWFpbEZyb21Eb21haW5BdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICAgIFwic2VzOkdldElkZW50aXR5VmVyaWZpY2F0aW9uQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpTZXRJZGVudGl0eURraW1FbmFibGVkXCIsXG4gICAgICAgICAgICAgIFwic2VzOlNldElkZW50aXR5TWFpbEZyb21Eb21haW5cIixcbiAgICAgICAgICAgICAgXCJzZXM6VmVyaWZ5RG9tYWluRGtpbVwiLFxuICAgICAgICAgICAgICBcInNlczpWZXJpZnlEb21haW5JZGVudGl0eVwiLFxuICAgICAgICAgICAgICBcInNlczpQdXRFbWFpbElkZW50aXR5Q29uZmlndXJhdGlvblNldEF0dHJpYnV0ZXNcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICB9KVxuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICB9XG59XG4iXX0=
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc2RvbWFpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBd0M7QUFDeEMsMkNBQTBDO0FBQzFDLGlEQUFnRDtBQUNoRCwrQ0FBOEM7QUFDOUMsbUNBQWtDO0FBQ2xDLG1EQUFrRDtBQUNsRCxxRUFBOEQ7QUFtRDlELE1BQWEsU0FBVSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBSWpELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTs7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN4RCxZQUFZLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVk7WUFDOUQsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIseUJBQXlCLEVBQUUsQ0FDekIsTUFBQSxLQUFLLENBQUMseUJBQXlCLG1DQUFJLElBQUksQ0FDeEMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ1osMkJBQTJCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQjtnQkFDOUQsMkRBQTJEO2dCQUMzRCxnQkFBZ0I7Z0JBQ2hCLE1BQU0sRUFBRSxDQUFDO2FBQ1Y7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUNwQixDQUFBLE1BQUEsTUFBQSxLQUFLLENBQUMsU0FBUywwQ0FBRSxPQUFPLG1DQUFJLElBQUk7WUFDOUIsQ0FBQyxDQUFDO2dCQUNFO29CQUNFLElBQUksRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDdEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRztvQkFDeEIsR0FBRyxFQUFFLElBQUk7b0JBQ1QsZUFBZSxFQUFFO3dCQUNmLElBQUksQ0FBQyxTQUFTLENBQ1osQ0FBQSxNQUFBLEtBQUssQ0FBQyxTQUFTLDBDQUFFLEtBQUssS0FBSSxtQ0FBbUMsQ0FDOUQ7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNILENBQUMsQ0FBQyxFQUFFLENBQUE7UUFFUixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFFbkUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDckIsSUFBSSxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUNoRCxZQUFZLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZO2dCQUMzQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNuQyxDQUFDLENBQUE7WUFDRixJQUFJLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixJQUFJLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3RELFlBQVksRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVk7b0JBQzNDLFVBQVUsRUFBRSxnQkFBZ0I7aUJBQzdCLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBckRELDhCQXFEQztBQUVELE1BQU0saUJBQWtCLFNBQVEsVUFBVSxDQUFDLFNBQVM7SUFDbEQ7O09BRUc7SUFDSSxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQTJCO1FBQ25ELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2pDLE1BQU0sRUFBRSxHQUFHLGdDQUFnQyxDQUFBO1FBQzNDLE9BQU8sQ0FDSixLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQXVCO1lBQ2xELElBQUksaUJBQWlCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUNqQyxDQUFBO0lBQ0gsQ0FBQztJQUtELFlBQVksS0FBMkIsRUFBRSxFQUFVO1FBQ2pELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFFaEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNoRCxjQUFjLEVBQUUsSUFBSSxrQ0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ25ELEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDbkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDaEMscUJBQXFCLEVBQUUsS0FBSztnQkFDNUIsYUFBYSxFQUFFO29CQUNiLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLG9CQUFvQjs0QkFDcEIsK0JBQStCOzRCQUMvQix5Q0FBeUM7NEJBQ3pDLHVDQUF1Qzs0QkFDdkMsNEJBQTRCOzRCQUM1QiwrQkFBK0I7NEJBQy9CLHNCQUFzQjs0QkFDdEIsMEJBQTBCOzRCQUMxQixnREFBZ0Q7eUJBQ2pEO3dCQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztxQkFDakIsQ0FBQztpQkFDSDthQUNGLENBQUM7U0FDSCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFBO0lBQ2hELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSBcImNvbnN0cnVjdHNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgKiBhcyByNTMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgTm9kZWpzRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ub2RlanNcIlxuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIHRvIHJlZ2lzdGVyIGluIFNFUy5cbiAgICovXG4gIGRvbWFpbk5hbWU6IHN0cmluZ1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgdG8gYXR0YWNoIEROUyByZWNvcmRzLiBJZiBub3QgZ2l2ZW4gaXQgbXVzdFxuICAgKiBiZSBwZXJmb3JtZWQgbWFudWFsbHkuXG4gICAqL1xuICBob3N0ZWRab25lPzogcjUzLklIb3N0ZWRab25lXG4gIC8qKlxuICAgKiBJbmNsdWRlIG9yIGV4Y2x1ZGUgdmVyaWZpY2F0aW9uIFRYVCByZWNvcmQuXG4gICAqXG4gICAqIENOQU1FIHJlY29yZHMgZm9yIERLSU0gdG9rZW5zIHdpbGwgc3RpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogUm91dGUgNTMgd2lsbCBub3QgYWxsb3cgbXVsdGlwbGUgVFhUIHJlY29yZHMgd2l0aCB0aGUgc2FtZSBuYW1lLlxuICAgKiBUaGlzIG9wdGlvbiBhbGxvd3MgdG8gXCJvcHQtb3V0XCIgb2YgdGhlIHJlY29yZHMgYW5kIGxlYXZpbmdcbiAgICogdGhlIGNhbGxlciByZXNwb25zaWJsZSBvZiBoYW5kbGluZyBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZD86IGJvb2xlYW5cbiAgLyoqXG4gICAqIERlZmF1bHQgY29uZmlndXJhdGlvbiBzZXQgZm9yIGVtYWlscyBzZW50IGZyb20gdGhpcyBkb21haW4uXG4gICAqL1xuICBkZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWU/OiBzdHJpbmdcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIFNQRiByZWNvcmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYW4gU1BGIHJlY29yZCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBpcyBjcmVhdGVkLlxuICAgKi9cbiAgc3BmUmVjb3JkPzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gY3JlYXRlIHRoZSByZWNvcmQgb3Igbm90LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGluY2x1ZGU/OiBib29sZWFuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBTUEYgcmVjb3JkLlxuICAgICAqXG4gICAgICogTk9URTogVGhlIHZhbHVlIHdpbGwgYmUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyBmb3IgeW91LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJ2PXNwZjEgaW5jbHVkZTphbWF6b25zZXMuY29tIH5hbGxcIlxuICAgICAqL1xuICAgIHZhbHVlPzogc3RyaW5nXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNlc0RvbWFpbiBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgcHVibGljIHJvdXRlNTNSZWNvcmRTZXRzOiBjZGsuSVJlc29sdmFibGVcbiAgcHVibGljIHZlcmlmaWNhdGlvblRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IGNkay5DdXN0b21SZXNvdXJjZSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogU2VzRG9tYWluUHJvdmlkZXIuZ2V0T3JDcmVhdGUodGhpcykuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBEb21haW5OYW1lOiBwcm9wcy5kb21haW5OYW1lLFxuICAgICAgICBJbmNsdWRlVmVyaWZpY2F0aW9uUmVjb3JkOiAoXG4gICAgICAgICAgcHJvcHMuaW5jbHVkZVZlcmlmaWNhdGlvblJlY29yZCA/PyB0cnVlXG4gICAgICAgICkudG9TdHJpbmcoKSxcbiAgICAgICAgRGVmYXVsdENvbmZpZ3VyYXRpb25TZXROYW1lOiBwcm9wcy5kZWZhdWx0Q29uZmlndXJhdGlvblNldE5hbWUsXG4gICAgICAgIC8vIEJ1bXAgdGhpcyBpZiBjaGFuZ2luZyBsb2dpYyBpbiB0aGUgbGFtYmRhIHRoYXQgc2hvdWxkIGJlXG4gICAgICAgIC8vIHJlLWV2YWx1YXRlZC5cbiAgICAgICAgU2VyaWFsOiAxLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3Qgc3RhdGljUmVjb3JkU2V0czogcjUzLkNmblJlY29yZFNldEdyb3VwLlJlY29yZFNldFByb3BlcnR5W10gPVxuICAgICAgcHJvcHMuc3BmUmVjb3JkPy5pbmNsdWRlID8/IHRydWVcbiAgICAgICAgPyBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IHI1My5SZWNvcmRUeXBlLlRYVCxcbiAgICAgICAgICAgICAgdHRsOiBcIjYwXCIsXG4gICAgICAgICAgICAgIHJlc291cmNlUmVjb3JkczogW1xuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgICAgcHJvcHMuc3BmUmVjb3JkPy52YWx1ZSB8fCBcInY9c3BmMSBpbmNsdWRlOmFtYXpvbnNlcy5jb20gfmFsbFwiLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXVxuXG4gICAgdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyA9IHJlc291cmNlLmdldEF0dChcIlJvdXRlNTNSZWNvcmRTZXRzXCIpXG4gICAgdGhpcy52ZXJpZmljYXRpb25Ub2tlbiA9IHJlc291cmNlLmdldEF0dFN0cmluZyhcIlZlcmlmaWNhdGlvblRva2VuXCIpXG5cbiAgICBpZiAocHJvcHMuaG9zdGVkWm9uZSkge1xuICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlJlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgaG9zdGVkWm9uZUlkOiBwcm9wcy5ob3N0ZWRab25lLmhvc3RlZFpvbmVJZCxcbiAgICAgICAgcmVjb3JkU2V0czogdGhpcy5yb3V0ZTUzUmVjb3JkU2V0cyxcbiAgICAgIH0pXG4gICAgICBpZiAoc3RhdGljUmVjb3JkU2V0cy5sZW5ndGgpIHtcbiAgICAgICAgbmV3IHI1My5DZm5SZWNvcmRTZXRHcm91cCh0aGlzLCBcIlN0YXRpY1JlY29yZFNldEdyb3VwXCIsIHtcbiAgICAgICAgICBob3N0ZWRab25lSWQ6IHByb3BzLmhvc3RlZFpvbmUuaG9zdGVkWm9uZUlkLFxuICAgICAgICAgIHJlY29yZFNldHM6IHN0YXRpY1JlY29yZFNldHMsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIFNlc0RvbWFpblByb3ZpZGVyIGV4dGVuZHMgY29uc3RydWN0cy5Db25zdHJ1Y3Qge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgc2luZ2xldG9uIHByb3ZpZGVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QpIHtcbiAgICBjb25zdCBzdGFjayA9IGNkay5TdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWNkay5zZXMtZG9tYWluLnByb3ZpZGVyXCJcbiAgICByZXR1cm4gKFxuICAgICAgKHN0YWNrLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBTZXNEb21haW5Qcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNEb21haW5Qcm92aWRlcihzdGFjaywgaWQpXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm92aWRlcjogY3IuUHJvdmlkZXJcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgTm9kZWpzRnVuY3Rpb24odGhpcywgXCJGdW5jdGlvblwiLCB7XG4gICAgICAgIGVudHJ5OiByZXF1aXJlLnJlc29sdmUoXCIuL2hhbmRsZXJcIiksXG4gICAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICB0aW1lb3V0OiBjZGsuRHVyYXRpb24ubWludXRlcyg1KSxcbiAgICAgICAgYXdzU2RrQ29ubmVjdGlvblJldXNlOiBmYWxzZSxcbiAgICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJzZXM6RGVsZXRlSWRlbnRpdHlcIixcbiAgICAgICAgICAgICAgXCJzZXM6R2V0SWRlbnRpdHlEa2ltQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eU1haWxGcm9tRG9tYWluQXR0cmlidXRlc1wiLFxuICAgICAgICAgICAgICBcInNlczpHZXRJZGVudGl0eVZlcmlmaWNhdGlvbkF0dHJpYnV0ZXNcIixcbiAgICAgICAgICAgICAgXCJzZXM6U2V0SWRlbnRpdHlEa2ltRW5hYmxlZFwiLFxuICAgICAgICAgICAgICBcInNlczpTZXRJZGVudGl0eU1haWxGcm9tRG9tYWluXCIsXG4gICAgICAgICAgICAgIFwic2VzOlZlcmlmeURvbWFpbkRraW1cIixcbiAgICAgICAgICAgICAgXCJzZXM6VmVyaWZ5RG9tYWluSWRlbnRpdHlcIixcbiAgICAgICAgICAgICAgXCJzZXM6UHV0RW1haWxJZGVudGl0eUNvbmZpZ3VyYXRpb25TZXRBdHRyaWJ1dGVzXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbXCIqXCJdLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgfSlcblxuICAgIHRoaXMuc2VydmljZVRva2VuID0gdGhpcy5wcm92aWRlci5zZXJ2aWNlVG9rZW5cbiAgfVxufVxuIl19
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const AWS = require("aws-sdk");
|
|
8
|
-
const ses = new AWS.SES();
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
const client_ses_1 = require("@aws-sdk/client-ses");
|
|
5
|
+
const handler = async (event) => {
|
|
6
|
+
const sesClient = new client_ses_1.SESClient();
|
|
9
7
|
const emailAddress = event.ResourceProperties["EmailAddress"];
|
|
10
8
|
switch (event.RequestType) {
|
|
11
9
|
case "Delete":
|
|
12
|
-
await
|
|
10
|
+
await sesClient.send(new client_ses_1.DeleteIdentityCommand({
|
|
11
|
+
Identity: emailAddress,
|
|
12
|
+
}));
|
|
13
13
|
return {
|
|
14
14
|
PhysicalResourceId: event.PhysicalResourceId,
|
|
15
15
|
};
|
|
16
16
|
case "Create":
|
|
17
17
|
case "Update":
|
|
18
|
-
await
|
|
18
|
+
await sesClient.send(new client_ses_1.VerifyEmailIdentityCommand({
|
|
19
|
+
EmailAddress: emailAddress,
|
|
20
|
+
}));
|
|
19
21
|
return {
|
|
20
22
|
PhysicalResourceId: `SesVerifyEmail:${emailAddress}`,
|
|
21
23
|
};
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
|
-
exports.
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
26
|
+
exports.handler = handler;
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXMvc2VzdmVyaWZ5ZW1haWwvaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvREFJNEI7QUFVckIsTUFBTSxPQUFPLEdBQW1CLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNyRCxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLEVBQUUsQ0FBQTtJQUNqQyxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUE7SUFFN0QsUUFBUSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUIsS0FBSyxRQUFRO1lBQ1gsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUNsQixJQUFJLGtDQUFxQixDQUFDO2dCQUN4QixRQUFRLEVBQUUsWUFBWTthQUN2QixDQUFDLENBQ0gsQ0FBQTtZQUVELE9BQU87Z0JBQ0wsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQjthQUM3QyxDQUFBO1FBRUgsS0FBSyxRQUFRLENBQUM7UUFDZCxLQUFLLFFBQVE7WUFDWCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQ2xCLElBQUksdUNBQTBCLENBQUM7Z0JBQzdCLFlBQVksRUFBRSxZQUFZO2FBQzNCLENBQUMsQ0FDSCxDQUFBO1lBRUQsT0FBTztnQkFDTCxrQkFBa0IsRUFBRSxrQkFBa0IsWUFBWSxFQUFFO2FBQ3JELENBQUE7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBNUJZLFFBQUEsT0FBTyxXQTRCbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEZWxldGVJZGVudGl0eUNvbW1hbmQsXG4gIFNFU0NsaWVudCxcbiAgVmVyaWZ5RW1haWxJZGVudGl0eUNvbW1hbmQsXG59IGZyb20gXCJAYXdzLXNkay9jbGllbnQtc2VzXCJcblxudHlwZSBPbkV2ZW50SGFuZGxlciA9IChldmVudDoge1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbiAgUmVxdWVzdFR5cGU6IFwiQ3JlYXRlXCIgfCBcIlVwZGF0ZVwiIHwgXCJEZWxldGVcIlxuICBSZXNvdXJjZVByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbn0pID0+IFByb21pc2U8e1xuICBQaHlzaWNhbFJlc291cmNlSWQ/OiBzdHJpbmdcbn0+XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyOiBPbkV2ZW50SGFuZGxlciA9IGFzeW5jIChldmVudCkgPT4ge1xuICBjb25zdCBzZXNDbGllbnQgPSBuZXcgU0VTQ2xpZW50KClcbiAgY29uc3QgZW1haWxBZGRyZXNzID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzW1wiRW1haWxBZGRyZXNzXCJdXG5cbiAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgIGNhc2UgXCJEZWxldGVcIjpcbiAgICAgIGF3YWl0IHNlc0NsaWVudC5zZW5kKFxuICAgICAgICBuZXcgRGVsZXRlSWRlbnRpdHlDb21tYW5kKHtcbiAgICAgICAgICBJZGVudGl0eTogZW1haWxBZGRyZXNzLFxuICAgICAgICB9KSxcbiAgICAgIClcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgUGh5c2ljYWxSZXNvdXJjZUlkOiBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICB9XG5cbiAgICBjYXNlIFwiQ3JlYXRlXCI6XG4gICAgY2FzZSBcIlVwZGF0ZVwiOlxuICAgICAgYXdhaXQgc2VzQ2xpZW50LnNlbmQoXG4gICAgICAgIG5ldyBWZXJpZnlFbWFpbElkZW50aXR5Q29tbWFuZCh7XG4gICAgICAgICAgRW1haWxBZGRyZXNzOiBlbWFpbEFkZHJlc3MsXG4gICAgICAgIH0pLFxuICAgICAgKVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBQaHlzaWNhbFJlc291cmNlSWQ6IGBTZXNWZXJpZnlFbWFpbDoke2VtYWlsQWRkcmVzc31gLFxuICAgICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -6,7 +6,7 @@ const iam = require("aws-cdk-lib/aws-iam");
|
|
|
6
6
|
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
7
|
const cdk = require("aws-cdk-lib");
|
|
8
8
|
const cr = require("aws-cdk-lib/custom-resources");
|
|
9
|
-
const
|
|
9
|
+
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
10
10
|
class SesVerifyEmail extends constructs.Construct {
|
|
11
11
|
constructor(scope, id, props) {
|
|
12
12
|
super(scope, id);
|
|
@@ -32,11 +32,11 @@ class SesVerifyEmailProvider extends constructs.Construct {
|
|
|
32
32
|
constructor(scope, id) {
|
|
33
33
|
super(scope, id);
|
|
34
34
|
this.provider = new cr.Provider(this, "Provider", {
|
|
35
|
-
onEventHandler: new
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
35
|
+
onEventHandler: new aws_lambda_nodejs_1.NodejsFunction(this, "Function", {
|
|
36
|
+
entry: require.resolve("./handler"),
|
|
37
|
+
runtime: lambda.Runtime.NODEJS_18_X,
|
|
39
38
|
timeout: cdk.Duration.minutes(5),
|
|
39
|
+
awsSdkConnectionReuse: false,
|
|
40
40
|
initialPolicy: [
|
|
41
41
|
new iam.PolicyStatement({
|
|
42
42
|
actions: ["ses:DeleteIdentity", "ses:VerifyEmailIdentity"],
|
|
@@ -48,4 +48,4 @@ class SesVerifyEmailProvider extends constructs.Construct {
|
|
|
48
48
|
this.serviceToken = this.provider.serviceToken;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VzL3Nlc3ZlcmlmeWVtYWlsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF3QztBQUN4QywyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELG1DQUFrQztBQUNsQyxtREFBa0Q7QUFDbEQscUVBQThEO0FBUzlELE1BQWEsY0FBZSxTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBR3RELFlBQVksS0FBMkIsRUFBRSxFQUFVLEVBQUUsS0FBWTtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3ZDLFlBQVksRUFBRSxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWTtZQUNuRSxVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO2FBQ2pDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBYkQsd0NBYUM7QUFFRCxNQUFNLHNCQUF1QixTQUFRLFVBQVUsQ0FBQyxTQUFTO0lBQ3ZEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUEyQjtRQUNuRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNqQyxNQUFNLEVBQUUsR0FBRyxzQ0FBc0MsQ0FBQTtRQUNqRCxPQUFPLENBQ0osS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUE0QjtZQUN2RCxJQUFJLHNCQUFzQixDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDdEMsQ0FBQTtJQUNILENBQUM7SUFLRCxZQUFZLEtBQTJCLEVBQUUsRUFBVTtRQUNqRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEQsY0FBYyxFQUFFLElBQUksa0NBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNuRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7Z0JBQ25DLE9BQU8sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2hDLHFCQUFxQixFQUFFLEtBQUs7Z0JBQzVCLGFBQWEsRUFBRTtvQkFDYixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLG9CQUFvQixFQUFFLHlCQUF5QixDQUFDO3dCQUMxRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7cUJBQ2pCLENBQUM7aUJBQ0g7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQTtJQUNoRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBjciBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZW1haWwgYWRkcmVzcyB0byBhZGQgYXMgYSB2ZXJpZmllZCBlbWFpbCBpbiBTRVMuXG4gICAqL1xuICBlbWFpbEFkZHJlc3M6IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgU2VzVmVyaWZ5RW1haWwgZXh0ZW5kcyBjb25zdHJ1Y3RzLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByb3V0ZTUzUmVjb3JkU2V0czogY2RrLklSZXNvbHZhYmxlXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyLmdldE9yQ3JlYXRlKHRoaXMpLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgRW1haWxBZGRyZXNzOiBwcm9wcy5lbWFpbEFkZHJlc3MsXG4gICAgICB9LFxuICAgIH0pXG4gIH1cbn1cblxuY2xhc3MgU2VzVmVyaWZ5RW1haWxQcm92aWRlciBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBwcm92aWRlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0T3JDcmVhdGUoc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBjZGsuU3RhY2sub2Yoc2NvcGUpXG4gICAgY29uc3QgaWQgPSBcImxpZmxpZy1jZGsuc2VzLXZlcmlmeS1lbWFpbC5wcm92aWRlclwiXG4gICAgcmV0dXJuIChcbiAgICAgIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChpZCkgYXMgU2VzVmVyaWZ5RW1haWxQcm92aWRlcikgfHxcbiAgICAgIG5ldyBTZXNWZXJpZnlFbWFpbFByb3ZpZGVyKHN0YWNrLCBpZClcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLnByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsIFwiUHJvdmlkZXJcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCBcIkZ1bmN0aW9uXCIsIHtcbiAgICAgICAgZW50cnk6IHJlcXVpcmUucmVzb2x2ZShcIi4vaGFuZGxlclwiKSxcbiAgICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDUpLFxuICAgICAgICBhd3NTZGtDb25uZWN0aW9uUmV1c2U6IGZhbHNlLFxuICAgICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wic2VzOkRlbGV0ZUlkZW50aXR5XCIsIFwic2VzOlZlcmlmeUVtYWlsSWRlbnRpdHlcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICB9KVxuXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSB0aGlzLnByb3ZpZGVyLnNlcnZpY2VUb2tlblxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liflig/cdk",
|
|
3
|
-
"version": "2.21.
|
|
3
|
+
"version": "2.21.4",
|
|
4
4
|
"description": "CDK library for Liflig",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -40,23 +40,34 @@
|
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@aws-cdk/assert": "2.68.0",
|
|
43
|
+
"@aws-sdk/client-cloudwatch-logs": "3.588.0",
|
|
44
|
+
"@aws-sdk/client-codebuild": "3.588.0",
|
|
45
|
+
"@aws-sdk/client-codepipeline": "3.588.0",
|
|
46
|
+
"@aws-sdk/client-ecs": "3.588.0",
|
|
47
|
+
"@aws-sdk/client-s3": "3.588.0",
|
|
48
|
+
"@aws-sdk/client-secrets-manager": "3.588.0",
|
|
49
|
+
"@aws-sdk/client-ses": "3.588.0",
|
|
50
|
+
"@aws-sdk/client-sesv2": "3.588.0",
|
|
51
|
+
"@aws-sdk/client-sfn": "3.588.0",
|
|
52
|
+
"@aws-sdk/lib-storage": "3.588.0",
|
|
43
53
|
"@commitlint/cli": "19.3.0",
|
|
44
54
|
"@commitlint/config-conventional": "19.2.2",
|
|
45
55
|
"@types/aws-lambda": "8.10.138",
|
|
46
56
|
"@types/jest": "29.5.12",
|
|
47
|
-
"@types/node": "20.
|
|
57
|
+
"@types/node": "20.14.0",
|
|
48
58
|
"@typescript-eslint/eslint-plugin": "5.62.0",
|
|
49
59
|
"@typescript-eslint/parser": "5.62.0",
|
|
50
60
|
"aws-cdk": "2.141.0",
|
|
51
61
|
"aws-cdk-lib": "2.141.0",
|
|
52
62
|
"constructs": "10.3.0",
|
|
63
|
+
"esbuild": "0.21.4",
|
|
53
64
|
"eslint": "8.57.0",
|
|
54
65
|
"eslint-config-prettier": "9.1.0",
|
|
55
66
|
"eslint-plugin-prettier": "5.1.3",
|
|
56
67
|
"husky": "9.0.11",
|
|
57
68
|
"jest": "29.7.0",
|
|
58
69
|
"jest-cdk-snapshot": "2.2.1",
|
|
59
|
-
"prettier": "3.
|
|
70
|
+
"prettier": "3.3.0",
|
|
60
71
|
"semantic-release": "23.1.1",
|
|
61
72
|
"ts-jest": "29.1.4",
|
|
62
73
|
"ts-node": "10.9.2",
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import * as constructs from "constructs";
|
|
2
|
-
import * as cdk from "aws-cdk-lib";
|
|
3
|
-
interface Props extends cdk.StackProps {
|
|
4
|
-
/**
|
|
5
|
-
* The role that will be granted permission to assume the deploy
|
|
6
|
-
* role. This role must have permission to assume the deploy role.
|
|
7
|
-
*/
|
|
8
|
-
callerRoleArn: string;
|
|
9
|
-
/**
|
|
10
|
-
* The name that will be used for the deploy role. This is the role
|
|
11
|
-
* that the caller will assume in order to have permission to invoke
|
|
12
|
-
* the Lambda Functions.
|
|
13
|
-
*/
|
|
14
|
-
roleName: string;
|
|
15
|
-
/**
|
|
16
|
-
* The bucket used for storing artifacts. This is used to grant
|
|
17
|
-
* permission to the role to read artifact. If the bucket is in
|
|
18
|
-
* another account, it must have a policy which allows the target
|
|
19
|
-
* account to use IAM permissions from target account.
|
|
20
|
-
*/
|
|
21
|
-
artifactsBucketName: string;
|
|
22
|
-
startDeployFunctionName: string;
|
|
23
|
-
statusFunctionName: string;
|
|
24
|
-
/**
|
|
25
|
-
* This is the stack name used with `cdk bootstrap` and can e
|
|
26
|
-
* found in cdk.json as "toolkitStackName".
|
|
27
|
-
*/
|
|
28
|
-
cdkToolkitStackName: string;
|
|
29
|
-
/**
|
|
30
|
-
* We pass the CDK context values as they contain feature flags
|
|
31
|
-
* used by the CDK CLI.
|
|
32
|
-
*/
|
|
33
|
-
cdkContext: Record<string, string | string[]>;
|
|
34
|
-
/**
|
|
35
|
-
* The secret containing username and password (or access token)
|
|
36
|
-
* for a valid docker user. This is used to access private
|
|
37
|
-
* repositories or to handle docker hub's pull rate limiting.
|
|
38
|
-
*/
|
|
39
|
-
dockerCredentialsSecretName?: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* This construct is responsible for the privileges and logic of
|
|
43
|
-
* automatically deploying stack resources in an account.
|
|
44
|
-
* Its resources are used from a deployment pipeline.
|
|
45
|
-
*
|
|
46
|
-
* The deployment is performed by invoking the "start deploy"
|
|
47
|
-
* lambda with details of what should be deployed. As this is
|
|
48
|
-
* responsible for deploying infrastructure, the principal invoking
|
|
49
|
-
* might be able to cause privilege escalation. The principal invoking
|
|
50
|
-
* should be assumed to have full administrator access.
|
|
51
|
-
*
|
|
52
|
-
* The process deploying the infrastructure is locked down so this
|
|
53
|
-
* is only possibly by deployment through CloudFormation, and as
|
|
54
|
-
* such removes a lot of possible escalation paths (e.g. no role
|
|
55
|
-
* can be created by direct API call).
|
|
56
|
-
*
|
|
57
|
-
* The "status" lambda can be used to poll for completion, and will
|
|
58
|
-
* also return logs from the job upon completion.
|
|
59
|
-
*/
|
|
60
|
-
export declare class CdkDeploy extends constructs.Construct {
|
|
61
|
-
constructor(scope: constructs.Construct, id: string, props: Props);
|
|
62
|
-
}
|
|
63
|
-
export {};
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CdkDeploy = void 0;
|
|
4
|
-
const constructs = require("constructs");
|
|
5
|
-
const codebuild = require("aws-cdk-lib/aws-codebuild");
|
|
6
|
-
const iam = require("aws-cdk-lib/aws-iam");
|
|
7
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
8
|
-
const s3 = require("aws-cdk-lib/aws-s3");
|
|
9
|
-
const cdk = require("aws-cdk-lib");
|
|
10
|
-
const secretsmanager = require("aws-cdk-lib/aws-secretsmanager");
|
|
11
|
-
const start_deploy_handler_1 = require("./start-deploy-handler");
|
|
12
|
-
const status_handler_1 = require("./status-handler");
|
|
13
|
-
/**
|
|
14
|
-
* This construct is responsible for the privileges and logic of
|
|
15
|
-
* automatically deploying stack resources in an account.
|
|
16
|
-
* Its resources are used from a deployment pipeline.
|
|
17
|
-
*
|
|
18
|
-
* The deployment is performed by invoking the "start deploy"
|
|
19
|
-
* lambda with details of what should be deployed. As this is
|
|
20
|
-
* responsible for deploying infrastructure, the principal invoking
|
|
21
|
-
* might be able to cause privilege escalation. The principal invoking
|
|
22
|
-
* should be assumed to have full administrator access.
|
|
23
|
-
*
|
|
24
|
-
* The process deploying the infrastructure is locked down so this
|
|
25
|
-
* is only possibly by deployment through CloudFormation, and as
|
|
26
|
-
* such removes a lot of possible escalation paths (e.g. no role
|
|
27
|
-
* can be created by direct API call).
|
|
28
|
-
*
|
|
29
|
-
* The "status" lambda can be used to poll for completion, and will
|
|
30
|
-
* also return logs from the job upon completion.
|
|
31
|
-
*/
|
|
32
|
-
class CdkDeploy extends constructs.Construct {
|
|
33
|
-
constructor(scope, id, props) {
|
|
34
|
-
super(scope, id);
|
|
35
|
-
const account = cdk.Stack.of(this).account;
|
|
36
|
-
const region = cdk.Stack.of(this).region;
|
|
37
|
-
const artifactsBucket = s3.Bucket.fromBucketName(this, "ArtifactsBucket", props.artifactsBucketName);
|
|
38
|
-
const roleToBeAssumed = new iam.Role(this, "Role", {
|
|
39
|
-
roleName: props.roleName,
|
|
40
|
-
assumedBy: new iam.ArnPrincipal(props.callerRoleArn),
|
|
41
|
-
});
|
|
42
|
-
// Bucked used for input to CodeBuild.
|
|
43
|
-
// We let CloudFormation manage the bucket name.
|
|
44
|
-
const codebuildBucket = new s3.Bucket(this, "CodebuildSourceBucket", {
|
|
45
|
-
encryption: s3.BucketEncryption.S3_MANAGED,
|
|
46
|
-
blockPublicAccess: s3.BlockPublicAccess.BLOCK_ALL,
|
|
47
|
-
lifecycleRules: [
|
|
48
|
-
{
|
|
49
|
-
expiration: cdk.Duration.days(5),
|
|
50
|
-
},
|
|
51
|
-
],
|
|
52
|
-
});
|
|
53
|
-
// The role used for CloudFormation deployment.
|
|
54
|
-
const cloudFormationRole = new iam.Role(this, "CloudFormationRole", {
|
|
55
|
-
assumedBy: new iam.ServicePrincipal("cloudformation.amazonaws.com"),
|
|
56
|
-
managedPolicies: [
|
|
57
|
-
// TODO: Can we restrict this a bit more? E.g. look into how Griid has
|
|
58
|
-
// limited what the individual stack deployments have permissions to do.
|
|
59
|
-
iam.ManagedPolicy.fromAwsManagedPolicyName("AdministratorAccess"),
|
|
60
|
-
],
|
|
61
|
-
});
|
|
62
|
-
// Replace CodeBuild with ECS task?
|
|
63
|
-
// See https://aws.amazon.com/blogs/devops/using-aws-codebuild-to-execute-administrative-tasks/
|
|
64
|
-
const codebuildProject = new codebuild.Project(this, "CodebuildProject", {
|
|
65
|
-
environment: {
|
|
66
|
-
buildImage: props.dockerCredentialsSecretName == null
|
|
67
|
-
? codebuild.LinuxBuildImage.fromDockerRegistry("node:16")
|
|
68
|
-
: codebuild.LinuxBuildImage.fromDockerRegistry("node:16", {
|
|
69
|
-
secretsManagerCredentials: secretsmanager.Secret.fromSecretNameV2(this, "dockerCredentialsSecretName", props.dockerCredentialsSecretName),
|
|
70
|
-
}),
|
|
71
|
-
},
|
|
72
|
-
buildSpec: codebuild.BuildSpec.fromObject({
|
|
73
|
-
version: "0.2",
|
|
74
|
-
env: {
|
|
75
|
-
variables: {
|
|
76
|
-
CDK_DEPLOY_ROLE_ARN: cloudFormationRole.roleArn,
|
|
77
|
-
CDK_TOOLKIT_STACK_NAME: props.cdkToolkitStackName,
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
phases: {
|
|
81
|
-
build: {
|
|
82
|
-
commands: [
|
|
83
|
-
"npm install -g aws-cdk",
|
|
84
|
-
'cdk --app "$CODEBUILD_SRC_DIR_CLOUDASSEMBLY" --role-arn "$CDK_DEPLOY_ROLE_ARN" --toolkit-stack-name "$CDK_TOOLKIT_STACK_NAME" --require-approval never deploy --exclusively $(cat stack-names.txt)',
|
|
85
|
-
],
|
|
86
|
-
},
|
|
87
|
-
},
|
|
88
|
-
}),
|
|
89
|
-
timeout: cdk.Duration.hours(4),
|
|
90
|
-
});
|
|
91
|
-
// Grant access to CloudFormation.
|
|
92
|
-
codebuildProject.addToRolePolicy(new iam.PolicyStatement({
|
|
93
|
-
actions: [
|
|
94
|
-
// For diff.
|
|
95
|
-
"cloudformation:DescribeStacks",
|
|
96
|
-
"cloudformation:GetTemplate",
|
|
97
|
-
// For deploy.
|
|
98
|
-
"cloudformation:CreateChangeSet",
|
|
99
|
-
"cloudformation:DeleteStack",
|
|
100
|
-
"cloudformation:DescribeChangeSet",
|
|
101
|
-
"cloudformation:ExecuteChangeSet",
|
|
102
|
-
"cloudformation:DescribeStackEvents",
|
|
103
|
-
"cloudformation:DeleteChangeSet",
|
|
104
|
-
],
|
|
105
|
-
resources: ["*"],
|
|
106
|
-
}));
|
|
107
|
-
// Grant access to the CDK Toolkit bucket.
|
|
108
|
-
codebuildProject.addToRolePolicy(new iam.PolicyStatement({
|
|
109
|
-
actions: [
|
|
110
|
-
"s3:GetObject*",
|
|
111
|
-
"s3:GetBucket*",
|
|
112
|
-
"s3:List*",
|
|
113
|
-
"s3:PutObject*",
|
|
114
|
-
"s3:Abort*",
|
|
115
|
-
"s3:DeleteObject*",
|
|
116
|
-
],
|
|
117
|
-
resources: [
|
|
118
|
-
`arn:aws:s3:::${props.cdkToolkitStackName.toLowerCase()}-stagingbucket-*`,
|
|
119
|
-
],
|
|
120
|
-
}));
|
|
121
|
-
artifactsBucket.grantRead(codebuildProject);
|
|
122
|
-
cloudFormationRole.grantPassRole(codebuildProject.role);
|
|
123
|
-
codebuildBucket.grantReadWrite(codebuildProject);
|
|
124
|
-
const startDeployFn = new lambda.Function(this, "StartDeployFunction", {
|
|
125
|
-
code: new lambda.InlineCode(`exports.handler = ${start_deploy_handler_1.startDeployHandler.toString()};`),
|
|
126
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
127
|
-
handler: "index.handler",
|
|
128
|
-
functionName: props.startDeployFunctionName,
|
|
129
|
-
environment: {
|
|
130
|
-
PROJECT_NAME: codebuildProject.projectName,
|
|
131
|
-
BUCKET_NAME: codebuildBucket.bucketName,
|
|
132
|
-
CDK_CONTEXT: JSON.stringify(props.cdkContext),
|
|
133
|
-
},
|
|
134
|
-
timeout: cdk.Duration.seconds(30),
|
|
135
|
-
});
|
|
136
|
-
startDeployFn.grantInvoke(roleToBeAssumed);
|
|
137
|
-
codebuildBucket.grantReadWrite(startDeployFn);
|
|
138
|
-
startDeployFn.addToRolePolicy(new iam.PolicyStatement({
|
|
139
|
-
actions: ["codebuild:StartBuild", "codebuild:BatchGetBuilds"],
|
|
140
|
-
resources: [codebuildProject.projectArn],
|
|
141
|
-
}));
|
|
142
|
-
const statusFn = new lambda.Function(this, "StatusFunction", {
|
|
143
|
-
code: new lambda.InlineCode(`exports.handler = ${status_handler_1.statusHandler.toString()};`),
|
|
144
|
-
runtime: lambda.Runtime.NODEJS_16_X,
|
|
145
|
-
handler: "index.handler",
|
|
146
|
-
functionName: props.statusFunctionName,
|
|
147
|
-
environment: {
|
|
148
|
-
PROJECT_NAME: codebuildProject.projectName,
|
|
149
|
-
},
|
|
150
|
-
timeout: cdk.Duration.seconds(30),
|
|
151
|
-
});
|
|
152
|
-
statusFn.grantInvoke(roleToBeAssumed);
|
|
153
|
-
statusFn.addToRolePolicy(new iam.PolicyStatement({
|
|
154
|
-
actions: ["codebuild:BatchGetBuilds"],
|
|
155
|
-
resources: [codebuildProject.projectArn],
|
|
156
|
-
}));
|
|
157
|
-
statusFn.addToRolePolicy(new iam.PolicyStatement({
|
|
158
|
-
actions: ["logs:GetLogEvents"],
|
|
159
|
-
resources: [
|
|
160
|
-
`arn:aws:logs:${region}:${account}:log-group:/aws/codebuild/${codebuildProject.projectName}:log-stream:*`,
|
|
161
|
-
],
|
|
162
|
-
}));
|
|
163
|
-
new cdk.CfnOutput(this, "RoleToBeAssumedArn", {
|
|
164
|
-
value: roleToBeAssumed.roleArn,
|
|
165
|
-
});
|
|
166
|
-
new cdk.CfnOutput(this, "StatusFunctionArn", {
|
|
167
|
-
value: statusFn.functionArn,
|
|
168
|
-
});
|
|
169
|
-
new cdk.CfnOutput(this, "StartDeployFunctionArn", {
|
|
170
|
-
value: startDeployFn.functionArn,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
exports.CdkDeploy = CdkDeploy;
|
|
175
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLWRlcGxveS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jZGstZGVwbG95L2Nkay1kZXBsb3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXdDO0FBQ3hDLHVEQUFzRDtBQUN0RCwyQ0FBMEM7QUFDMUMsaURBQWdEO0FBQ2hELHlDQUF3QztBQUN4QyxtQ0FBa0M7QUFDbEMsaUVBQWdFO0FBQ2hFLGlFQUEyRDtBQUMzRCxxREFBZ0Q7QUF5Q2hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSCxNQUFhLFNBQVUsU0FBUSxVQUFVLENBQUMsU0FBUztJQUNqRCxZQUFZLEtBQTJCLEVBQUUsRUFBVSxFQUFFLEtBQVk7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDMUMsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFBO1FBRXhDLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUM5QyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLEtBQUssQ0FBQyxtQkFBbUIsQ0FDMUIsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ2pELFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7U0FDckQsQ0FBQyxDQUFBO1FBRUYsc0NBQXNDO1FBQ3RDLGdEQUFnRDtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHVCQUF1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LENBQUM7Q0FDRjtBQXhMRCw4QkF3TEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb25zdHJ1Y3RzIGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZFwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCB7IHN0YXJ0RGVwbG95SGFuZGxlciB9IGZyb20gXCIuL3N0YXJ0LWRlcGxveS1oYW5kbGVyXCJcbmltcG9ydCB7IHN0YXR1c0hhbmRsZXIgfSBmcm9tIFwiLi9zdGF0dXMtaGFuZGxlclwiXG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSByb2xlIHRoYXQgd2lsbCBiZSBncmFudGVkIHBlcm1pc3Npb24gdG8gYXNzdW1lIHRoZSBkZXBsb3lcbiAgICogcm9sZS4gVGhpcyByb2xlIG11c3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc3VtZSB0aGUgZGVwbG95IHJvbGUuXG4gICAqL1xuICBjYWxsZXJSb2xlQXJuOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgZGVwbG95IHJvbGUuIFRoaXMgaXMgdGhlIHJvbGVcbiAgICogdGhhdCB0aGUgY2FsbGVyIHdpbGwgYXNzdW1lIGluIG9yZGVyIHRvIGhhdmUgcGVybWlzc2lvbiB0byBpbnZva2VcbiAgICogdGhlIExhbWJkYSBGdW5jdGlvbnMuXG4gICAqL1xuICByb2xlTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgYnVja2V0IHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZhY3RzLiBUaGlzIGlzIHVzZWQgdG8gZ3JhbnRcbiAgICogcGVybWlzc2lvbiB0byB0aGUgcm9sZSB0byByZWFkIGFydGlmYWN0LiBJZiB0aGUgYnVja2V0IGlzIGluXG4gICAqIGFub3RoZXIgYWNjb3VudCwgaXQgbXVzdCBoYXZlIGEgcG9saWN5IHdoaWNoIGFsbG93cyB0aGUgdGFyZ2V0XG4gICAqIGFjY291bnQgdG8gdXNlIElBTSBwZXJtaXNzaW9ucyBmcm9tIHRhcmdldCBhY2NvdW50LlxuICAgKi9cbiAgYXJ0aWZhY3RzQnVja2V0TmFtZTogc3RyaW5nXG4gIHN0YXJ0RGVwbG95RnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgc3RhdHVzRnVuY3Rpb25OYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIHN0YWNrIG5hbWUgdXNlZCB3aXRoIGBjZGsgYm9vdHN0cmFwYCBhbmQgY2FuIGVcbiAgICogZm91bmQgaW4gY2RrLmpzb24gYXMgXCJ0b29sa2l0U3RhY2tOYW1lXCIuXG4gICAqL1xuICBjZGtUb29sa2l0U3RhY2tOYW1lOiBzdHJpbmdcbiAgLyoqXG4gICAqIFdlIHBhc3MgdGhlIENESyBjb250ZXh0IHZhbHVlcyBhcyB0aGV5IGNvbnRhaW4gZmVhdHVyZSBmbGFnc1xuICAgKiB1c2VkIGJ5IHRoZSBDREsgQ0xJLlxuICAgKi9cbiAgY2RrQ29udGV4dDogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+XG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IGNvbnRhaW5pbmcgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIChvciBhY2Nlc3MgdG9rZW4pXG4gICAqIGZvciBhIHZhbGlkIGRvY2tlciB1c2VyLiBUaGlzIGlzIHVzZWQgdG8gYWNjZXNzIHByaXZhdGVcbiAgICogcmVwb3NpdG9yaWVzIG9yIHRvIGhhbmRsZSBkb2NrZXIgaHViJ3MgcHVsbCByYXRlIGxpbWl0aW5nLlxuICAgKi9cbiAgZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lPzogc3RyaW5nXG59XG5cbi8qKlxuICogVGhpcyBjb25zdHJ1Y3QgaXMgcmVzcG9uc2libGUgZm9yIHRoZSBwcml2aWxlZ2VzIGFuZCBsb2dpYyBvZlxuICogYXV0b21hdGljYWxseSBkZXBsb3lpbmcgc3RhY2sgcmVzb3VyY2VzIGluIGFuIGFjY291bnQuXG4gKiBJdHMgcmVzb3VyY2VzIGFyZSB1c2VkIGZyb20gYSBkZXBsb3ltZW50IHBpcGVsaW5lLlxuICpcbiAqIFRoZSBkZXBsb3ltZW50IGlzIHBlcmZvcm1lZCBieSBpbnZva2luZyB0aGUgXCJzdGFydCBkZXBsb3lcIlxuICogbGFtYmRhIHdpdGggZGV0YWlscyBvZiB3aGF0IHNob3VsZCBiZSBkZXBsb3llZC4gQXMgdGhpcyBpc1xuICogcmVzcG9uc2libGUgZm9yIGRlcGxveWluZyBpbmZyYXN0cnVjdHVyZSwgdGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogbWlnaHQgYmUgYWJsZSB0byBjYXVzZSBwcml2aWxlZ2UgZXNjYWxhdGlvbi4gVGhlIHByaW5jaXBhbCBpbnZva2luZ1xuICogc2hvdWxkIGJlIGFzc3VtZWQgdG8gaGF2ZSBmdWxsIGFkbWluaXN0cmF0b3IgYWNjZXNzLlxuICpcbiAqIFRoZSBwcm9jZXNzIGRlcGxveWluZyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaXMgbG9ja2VkIGRvd24gc28gdGhpc1xuICogaXMgb25seSBwb3NzaWJseSBieSBkZXBsb3ltZW50IHRocm91Z2ggQ2xvdWRGb3JtYXRpb24sIGFuZCBhc1xuICogc3VjaCByZW1vdmVzIGEgbG90IG9mIHBvc3NpYmxlIGVzY2FsYXRpb24gcGF0aHMgKGUuZy4gbm8gcm9sZVxuICogY2FuIGJlIGNyZWF0ZWQgYnkgZGlyZWN0IEFQSSBjYWxsKS5cbiAqXG4gKiBUaGUgXCJzdGF0dXNcIiBsYW1iZGEgY2FuIGJlIHVzZWQgdG8gcG9sbCBmb3IgY29tcGxldGlvbiwgYW5kIHdpbGxcbiAqIGFsc28gcmV0dXJuIGxvZ3MgZnJvbSB0aGUgam9iIHVwb24gY29tcGxldGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENka0RlcGxveSBleHRlbmRzIGNvbnN0cnVjdHMuQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCBhY2NvdW50ID0gY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICBjb25zdCByZWdpb24gPSBjZGsuU3RhY2sub2YodGhpcykucmVnaW9uXG5cbiAgICBjb25zdCBhcnRpZmFjdHNCdWNrZXQgPSBzMy5CdWNrZXQuZnJvbUJ1Y2tldE5hbWUoXG4gICAgICB0aGlzLFxuICAgICAgXCJBcnRpZmFjdHNCdWNrZXRcIixcbiAgICAgIHByb3BzLmFydGlmYWN0c0J1Y2tldE5hbWUsXG4gICAgKVxuXG4gICAgY29uc3Qgcm9sZVRvQmVBc3N1bWVkID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiUm9sZVwiLCB7XG4gICAgICByb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQXJuUHJpbmNpcGFsKHByb3BzLmNhbGxlclJvbGVBcm4pLFxuICAgIH0pXG5cbiAgICAvLyBCdWNrZWQgdXNlZCBmb3IgaW5wdXQgdG8gQ29kZUJ1aWxkLlxuICAgIC8vIFdlIGxldCBDbG91ZEZvcm1hdGlvbiBtYW5hZ2UgdGhlIGJ1Y2tldCBuYW1lLlxuICAgIGNvbnN0IGNvZGVidWlsZEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJDb2RlYnVpbGRTb3VyY2VCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHMzLkJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgICAgIGxpZmVjeWNsZVJ1bGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBleHBpcmF0aW9uOiBjZGsuRHVyYXRpb24uZGF5cyg1KSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFRoZSByb2xlIHVzZWQgZm9yIENsb3VkRm9ybWF0aW9uIGRlcGxveW1lbnQuXG4gICAgY29uc3QgY2xvdWRGb3JtYXRpb25Sb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiQ2xvdWRGb3JtYXRpb25Sb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwiY2xvdWRmb3JtYXRpb24uYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICAvLyBUT0RPOiBDYW4gd2UgcmVzdHJpY3QgdGhpcyBhIGJpdCBtb3JlPyBFLmcuIGxvb2sgaW50byBob3cgR3JpaWQgaGFzXG4gICAgICAgIC8vICBsaW1pdGVkIHdoYXQgdGhlIGluZGl2aWR1YWwgc3RhY2sgZGVwbG95bWVudHMgaGF2ZSBwZXJtaXNzaW9ucyB0byBkby5cbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFwiQWRtaW5pc3RyYXRvckFjY2Vzc1wiKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIFJlcGxhY2UgQ29kZUJ1aWxkIHdpdGggRUNTIHRhc2s/XG4gICAgLy8gU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vYmxvZ3MvZGV2b3BzL3VzaW5nLWF3cy1jb2RlYnVpbGQtdG8tZXhlY3V0ZS1hZG1pbmlzdHJhdGl2ZS10YXNrcy9cbiAgICBjb25zdCBjb2RlYnVpbGRQcm9qZWN0ID0gbmV3IGNvZGVidWlsZC5Qcm9qZWN0KHRoaXMsIFwiQ29kZWJ1aWxkUHJvamVjdFwiLCB7XG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBidWlsZEltYWdlOlxuICAgICAgICAgIHByb3BzLmRvY2tlckNyZWRlbnRpYWxzU2VjcmV0TmFtZSA9PSBudWxsXG4gICAgICAgICAgICA/IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuZnJvbURvY2tlclJlZ2lzdHJ5KFwibm9kZToxNlwiKVxuICAgICAgICAgICAgOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeShcIm5vZGU6MTZcIiwge1xuICAgICAgICAgICAgICAgIHNlY3JldHNNYW5hZ2VyQ3JlZGVudGlhbHM6XG4gICAgICAgICAgICAgICAgICBzZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgXCJkb2NrZXJDcmVkZW50aWFsc1NlY3JldE5hbWVcIixcbiAgICAgICAgICAgICAgICAgICAgcHJvcHMuZG9ja2VyQ3JlZGVudGlhbHNTZWNyZXROYW1lLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICB9LFxuICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3Qoe1xuICAgICAgICB2ZXJzaW9uOiBcIjAuMlwiLFxuICAgICAgICBlbnY6IHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIENES19ERVBMT1lfUk9MRV9BUk46IGNsb3VkRm9ybWF0aW9uUm9sZS5yb2xlQXJuLFxuICAgICAgICAgICAgQ0RLX1RPT0xLSVRfU1RBQ0tfTkFNRTogcHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBidWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgXCJucG0gaW5zdGFsbCAtZyBhd3MtY2RrXCIsXG4gICAgICAgICAgICAgICdjZGsgLS1hcHAgXCIkQ09ERUJVSUxEX1NSQ19ESVJfQ0xPVURBU1NFTUJMWVwiIC0tcm9sZS1hcm4gXCIkQ0RLX0RFUExPWV9ST0xFX0FSTlwiIC0tdG9vbGtpdC1zdGFjay1uYW1lIFwiJENES19UT09MS0lUX1NUQUNLX05BTUVcIiAtLXJlcXVpcmUtYXBwcm92YWwgbmV2ZXIgZGVwbG95IC0tZXhjbHVzaXZlbHkgJChjYXQgc3RhY2stbmFtZXMudHh0KScsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5ob3Vycyg0KSxcbiAgICB9KVxuXG4gICAgLy8gR3JhbnQgYWNjZXNzIHRvIENsb3VkRm9ybWF0aW9uLlxuICAgIGNvZGVidWlsZFByb2plY3QuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgLy8gRm9yIGRpZmYuXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrc1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246R2V0VGVtcGxhdGVcIixcbiAgICAgICAgICAvLyBGb3IgZGVwbG95LlxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0XCIsXG4gICAgICAgICAgXCJjbG91ZGZvcm1hdGlvbjpEZWxldGVTdGFja1wiLFxuICAgICAgICAgIFwiY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkV4ZWN1dGVDaGFuZ2VTZXRcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tFdmVudHNcIixcbiAgICAgICAgICBcImNsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldFwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICAvLyBHcmFudCBhY2Nlc3MgdG8gdGhlIENESyBUb29sa2l0IGJ1Y2tldC5cbiAgICBjb2RlYnVpbGRQcm9qZWN0LmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgIFwiczM6R2V0T2JqZWN0KlwiLFxuICAgICAgICAgIFwiczM6R2V0QnVja2V0KlwiLFxuICAgICAgICAgIFwiczM6TGlzdCpcIixcbiAgICAgICAgICBcInMzOlB1dE9iamVjdCpcIixcbiAgICAgICAgICBcInMzOkFib3J0KlwiLFxuICAgICAgICAgIFwiczM6RGVsZXRlT2JqZWN0KlwiLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICBgYXJuOmF3czpzMzo6OiR7cHJvcHMuY2RrVG9vbGtpdFN0YWNrTmFtZS50b0xvd2VyQ2FzZSgpfS1zdGFnaW5nYnVja2V0LSpgLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgKVxuXG4gICAgYXJ0aWZhY3RzQnVja2V0LmdyYW50UmVhZChjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY2xvdWRGb3JtYXRpb25Sb2xlLmdyYW50UGFzc1JvbGUoY29kZWJ1aWxkUHJvamVjdC5yb2xlISlcblxuICAgIGNvZGVidWlsZEJ1Y2tldC5ncmFudFJlYWRXcml0ZShjb2RlYnVpbGRQcm9qZWN0KVxuXG4gICAgY29uc3Qgc3RhcnREZXBsb3lGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uXCIsIHtcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuSW5saW5lQ29kZShcbiAgICAgICAgYGV4cG9ydHMuaGFuZGxlciA9ICR7c3RhcnREZXBsb3lIYW5kbGVyLnRvU3RyaW5nKCl9O2AsXG4gICAgICApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzE2X1gsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuc3RhcnREZXBsb3lGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICAgIEJVQ0tFVF9OQU1FOiBjb2RlYnVpbGRCdWNrZXQuYnVja2V0TmFtZSxcbiAgICAgICAgQ0RLX0NPTlRFWFQ6IEpTT04uc3RyaW5naWZ5KHByb3BzLmNka0NvbnRleHQpLFxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IGNkay5EdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICB9KVxuXG4gICAgc3RhcnREZXBsb3lGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG4gICAgY29kZWJ1aWxkQnVja2V0LmdyYW50UmVhZFdyaXRlKHN0YXJ0RGVwbG95Rm4pXG5cbiAgICBzdGFydERlcGxveUZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wiY29kZWJ1aWxkOlN0YXJ0QnVpbGRcIiwgXCJjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW2NvZGVidWlsZFByb2plY3QucHJvamVjdEFybl0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICBjb25zdCBzdGF0dXNGbiA9IG5ldyBsYW1iZGEuRnVuY3Rpb24odGhpcywgXCJTdGF0dXNGdW5jdGlvblwiLCB7XG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLklubGluZUNvZGUoXG4gICAgICAgIGBleHBvcnRzLmhhbmRsZXIgPSAke3N0YXR1c0hhbmRsZXIudG9TdHJpbmcoKX07YCxcbiAgICAgICksXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTZfWCxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgZnVuY3Rpb25OYW1lOiBwcm9wcy5zdGF0dXNGdW5jdGlvbk5hbWUsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBQUk9KRUNUX05BTUU6IGNvZGVidWlsZFByb2plY3QucHJvamVjdE5hbWUsXG4gICAgICB9LFxuICAgICAgdGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxuICAgIH0pXG5cbiAgICBzdGF0dXNGbi5ncmFudEludm9rZShyb2xlVG9CZUFzc3VtZWQpXG5cbiAgICBzdGF0dXNGbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImNvZGVidWlsZDpCYXRjaEdldEJ1aWxkc1wiXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbY29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0QXJuXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHN0YXR1c0ZuLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wibG9nczpHZXRMb2dFdmVudHNcIl0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGBhcm46YXdzOmxvZ3M6JHtyZWdpb259OiR7YWNjb3VudH06bG9nLWdyb3VwOi9hd3MvY29kZWJ1aWxkLyR7Y29kZWJ1aWxkUHJvamVjdC5wcm9qZWN0TmFtZX06bG9nLXN0cmVhbToqYCxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiUm9sZVRvQmVBc3N1bWVkQXJuXCIsIHtcbiAgICAgIHZhbHVlOiByb2xlVG9CZUFzc3VtZWQucm9sZUFybixcbiAgICB9KVxuICAgIG5ldyBjZGsuQ2ZuT3V0cHV0KHRoaXMsIFwiU3RhdHVzRnVuY3Rpb25Bcm5cIiwge1xuICAgICAgdmFsdWU6IHN0YXR1c0ZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gICAgbmV3IGNkay5DZm5PdXRwdXQodGhpcywgXCJTdGFydERlcGxveUZ1bmN0aW9uQXJuXCIsIHtcbiAgICAgIHZhbHVlOiBzdGFydERlcGxveUZuLmZ1bmN0aW9uQXJuLFxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
|