@fjall/components-infrastructure 0.88.3 → 0.89.2
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/LICENSE +21 -0
- package/dist/lib/app.d.ts +33 -10
- package/dist/lib/app.js +79 -36
- package/dist/lib/aspects/index.d.ts +1 -0
- package/dist/lib/aspects/index.js +6 -0
- package/dist/lib/config/aws/accountAuditRole.d.ts +20 -0
- package/dist/lib/config/aws/accountAuditRole.js +38 -0
- package/dist/lib/config/aws/accountMonitoringRole.d.ts +22 -0
- package/dist/lib/config/aws/accountMonitoringRole.js +133 -0
- package/dist/lib/config/aws/cloudTrail.d.ts +0 -3
- package/dist/lib/config/aws/cloudTrail.js +2 -2
- package/dist/lib/config/aws/disasterRecovery.js +53 -20
- package/dist/lib/config/aws/ecrDefaultImage.js +4 -3
- package/dist/lib/config/aws/index.d.ts +4 -0
- package/dist/lib/config/aws/index.js +5 -1
- package/dist/lib/config/aws/oidcConnector.d.ts +8 -0
- package/dist/lib/config/aws/oidcConnector.js +46 -0
- package/dist/lib/config/aws/platform.d.ts +2 -0
- package/dist/lib/config/aws/platform.js +6 -0
- package/dist/lib/config/index.d.ts +2 -0
- package/dist/lib/config/index.js +21 -0
- package/dist/lib/patterns/aws/account.js +22 -10
- package/dist/lib/patterns/aws/cdn.d.ts +19 -40
- package/dist/lib/patterns/aws/cdn.js +21 -17
- package/dist/lib/patterns/aws/compute.d.ts +9 -720
- package/dist/lib/patterns/aws/compute.js +27 -432
- package/dist/lib/patterns/aws/computeEc2.d.ts +67 -0
- package/dist/lib/patterns/aws/computeEc2.js +46 -0
- package/dist/lib/patterns/aws/computeEcs.d.ts +446 -0
- package/dist/lib/patterns/aws/computeEcs.js +246 -0
- package/dist/lib/patterns/aws/computeLambda.d.ts +220 -0
- package/dist/lib/patterns/aws/computeLambda.js +147 -0
- package/dist/lib/patterns/aws/database.d.ts +7 -87
- package/dist/lib/patterns/aws/database.js +15 -38
- package/dist/lib/patterns/aws/domainDelegation.d.ts +8 -0
- package/dist/lib/patterns/aws/domainDelegation.js +54 -0
- package/dist/lib/patterns/aws/domainFactory.d.ts +8 -0
- package/dist/lib/patterns/aws/domainFactory.js +23 -0
- package/dist/lib/patterns/aws/index.d.ts +4 -1
- package/dist/lib/patterns/aws/index.js +6 -2
- package/dist/lib/patterns/aws/interfaces/cdn.d.ts +26 -0
- package/dist/lib/patterns/aws/interfaces/cdn.js +14 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +4 -181
- package/dist/lib/patterns/aws/interfaces/connector.js +16 -113
- package/dist/lib/patterns/aws/interfaces/domain.d.ts +2 -0
- package/dist/lib/patterns/aws/interfaces/domain.js +6 -0
- package/dist/lib/patterns/aws/interfaces/index.d.ts +2 -0
- package/dist/lib/patterns/aws/interfaces/index.js +5 -2
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +9 -6
- package/dist/lib/patterns/aws/interfaces/pattern.js +1 -1
- package/dist/lib/patterns/aws/network.js +6 -9
- package/dist/lib/patterns/aws/organisation.d.ts +4 -2
- package/dist/lib/patterns/aws/organisation.js +21 -8
- package/dist/lib/patterns/aws/payload.js +21 -12
- package/dist/lib/patterns/aws/storage.d.ts +3 -2
- package/dist/lib/patterns/aws/storage.js +1 -1
- package/dist/lib/resources/aws/audit/auditRole.js +4 -4
- package/dist/lib/resources/aws/audit/index.d.ts +1 -0
- package/dist/lib/resources/aws/audit/index.js +6 -0
- package/dist/lib/resources/aws/backup/backupPlan.js +3 -2
- package/dist/lib/resources/aws/backup/backupVault.js +5 -3
- package/dist/lib/resources/aws/base/awsStack.d.ts +4 -2
- package/dist/lib/resources/aws/base/awsStack.js +8 -2
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +14 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +52 -18
- package/dist/lib/resources/aws/compute/ec2.js +18 -22
- package/dist/lib/resources/aws/compute/ecs.d.ts +23 -10
- package/dist/lib/resources/aws/compute/ecs.js +121 -64
- package/dist/lib/resources/aws/compute/index.d.ts +1 -0
- package/dist/lib/resources/aws/compute/index.js +2 -1
- package/dist/lib/resources/aws/compute/lambda.d.ts +0 -2
- package/dist/lib/resources/aws/compute/lambda.js +12 -27
- package/dist/lib/resources/aws/database/dynamodb.js +3 -13
- package/dist/lib/resources/aws/database/index.d.ts +8 -2
- package/dist/lib/resources/aws/database/index.js +19 -3
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +2 -3
- package/dist/lib/resources/aws/database/rdsAurora.js +32 -68
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.d.ts +6 -6
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +25 -29
- package/dist/lib/resources/aws/database/rdsDefaults.d.ts +11 -0
- package/dist/lib/resources/aws/database/rdsDefaults.js +15 -0
- package/dist/lib/resources/aws/database/rdsHelpers.d.ts +39 -0
- package/dist/lib/resources/aws/database/rdsHelpers.js +75 -0
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +7 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +40 -84
- package/dist/lib/resources/aws/database/rdsProxyOutput.d.ts +7 -0
- package/dist/lib/resources/aws/database/rdsProxyOutput.js +18 -0
- package/dist/lib/resources/aws/iam/index.d.ts +0 -1
- package/dist/lib/resources/aws/iam/index.js +1 -2
- package/dist/lib/resources/aws/index.d.ts +0 -1
- package/dist/lib/resources/aws/index.js +1 -2
- package/dist/lib/resources/aws/logging/cloudTrail.js +13 -3
- package/dist/lib/resources/aws/logging/index.d.ts +2 -0
- package/dist/lib/resources/aws/logging/index.js +19 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -2
- package/dist/lib/resources/aws/messaging/index.js +4 -3
- package/dist/lib/resources/aws/messaging/sqs.js +14 -11
- package/dist/lib/resources/aws/messaging/utils.d.ts +1 -2
- package/dist/lib/resources/aws/messaging/utils.js +3 -4
- package/dist/lib/resources/aws/monitoring/index.d.ts +0 -1
- package/dist/lib/resources/aws/monitoring/index.js +4 -17
- package/dist/lib/resources/aws/networking/domain.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domain.js +102 -0
- package/dist/lib/resources/aws/networking/domainCertificate.d.ts +13 -0
- package/dist/lib/resources/aws/networking/domainCertificate.js +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +28 -0
- package/dist/lib/resources/aws/networking/hostedZone.js +150 -0
- package/dist/lib/resources/aws/networking/index.d.ts +4 -0
- package/dist/lib/resources/aws/networking/index.js +5 -1
- package/dist/lib/resources/aws/networking/ipamPool.js +57 -31
- package/dist/lib/resources/aws/networking/securityGroup.d.ts +5 -0
- package/dist/lib/resources/aws/networking/securityGroup.js +14 -0
- package/dist/lib/resources/aws/networking/vpc.js +9 -4
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.d.ts +17 -0
- package/dist/lib/resources/aws/organisation/costAllocationTagActivator.js +66 -0
- package/dist/lib/resources/aws/organisation/index.d.ts +1 -0
- package/dist/lib/resources/aws/organisation/index.js +4 -2
- package/dist/lib/resources/aws/secrets/index.d.ts +0 -1
- package/dist/lib/resources/aws/secrets/index.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.d.ts +0 -1
- package/dist/lib/resources/aws/storage/ecr.js +5 -5
- package/dist/lib/resources/aws/storage/s3.d.ts +3 -3
- package/dist/lib/resources/aws/storage/s3.js +1 -1
- package/dist/lib/resources/aws/utilities/index.d.ts +5 -0
- package/dist/lib/resources/aws/utilities/index.js +22 -0
- package/dist/lib/utils/backupTierMapping.d.ts +11 -0
- package/dist/lib/utils/backupTierMapping.js +17 -0
- package/dist/lib/utils/capitaliseString.d.ts +1 -12
- package/dist/lib/utils/capitaliseString.js +8 -28
- package/dist/lib/utils/connections.d.ts +46 -0
- package/dist/lib/utils/connections.js +159 -0
- package/dist/lib/utils/connector.d.ts +183 -0
- package/dist/lib/utils/connector.js +117 -0
- package/dist/lib/utils/databaseTypes.d.ts +85 -0
- package/dist/lib/utils/databaseTypes.js +34 -0
- package/dist/lib/utils/dnsRecords.d.ts +4 -0
- package/dist/lib/utils/dnsRecords.js +108 -0
- package/dist/lib/utils/domainTypes.d.ts +37 -0
- package/dist/lib/utils/domainTypes.js +10 -0
- package/dist/lib/utils/env.d.ts +42 -0
- package/dist/lib/utils/env.js +122 -0
- package/dist/lib/utils/getConfig.d.ts +0 -5
- package/dist/lib/utils/getConfig.js +42 -19
- package/dist/lib/utils/index.d.ts +7 -0
- package/dist/lib/utils/index.js +8 -1
- package/dist/lib/utils/removalPolicy.d.ts +2 -0
- package/dist/lib/utils/removalPolicy.js +16 -0
- package/dist/lib/utils/standardTagsAspect.d.ts +4 -0
- package/dist/lib/utils/standardTagsAspect.js +8 -8
- package/dist/lib/utils/vpcUtils.d.ts +14 -0
- package/dist/lib/utils/vpcUtils.js +28 -0
- package/package.json +7 -6
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FJALL_PLATFORM_ACCOUNT_ID = void 0;
|
|
4
|
+
/** AWS account ID of the Fjall platform (where the webapp runs). */
|
|
5
|
+
exports.FJALL_PLATFORM_ACCOUNT_ID = "985539798308";
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvY29uZmlnL2F3cy9wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBb0U7QUFDdkQsUUFBQSx5QkFBeUIsR0FBRyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQVdTIGFjY291bnQgSUQgb2YgdGhlIEZqYWxsIHBsYXRmb3JtICh3aGVyZSB0aGUgd2ViYXBwIHJ1bnMpLiAqL1xuZXhwb3J0IGNvbnN0IEZKQUxMX1BMQVRGT1JNX0FDQ09VTlRfSUQgPSBcIjk4NTUzOTc5ODMwOFwiO1xuIl19
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.FJALL_AUDIT_CONFIG = void 0;
|
|
18
|
+
var audit_1 = require("./audit");
|
|
19
|
+
Object.defineProperty(exports, "FJALL_AUDIT_CONFIG", { enumerable: true, get: function () { return audit_1.FJALL_AUDIT_CONFIG; } });
|
|
20
|
+
__exportStar(require("./aws"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBO0FBQzNCLHdDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IEZKQUxMX0FVRElUX0NPTkZJRyB9IGZyb20gXCIuL2F1ZGl0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hd3NcIjtcbiJdfQ==
|
|
@@ -4,6 +4,9 @@ exports.Account = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const aws_1 = require("../../config/aws");
|
|
6
6
|
const cloudTrail_1 = require("../../config/aws/cloudTrail");
|
|
7
|
+
const oidcConnector_1 = require("../../config/aws/oidcConnector");
|
|
8
|
+
const accountMonitoringRole_1 = require("../../config/aws/accountMonitoringRole");
|
|
9
|
+
const accountAuditRole_1 = require("../../config/aws/accountAuditRole");
|
|
7
10
|
const getConfig_1 = require("../../utils/getConfig");
|
|
8
11
|
const disasterRecovery_1 = require("../../config/aws/disasterRecovery");
|
|
9
12
|
class Account extends aws_cdk_lib_1.Stack {
|
|
@@ -41,6 +44,16 @@ class Account extends aws_cdk_lib_1.Stack {
|
|
|
41
44
|
exportName: `IpamPoolId${accountId}${regionSuffix}`
|
|
42
45
|
});
|
|
43
46
|
}
|
|
47
|
+
const fjallOrgId = this.node.tryGetContext("fjallOrgId");
|
|
48
|
+
if (id === "Account" && fjallOrgId) {
|
|
49
|
+
new oidcConnector_1.OidcConnector(this, "OidcConnector", { fjallOrgId });
|
|
50
|
+
}
|
|
51
|
+
// Per-account monitoring role (unconditional; ExternalId added when orgId known)
|
|
52
|
+
new accountMonitoringRole_1.AccountMonitoringRole(this, "MonitoringRole", fjallOrgId ? { fjallOrgId } : undefined);
|
|
53
|
+
// Per-account audit role (conditional on fjallOrgId)
|
|
54
|
+
if (fjallOrgId) {
|
|
55
|
+
new accountAuditRole_1.AccountAuditRole(this, "AuditRole", { fjallOrgId });
|
|
56
|
+
}
|
|
44
57
|
new cloudTrail_1.ManagementEventsTrail(this, "CloudTrail", {
|
|
45
58
|
accountId: this.account,
|
|
46
59
|
region
|
|
@@ -51,15 +64,14 @@ class Account extends aws_cdk_lib_1.Stack {
|
|
|
51
64
|
eventBusArn: eventBus.defaultEventBusArn.value
|
|
52
65
|
});
|
|
53
66
|
const environment = config.environment || "unknown";
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
});
|
|
67
|
+
if (config.disasterRecoveryRegion) {
|
|
68
|
+
const isComplianceAccount = environment === "compliance";
|
|
69
|
+
if (environment === "production" || isComplianceAccount) {
|
|
70
|
+
new disasterRecovery_1.DisasterRecovery(this, "DisasterRecovery", {
|
|
71
|
+
region,
|
|
72
|
+
accountId
|
|
73
|
+
});
|
|
74
|
+
}
|
|
63
75
|
}
|
|
64
76
|
new aws_cdk_lib_1.CfnOutput(this, "Environment", {
|
|
65
77
|
key: "Environment",
|
|
@@ -70,4 +82,4 @@ class Account extends aws_cdk_lib_1.Stack {
|
|
|
70
82
|
}
|
|
71
83
|
}
|
|
72
84
|
exports.Account = Account;
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBZ0U7QUFDaEUsMENBQW9FO0FBRXBFLDREQUFvRTtBQUNwRSxrRUFBK0Q7QUFDL0Qsa0ZBQStFO0FBQy9FLHdFQUFxRTtBQUNyRSxxREFBa0Q7QUFDbEQsd0VBQXFFO0FBUXJFLE1BQWEsT0FBUSxTQUFRLG1CQUFLO0lBSWhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBUyxHQUFFLENBQUM7UUFDM0IsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3RELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUU3QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxDQUNyRyxDQUFDO1FBQ0osQ0FBQztRQUVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBZFYscUJBQWdCLEdBQXFCLFNBQVMsQ0FBQztRQWdCN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFFN0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQzFDLEdBQUcsRUFBRSxnQkFBZ0I7Z0JBQ3JCLEtBQUssRUFBRSxLQUFLO2dCQUNaLFVBQVUsRUFBRSxnQkFBZ0I7YUFDN0IsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDckMsR0FBRyxFQUFFLFdBQVc7WUFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ25CLFVBQVUsRUFBRSxXQUFXO1lBQ3ZCLFdBQVcsRUFBRSxpQ0FBaUM7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxRQUFRLEdBQUcsSUFBSSxxQkFBZSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV2RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6RCxJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUMsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtnQkFDdEMsR0FBRyxFQUFFLGFBQWEsU0FBUyxHQUFHLFlBQVksRUFBRTtnQkFDNUMsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLFVBQVUsRUFBRSxhQUFhLFNBQVMsR0FBRyxZQUFZLEVBQUU7YUFDcEQsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pELElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxJQUFJLDZCQUFhLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELGlGQUFpRjtRQUNqRixJQUFJLDZDQUFxQixDQUN2QixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN4QyxDQUFDO1FBRUYscURBQXFEO1FBQ3JELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixJQUFJLG1DQUFnQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7UUFFRCxJQUFJLGtDQUFxQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3ZCLE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxJQUFJLHFCQUFlLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNDLE1BQU07WUFDTixTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDdkIsV0FBVyxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLO1NBQy9DLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksU0FBUyxDQUFDO1FBRXBELElBQUksTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDbEMsTUFBTSxtQkFBbUIsR0FBRyxXQUFXLEtBQUssWUFBWSxDQUFDO1lBRXpELElBQUksV0FBVyxLQUFLLFlBQVksSUFBSSxtQkFBbUIsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLG1DQUFnQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtvQkFDN0MsTUFBTTtvQkFDTixTQUFTO2lCQUNWLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDakMsR0FBRyxFQUFFLGFBQWE7WUFDbEIsS0FBSyxFQUFFLFdBQVc7WUFDbEIsVUFBVSxFQUFFLGFBQWE7WUFDekIsV0FBVyxFQUNULDRFQUE0RTtTQUMvRSxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFoR0QsMEJBZ0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBTdGFjaywgdHlwZSBTdGFja1Byb3BzIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBFY3JEZWZhdWx0SW1hZ2UsIERlZmF1bHRFdmVudEJ1cyB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzXCI7XG5pbXBvcnQgeyB0eXBlIENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBNYW5hZ2VtZW50RXZlbnRzVHJhaWwgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9jbG91ZFRyYWlsXCI7XG5pbXBvcnQgeyBPaWRjQ29ubmVjdG9yIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3Mvb2lkY0Nvbm5lY3RvclwiO1xuaW1wb3J0IHsgQWNjb3VudE1vbml0b3JpbmdSb2xlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvYWNjb3VudE1vbml0b3JpbmdSb2xlXCI7XG5pbXBvcnQgeyBBY2NvdW50QXVkaXRSb2xlIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvYWNjb3VudEF1ZGl0Um9sZVwiO1xuaW1wb3J0IHsgZ2V0Q29uZmlnIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dldENvbmZpZ1wiO1xuaW1wb3J0IHsgRGlzYXN0ZXJSZWNvdmVyeSB9IGZyb20gXCIuLi8uLi9jb25maWcvYXdzL2Rpc2FzdGVyUmVjb3ZlcnlcIjtcbmltcG9ydCB0eXBlIHsgT3JnYW5pc2F0aW9uVHlwZSB9IGZyb20gXCIuL2ludGVyZmFjZXMvb3JnYW5pc2F0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWNjb3VudFByb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gIGFjY291bnRJZD86IHN0cmluZztcbiAgcmVnaW9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgQWNjb3VudCBleHRlbmRzIFN0YWNrIHtcbiAgcHVibGljIHJlYWRvbmx5IG9yZ2FuaXNhdGlvblR5cGU6IE9yZ2FuaXNhdGlvblR5cGUgPSBcImFjY291bnRcIjtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlc29sdmVkUmVnaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFjY291bnRQcm9wcykge1xuICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICAgIGNvbnN0IGFjY291bnRJZCA9IHByb3BzLmFjY291bnRJZCA/PyBjb25maWcuYWNjb3VudElkO1xuICAgIGNvbnN0IHJlZ2lvbiA9IHByb3BzLnJlZ2lvbiA/PyBjb25maWcucmVnaW9uO1xuXG4gICAgaWYgKCFhY2NvdW50SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJBY2NvdW50IHJlcXVpcmVzIGFuIGFjY291bnQgSUQuIFByb3ZpZGUgaXQgdmlhIGFjY291bnRJZCBvciBlbnN1cmUgQ0RLIGNvbnRleHQgaW5jbHVkZXMgYWNjb3VudElkLlwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgdGhpcy5yZXNvbHZlZFJlZ2lvbiA9IHJlZ2lvbjtcblxuICAgIGNvbnN0IG9yZ0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJvcmdJZFwiKTtcbiAgICBpZiAob3JnSWQpIHtcbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgXCJPcmdhbmlzYXRpb25JZE91dHB1dFwiLCB7XG4gICAgICAgIGtleTogXCJPcmdhbmlzYXRpb25JZFwiLFxuICAgICAgICB2YWx1ZTogb3JnSWQsXG4gICAgICAgIGV4cG9ydE5hbWU6IFwiT3JnYW5pc2F0aW9uSWRcIlxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBcIkFjY291bnRJZE91dHB1dFwiLCB7XG4gICAgICBrZXk6IFwiQWNjb3VudElkXCIsXG4gICAgICB2YWx1ZTogdGhpcy5hY2NvdW50LFxuICAgICAgZXhwb3J0TmFtZTogXCJBY2NvdW50SWRcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIkFXUyBBY2NvdW50IElEIGZvciB0aGlzIGFjY291bnRcIlxuICAgIH0pO1xuXG4gICAgY29uc3QgZXZlbnRCdXMgPSBuZXcgRGVmYXVsdEV2ZW50QnVzKHRoaXMsIFwiRXZlbnRCdXNcIik7XG5cbiAgICBjb25zdCBpcGFtUG9vbElkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJpcGFtUG9vbElkXCIpO1xuICAgIGlmIChpZCA9PT0gXCJBY2NvdW50XCIgJiYgaXBhbVBvb2xJZCkge1xuICAgICAgY29uc3QgcmVnaW9uU3VmZml4ID0gcmVnaW9uLnJlcGxhY2UoLy0vZywgXCJcIik7XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiSXBhbVBvb2xJZE91dHB1dFwiLCB7XG4gICAgICAgIGtleTogYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gLFxuICAgICAgICB2YWx1ZTogaXBhbVBvb2xJZCxcbiAgICAgICAgZXhwb3J0TmFtZTogYElwYW1Qb29sSWQke2FjY291bnRJZH0ke3JlZ2lvblN1ZmZpeH1gXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBmamFsbE9yZ0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoXCJmamFsbE9yZ0lkXCIpO1xuICAgIGlmIChpZCA9PT0gXCJBY2NvdW50XCIgJiYgZmphbGxPcmdJZCkge1xuICAgICAgbmV3IE9pZGNDb25uZWN0b3IodGhpcywgXCJPaWRjQ29ubmVjdG9yXCIsIHsgZmphbGxPcmdJZCB9KTtcbiAgICB9XG5cbiAgICAvLyBQZXItYWNjb3VudCBtb25pdG9yaW5nIHJvbGUgKHVuY29uZGl0aW9uYWw7IEV4dGVybmFsSWQgYWRkZWQgd2hlbiBvcmdJZCBrbm93bilcbiAgICBuZXcgQWNjb3VudE1vbml0b3JpbmdSb2xlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiTW9uaXRvcmluZ1JvbGVcIixcbiAgICAgIGZqYWxsT3JnSWQgPyB7IGZqYWxsT3JnSWQgfSA6IHVuZGVmaW5lZFxuICAgICk7XG5cbiAgICAvLyBQZXItYWNjb3VudCBhdWRpdCByb2xlIChjb25kaXRpb25hbCBvbiBmamFsbE9yZ0lkKVxuICAgIGlmIChmamFsbE9yZ0lkKSB7XG4gICAgICBuZXcgQWNjb3VudEF1ZGl0Um9sZSh0aGlzLCBcIkF1ZGl0Um9sZVwiLCB7IGZqYWxsT3JnSWQgfSk7XG4gICAgfVxuXG4gICAgbmV3IE1hbmFnZW1lbnRFdmVudHNUcmFpbCh0aGlzLCBcIkNsb3VkVHJhaWxcIiwge1xuICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICByZWdpb25cbiAgICB9KTtcblxuICAgIG5ldyBFY3JEZWZhdWx0SW1hZ2UodGhpcywgXCJFY3JEZWZhdWx0SW1hZ2VcIiwge1xuICAgICAgcmVnaW9uLFxuICAgICAgYWNjb3VudElkOiB0aGlzLmFjY291bnQsXG4gICAgICBldmVudEJ1c0FybjogZXZlbnRCdXMuZGVmYXVsdEV2ZW50QnVzQXJuLnZhbHVlXG4gICAgfSk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IGNvbmZpZy5lbnZpcm9ubWVudCB8fCBcInVua25vd25cIjtcblxuICAgIGlmIChjb25maWcuZGlzYXN0ZXJSZWNvdmVyeVJlZ2lvbikge1xuICAgICAgY29uc3QgaXNDb21wbGlhbmNlQWNjb3VudCA9IGVudmlyb25tZW50ID09PSBcImNvbXBsaWFuY2VcIjtcblxuICAgICAgaWYgKGVudmlyb25tZW50ID09PSBcInByb2R1Y3Rpb25cIiB8fCBpc0NvbXBsaWFuY2VBY2NvdW50KSB7XG4gICAgICAgIG5ldyBEaXNhc3RlclJlY292ZXJ5KHRoaXMsIFwiRGlzYXN0ZXJSZWNvdmVyeVwiLCB7XG4gICAgICAgICAgcmVnaW9uLFxuICAgICAgICAgIGFjY291bnRJZFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIFwiRW52aXJvbm1lbnRcIiwge1xuICAgICAga2V5OiBcIkVudmlyb25tZW50XCIsXG4gICAgICB2YWx1ZTogZW52aXJvbm1lbnQsXG4gICAgICBleHBvcnROYW1lOiBcIkVudmlyb25tZW50XCIsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJFbnZpcm9ubWVudCB0eXBlIGZvciB0aGlzIGFjY291bnQgKGUuZy4sIHByb2R1Y3Rpb24sIHN0YWdpbmcsIGRldmVsb3BtZW50KVwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,80 +4,58 @@ import { type IApplicationLoadBalancer } from "aws-cdk-lib/aws-elasticloadbalanc
|
|
|
4
4
|
import { type ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
5
5
|
import { type ICachePolicy } from "aws-cdk-lib/aws-cloudfront";
|
|
6
6
|
import type App from "../../app";
|
|
7
|
-
import { CloudFrontDistribution, type CachePolicyPreset } from "../../resources/aws/cdn";
|
|
7
|
+
import { CloudFrontDistribution, type CachePolicyPreset, type AccessGateConfig } from "../../resources/aws/cdn";
|
|
8
|
+
import { type ICdn } from "./interfaces/cdn";
|
|
8
9
|
import { type Storage } from "./storage";
|
|
9
10
|
import { type AnyCompute } from "./compute";
|
|
10
11
|
/**
|
|
11
|
-
*
|
|
12
|
+
* Common CDN props shared across all origin types.
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
|
-
originType: "s3";
|
|
15
|
-
bucket: IBucket | Storage;
|
|
16
|
-
originPath?: string;
|
|
14
|
+
interface BaseCdnProps {
|
|
17
15
|
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
18
16
|
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
19
17
|
behaviours?: SmartCdnBehaviour[];
|
|
20
18
|
domainNames?: string[];
|
|
21
19
|
certificate?: ICertificate;
|
|
20
|
+
certificateArn?: string;
|
|
22
21
|
comment?: string;
|
|
23
22
|
enableLogging?: boolean;
|
|
24
23
|
logBucket?: IBucket;
|
|
25
24
|
priceClass?: "PriceClass_100" | "PriceClass_200" | "PriceClass_All";
|
|
26
25
|
forwardHostHeader?: boolean;
|
|
26
|
+
accessGate?: false | AccessGateConfig;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* S3 origin CDN props - use with S3 bucket
|
|
30
|
+
*/
|
|
31
|
+
export interface S3CdnProps extends BaseCdnProps {
|
|
32
|
+
originType: "s3";
|
|
33
|
+
bucket: IBucket | Storage;
|
|
34
|
+
originPath?: string;
|
|
27
35
|
}
|
|
28
36
|
/**
|
|
29
37
|
* ALB origin CDN props - use with Application Load Balancer
|
|
30
38
|
*/
|
|
31
|
-
export interface AlbCdnProps {
|
|
39
|
+
export interface AlbCdnProps extends BaseCdnProps {
|
|
32
40
|
originType: "alb";
|
|
33
41
|
loadBalancer: IApplicationLoadBalancer | AnyCompute;
|
|
34
42
|
protocolPolicy?: "HTTP_ONLY" | "HTTPS_ONLY" | "MATCH_VIEWER";
|
|
35
|
-
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
36
|
-
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
37
|
-
behaviours?: SmartCdnBehaviour[];
|
|
38
|
-
domainNames?: string[];
|
|
39
|
-
certificate?: ICertificate;
|
|
40
|
-
comment?: string;
|
|
41
|
-
enableLogging?: boolean;
|
|
42
|
-
logBucket?: IBucket;
|
|
43
|
-
priceClass?: "PriceClass_100" | "PriceClass_200" | "PriceClass_All";
|
|
44
|
-
forwardHostHeader?: boolean;
|
|
45
43
|
}
|
|
46
44
|
/**
|
|
47
45
|
* HTTP origin CDN props - use with custom HTTP endpoint
|
|
48
46
|
*/
|
|
49
|
-
export interface HttpCdnProps {
|
|
47
|
+
export interface HttpCdnProps extends BaseCdnProps {
|
|
50
48
|
originType: "http";
|
|
51
49
|
domainName: string;
|
|
52
50
|
originPath?: string;
|
|
53
51
|
protocolPolicy?: "HTTP_ONLY" | "HTTPS_ONLY" | "MATCH_VIEWER";
|
|
54
|
-
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
55
|
-
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
56
|
-
behaviours?: SmartCdnBehaviour[];
|
|
57
|
-
domainNames?: string[];
|
|
58
|
-
certificate?: ICertificate;
|
|
59
|
-
comment?: string;
|
|
60
|
-
enableLogging?: boolean;
|
|
61
|
-
logBucket?: IBucket;
|
|
62
|
-
priceClass?: "PriceClass_100" | "PriceClass_200" | "PriceClass_All";
|
|
63
|
-
forwardHostHeader?: boolean;
|
|
64
52
|
}
|
|
65
53
|
/**
|
|
66
54
|
* Smart origin CDN props - auto-detect origin type from Fjall resource
|
|
67
55
|
*/
|
|
68
|
-
export interface SmartCdnProps {
|
|
56
|
+
export interface SmartCdnProps extends BaseCdnProps {
|
|
69
57
|
originType: "auto";
|
|
70
58
|
origin: Storage | AnyCompute | string;
|
|
71
|
-
cachePolicy?: CachePolicyPreset | ICachePolicy;
|
|
72
|
-
defaultAllowedMethods?: "GET_HEAD" | "GET_HEAD_OPTIONS" | "ALL";
|
|
73
|
-
behaviours?: SmartCdnBehaviour[];
|
|
74
|
-
domainNames?: string[];
|
|
75
|
-
certificate?: ICertificate;
|
|
76
|
-
comment?: string;
|
|
77
|
-
enableLogging?: boolean;
|
|
78
|
-
logBucket?: IBucket;
|
|
79
|
-
priceClass?: "PriceClass_100" | "PriceClass_200" | "PriceClass_All";
|
|
80
|
-
forwardHostHeader?: boolean;
|
|
81
59
|
}
|
|
82
60
|
export type ICdnProps = S3CdnProps | AlbCdnProps | HttpCdnProps | SmartCdnProps;
|
|
83
61
|
/**
|
|
@@ -93,7 +71,7 @@ export interface SmartCdnBehaviour {
|
|
|
93
71
|
/**
|
|
94
72
|
* CDN wrapper class that extends CloudFrontDistribution with Fjall patterns.
|
|
95
73
|
*/
|
|
96
|
-
export declare class Cdn extends CloudFrontDistribution {
|
|
74
|
+
export declare class Cdn extends CloudFrontDistribution implements ICdn {
|
|
97
75
|
constructor(scope: Construct, id: string, props: ICdnProps);
|
|
98
76
|
/**
|
|
99
77
|
* Resolve ICdnProps to CloudFrontDistributionProps.
|
|
@@ -157,3 +135,4 @@ export declare class CdnFactory {
|
|
|
157
135
|
*/
|
|
158
136
|
static build(id: string, props: ICdnProps): (_app: App, scope: Construct) => Cdn;
|
|
159
137
|
}
|
|
138
|
+
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CdnFactory = exports.Cdn = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
|
|
5
6
|
const cdn_1 = require("../../resources/aws/cdn");
|
|
6
7
|
const storage_1 = require("./storage");
|
|
7
8
|
const compute_1 = require("./compute");
|
|
@@ -10,22 +11,21 @@ const validationLogger_js_1 = require("../../utils/validationLogger.js");
|
|
|
10
11
|
* Validates CDN props and logs warnings for misconfigured options.
|
|
11
12
|
*/
|
|
12
13
|
function validateCdnProps(props) {
|
|
14
|
+
const hasCertificate = !!(props.certificate || props.certificateArn);
|
|
13
15
|
// Validate certificate region warning
|
|
14
|
-
if (
|
|
16
|
+
if (hasCertificate && props.domainNames && props.domainNames.length > 0) {
|
|
15
17
|
validationLogger_js_1.FjallLogger.info("CloudFront certificates must be in us-east-1 region. " +
|
|
16
18
|
"Ensure your certificate was created in us-east-1.");
|
|
17
19
|
}
|
|
18
20
|
// Validate domain names require certificate
|
|
19
|
-
if (props.domainNames && props.domainNames.length > 0 && !
|
|
21
|
+
if (props.domainNames && props.domainNames.length > 0 && !hasCertificate) {
|
|
20
22
|
validationLogger_js_1.FjallLogger.warn("'domainNames' provided but no 'certificate' specified. " +
|
|
21
23
|
"Custom domain names require an ACM certificate in us-east-1.");
|
|
22
24
|
}
|
|
23
25
|
// Validate ALB origin
|
|
24
26
|
if (props.originType === "alb") {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
(0, compute_1.isEcsCompute)(albProps.loadBalancer)) {
|
|
28
|
-
const lb = albProps.loadBalancer.getLoadBalancer();
|
|
27
|
+
if ((0, compute_1.isCompute)(props.loadBalancer) && (0, compute_1.isEcsCompute)(props.loadBalancer)) {
|
|
28
|
+
const lb = props.loadBalancer.getLoadBalancer();
|
|
29
29
|
if (!lb) {
|
|
30
30
|
throw new Error("Compute resource does not have a load balancer. " +
|
|
31
31
|
"Ensure ECS compute has loadBalancer enabled for CDN origin.");
|
|
@@ -34,16 +34,15 @@ function validateCdnProps(props) {
|
|
|
34
34
|
}
|
|
35
35
|
// Validate smart origin
|
|
36
36
|
if (props.originType === "auto") {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!smartProps.origin.getLoadBalancer()) {
|
|
37
|
+
if ((0, compute_1.isCompute)(props.origin)) {
|
|
38
|
+
if ((0, compute_1.isEcsCompute)(props.origin)) {
|
|
39
|
+
if (!props.origin.getLoadBalancer()) {
|
|
41
40
|
throw new Error("ECS compute must have a load balancer for CDN origin. " +
|
|
42
41
|
"Enable loadBalancer in your ECS compute configuration.");
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
|
-
else if ((0, compute_1.isLambdaCompute)(
|
|
46
|
-
if (!
|
|
44
|
+
else if ((0, compute_1.isLambdaCompute)(props.origin)) {
|
|
45
|
+
if (!props.origin.getFunctionUrl()) {
|
|
47
46
|
throw new Error("Lambda compute must have a function URL for CDN origin. " +
|
|
48
47
|
"Enable functionUrl in your Lambda compute configuration.");
|
|
49
48
|
}
|
|
@@ -61,27 +60,32 @@ function validateCdnProps(props) {
|
|
|
61
60
|
*/
|
|
62
61
|
class Cdn extends cdn_1.CloudFrontDistribution {
|
|
63
62
|
constructor(scope, id, props) {
|
|
64
|
-
const resolvedProps = Cdn.resolveProps(props);
|
|
63
|
+
const resolvedProps = Cdn.resolveProps(scope, id, props);
|
|
65
64
|
super(scope, id, resolvedProps);
|
|
66
65
|
}
|
|
67
66
|
/**
|
|
68
67
|
* Resolve ICdnProps to CloudFrontDistributionProps.
|
|
69
68
|
*/
|
|
70
|
-
static resolveProps(props) {
|
|
69
|
+
static resolveProps(scope, id, props) {
|
|
71
70
|
const defaultOrigin = Cdn.resolveDefaultOrigin(props);
|
|
72
71
|
const behaviours = Cdn.resolveBehaviours(props.behaviours);
|
|
72
|
+
const certificate = props.certificate ??
|
|
73
|
+
(props.certificateArn
|
|
74
|
+
? aws_certificatemanager_1.Certificate.fromCertificateArn(scope, `${id}Certificate`, props.certificateArn)
|
|
75
|
+
: undefined);
|
|
73
76
|
return {
|
|
74
77
|
defaultOrigin,
|
|
75
78
|
defaultCachePolicy: props.cachePolicy,
|
|
76
79
|
defaultAllowedMethods: props.defaultAllowedMethods,
|
|
77
80
|
behaviours,
|
|
78
81
|
domainNames: props.domainNames,
|
|
79
|
-
certificate
|
|
82
|
+
certificate,
|
|
80
83
|
comment: props.comment,
|
|
81
84
|
enableLogging: props.enableLogging,
|
|
82
85
|
logBucket: props.logBucket,
|
|
83
86
|
priceClass: props.priceClass,
|
|
84
|
-
forwardHostHeader: props.forwardHostHeader
|
|
87
|
+
forwardHostHeader: props.forwardHostHeader,
|
|
88
|
+
accessGate: props.accessGate
|
|
85
89
|
};
|
|
86
90
|
}
|
|
87
91
|
/**
|
|
@@ -253,4 +257,4 @@ class CdnFactory {
|
|
|
253
257
|
}
|
|
254
258
|
}
|
|
255
259
|
exports.CdnFactory = CdnFactory;
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9jZG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWlDO0FBT2pDLGlEQU1pQztBQUNqQyx1Q0FBb0Q7QUFDcEQsdUNBS21CO0FBQ25CLHlFQUE4RDtBQTJGOUQ7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLEtBQWdCO0lBQ3hDLHNDQUFzQztJQUN0QyxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRSxpQ0FBVyxDQUFDLElBQUksQ0FDZCx1REFBdUQ7WUFDckQsbURBQW1ELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUUsaUNBQVcsQ0FBQyxJQUFJLENBQ2QseURBQXlEO1lBQ3ZELDhEQUE4RCxDQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELHNCQUFzQjtJQUN0QixJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsS0FBb0IsQ0FBQztRQUN0QyxJQUNFLElBQUEsbUJBQVMsRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2hDLElBQUEsc0JBQVksRUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQ25DLENBQUM7WUFDRCxNQUFNLEVBQUUsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDUixNQUFNLElBQUksS0FBSyxDQUNiLGtEQUFrRDtvQkFDaEQs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QUFFLEtBQUs7b0JBQ1gsWUFBWTtpQkFDYixDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxJQUFBLHlCQUFlLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDOUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsd0NBQXdDO2dCQUN4QyxnRUFBZ0U7Z0JBQ2hFLGdDQUFnQztnQkFDaEMsb0RBQW9EO2dCQUNwRCxtQ0FBbUM7Z0JBQ25DLE1BQU0sVUFBVSxHQUFHLGdCQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxnQkFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDNUQsT0FBTztvQkFDTCxJQUFJLEVBQUUsTUFBTTtvQkFDWixVQUFVO2lCQUNYLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IsOENBQThDLE9BQU8sUUFBUSxJQUFJO1lBQy9ELHlEQUF5RCxDQUM1RCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBcktELGtCQXFLQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0NHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQWdCO1FBQ3ZDLE9BQU8sQ0FBQyxJQUFTLEVBQUUsS0FBZ0IsRUFBTyxFQUFFO1lBQzFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFkRCxnQ0FjQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEZuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyB0eXBlIElCdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyB0eXBlIElBcHBsaWNhdGlvbkxvYWRCYWxhbmNlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MlwiO1xuaW1wb3J0IHsgdHlwZSBJQ2VydGlmaWNhdGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNlcnRpZmljYXRlbWFuYWdlclwiO1xuaW1wb3J0IHsgdHlwZSBJQ2FjaGVQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcblxuaW1wb3J0IHR5cGUgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcbmltcG9ydCB7XG4gIENsb3VkRnJvbnREaXN0cmlidXRpb24sXG4gIHR5cGUgQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLFxuICB0eXBlIENkbk9yaWdpbkNvbmZpZyxcbiAgdHlwZSBDZG5CZWhhdmlvdXIsXG4gIHR5cGUgQ2FjaGVQb2xpY3lQcmVzZXRcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY2RuXCI7XG5pbXBvcnQgeyB0eXBlIFN0b3JhZ2UsIGlzU3RvcmFnZSB9IGZyb20gXCIuL3N0b3JhZ2VcIjtcbmltcG9ydCB7XG4gIHR5cGUgQW55Q29tcHV0ZSxcbiAgaXNDb21wdXRlLFxuICBpc0Vjc0NvbXB1dGUsXG4gIGlzTGFtYmRhQ29tcHV0ZVxufSBmcm9tIFwiLi9jb21wdXRlXCI7XG5pbXBvcnQgeyBGamFsbExvZ2dlciB9IGZyb20gXCIuLi8uLi91dGlscy92YWxpZGF0aW9uTG9nZ2VyLmpzXCI7XG5cbi8qKlxuICogUzMgb3JpZ2luIENETiBwcm9wcyAtIHVzZSB3aXRoIFMzIGJ1Y2tldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzQ2RuUHJvcHMge1xuICBvcmlnaW5UeXBlOiBcInMzXCI7XG4gIGJ1Y2tldDogSUJ1Y2tldCB8IFN0b3JhZ2U7XG4gIG9yaWdpblBhdGg/OiBzdHJpbmc7XG4gIGNhY2hlUG9saWN5PzogQ2FjaGVQb2xpY3lQcmVzZXQgfCBJQ2FjaGVQb2xpY3k7XG4gIGRlZmF1bHRBbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbiAgYmVoYXZpb3Vycz86IFNtYXJ0Q2RuQmVoYXZpb3VyW107XG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW107XG4gIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFMQiBvcmlnaW4gQ0ROIHByb3BzIC0gdXNlIHdpdGggQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYkNkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJhbGJcIjtcbiAgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfCBBbnlDb21wdXRlO1xuICBwcm90b2NvbFBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCI7XG4gIGNhY2hlUG9saWN5PzogQ2FjaGVQb2xpY3lQcmVzZXQgfCBJQ2FjaGVQb2xpY3k7XG4gIGRlZmF1bHRBbGxvd2VkTWV0aG9kcz86IFwiR0VUX0hFQURcIiB8IFwiR0VUX0hFQURfT1BUSU9OU1wiIHwgXCJBTExcIjtcbiAgYmVoYXZpb3Vycz86IFNtYXJ0Q2RuQmVoYXZpb3VyW107XG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW107XG4gIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEhUVFAgb3JpZ2luIENETiBwcm9wcyAtIHVzZSB3aXRoIGN1c3RvbSBIVFRQIGVuZHBvaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHR0cENkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJodHRwXCI7XG4gIGRvbWFpbk5hbWU6IHN0cmluZztcbiAgb3JpZ2luUGF0aD86IHN0cmluZztcbiAgcHJvdG9jb2xQb2xpY3k/OiBcIkhUVFBfT05MWVwiIHwgXCJIVFRQU19PTkxZXCIgfCBcIk1BVENIX1ZJRVdFUlwiO1xuICBjYWNoZVBvbGljeT86IENhY2hlUG9saWN5UHJlc2V0IHwgSUNhY2hlUG9saWN5O1xuICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG4gIGJlaGF2aW91cnM/OiBTbWFydENkbkJlaGF2aW91cltdO1xuICBkb21haW5OYW1lcz86IHN0cmluZ1tdO1xuICBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcbiAgY29tbWVudD86IHN0cmluZztcbiAgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIGxvZ0J1Y2tldD86IElCdWNrZXQ7XG4gIHByaWNlQ2xhc3M/OiBcIlByaWNlQ2xhc3NfMTAwXCIgfCBcIlByaWNlQ2xhc3NfMjAwXCIgfCBcIlByaWNlQ2xhc3NfQWxsXCI7XG4gIGZvcndhcmRIb3N0SGVhZGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTbWFydCBvcmlnaW4gQ0ROIHByb3BzIC0gYXV0by1kZXRlY3Qgb3JpZ2luIHR5cGUgZnJvbSBGamFsbCByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuUHJvcHMge1xuICBvcmlnaW5UeXBlOiBcImF1dG9cIjtcbiAgb3JpZ2luOiBTdG9yYWdlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG4gIGNvbW1lbnQ/OiBzdHJpbmc7XG4gIGVuYWJsZUxvZ2dpbmc/OiBib29sZWFuO1xuICBsb2dCdWNrZXQ/OiBJQnVja2V0O1xuICBwcmljZUNsYXNzPzogXCJQcmljZUNsYXNzXzEwMFwiIHwgXCJQcmljZUNsYXNzXzIwMFwiIHwgXCJQcmljZUNsYXNzX0FsbFwiO1xuICBmb3J3YXJkSG9zdEhlYWRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIElDZG5Qcm9wcyA9IFMzQ2RuUHJvcHMgfCBBbGJDZG5Qcm9wcyB8IEh0dHBDZG5Qcm9wcyB8IFNtYXJ0Q2RuUHJvcHM7XG5cbi8qKlxuICogU21hcnQgYmVoYXZpb3VyIHR5cGUgdGhhdCBhY2NlcHRzIEZqYWxsIHJlc291cmNlcyBhcyBvcmlnaW5zLlxuICogVGhlIGZhY3Rvcnkgd2lsbCB0cmFuc2Zvcm0gdGhlc2UgdG8gcHJvcGVyIENkbkJlaGF2aW91ciBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuQmVoYXZpb3VyIHtcbiAgcGF0aFBhdHRlcm46IHN0cmluZztcbiAgb3JpZ2luOiBTdG9yYWdlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIENETiBwcm9wcyBhbmQgbG9ncyB3YXJuaW5ncyBmb3IgbWlzY29uZmlndXJlZCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNkblByb3BzKHByb3BzOiBJQ2RuUHJvcHMpOiB2b2lkIHtcbiAgLy8gVmFsaWRhdGUgY2VydGlmaWNhdGUgcmVnaW9uIHdhcm5pbmdcbiAgaWYgKHByb3BzLmNlcnRpZmljYXRlICYmIHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICBGamFsbExvZ2dlci5pbmZvKFxuICAgICAgXCJDbG91ZEZyb250IGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHVzLWVhc3QtMSByZWdpb24uIFwiICtcbiAgICAgICAgXCJFbnN1cmUgeW91ciBjZXJ0aWZpY2F0ZSB3YXMgY3JlYXRlZCBpbiB1cy1lYXN0LTEuXCJcbiAgICApO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZG9tYWluIG5hbWVzIHJlcXVpcmUgY2VydGlmaWNhdGVcbiAgaWYgKHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDAgJiYgIXByb3BzLmNlcnRpZmljYXRlKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIFwiJ2RvbWFpbk5hbWVzJyBwcm92aWRlZCBidXQgbm8gJ2NlcnRpZmljYXRlJyBzcGVjaWZpZWQuIFwiICtcbiAgICAgICAgXCJDdXN0b20gZG9tYWluIG5hbWVzIHJlcXVpcmUgYW4gQUNNIGNlcnRpZmljYXRlIGluIHVzLWVhc3QtMS5cIlxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBBTEIgb3JpZ2luXG4gIGlmIChwcm9wcy5vcmlnaW5UeXBlID09PSBcImFsYlwiKSB7XG4gICAgY29uc3QgYWxiUHJvcHMgPSBwcm9wcyBhcyBBbGJDZG5Qcm9wcztcbiAgICBpZiAoXG4gICAgICBpc0NvbXB1dGUoYWxiUHJvcHMubG9hZEJhbGFuY2VyKSAmJlxuICAgICAgaXNFY3NDb21wdXRlKGFsYlByb3BzLmxvYWRCYWxhbmNlcilcbiAgICApIHtcbiAgICAgIGNvbnN0IGxiID0gYWxiUHJvcHMubG9hZEJhbGFuY2VyLmdldExvYWRCYWxhbmNlcigpO1xuICAgICAgaWYgKCFsYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJDb21wdXRlIHJlc291cmNlIGRvZXMgbm90IGhhdmUgYSBsb2FkIGJhbGFuY2VyLiBcIiArXG4gICAgICAgICAgICBcIkVuc3VyZSBFQ1MgY29tcHV0ZSBoYXMgbG9hZEJhbGFuY2VyIGVuYWJsZWQgZm9yIENETiBvcmlnaW4uXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBzbWFydCBvcmlnaW5cbiAgaWYgKHByb3BzLm9yaWdpblR5cGUgPT09IFwiYXV0b1wiKSB7XG4gICAgY29uc3Qgc21hcnRQcm9wcyA9IHByb3BzIGFzIFNtYXJ0Q2RuUHJvcHM7XG4gICAgaWYgKGlzQ29tcHV0ZShzbWFydFByb3BzLm9yaWdpbikpIHtcbiAgICAgIGlmIChpc0Vjc0NvbXB1dGUoc21hcnRQcm9wcy5vcmlnaW4pKSB7XG4gICAgICAgIGlmICghc21hcnRQcm9wcy5vcmlnaW4uZ2V0TG9hZEJhbGFuY2VyKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkVDUyBjb21wdXRlIG11c3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIgZm9yIENETiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgICAgXCJFbmFibGUgbG9hZEJhbGFuY2VyIGluIHlvdXIgRUNTIGNvbXB1dGUgY29uZmlndXJhdGlvbi5cIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNMYW1iZGFDb21wdXRlKHNtYXJ0UHJvcHMub3JpZ2luKSkge1xuICAgICAgICBpZiAoIXNtYXJ0UHJvcHMub3JpZ2luLmdldEZ1bmN0aW9uVXJsKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkxhbWJkYSBjb21wdXRlIG11c3QgaGF2ZSBhIGZ1bmN0aW9uIFVSTCBmb3IgQ0ROIG9yaWdpbi4gXCIgK1xuICAgICAgICAgICAgICBcIkVuYWJsZSBmdW5jdGlvblVybCBpbiB5b3VyIExhbWJkYSBjb21wdXRlIGNvbmZpZ3VyYXRpb24uXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNdXN0IGJlIEVDMlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJFQzIgY29tcHV0ZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIENETiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgIFwiVXNlIEVDUyB3aXRoIGxvYWQgYmFsYW5jZXIgb3IgTGFtYmRhIHdpdGggZnVuY3Rpb24gVVJMLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ0ROIHdyYXBwZXIgY2xhc3MgdGhhdCBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24gd2l0aCBGamFsbCBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGNsYXNzIENkbiBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24ge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSUNkblByb3BzKSB7XG4gICAgY29uc3QgcmVzb2x2ZWRQcm9wcyA9IENkbi5yZXNvbHZlUHJvcHMocHJvcHMpO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcmVzb2x2ZWRQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBJQ2RuUHJvcHMgdG8gQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZVByb3BzKHByb3BzOiBJQ2RuUHJvcHMpOiBDbG91ZEZyb250RGlzdHJpYnV0aW9uUHJvcHMge1xuICAgIGNvbnN0IGRlZmF1bHRPcmlnaW4gPSBDZG4ucmVzb2x2ZURlZmF1bHRPcmlnaW4ocHJvcHMpO1xuICAgIGNvbnN0IGJlaGF2aW91cnMgPSBDZG4ucmVzb2x2ZUJlaGF2aW91cnMocHJvcHMuYmVoYXZpb3Vycyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdE9yaWdpbixcbiAgICAgIGRlZmF1bHRDYWNoZVBvbGljeTogcHJvcHMuY2FjaGVQb2xpY3ksXG4gICAgICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM6IHByb3BzLmRlZmF1bHRBbGxvd2VkTWV0aG9kcyxcbiAgICAgIGJlaGF2aW91cnMsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZTogcHJvcHMuY2VydGlmaWNhdGUsXG4gICAgICBjb21tZW50OiBwcm9wcy5jb21tZW50LFxuICAgICAgZW5hYmxlTG9nZ2luZzogcHJvcHMuZW5hYmxlTG9nZ2luZyxcbiAgICAgIGxvZ0J1Y2tldDogcHJvcHMubG9nQnVja2V0LFxuICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzcyxcbiAgICAgIGZvcndhcmRIb3N0SGVhZGVyOiBwcm9wcy5mb3J3YXJkSG9zdEhlYWRlclxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHNtYXJ0IGJlaGF2aW91cnMgdG8gQ2RuQmVoYXZpb3VyIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlQmVoYXZpb3VycyhcbiAgICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXVxuICApOiBDZG5CZWhhdmlvdXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFiZWhhdmlvdXJzIHx8IGJlaGF2aW91cnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBiZWhhdmlvdXJzLm1hcCgoYmVoYXZpb3VyKSA9PiAoe1xuICAgICAgcGF0aFBhdHRlcm46IGJlaGF2aW91ci5wYXRoUGF0dGVybixcbiAgICAgIG9yaWdpbjogQ2RuLmRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShiZWhhdmlvdXIub3JpZ2luKSxcbiAgICAgIGNhY2hlUG9saWN5OiBiZWhhdmlvdXIuY2FjaGVQb2xpY3ksXG4gICAgICBhbGxvd2VkTWV0aG9kczogYmVoYXZpb3VyLmFsbG93ZWRNZXRob2RzXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGRlZmF1bHQgb3JpZ2luIGZyb20gSUNkblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZURlZmF1bHRPcmlnaW4ocHJvcHM6IElDZG5Qcm9wcyk6IENkbk9yaWdpbkNvbmZpZyB7XG4gICAgc3dpdGNoIChwcm9wcy5vcmlnaW5UeXBlKSB7XG4gICAgICBjYXNlIFwiczNcIjoge1xuICAgICAgICBjb25zdCBidWNrZXQgPSBpc1N0b3JhZ2UocHJvcHMuYnVja2V0KVxuICAgICAgICAgID8gcHJvcHMuYnVja2V0LmdldEJ1Y2tldCgpXG4gICAgICAgICAgOiBwcm9wcy5idWNrZXQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzM1wiLFxuICAgICAgICAgIGJ1Y2tldCxcbiAgICAgICAgICBvcmlnaW5QYXRoOiBwcm9wcy5vcmlnaW5QYXRoXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhbGJcIjoge1xuICAgICAgICBsZXQgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gICAgICAgIGlmIChpc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgIGlmIChpc0Vjc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgICAgY29uc3QgbGIgPSBwcm9wcy5sb2FkQmFsYW5jZXIuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICAgICAgICBpZiAoIWxiKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNvbXB1dGUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIuIFwiICtcbiAgICAgICAgICAgICAgICAgIFwiRW5zdXJlIEVDUyBjb21wdXRlIGhhcyBsb2FkQmFsYW5jZXIgZW5hYmxlZCBmb3IgQ0ROIG9yaWdpbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyID0gbGI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgXCJPbmx5IEVDUyBjb21wdXRlIHdpdGggbG9hZCBiYWxhbmNlciBpcyBzdXBwb3J0ZWQgZm9yIEFMQiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgICAgICBcIkxhbWJkYSBhbmQgRUMyIGNvbXB1dGUgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvYWRCYWxhbmNlciA9IHByb3BzLmxvYWRCYWxhbmNlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxiXCIsXG4gICAgICAgICAgbG9hZEJhbGFuY2VyLFxuICAgICAgICAgIHByb3RvY29sUG9saWN5OiBwcm9wcy5wcm90b2NvbFBvbGljeVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlIFwiaHR0cFwiOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgb3JpZ2luUGF0aDogcHJvcHMub3JpZ2luUGF0aCxcbiAgICAgICAgICBwcm90b2NvbFBvbGljeTogcHJvcHMucHJvdG9jb2xQb2xpY3lcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSBcImF1dG9cIjpcbiAgICAgICAgcmV0dXJuIENkbi5kZXRlY3RPcmlnaW5Gcm9tUmVzb3VyY2UocHJvcHMub3JpZ2luKTtcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBwcm9wcztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBDRE4gb3JpZ2luIHR5cGU6ICR7KHByb3BzIGFzIElDZG5Qcm9wcykub3JpZ2luVHlwZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZGV0ZWN0IG9yaWdpbiBjb25maWd1cmF0aW9uIGZyb20gYSBGamFsbCByZXNvdXJjZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShcbiAgICByZXNvdXJjZTogU3RvcmFnZSB8IEFueUNvbXB1dGUgfCBzdHJpbmdcbiAgKTogQ2RuT3JpZ2luQ29uZmlnIHtcbiAgICAvLyBTdHJpbmcg4oaSIEhUVFAgb3JpZ2luXG4gICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJodHRwXCIsXG4gICAgICAgIGRvbWFpbk5hbWU6IHJlc291cmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFN0b3JhZ2Ug4oaSIFMzIG9yaWdpblxuICAgIGlmIChpc1N0b3JhZ2UocmVzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInMzXCIsXG4gICAgICAgIGJ1Y2tldDogcmVzb3VyY2UuZ2V0QnVja2V0KClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRUNTIENvbXB1dGUg4oaSIEFMQiBvcmlnaW5cbiAgICBpZiAoaXNFY3NDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgbG9hZEJhbGFuY2VyID0gcmVzb3VyY2UuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICBpZiAobG9hZEJhbGFuY2VyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJhbGJcIixcbiAgICAgICAgICBsb2FkQmFsYW5jZXJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYW1iZGEgQ29tcHV0ZSDihpIgSFRUUCBvcmlnaW4gKGZ1bmN0aW9uIFVSTClcbiAgICBpZiAoaXNMYW1iZGFDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgZnVuY3Rpb25VcmwgPSByZXNvdXJjZS5nZXRGdW5jdGlvblVybCgpO1xuICAgICAgaWYgKGZ1bmN0aW9uVXJsKSB7XG4gICAgICAgIC8vIExhbWJkYSBmdW5jdGlvbiBVUkwgaXMgYW4gSFRUUCBvcmlnaW5cbiAgICAgICAgLy8gRXh0cmFjdCBkb21haW4gZnJvbSBVUkwgdG9rZW4gdXNpbmcgQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljc1xuICAgICAgICAvLyBVUkwgZm9ybWF0OiBodHRwczovLzxkb21haW4+L1xuICAgICAgICAvLyBTcGxpdCBieSBcIi9cIiBnaXZlcyBbXCJodHRwczpcIiwgXCJcIiwgXCI8ZG9tYWluPlwiLCBcIlwiXVxuICAgICAgICAvLyBTZWxlY3QgaW5kZXggMiB0byBnZXQgdGhlIGRvbWFpblxuICAgICAgICBjb25zdCBkb21haW5OYW1lID0gRm4uc2VsZWN0KDIsIEZuLnNwbGl0KFwiL1wiLCBmdW5jdGlvblVybCkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIGRldGVjdCBDRE4gb3JpZ2luIGZyb20gcmVzb3VyY2U6ICR7dHlwZW9mIHJlc291cmNlfS4gYCArXG4gICAgICAgIFwiUHJvdmlkZSBleHBsaWNpdCBvcmlnaW4gY29uZmlndXJhdGlvbiB1c2luZyBvcmlnaW5UeXBlLlwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIENETiAoQ2xvdWRGcm9udCkgZGlzdHJpYnV0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUzMgb3JpZ2luXG4gKiBjb25zdCBhc3NldHMgPSBhcHAuYWRkU3RvcmFnZShTdG9yYWdlRmFjdG9yeS5idWlsZChcIkFzc2V0c1wiLCB7fSkpO1xuICogYXBwLmFkZENkbihDZG5GYWN0b3J5LmJ1aWxkKFwiQXNzZXRzQ2RuXCIsIHtcbiAqICAgb3JpZ2luVHlwZTogXCJzM1wiLFxuICogICBidWNrZXQ6IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBTEIgb3JpZ2luIChFQ1MpXG4gKiBjb25zdCBhcGkgPSBhcHAuYWRkQ29tcHV0ZShDb21wdXRlRmFjdG9yeS5idWlsZChcIkFwaVwiLCB7IHR5cGU6IFwiZWNzXCIsIC4uLiB9KSk7XG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcGlDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcImFsYlwiLFxuICogICBsb2FkQmFsYW5jZXI6IGFwaVxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTbWFydCBkZXRlY3Rpb25cbiAqIGFwcC5hZGRDZG4oQ2RuRmFjdG9yeS5idWlsZChcIkFwcENkblwiLCB7XG4gKiAgIG9yaWdpblR5cGU6IFwiYXV0b1wiLFxuICogICBvcmlnaW46IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b20gZG9tYWluXG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcHBDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcInMzXCIsXG4gKiAgIGJ1Y2tldDogYXNzZXRzLFxuICogICBkb21haW5OYW1lczogW1wiYXBwLmV4YW1wbGUuY29tXCJdLFxuICogICBjZXJ0aWZpY2F0ZTogbXlDZXJ0XG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBDZG5GYWN0b3J5IHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgQ0ROIGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgQ0ROXG4gICAqIEBwYXJhbSBwcm9wcyAtIENETiBjb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIENETiB3aGVuIGludm9rZWRcbiAgICovXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNkblByb3BzKSB7XG4gICAgcmV0dXJuIChfYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpOiBDZG4gPT4ge1xuICAgICAgdmFsaWRhdGVDZG5Qcm9wcyhwcm9wcyk7XG4gICAgICByZXR1cm4gbmV3IENkbihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3BhdHRlcm5zL2F3cy9jZG4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkNBQWlDO0FBR2pDLCtFQUc0QztBQUk1QyxpREFPaUM7QUFFakMsdUNBQW9EO0FBQ3BELHVDQUttQjtBQUNuQix5RUFBOEQ7QUFxRTlEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFnQjtJQUN4QyxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVyRSxzQ0FBc0M7SUFDdEMsSUFBSSxjQUFjLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4RSxpQ0FBVyxDQUFDLElBQUksQ0FDZCx1REFBdUQ7WUFDckQsbURBQW1ELENBQ3RELENBQUM7SUFDSixDQUFDO0lBRUQsNENBQTRDO0lBQzVDLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxpQ0FBVyxDQUFDLElBQUksQ0FDZCx5REFBeUQ7WUFDdkQsOERBQThELENBQ2pFLENBQUM7SUFDSixDQUFDO0lBRUQsc0JBQXNCO0lBQ3RCLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUEsbUJBQVMsRUFBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksSUFBQSxzQkFBWSxFQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFD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T0FBTyxDQUFDLElBQVMsRUFBRSxLQUFnQixFQUFPLEVBQUU7WUFDMUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEIsT0FBTyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWRELGdDQWNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgRm4gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IHR5cGUgSUJ1Y2tldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7IHR5cGUgSUFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyXCI7XG5pbXBvcnQge1xuICB0eXBlIElDZXJ0aWZpY2F0ZSxcbiAgQ2VydGlmaWNhdGVcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIjtcbmltcG9ydCB7IHR5cGUgSUNhY2hlUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5cbmltcG9ydCB0eXBlIEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5pbXBvcnQge1xuICBDbG91ZEZyb250RGlzdHJpYnV0aW9uLFxuICB0eXBlIENsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyxcbiAgdHlwZSBDZG5PcmlnaW5Db25maWcsXG4gIHR5cGUgQ2RuQmVoYXZpb3VyLFxuICB0eXBlIENhY2hlUG9saWN5UHJlc2V0LFxuICB0eXBlIEFjY2Vzc0dhdGVDb25maWdcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY2RuXCI7XG5pbXBvcnQgeyB0eXBlIElDZG4gfSBmcm9tIFwiLi9pbnRlcmZhY2VzL2NkblwiO1xuaW1wb3J0IHsgdHlwZSBTdG9yYWdlLCBpc1N0b3JhZ2UgfSBmcm9tIFwiLi9zdG9yYWdlXCI7XG5pbXBvcnQge1xuICB0eXBlIEFueUNvbXB1dGUsXG4gIGlzQ29tcHV0ZSxcbiAgaXNFY3NDb21wdXRlLFxuICBpc0xhbWJkYUNvbXB1dGVcbn0gZnJvbSBcIi4vY29tcHV0ZVwiO1xuaW1wb3J0IHsgRmphbGxMb2dnZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdmFsaWRhdGlvbkxvZ2dlci5qc1wiO1xuXG4vKipcbiAqIENvbW1vbiBDRE4gcHJvcHMgc2hhcmVkIGFjcm9zcyBhbGwgb3JpZ2luIHR5cGVzLlxuICovXG5pbnRlcmZhY2UgQmFzZUNkblByb3BzIHtcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgZGVmYXVsdEFsbG93ZWRNZXRob2RzPzogXCJHRVRfSEVBRFwiIHwgXCJHRVRfSEVBRF9PUFRJT05TXCIgfCBcIkFMTFwiO1xuICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXTtcbiAgZG9tYWluTmFtZXM/OiBzdHJpbmdbXTtcbiAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG4gIGNlcnRpZmljYXRlQXJuPzogc3RyaW5nO1xuICBjb21tZW50Pzogc3RyaW5nO1xuICBlbmFibGVMb2dnaW5nPzogYm9vbGVhbjtcbiAgbG9nQnVja2V0PzogSUJ1Y2tldDtcbiAgcHJpY2VDbGFzcz86IFwiUHJpY2VDbGFzc18xMDBcIiB8IFwiUHJpY2VDbGFzc18yMDBcIiB8IFwiUHJpY2VDbGFzc19BbGxcIjtcbiAgZm9yd2FyZEhvc3RIZWFkZXI/OiBib29sZWFuO1xuICBhY2Nlc3NHYXRlPzogZmFsc2UgfCBBY2Nlc3NHYXRlQ29uZmlnO1xufVxuXG4vKipcbiAqIFMzIG9yaWdpbiBDRE4gcHJvcHMgLSB1c2Ugd2l0aCBTMyBidWNrZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0NkblByb3BzIGV4dGVuZHMgQmFzZUNkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJzM1wiO1xuICBidWNrZXQ6IElCdWNrZXQgfCBTdG9yYWdlO1xuICBvcmlnaW5QYXRoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFMQiBvcmlnaW4gQ0ROIHByb3BzIC0gdXNlIHdpdGggQXBwbGljYXRpb24gTG9hZCBCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFsYkNkblByb3BzIGV4dGVuZHMgQmFzZUNkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJhbGJcIjtcbiAgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgfCBBbnlDb21wdXRlO1xuICBwcm90b2NvbFBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCI7XG59XG5cbi8qKlxuICogSFRUUCBvcmlnaW4gQ0ROIHByb3BzIC0gdXNlIHdpdGggY3VzdG9tIEhUVFAgZW5kcG9pbnRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIdHRwQ2RuUHJvcHMgZXh0ZW5kcyBCYXNlQ2RuUHJvcHMge1xuICBvcmlnaW5UeXBlOiBcImh0dHBcIjtcbiAgZG9tYWluTmFtZTogc3RyaW5nO1xuICBvcmlnaW5QYXRoPzogc3RyaW5nO1xuICBwcm90b2NvbFBvbGljeT86IFwiSFRUUF9PTkxZXCIgfCBcIkhUVFBTX09OTFlcIiB8IFwiTUFUQ0hfVklFV0VSXCI7XG59XG5cbi8qKlxuICogU21hcnQgb3JpZ2luIENETiBwcm9wcyAtIGF1dG8tZGV0ZWN0IG9yaWdpbiB0eXBlIGZyb20gRmphbGwgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTbWFydENkblByb3BzIGV4dGVuZHMgQmFzZUNkblByb3BzIHtcbiAgb3JpZ2luVHlwZTogXCJhdXRvXCI7XG4gIG9yaWdpbjogU3RvcmFnZSB8IEFueUNvbXB1dGUgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIElDZG5Qcm9wcyA9IFMzQ2RuUHJvcHMgfCBBbGJDZG5Qcm9wcyB8IEh0dHBDZG5Qcm9wcyB8IFNtYXJ0Q2RuUHJvcHM7XG5cbi8qKlxuICogU21hcnQgYmVoYXZpb3VyIHR5cGUgdGhhdCBhY2NlcHRzIEZqYWxsIHJlc291cmNlcyBhcyBvcmlnaW5zLlxuICogVGhlIGZhY3Rvcnkgd2lsbCB0cmFuc2Zvcm0gdGhlc2UgdG8gcHJvcGVyIENkbkJlaGF2aW91ciBvYmplY3RzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Q2RuQmVoYXZpb3VyIHtcbiAgcGF0aFBhdHRlcm46IHN0cmluZztcbiAgb3JpZ2luOiBTdG9yYWdlIHwgQW55Q29tcHV0ZSB8IHN0cmluZztcbiAgY2FjaGVQb2xpY3k/OiBDYWNoZVBvbGljeVByZXNldCB8IElDYWNoZVBvbGljeTtcbiAgYWxsb3dlZE1ldGhvZHM/OiBcIkdFVF9IRUFEXCIgfCBcIkdFVF9IRUFEX09QVElPTlNcIiB8IFwiQUxMXCI7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIENETiBwcm9wcyBhbmQgbG9ncyB3YXJuaW5ncyBmb3IgbWlzY29uZmlndXJlZCBvcHRpb25zLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNkblByb3BzKHByb3BzOiBJQ2RuUHJvcHMpOiB2b2lkIHtcbiAgY29uc3QgaGFzQ2VydGlmaWNhdGUgPSAhIShwcm9wcy5jZXJ0aWZpY2F0ZSB8fCBwcm9wcy5jZXJ0aWZpY2F0ZUFybik7XG5cbiAgLy8gVmFsaWRhdGUgY2VydGlmaWNhdGUgcmVnaW9uIHdhcm5pbmdcbiAgaWYgKGhhc0NlcnRpZmljYXRlICYmIHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDApIHtcbiAgICBGamFsbExvZ2dlci5pbmZvKFxuICAgICAgXCJDbG91ZEZyb250IGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHVzLWVhc3QtMSByZWdpb24uIFwiICtcbiAgICAgICAgXCJFbnN1cmUgeW91ciBjZXJ0aWZpY2F0ZSB3YXMgY3JlYXRlZCBpbiB1cy1lYXN0LTEuXCJcbiAgICApO1xuICB9XG5cbiAgLy8gVmFsaWRhdGUgZG9tYWluIG5hbWVzIHJlcXVpcmUgY2VydGlmaWNhdGVcbiAgaWYgKHByb3BzLmRvbWFpbk5hbWVzICYmIHByb3BzLmRvbWFpbk5hbWVzLmxlbmd0aCA+IDAgJiYgIWhhc0NlcnRpZmljYXRlKSB7XG4gICAgRmphbGxMb2dnZXIud2FybihcbiAgICAgIFwiJ2RvbWFpbk5hbWVzJyBwcm92aWRlZCBidXQgbm8gJ2NlcnRpZmljYXRlJyBzcGVjaWZpZWQuIFwiICtcbiAgICAgICAgXCJDdXN0b20gZG9tYWluIG5hbWVzIHJlcXVpcmUgYW4gQUNNIGNlcnRpZmljYXRlIGluIHVzLWVhc3QtMS5cIlxuICAgICk7XG4gIH1cblxuICAvLyBWYWxpZGF0ZSBBTEIgb3JpZ2luXG4gIGlmIChwcm9wcy5vcmlnaW5UeXBlID09PSBcImFsYlwiKSB7XG4gICAgaWYgKGlzQ29tcHV0ZShwcm9wcy5sb2FkQmFsYW5jZXIpICYmIGlzRWNzQ29tcHV0ZShwcm9wcy5sb2FkQmFsYW5jZXIpKSB7XG4gICAgICBjb25zdCBsYiA9IHByb3BzLmxvYWRCYWxhbmNlci5nZXRMb2FkQmFsYW5jZXIoKTtcbiAgICAgIGlmICghbGIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiQ29tcHV0ZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbG9hZCBiYWxhbmNlci4gXCIgK1xuICAgICAgICAgICAgXCJFbnN1cmUgRUNTIGNvbXB1dGUgaGFzIGxvYWRCYWxhbmNlciBlbmFibGVkIGZvciBDRE4gb3JpZ2luLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVmFsaWRhdGUgc21hcnQgb3JpZ2luXG4gIGlmIChwcm9wcy5vcmlnaW5UeXBlID09PSBcImF1dG9cIikge1xuICAgIGlmIChpc0NvbXB1dGUocHJvcHMub3JpZ2luKSkge1xuICAgICAgaWYgKGlzRWNzQ29tcHV0ZShwcm9wcy5vcmlnaW4pKSB7XG4gICAgICAgIGlmICghcHJvcHMub3JpZ2luLmdldExvYWRCYWxhbmNlcigpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgXCJFQ1MgY29tcHV0ZSBtdXN0IGhhdmUgYSBsb2FkIGJhbGFuY2VyIGZvciBDRE4gb3JpZ2luLiBcIiArXG4gICAgICAgICAgICAgIFwiRW5hYmxlIGxvYWRCYWxhbmNlciBpbiB5b3VyIEVDUyBjb21wdXRlIGNvbmZpZ3VyYXRpb24uXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzTGFtYmRhQ29tcHV0ZShwcm9wcy5vcmlnaW4pKSB7XG4gICAgICAgIGlmICghcHJvcHMub3JpZ2luLmdldEZ1bmN0aW9uVXJsKCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBcIkxhbWJkYSBjb21wdXRlIG11c3QgaGF2ZSBhIGZ1bmN0aW9uIFVSTCBmb3IgQ0ROIG9yaWdpbi4gXCIgK1xuICAgICAgICAgICAgICBcIkVuYWJsZSBmdW5jdGlvblVybCBpbiB5b3VyIExhbWJkYSBjb21wdXRlIGNvbmZpZ3VyYXRpb24uXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBNdXN0IGJlIEVDMlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJFQzIgY29tcHV0ZSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIENETiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgIFwiVXNlIEVDUyB3aXRoIGxvYWQgYmFsYW5jZXIgb3IgTGFtYmRhIHdpdGggZnVuY3Rpb24gVVJMLlwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ0ROIHdyYXBwZXIgY2xhc3MgdGhhdCBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24gd2l0aCBGamFsbCBwYXR0ZXJucy5cbiAqL1xuZXhwb3J0IGNsYXNzIENkbiBleHRlbmRzIENsb3VkRnJvbnREaXN0cmlidXRpb24gaW1wbGVtZW50cyBJQ2RuIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElDZG5Qcm9wcykge1xuICAgIGNvbnN0IHJlc29sdmVkUHJvcHMgPSBDZG4ucmVzb2x2ZVByb3BzKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcmVzb2x2ZWRQcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBJQ2RuUHJvcHMgdG8gQ2xvdWRGcm9udERpc3RyaWJ1dGlvblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZVByb3BzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogSUNkblByb3BzXG4gICk6IENsb3VkRnJvbnREaXN0cmlidXRpb25Qcm9wcyB7XG4gICAgY29uc3QgZGVmYXVsdE9yaWdpbiA9IENkbi5yZXNvbHZlRGVmYXVsdE9yaWdpbihwcm9wcyk7XG4gICAgY29uc3QgYmVoYXZpb3VycyA9IENkbi5yZXNvbHZlQmVoYXZpb3Vycyhwcm9wcy5iZWhhdmlvdXJzKTtcblxuICAgIGNvbnN0IGNlcnRpZmljYXRlID1cbiAgICAgIHByb3BzLmNlcnRpZmljYXRlID8/XG4gICAgICAocHJvcHMuY2VydGlmaWNhdGVBcm5cbiAgICAgICAgPyBDZXJ0aWZpY2F0ZS5mcm9tQ2VydGlmaWNhdGVBcm4oXG4gICAgICAgICAgICBzY29wZSxcbiAgICAgICAgICAgIGAke2lkfUNlcnRpZmljYXRlYCxcbiAgICAgICAgICAgIHByb3BzLmNlcnRpZmljYXRlQXJuXG4gICAgICAgICAgKVxuICAgICAgICA6IHVuZGVmaW5lZCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdE9yaWdpbixcbiAgICAgIGRlZmF1bHRDYWNoZVBvbGljeTogcHJvcHMuY2FjaGVQb2xpY3ksXG4gICAgICBkZWZhdWx0QWxsb3dlZE1ldGhvZHM6IHByb3BzLmRlZmF1bHRBbGxvd2VkTWV0aG9kcyxcbiAgICAgIGJlaGF2aW91cnMsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgIGNvbW1lbnQ6IHByb3BzLmNvbW1lbnQsXG4gICAgICBlbmFibGVMb2dnaW5nOiBwcm9wcy5lbmFibGVMb2dnaW5nLFxuICAgICAgbG9nQnVja2V0OiBwcm9wcy5sb2dCdWNrZXQsXG4gICAgICBwcmljZUNsYXNzOiBwcm9wcy5wcmljZUNsYXNzLFxuICAgICAgZm9yd2FyZEhvc3RIZWFkZXI6IHByb3BzLmZvcndhcmRIb3N0SGVhZGVyLFxuICAgICAgYWNjZXNzR2F0ZTogcHJvcHMuYWNjZXNzR2F0ZVxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVHJhbnNmb3JtIHNtYXJ0IGJlaGF2aW91cnMgdG8gQ2RuQmVoYXZpb3VyIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlQmVoYXZpb3VycyhcbiAgICBiZWhhdmlvdXJzPzogU21hcnRDZG5CZWhhdmlvdXJbXVxuICApOiBDZG5CZWhhdmlvdXJbXSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFiZWhhdmlvdXJzIHx8IGJlaGF2aW91cnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiBiZWhhdmlvdXJzLm1hcCgoYmVoYXZpb3VyKSA9PiAoe1xuICAgICAgcGF0aFBhdHRlcm46IGJlaGF2aW91ci5wYXRoUGF0dGVybixcbiAgICAgIG9yaWdpbjogQ2RuLmRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShiZWhhdmlvdXIub3JpZ2luKSxcbiAgICAgIGNhY2hlUG9saWN5OiBiZWhhdmlvdXIuY2FjaGVQb2xpY3ksXG4gICAgICBhbGxvd2VkTWV0aG9kczogYmVoYXZpb3VyLmFsbG93ZWRNZXRob2RzXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGRlZmF1bHQgb3JpZ2luIGZyb20gSUNkblByb3BzLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZURlZmF1bHRPcmlnaW4ocHJvcHM6IElDZG5Qcm9wcyk6IENkbk9yaWdpbkNvbmZpZyB7XG4gICAgc3dpdGNoIChwcm9wcy5vcmlnaW5UeXBlKSB7XG4gICAgICBjYXNlIFwiczNcIjoge1xuICAgICAgICBjb25zdCBidWNrZXQgPSBpc1N0b3JhZ2UocHJvcHMuYnVja2V0KVxuICAgICAgICAgID8gcHJvcHMuYnVja2V0LmdldEJ1Y2tldCgpXG4gICAgICAgICAgOiBwcm9wcy5idWNrZXQ7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJzM1wiLFxuICAgICAgICAgIGJ1Y2tldCxcbiAgICAgICAgICBvcmlnaW5QYXRoOiBwcm9wcy5vcmlnaW5QYXRoXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIGNhc2UgXCJhbGJcIjoge1xuICAgICAgICBsZXQgbG9hZEJhbGFuY2VyOiBJQXBwbGljYXRpb25Mb2FkQmFsYW5jZXI7XG4gICAgICAgIGlmIChpc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgIGlmIChpc0Vjc0NvbXB1dGUocHJvcHMubG9hZEJhbGFuY2VyKSkge1xuICAgICAgICAgICAgY29uc3QgbGIgPSBwcm9wcy5sb2FkQmFsYW5jZXIuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICAgICAgICBpZiAoIWxiKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIkNvbXB1dGUgcmVzb3VyY2UgZG9lcyBub3QgaGF2ZSBhIGxvYWQgYmFsYW5jZXIuIFwiICtcbiAgICAgICAgICAgICAgICAgIFwiRW5zdXJlIEVDUyBjb21wdXRlIGhhcyBsb2FkQmFsYW5jZXIgZW5hYmxlZCBmb3IgQ0ROIG9yaWdpbi5cIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyID0gbGI7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgXCJPbmx5IEVDUyBjb21wdXRlIHdpdGggbG9hZCBiYWxhbmNlciBpcyBzdXBwb3J0ZWQgZm9yIEFMQiBvcmlnaW4uIFwiICtcbiAgICAgICAgICAgICAgICBcIkxhbWJkYSBhbmQgRUMyIGNvbXB1dGUgdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvYWRCYWxhbmNlciA9IHByb3BzLmxvYWRCYWxhbmNlcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiYWxiXCIsXG4gICAgICAgICAgbG9hZEJhbGFuY2VyLFxuICAgICAgICAgIHByb3RvY29sUG9saWN5OiBwcm9wcy5wcm90b2NvbFBvbGljeVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBjYXNlIFwiaHR0cFwiOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgICAgb3JpZ2luUGF0aDogcHJvcHMub3JpZ2luUGF0aCxcbiAgICAgICAgICBwcm90b2NvbFBvbGljeTogcHJvcHMucHJvdG9jb2xQb2xpY3lcbiAgICAgICAgfTtcblxuICAgICAgY2FzZSBcImF1dG9cIjpcbiAgICAgICAgcmV0dXJuIENkbi5kZXRlY3RPcmlnaW5Gcm9tUmVzb3VyY2UocHJvcHMub3JpZ2luKTtcblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBfZXhoYXVzdGl2ZTogbmV2ZXIgPSBwcm9wcztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBVbnN1cHBvcnRlZCBDRE4gb3JpZ2luIHR5cGU6ICR7KHByb3BzIGFzIElDZG5Qcm9wcykub3JpZ2luVHlwZX1gXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF1dG8tZGV0ZWN0IG9yaWdpbiBjb25maWd1cmF0aW9uIGZyb20gYSBGamFsbCByZXNvdXJjZS5cbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGRldGVjdE9yaWdpbkZyb21SZXNvdXJjZShcbiAgICByZXNvdXJjZTogU3RvcmFnZSB8IEFueUNvbXB1dGUgfCBzdHJpbmdcbiAgKTogQ2RuT3JpZ2luQ29uZmlnIHtcbiAgICAvLyBTdHJpbmcg4oaSIEhUVFAgb3JpZ2luXG4gICAgaWYgKHR5cGVvZiByZXNvdXJjZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogXCJodHRwXCIsXG4gICAgICAgIGRvbWFpbk5hbWU6IHJlc291cmNlXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIFN0b3JhZ2Ug4oaSIFMzIG9yaWdpblxuICAgIGlmIChpc1N0b3JhZ2UocmVzb3VyY2UpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBcInMzXCIsXG4gICAgICAgIGJ1Y2tldDogcmVzb3VyY2UuZ2V0QnVja2V0KClcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gRUNTIENvbXB1dGUg4oaSIEFMQiBvcmlnaW5cbiAgICBpZiAoaXNFY3NDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgbG9hZEJhbGFuY2VyID0gcmVzb3VyY2UuZ2V0TG9hZEJhbGFuY2VyKCk7XG4gICAgICBpZiAobG9hZEJhbGFuY2VyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHlwZTogXCJhbGJcIixcbiAgICAgICAgICBsb2FkQmFsYW5jZXJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMYW1iZGEgQ29tcHV0ZSDihpIgSFRUUCBvcmlnaW4gKGZ1bmN0aW9uIFVSTClcbiAgICBpZiAoaXNMYW1iZGFDb21wdXRlKHJlc291cmNlKSkge1xuICAgICAgY29uc3QgZnVuY3Rpb25VcmwgPSByZXNvdXJjZS5nZXRGdW5jdGlvblVybCgpO1xuICAgICAgaWYgKGZ1bmN0aW9uVXJsKSB7XG4gICAgICAgIC8vIExhbWJkYSBmdW5jdGlvbiBVUkwgaXMgYW4gSFRUUCBvcmlnaW5cbiAgICAgICAgLy8gRXh0cmFjdCBkb21haW4gZnJvbSBVUkwgdG9rZW4gdXNpbmcgQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljc1xuICAgICAgICAvLyBVUkwgZm9ybWF0OiBodHRwczovLzxkb21haW4+L1xuICAgICAgICAvLyBTcGxpdCBieSBcIi9cIiBnaXZlcyBbXCJodHRwczpcIiwgXCJcIiwgXCI8ZG9tYWluPlwiLCBcIlwiXVxuICAgICAgICAvLyBTZWxlY3QgaW5kZXggMiB0byBnZXQgdGhlIGRvbWFpblxuICAgICAgICBjb25zdCBkb21haW5OYW1lID0gRm4uc2VsZWN0KDIsIEZuLnNwbGl0KFwiL1wiLCBmdW5jdGlvblVybCkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR5cGU6IFwiaHR0cFwiLFxuICAgICAgICAgIGRvbWFpbk5hbWVcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVW5hYmxlIHRvIGRldGVjdCBDRE4gb3JpZ2luIGZyb20gcmVzb3VyY2U6ICR7dHlwZW9mIHJlc291cmNlfS4gYCArXG4gICAgICAgIFwiUHJvdmlkZSBleHBsaWNpdCBvcmlnaW4gY29uZmlndXJhdGlvbiB1c2luZyBvcmlnaW5UeXBlLlwiXG4gICAgKTtcbiAgfVxufVxuXG4vKipcbiAqIEZhY3RvcnkgZm9yIGNyZWF0aW5nIENETiAoQ2xvdWRGcm9udCkgZGlzdHJpYnV0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUzMgb3JpZ2luXG4gKiBjb25zdCBhc3NldHMgPSBhcHAuYWRkU3RvcmFnZShTdG9yYWdlRmFjdG9yeS5idWlsZChcIkFzc2V0c1wiLCB7fSkpO1xuICogYXBwLmFkZENkbihDZG5GYWN0b3J5LmJ1aWxkKFwiQXNzZXRzQ2RuXCIsIHtcbiAqICAgb3JpZ2luVHlwZTogXCJzM1wiLFxuICogICBidWNrZXQ6IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBBTEIgb3JpZ2luIChFQ1MpXG4gKiBjb25zdCBhcGkgPSBhcHAuYWRkQ29tcHV0ZShDb21wdXRlRmFjdG9yeS5idWlsZChcIkFwaVwiLCB7IHR5cGU6IFwiZWNzXCIsIC4uLiB9KSk7XG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcGlDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcImFsYlwiLFxuICogICBsb2FkQmFsYW5jZXI6IGFwaVxuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBTbWFydCBkZXRlY3Rpb25cbiAqIGFwcC5hZGRDZG4oQ2RuRmFjdG9yeS5idWlsZChcIkFwcENkblwiLCB7XG4gKiAgIG9yaWdpblR5cGU6IFwiYXV0b1wiLFxuICogICBvcmlnaW46IGFzc2V0c1xuICogfSkpO1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBDdXN0b20gZG9tYWluXG4gKiBhcHAuYWRkQ2RuKENkbkZhY3RvcnkuYnVpbGQoXCJBcHBDZG5cIiwge1xuICogICBvcmlnaW5UeXBlOiBcInMzXCIsXG4gKiAgIGJ1Y2tldDogYXNzZXRzLFxuICogICBkb21haW5OYW1lczogW1wiYXBwLmV4YW1wbGUuY29tXCJdLFxuICogICBjZXJ0aWZpY2F0ZTogbXlDZXJ0XG4gKiB9KSk7XG4gKi9cbmV4cG9ydCBjbGFzcyBDZG5GYWN0b3J5IHtcbiAgLyoqXG4gICAqIEJ1aWxkIGEgQ0ROIGZhY3RvcnkgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgQ0ROXG4gICAqIEBwYXJhbSBwcm9wcyAtIENETiBjb25maWd1cmF0aW9uIHByb3BlcnRpZXNcbiAgICogQHJldHVybnMgRmFjdG9yeSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIENETiB3aGVuIGludm9rZWRcbiAgICovXG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNkblByb3BzKSB7XG4gICAgcmV0dXJuIChfYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpOiBDZG4gPT4ge1xuICAgICAgdmFsaWRhdGVDZG5Qcm9wcyhwcm9wcyk7XG4gICAgICByZXR1cm4gbmV3IENkbihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB9O1xuICB9XG59XG4iXX0=
|