@codedrifters/constructs 0.0.8 → 0.0.9

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.
@@ -1,49 +0,0 @@
1
- import { StackProps } from "aws-cdk-lib";
2
- import { HostedZoneAttributes } from "aws-cdk-lib/aws-route53";
3
- import { Construct } from "constructs";
4
- import { PrivateBucketProps } from "../s3/private-bucket";
5
- export interface StaticDomainProps {
6
- /**
7
- * The base domain (ie: codedrifters.com)
8
- */
9
- readonly baseDomain: string;
10
- /**
11
- * Hosted zone ID for the base domain.
12
- */
13
- readonly hostedZoneAttributes: HostedZoneAttributes;
14
- }
15
- export interface StaticHostingProps extends StackProps {
16
- /**
17
- * Short description used in various places for traceability.
18
- */
19
- readonly description?: string;
20
- /**
21
- * Values used to connect a domain name to the cloudfront distribution. If not
22
- * supplied, cloudfront doesn't use a custom domain.
23
- */
24
- readonly staticDomainProps?: StaticDomainProps;
25
- /**
26
- * Parameter name to use when storing the static hosting bucket's ARN.
27
- * This is needed in other later steps when deploying hosted content to S3.
28
- */
29
- readonly bucketArnParamName?: string;
30
- /**
31
- * Parameter name to use when storing the CloudFront Distribution Domain Name.
32
- */
33
- readonly distributionDomainParamName?: string;
34
- /**
35
- * Parameter name to use when storing the CloudFront Distribution ID.
36
- */
37
- readonly distributionIDParamName?: string;
38
- /**
39
- * Props to pass to the private S3 bucket.
40
- */
41
- readonly privateBucketProps?: PrivateBucketProps;
42
- }
43
- export declare class StaticHosting extends Construct {
44
- /**
45
- * Full domain name used as basis for hosting.
46
- */
47
- readonly fullDomain: string;
48
- constructor(scope: Construct, id: string, props?: StaticHostingProps);
49
- }
@@ -1,176 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StaticHosting = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_certificatemanager_1 = require("aws-cdk-lib/aws-certificatemanager");
6
- const aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
7
- const aws_cloudfront_origins_1 = require("aws-cdk-lib/aws-cloudfront-origins");
8
- const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
9
- const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
10
- const aws_logs_1 = require("aws-cdk-lib/aws-logs");
11
- const aws_route53_1 = require("aws-cdk-lib/aws-route53");
12
- const aws_route53_targets_1 = require("aws-cdk-lib/aws-route53-targets");
13
- const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
14
- const constructs_1 = require("constructs");
15
- const private_bucket_1 = require("../s3/private-bucket");
16
- class StaticHosting extends constructs_1.Construct {
17
- constructor(scope, id, props = {}) {
18
- super(scope, id);
19
- /***************************************************************************
20
- *
21
- * Initial Setup
22
- *
23
- * Set some defaults, build domain information.
24
- *
25
- **************************************************************************/
26
- const { bucketArnParamName, distributionDomainParamName, distributionIDParamName, staticDomainProps, privateBucketProps, } = {
27
- bucketArnParamName: "/STATIC_WEBSITE/BUCKET_ARN",
28
- distributionDomainParamName: "/STATIC_WEBSITE/DISTRIBUTION_DOMAIN",
29
- distributionIDParamName: "/STATIC_WEBSITE/DISTRIBUTION_ID",
30
- ...props,
31
- };
32
- const { baseDomain, hostedZoneAttributes } = staticDomainProps ?? {};
33
- /***************************************************************************
34
- *
35
- * PRIVATE BUCKET
36
- *
37
- * A bucket to store the files within.
38
- * Save ARN for later deploys.
39
- *
40
- **************************************************************************/
41
- const bucket = new private_bucket_1.PrivateBucket(this, "static-hosting-bucket", privateBucketProps);
42
- /***************************************************************************
43
- *
44
- * DNS & Wildcard Certificate
45
- *
46
- * If a zone Id as passed in, find the hosted zone and create a wildcard
47
- * certificate for the domain.
48
- *
49
- **************************************************************************/
50
- let zone;
51
- let certificate;
52
- if (hostedZoneAttributes && baseDomain) {
53
- zone = aws_route53_1.HostedZone.fromHostedZoneAttributes(this, "zone", hostedZoneAttributes);
54
- certificate = new aws_certificatemanager_1.Certificate(this, "wildcard-certificate", {
55
- domainName: `*.${baseDomain}`,
56
- subjectAlternativeNames: [baseDomain],
57
- validation: aws_certificatemanager_1.CertificateValidation.fromDnsMultiZone({
58
- [`*.${baseDomain}`]: zone,
59
- [baseDomain]: zone,
60
- }),
61
- });
62
- }
63
- /******************************************************************************
64
- *
65
- * LAMBDA@EDGE FUNCTION
66
- *
67
- * This handles rewriting the path from domain name.
68
- *
69
- *****************************************************************************/
70
- const handler = new aws_lambda_nodejs_1.NodejsFunction(this, "viewer-request-handler", {
71
- memorySize: 128,
72
- runtime: aws_lambda_1.Runtime.NODEJS_24_X,
73
- logGroup: new aws_logs_1.LogGroup(this, "viewer-request-handler-log-group", {
74
- retention: aws_logs_1.RetentionDays.ONE_MONTH,
75
- }),
76
- });
77
- /******************************************************************************
78
- *
79
- * CLOUDFRONT CONFIG
80
- *
81
- * Setup a CloudFront Distribution for the bucket.
82
- *
83
- *****************************************************************************/
84
- const cachePolicy = new aws_cloudfront_1.CachePolicy(this, "cloudfront-policy", {
85
- comment: "Relatively conservative TTL policy.",
86
- maxTtl: aws_cdk_lib_1.Duration.seconds(300),
87
- minTtl: aws_cdk_lib_1.Duration.seconds(0),
88
- defaultTtl: aws_cdk_lib_1.Duration.seconds(60),
89
- headerBehavior: aws_cloudfront_1.CacheHeaderBehavior.none(),
90
- queryStringBehavior: aws_cloudfront_1.CacheQueryStringBehavior.none(),
91
- cookieBehavior: aws_cloudfront_1.CacheCookieBehavior.none(),
92
- enableAcceptEncodingGzip: true,
93
- enableAcceptEncodingBrotli: true,
94
- });
95
- const oac = new aws_cloudfront_1.S3OriginAccessControl(this, "MyOAC", {
96
- signing: aws_cloudfront_1.Signing.SIGV4_NO_OVERRIDE,
97
- });
98
- const origin = aws_cloudfront_origins_1.S3BucketOrigin.withOriginAccessControl(bucket, {
99
- originAccessControl: oac,
100
- originAccessLevels: [aws_cloudfront_1.AccessLevel.READ],
101
- });
102
- const distribution = new aws_cloudfront_1.Distribution(this, "cloudfront-distribution", {
103
- comment: `Distribution for ${props.description ?? id}`,
104
- /**
105
- * Only if domain was supplied
106
- */
107
- ...(certificate && baseDomain
108
- ? {
109
- certificate,
110
- domainNames: [baseDomain, `*.${baseDomain}`],
111
- }
112
- : {}),
113
- defaultBehavior: {
114
- origin,
115
- viewerProtocolPolicy: aws_cloudfront_1.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
116
- cachePolicy,
117
- allowedMethods: aws_cloudfront_1.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
118
- edgeLambdas: [
119
- {
120
- functionVersion: handler.currentVersion,
121
- eventType: aws_cloudfront_1.LambdaEdgeEventType.VIEWER_REQUEST,
122
- },
123
- ],
124
- },
125
- defaultRootObject: "index.html",
126
- });
127
- /**
128
- * We finally have enough information to set the full domain.
129
- */
130
- this.fullDomain =
131
- certificate && baseDomain ? baseDomain : distribution.domainName;
132
- /***************************************************************************
133
- *
134
- * DNS ENTRY
135
- *
136
- * Link cloudfront to both the root fulldomain and all possible subdomains.
137
- *
138
- **************************************************************************/
139
- if (zone) {
140
- new aws_route53_1.ARecord(this, "root-dns-entry", {
141
- zone,
142
- recordName: baseDomain ? baseDomain : "",
143
- target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
144
- });
145
- new aws_route53_1.ARecord(this, "wc-dns-entry", {
146
- zone,
147
- recordName: baseDomain ? `*.${baseDomain}` : "*",
148
- target: aws_route53_1.RecordTarget.fromAlias(new aws_route53_targets_1.CloudFrontTarget(distribution)),
149
- });
150
- }
151
- /***************************************************************************
152
- *
153
- * EXPORTS
154
- *
155
- * Used by content uploader later.
156
- *
157
- **************************************************************************/
158
- new aws_ssm_1.StringParameter(this, "dist-domain", {
159
- description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${props.description ?? id}).`,
160
- parameterName: distributionDomainParamName,
161
- stringValue: distribution.domainName,
162
- });
163
- new aws_ssm_1.StringParameter(this, "dist-id", {
164
- description: `GENERATED DO NOT CHANGE - CloudFront Distribution Details (${props.description ?? id}).`,
165
- parameterName: distributionIDParamName,
166
- stringValue: distribution.distributionId,
167
- });
168
- new aws_ssm_1.StringParameter(this, "bucket-arn", {
169
- description: `GENERATED DO NOT CHANGE - S3 Bucket ARN for (${props.description ?? id}).`,
170
- parameterName: bucketArnParamName,
171
- stringValue: bucket.bucketArn,
172
- });
173
- }
174
- }
175
- exports.StaticHosting = StaticHosting;
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWhvc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGljLWhvc3Rpbmcvc3RhdGljLWhvc3RpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQW1EO0FBQ25ELCtFQUc0QztBQUM1QywrREFZb0M7QUFDcEMsK0VBQW9FO0FBQ3BFLHVEQUFpRDtBQUNqRCxxRUFBK0Q7QUFDL0QsbURBQStEO0FBQy9ELHlEQU1pQztBQUNqQyx5RUFBbUU7QUFDbkUsaURBQXNEO0FBQ3RELDJDQUF1QztBQUN2Qyx5REFBeUU7QUFnRHpFLE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBTTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsUUFBNEIsRUFBRTtRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCOzs7Ozs7b0ZBTTRFO1FBRTVFLE1BQU0sRUFDSixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzNCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEdBQ25CLEdBQUc7WUFDRixrQkFBa0IsRUFBRSw0QkFBNEI7WUFDaEQsMkJBQTJCLEVBQUUscUNBQXFDO1lBQ2xFLHVCQUF1QixFQUFFLGlDQUFpQztZQUMxRCxHQUFHLEtBQUs7U0FDVCxDQUFDO1FBRUYsTUFBTSxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUVyRTs7Ozs7OztvRkFPNEU7UUFFNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSw4QkFBYSxDQUM5QixJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCLGtCQUFrQixDQUNuQixDQUFDO1FBRUY7Ozs7Ozs7b0ZBTzRFO1FBRTVFLElBQUksSUFBNkIsQ0FBQztRQUNsQyxJQUFJLFdBQW9DLENBQUM7UUFFekMsSUFBSSxvQkFBb0IsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEdBQUcsd0JBQVUsQ0FBQyx3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WUFDdEMsV0FBVyxFQUFFLGdEQUFnRCxLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSTtZQUN4RixhQUFhLEVBQUUsa0JBQWtCO1lBQ2pDLFdBQVcsRUFBRSxNQUFNLENBQUMsU0FBUztTQUM5QixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6TUQsc0NBeU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIENlcnRpZmljYXRlLFxuICBDZXJ0aWZpY2F0ZVZhbGlkYXRpb24sXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge1xuICBBY2Nlc3NMZXZlbCxcbiAgQWxsb3dlZE1ldGhvZHMsXG4gIENhY2hlQ29va2llQmVoYXZpb3IsXG4gIENhY2hlSGVhZGVyQmVoYXZpb3IsXG4gIENhY2hlUG9saWN5LFxuICBDYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3IsXG4gIERpc3RyaWJ1dGlvbixcbiAgTGFtYmRhRWRnZUV2ZW50VHlwZSxcbiAgUzNPcmlnaW5BY2Nlc3NDb250cm9sLFxuICBTaWduaW5nLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBTM0J1Y2tldE9yaWdpbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zXCI7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBMb2dHcm91cCwgUmV0ZW50aW9uRGF5cyB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHtcbiAgQVJlY29yZCxcbiAgSG9zdGVkWm9uZSxcbiAgSG9zdGVkWm9uZUF0dHJpYnV0ZXMsXG4gIElIb3N0ZWRab25lLFxuICBSZWNvcmRUYXJnZXQsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFRhcmdldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzXCI7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IFByaXZhdGVCdWNrZXQsIFByaXZhdGVCdWNrZXRQcm9wcyB9IGZyb20gXCIuLi9zMy9wcml2YXRlLWJ1Y2tldFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0RvbWFpblByb3BzIHtcbiAgLyoqXG4gICAqICBUaGUgYmFzZSBkb21haW4gKGllOiBjb2RlZHJpZnRlcnMuY29tKVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZURvbWFpbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3N0ZWQgem9uZSBJRCBmb3IgdGhlIGJhc2UgZG9tYWluLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZUF0dHJpYnV0ZXM6IEhvc3RlZFpvbmVBdHRyaWJ1dGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRpY0hvc3RpbmdQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICAvKipcbiAgICogU2hvcnQgZGVzY3JpcHRpb24gdXNlZCBpbiB2YXJpb3VzIHBsYWNlcyBmb3IgdHJhY2VhYmlsaXR5LlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlcyB1c2VkIHRvIGNvbm5lY3QgYSBkb21haW4gbmFtZSB0byB0aGUgY2xvdWRmcm9udCBkaXN0cmlidXRpb24uIElmIG5vdFxuICAgKiBzdXBwbGllZCwgY2xvdWRmcm9udCBkb2Vzbid0IHVzZSBhIGN1c3RvbSBkb21haW4uXG4gICAqL1xuICByZWFkb25seSBzdGF0aWNEb21haW5Qcm9wcz86IFN0YXRpY0RvbWFpblByb3BzO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byB1c2Ugd2hlbiBzdG9yaW5nIHRoZSBzdGF0aWMgaG9zdGluZyBidWNrZXQncyBBUk4uXG4gICAqIFRoaXMgaXMgbmVlZGVkIGluIG90aGVyIGxhdGVyIHN0ZXBzIHdoZW4gZGVwbG95aW5nIGhvc3RlZCBjb250ZW50IHRvIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0QXJuUGFyYW1OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byB1c2Ugd2hlbiBzdG9yaW5nIHRoZSBDbG91ZEZyb250IERpc3RyaWJ1dGlvbiBEb21haW4gTmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkRvbWFpblBhcmFtTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUGFyYW1ldGVyIG5hbWUgdG8gdXNlIHdoZW4gc3RvcmluZyB0aGUgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gSUQuXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25JRFBhcmFtTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogUHJvcHMgdG8gcGFzcyB0byB0aGUgcHJpdmF0ZSBTMyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBwcml2YXRlQnVja2V0UHJvcHM/OiBQcml2YXRlQnVja2V0UHJvcHM7XG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0aWNIb3N0aW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIEZ1bGwgZG9tYWluIG5hbWUgdXNlZCBhcyBiYXNpcyBmb3IgaG9zdGluZy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdWxsRG9tYWluOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN0YXRpY0hvc3RpbmdQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqIEluaXRpYWwgU2V0dXBcbiAgICAgKlxuICAgICAqIFNldCBzb21lIGRlZmF1bHRzLCBidWlsZCBkb21haW4gaW5mb3JtYXRpb24uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCB7XG4gICAgICBidWNrZXRBcm5QYXJhbU5hbWUsXG4gICAgICBkaXN0cmlidXRpb25Eb21haW5QYXJhbU5hbWUsXG4gICAgICBkaXN0cmlidXRpb25JRFBhcmFtTmFtZSxcbiAgICAgIHN0YXRpY0RvbWFpblByb3BzLFxuICAgICAgcHJpdmF0ZUJ1Y2tldFByb3BzLFxuICAgIH0gPSB7XG4gICAgICBidWNrZXRBcm5QYXJhbU5hbWU6IFwiL1NUQVRJQ19XRUJTSVRFL0JVQ0tFVF9BUk5cIixcbiAgICAgIGRpc3RyaWJ1dGlvbkRvbWFpblBhcmFtTmFtZTogXCIvU1RBVElDX1dFQlNJVEUvRElTVFJJQlVUSU9OX0RPTUFJTlwiLFxuICAgICAgZGlzdHJpYnV0aW9uSURQYXJhbU5hbWU6IFwiL1NUQVRJQ19XRUJTSVRFL0RJU1RSSUJVVElPTl9JRFwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHsgYmFzZURvbWFpbiwgaG9zdGVkWm9uZUF0dHJpYnV0ZXMgfSA9IHN0YXRpY0RvbWFpblByb3BzID8/IHt9O1xuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgICAqXG4gICAgICogUFJJVkFURSBCVUNLRVRcbiAgICAgKlxuICAgICAqIEEgYnVja2V0IHRvIHN0b3JlIHRoZSBmaWxlcyB3aXRoaW4uXG4gICAgICogU2F2ZSBBUk4gZm9yIGxhdGVyIGRlcGxveXMuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBidWNrZXQgPSBuZXcgUHJpdmF0ZUJ1Y2tldChcbiAgICAgIHRoaXMsXG4gICAgICBcInN0YXRpYy1ob3N0aW5nLWJ1Y2tldFwiLFxuICAgICAgcHJpdmF0ZUJ1Y2tldFByb3BzLFxuICAgICk7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBETlMgJiBXaWxkY2FyZCBDZXJ0aWZpY2F0ZVxuICAgICAqXG4gICAgICogSWYgYSB6b25lIElkIGFzIHBhc3NlZCBpbiwgZmluZCB0aGUgaG9zdGVkIHpvbmUgYW5kIGNyZWF0ZSBhIHdpbGRjYXJkXG4gICAgICogY2VydGlmaWNhdGUgZm9yIHRoZSBkb21haW4uXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBsZXQgem9uZTogSUhvc3RlZFpvbmUgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGNlcnRpZmljYXRlOiBDZXJ0aWZpY2F0ZSB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChob3N0ZWRab25lQXR0cmlidXRlcyAmJiBiYXNlRG9tYWluKSB7XG4gICAgICB6b25lID0gSG9zdGVkWm9uZS5mcm9tSG9zdGVkWm9uZUF0dHJpYnV0ZXMoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiem9uZVwiLFxuICAgICAgICBob3N0ZWRab25lQXR0cmlidXRlcyxcbiAgICAgICk7XG4gICAgICBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0aGlzLCBcIndpbGRjYXJkLWNlcnRpZmljYXRlXCIsIHtcbiAgICAgICAgZG9tYWluTmFtZTogYCouJHtiYXNlRG9tYWlufWAsXG4gICAgICAgIHN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOiBbYmFzZURvbWFpbl0sXG4gICAgICAgIHZhbGlkYXRpb246IENlcnRpZmljYXRlVmFsaWRhdGlvbi5mcm9tRG5zTXVsdGlab25lKHtcbiAgICAgICAgICBbYCouJHtiYXNlRG9tYWlufWBdOiB6b25lLFxuICAgICAgICAgIFtiYXNlRG9tYWluXTogem9uZSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBMQU1CREFARURHRSBGVU5DVElPTlxuICAgICAqXG4gICAgICogVGhpcyBoYW5kbGVzIHJld3JpdGluZyB0aGUgcGF0aCBmcm9tIGRvbWFpbiBuYW1lLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgY29uc3QgaGFuZGxlciA9IG5ldyBOb2RlanNGdW5jdGlvbih0aGlzLCBcInZpZXdlci1yZXF1ZXN0LWhhbmRsZXJcIiwge1xuICAgICAgbWVtb3J5U2l6ZTogMTI4LFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIGxvZ0dyb3VwOiBuZXcgTG9nR3JvdXAodGhpcywgXCJ2aWV3ZXItcmVxdWVzdC1oYW5kbGVyLWxvZy1ncm91cFwiLCB7XG4gICAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqICBDTE9VREZST05UIENPTkZJR1xuICAgICAqXG4gICAgICogIFNldHVwIGEgQ2xvdWRGcm9udCBEaXN0cmlidXRpb24gZm9yIHRoZSBidWNrZXQuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBjb25zdCBjYWNoZVBvbGljeSA9IG5ldyBDYWNoZVBvbGljeSh0aGlzLCBcImNsb3VkZnJvbnQtcG9saWN5XCIsIHtcbiAgICAgIGNvbW1lbnQ6IFwiUmVsYXRpdmVseSBjb25zZXJ2YXRpdmUgVFRMIHBvbGljeS5cIixcbiAgICAgIG1heFR0bDogRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgbWluVHRsOiBEdXJhdGlvbi5zZWNvbmRzKDApLFxuICAgICAgZGVmYXVsdFR0bDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBoZWFkZXJCZWhhdmlvcjogQ2FjaGVIZWFkZXJCZWhhdmlvci5ub25lKCksXG4gICAgICBxdWVyeVN0cmluZ0JlaGF2aW9yOiBDYWNoZVF1ZXJ5U3RyaW5nQmVoYXZpb3Iubm9uZSgpLFxuICAgICAgY29va2llQmVoYXZpb3I6IENhY2hlQ29va2llQmVoYXZpb3Iubm9uZSgpLFxuICAgICAgZW5hYmxlQWNjZXB0RW5jb2RpbmdHemlwOiB0cnVlLFxuICAgICAgZW5hYmxlQWNjZXB0RW5jb2RpbmdCcm90bGk6IHRydWUsXG4gICAgfSk7XG5cbiAgICBjb25zdCBvYWMgPSBuZXcgUzNPcmlnaW5BY2Nlc3NDb250cm9sKHRoaXMsIFwiTXlPQUNcIiwge1xuICAgICAgc2lnbmluZzogU2lnbmluZy5TSUdWNF9OT19PVkVSUklERSxcbiAgICB9KTtcbiAgICBjb25zdCBvcmlnaW4gPSBTM0J1Y2tldE9yaWdpbi53aXRoT3JpZ2luQWNjZXNzQ29udHJvbChidWNrZXQsIHtcbiAgICAgIG9yaWdpbkFjY2Vzc0NvbnRyb2w6IG9hYyxcbiAgICAgIG9yaWdpbkFjY2Vzc0xldmVsczogW0FjY2Vzc0xldmVsLlJFQURdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9uID0gbmV3IERpc3RyaWJ1dGlvbih0aGlzLCBcImNsb3VkZnJvbnQtZGlzdHJpYnV0aW9uXCIsIHtcbiAgICAgIGNvbW1lbnQ6IGBEaXN0cmlidXRpb24gZm9yICR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9YCxcblxuICAgICAgLyoqXG4gICAgICAgKiBPbmx5IGlmIGRvbWFpbiB3YXMgc3VwcGxpZWRcbiAgICAgICAqL1xuICAgICAgLi4uKGNlcnRpZmljYXRlICYmIGJhc2VEb21haW5cbiAgICAgICAgPyB7XG4gICAgICAgICAgICBjZXJ0aWZpY2F0ZSxcbiAgICAgICAgICAgIGRvbWFpbk5hbWVzOiBbYmFzZURvbWFpbiwgYCouJHtiYXNlRG9tYWlufWBdLFxuICAgICAgICAgIH1cbiAgICAgICAgOiB7fSksXG5cbiAgICAgIGRlZmF1bHRCZWhhdmlvcjoge1xuICAgICAgICBvcmlnaW4sXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgY2FjaGVQb2xpY3ksXG4gICAgICAgIGFsbG93ZWRNZXRob2RzOiBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TLFxuICAgICAgICBlZGdlTGFtYmRhczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogaGFuZGxlci5jdXJyZW50VmVyc2lvbixcbiAgICAgICAgICAgIGV2ZW50VHlwZTogTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIGRlZmF1bHRSb290T2JqZWN0OiBcImluZGV4Lmh0bWxcIixcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFdlIGZpbmFsbHkgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc2V0IHRoZSBmdWxsIGRvbWFpbi5cbiAgICAgKi9cbiAgICB0aGlzLmZ1bGxEb21haW4gPVxuICAgICAgY2VydGlmaWNhdGUgJiYgYmFzZURvbWFpbiA/IGJhc2VEb21haW4gOiBkaXN0cmlidXRpb24uZG9tYWluTmFtZTtcblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICAgKlxuICAgICAqICBETlMgRU5UUllcbiAgICAgKlxuICAgICAqIExpbmsgY2xvdWRmcm9udCB0byBib3RoIHRoZSByb290IGZ1bGxkb21haW4gYW5kIGFsbCBwb3NzaWJsZSBzdWJkb21haW5zLlxuICAgICAqXG4gICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgaWYgKHpvbmUpIHtcbiAgICAgIG5ldyBBUmVjb3JkKHRoaXMsIFwicm9vdC1kbnMtZW50cnlcIiwge1xuICAgICAgICB6b25lLFxuICAgICAgICByZWNvcmROYW1lOiBiYXNlRG9tYWluID8gYmFzZURvbWFpbiA6IFwiXCIsXG4gICAgICAgIHRhcmdldDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhuZXcgQ2xvdWRGcm9udFRhcmdldChkaXN0cmlidXRpb24pKSxcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQVJlY29yZCh0aGlzLCBcIndjLWRucy1lbnRyeVwiLCB7XG4gICAgICAgIHpvbmUsXG4gICAgICAgIHJlY29yZE5hbWU6IGJhc2VEb21haW4gPyBgKi4ke2Jhc2VEb21haW59YCA6IFwiKlwiLFxuICAgICAgICB0YXJnZXQ6IFJlY29yZFRhcmdldC5mcm9tQWxpYXMobmV3IENsb3VkRnJvbnRUYXJnZXQoZGlzdHJpYnV0aW9uKSksXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAgICpcbiAgICAgKiBFWFBPUlRTXG4gICAgICpcbiAgICAgKiBVc2VkIGJ5IGNvbnRlbnQgdXBsb2FkZXIgbGF0ZXIuXG4gICAgICpcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICBuZXcgU3RyaW5nUGFyYW1ldGVyKHRoaXMsIFwiZGlzdC1kb21haW5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIERldGFpbHMgKCR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9KS5gLFxuICAgICAgcGFyYW1ldGVyTmFtZTogZGlzdHJpYnV0aW9uRG9tYWluUGFyYW1OYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IGRpc3RyaWJ1dGlvbi5kb21haW5OYW1lLFxuICAgIH0pO1xuXG4gICAgbmV3IFN0cmluZ1BhcmFtZXRlcih0aGlzLCBcImRpc3QtaWRcIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIENsb3VkRnJvbnQgRGlzdHJpYnV0aW9uIERldGFpbHMgKCR7cHJvcHMuZGVzY3JpcHRpb24gPz8gaWR9KS5gLFxuICAgICAgcGFyYW1ldGVyTmFtZTogZGlzdHJpYnV0aW9uSURQYXJhbU5hbWUsXG4gICAgICBzdHJpbmdWYWx1ZTogZGlzdHJpYnV0aW9uLmRpc3RyaWJ1dGlvbklkLFxuICAgIH0pO1xuXG4gICAgbmV3IFN0cmluZ1BhcmFtZXRlcih0aGlzLCBcImJ1Y2tldC1hcm5cIiwge1xuICAgICAgZGVzY3JpcHRpb246IGBHRU5FUkFURUQgRE8gTk9UIENIQU5HRSAtIFMzIEJ1Y2tldCBBUk4gZm9yICgke3Byb3BzLmRlc2NyaXB0aW9uID8/IGlkfSkuYCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IGJ1Y2tldEFyblBhcmFtTmFtZSxcbiAgICAgIHN0cmluZ1ZhbHVlOiBidWNrZXQuYnVja2V0QXJuLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,35 +0,0 @@
1
- import { CloudFrontRequest, CloudFrontRequestEvent } from "aws-lambda";
2
- /**
3
- *
4
- * Viewer Request Handler
5
- *
6
- * Handles requests at the CloudFront viewer request stage.
7
- *
8
- * - Logs the request
9
- * - Adds default document if needed
10
- * - Prepends folder with domain
11
- *
12
- * @param event CloudFrontRequestEvent
13
- * @returns CloudFrontRequest
14
- */
15
- export declare const handler: (event: CloudFrontRequestEvent) => Promise<CloudFrontRequest>;
16
- /**
17
- * This is a helper used in the main handler. It's split into it's own export
18
- * to make testing easier.
19
- *
20
- * Adds default document to request URI if needed.
21
- *
22
- * @param request
23
- * @returns
24
- */
25
- export declare const addDefaultDocument: (request: CloudFrontRequest) => CloudFrontRequest;
26
- /**
27
- * This is a helper used in the main handler. It's split into it's own export
28
- * to make testing easier.
29
- *
30
- * Adds domain folder to request URI.
31
- *
32
- * @param request
33
- * @returns
34
- */
35
- export declare const addDomainFolder: (request: CloudFrontRequest) => CloudFrontRequest;
@@ -1,76 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addDomainFolder = exports.addDefaultDocument = exports.handler = void 0;
4
- /**
5
- *
6
- * Viewer Request Handler
7
- *
8
- * Handles requests at the CloudFront viewer request stage.
9
- *
10
- * - Logs the request
11
- * - Adds default document if needed
12
- * - Prepends folder with domain
13
- *
14
- * @param event CloudFrontRequestEvent
15
- * @returns CloudFrontRequest
16
- */
17
- const handler = async (event) => {
18
- // log request
19
- if (process.env.JEST_WORKER_ID === undefined) {
20
- console.log("Request Event: ", JSON.stringify(event, null, 2));
21
- }
22
- let request = event.Records[0].cf.request;
23
- // add index if needed
24
- request = (0, exports.addDefaultDocument)(request);
25
- // prepend folder with domain
26
- request = (0, exports.addDomainFolder)(request);
27
- if (process.env.JEST_WORKER_ID === undefined) {
28
- console.log("Resulting Request: ", JSON.stringify(request, null, 2));
29
- }
30
- // return body
31
- return request;
32
- };
33
- exports.handler = handler;
34
- /**
35
- * This is a helper used in the main handler. It's split into it's own export
36
- * to make testing easier.
37
- *
38
- * Adds default document to request URI if needed.
39
- *
40
- * @param request
41
- * @returns
42
- */
43
- const addDefaultDocument = (request) => {
44
- if (request.uri !== "/") {
45
- let paths = request.uri.split("/");
46
- let lastPath = paths[paths.length - 1];
47
- let isFile = lastPath.split(".").length > 1;
48
- if (!isFile) {
49
- if (lastPath != "") {
50
- request.uri += "/";
51
- }
52
- request.uri += "index.html";
53
- }
54
- }
55
- else {
56
- request.uri = "/index.html";
57
- }
58
- return request;
59
- };
60
- exports.addDefaultDocument = addDefaultDocument;
61
- /**
62
- * This is a helper used in the main handler. It's split into it's own export
63
- * to make testing easier.
64
- *
65
- * Adds domain folder to request URI.
66
- *
67
- * @param request
68
- * @returns
69
- */
70
- const addDomainFolder = (request) => {
71
- const hostHeader = request.headers.host[0].value;
72
- request.uri = `/${hostHeader}${request.uri}`;
73
- return request;
74
- };
75
- exports.addDomainFolder = addDomainFolder;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLWhvc3Rpbmcudmlld2VyLXJlcXVlc3QtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0aWMtaG9zdGluZy9zdGF0aWMtaG9zdGluZy52aWV3ZXItcmVxdWVzdC1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFDMUIsS0FBNkIsRUFDRCxFQUFFO0lBQzlCLGNBQWM7SUFDZCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUUxQyxzQkFBc0I7SUFDdEIsT0FBTyxHQUFHLElBQUEsMEJBQWtCLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFdEMsNkJBQTZCO0lBQzdCLE9BQU8sR0FBRyxJQUFBLHVCQUFlLEVBQUMsT0FBTyxDQUFDLENBQUM7SUFFbkMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxjQUFjO0lBQ2QsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDO0FBdEJXLFFBQUEsT0FBTyxXQXNCbEI7QUFFRjs7Ozs7Ozs7R0FRRztBQUNJLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxPQUEwQixFQUFFLEVBQUU7SUFDL0QsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUU1QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixJQUFJLFFBQVEsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDckIsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLElBQUksWUFBWSxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDO0lBQzlCLENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUFqQlcsUUFBQSxrQkFBa0Isc0JBaUI3QjtBQUVGOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUEwQixFQUFFLEVBQUU7SUFDNUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2pELE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzdDLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQUpXLFFBQUEsZUFBZSxtQkFJMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbG91ZEZyb250UmVxdWVzdCwgQ2xvdWRGcm9udFJlcXVlc3RFdmVudCB9IGZyb20gXCJhd3MtbGFtYmRhXCI7XG5cbi8qKlxuICpcbiAqIFZpZXdlciBSZXF1ZXN0IEhhbmRsZXJcbiAqXG4gKiBIYW5kbGVzIHJlcXVlc3RzIGF0IHRoZSBDbG91ZEZyb250IHZpZXdlciByZXF1ZXN0IHN0YWdlLlxuICpcbiAqIC0gTG9ncyB0aGUgcmVxdWVzdFxuICogLSBBZGRzIGRlZmF1bHQgZG9jdW1lbnQgaWYgbmVlZGVkXG4gKiAtIFByZXBlbmRzIGZvbGRlciB3aXRoIGRvbWFpblxuICpcbiAqIEBwYXJhbSBldmVudCBDbG91ZEZyb250UmVxdWVzdEV2ZW50XG4gKiBAcmV0dXJucyBDbG91ZEZyb250UmVxdWVzdFxuICovXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQ6IENsb3VkRnJvbnRSZXF1ZXN0RXZlbnQsXG4pOiBQcm9taXNlPENsb3VkRnJvbnRSZXF1ZXN0PiA9PiB7XG4gIC8vIGxvZyByZXF1ZXN0XG4gIGlmIChwcm9jZXNzLmVudi5KRVNUX1dPUktFUl9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5sb2coXCJSZXF1ZXN0IEV2ZW50OiBcIiwgSlNPTi5zdHJpbmdpZnkoZXZlbnQsIG51bGwsIDIpKTtcbiAgfVxuXG4gIGxldCByZXF1ZXN0ID0gZXZlbnQuUmVjb3Jkc1swXS5jZi5yZXF1ZXN0O1xuXG4gIC8vIGFkZCBpbmRleCBpZiBuZWVkZWRcbiAgcmVxdWVzdCA9IGFkZERlZmF1bHREb2N1bWVudChyZXF1ZXN0KTtcblxuICAvLyBwcmVwZW5kIGZvbGRlciB3aXRoIGRvbWFpblxuICByZXF1ZXN0ID0gYWRkRG9tYWluRm9sZGVyKHJlcXVlc3QpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5KRVNUX1dPUktFUl9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5sb2coXCJSZXN1bHRpbmcgUmVxdWVzdDogXCIsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3QsIG51bGwsIDIpKTtcbiAgfVxuXG4gIC8vIHJldHVybiBib2R5XG4gIHJldHVybiByZXF1ZXN0O1xufTtcblxuLyoqXG4gKiBUaGlzIGlzIGEgaGVscGVyIHVzZWQgaW4gdGhlIG1haW4gaGFuZGxlci4gSXQncyBzcGxpdCBpbnRvIGl0J3Mgb3duIGV4cG9ydFxuICogdG8gbWFrZSB0ZXN0aW5nIGVhc2llci5cbiAqXG4gKiBBZGRzIGRlZmF1bHQgZG9jdW1lbnQgdG8gcmVxdWVzdCBVUkkgaWYgbmVlZGVkLlxuICpcbiAqIEBwYXJhbSByZXF1ZXN0XG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgY29uc3QgYWRkRGVmYXVsdERvY3VtZW50ID0gKHJlcXVlc3Q6IENsb3VkRnJvbnRSZXF1ZXN0KSA9PiB7XG4gIGlmIChyZXF1ZXN0LnVyaSAhPT0gXCIvXCIpIHtcbiAgICBsZXQgcGF0aHMgPSByZXF1ZXN0LnVyaS5zcGxpdChcIi9cIik7XG4gICAgbGV0IGxhc3RQYXRoID0gcGF0aHNbcGF0aHMubGVuZ3RoIC0gMV07XG4gICAgbGV0IGlzRmlsZSA9IGxhc3RQYXRoLnNwbGl0KFwiLlwiKS5sZW5ndGggPiAxO1xuXG4gICAgaWYgKCFpc0ZpbGUpIHtcbiAgICAgIGlmIChsYXN0UGF0aCAhPSBcIlwiKSB7XG4gICAgICAgIHJlcXVlc3QudXJpICs9IFwiL1wiO1xuICAgICAgfVxuICAgICAgcmVxdWVzdC51cmkgKz0gXCJpbmRleC5odG1sXCI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJlcXVlc3QudXJpID0gXCIvaW5kZXguaHRtbFwiO1xuICB9XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuXG4vKipcbiAqIFRoaXMgaXMgYSBoZWxwZXIgdXNlZCBpbiB0aGUgbWFpbiBoYW5kbGVyLiBJdCdzIHNwbGl0IGludG8gaXQncyBvd24gZXhwb3J0XG4gKiB0byBtYWtlIHRlc3RpbmcgZWFzaWVyLlxuICpcbiAqIEFkZHMgZG9tYWluIGZvbGRlciB0byByZXF1ZXN0IFVSSS5cbiAqXG4gKiBAcGFyYW0gcmVxdWVzdFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERvbWFpbkZvbGRlciA9IChyZXF1ZXN0OiBDbG91ZEZyb250UmVxdWVzdCkgPT4ge1xuICBjb25zdCBob3N0SGVhZGVyID0gcmVxdWVzdC5oZWFkZXJzLmhvc3RbMF0udmFsdWU7XG4gIHJlcXVlc3QudXJpID0gYC8ke2hvc3RIZWFkZXJ9JHtyZXF1ZXN0LnVyaX1gO1xuICByZXR1cm4gcmVxdWVzdDtcbn07XG4iXX0=