@aligent/cdk-prerender-proxy 0.2.5 → 0.2.6
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/index.d.ts +1 -1
- package/index.js +1 -1
- package/lib/error-response-construct.js +5 -5
- package/lib/handlers/cache-control.ts +18 -16
- package/lib/handlers/error-response.ts +41 -30
- package/lib/handlers/prerender-check.ts +23 -24
- package/lib/handlers/prerender.ts +38 -30
- package/lib/handlers/tsconfig.json +2 -4
- package/lib/prerender-cf-cache-control-construct.d.ts +1 -1
- package/lib/prerender-cf-cache-control-construct.js +6 -6
- package/lib/prerender-check-construct.js +4 -4
- package/lib/prerender-construct.js +7 -7
- package/lib/prerender-lambda-construct.d.ts +4 -4
- package/lib/prerender-lambda-construct.js +5 -5
- package/package.json +1 -1
- package/tsconfig.json +1 -1
package/index.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ import { PrerenderFunction } from "./lib/prerender-construct";
|
|
|
3
3
|
import { PrerenderCheckFunction } from "./lib/prerender-check-construct";
|
|
4
4
|
import { ErrorResponseFunction } from "./lib/error-response-construct";
|
|
5
5
|
import { CloudFrontCacheControl, CloudFrontCacheControlOptions } from "./lib/prerender-cf-cache-control-construct";
|
|
6
|
-
export { PrerenderLambda, PrerenderFunction, PrerenderCheckFunction, ErrorResponseFunction, CloudFrontCacheControl, CloudFrontCacheControlOptions };
|
|
6
|
+
export { PrerenderLambda, PrerenderFunction, PrerenderCheckFunction, ErrorResponseFunction, CloudFrontCacheControl, CloudFrontCacheControlOptions, };
|
package/index.js
CHANGED
|
@@ -11,4 +11,4 @@ const error_response_construct_1 = require("./lib/error-response-construct");
|
|
|
11
11
|
Object.defineProperty(exports, "ErrorResponseFunction", { enumerable: true, get: function () { return error_response_construct_1.ErrorResponseFunction; } });
|
|
12
12
|
const prerender_cf_cache_control_construct_1 = require("./lib/prerender-cf-cache-control-construct");
|
|
13
13
|
Object.defineProperty(exports, "CloudFrontCacheControl", { enumerable: true, get: function () { return prerender_cf_cache_control_construct_1.CloudFrontCacheControl; } });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpRkFBbUU7QUFVakUsZ0dBVk8sNENBQWUsT0FVUDtBQVRqQixtRUFBOEQ7QUFVNUQsa0dBVk8sdUNBQWlCLE9BVVA7QUFUbkIsK0VBQXlFO0FBVXZFLHVHQVZPLGtEQUFzQixPQVVQO0FBVHhCLDZFQUF1RTtBQVVyRSxzR0FWTyxnREFBcUIsT0FVUDtBQVR2QixxR0FHb0Q7QUFPbEQsdUdBVEEsNkRBQXNCLE9BU0EiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcmVyZW5kZXJMYW1iZGEgfSBmcm9tIFwiLi9saWIvcHJlcmVuZGVyLWxhbWJkYS1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IFByZXJlbmRlckZ1bmN0aW9uIH0gZnJvbSBcIi4vbGliL3ByZXJlbmRlci1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IFByZXJlbmRlckNoZWNrRnVuY3Rpb24gfSBmcm9tIFwiLi9saWIvcHJlcmVuZGVyLWNoZWNrLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZUZ1bmN0aW9uIH0gZnJvbSBcIi4vbGliL2Vycm9yLXJlc3BvbnNlLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHtcbiAgQ2xvdWRGcm9udENhY2hlQ29udHJvbCxcbiAgQ2xvdWRGcm9udENhY2hlQ29udHJvbE9wdGlvbnMsXG59IGZyb20gXCIuL2xpYi9wcmVyZW5kZXItY2YtY2FjaGUtY29udHJvbC1jb25zdHJ1Y3RcIjtcblxuZXhwb3J0IHtcbiAgUHJlcmVuZGVyTGFtYmRhLFxuICBQcmVyZW5kZXJGdW5jdGlvbixcbiAgUHJlcmVuZGVyQ2hlY2tGdW5jdGlvbixcbiAgRXJyb3JSZXNwb25zZUZ1bmN0aW9uLFxuICBDbG91ZEZyb250Q2FjaGVDb250cm9sLFxuICBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucyxcbn07XG4iXX0=
|
|
@@ -9,7 +9,7 @@ class ErrorResponseFunction extends core_1.Construct {
|
|
|
9
9
|
constructor(scope, id, options) {
|
|
10
10
|
var _a;
|
|
11
11
|
super(scope, id);
|
|
12
|
-
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this,
|
|
12
|
+
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this, "ErrorResponseFunction", {
|
|
13
13
|
code: bundling_1.Bundling.bundle({
|
|
14
14
|
entry: `${__dirname}/handlers/error-response.ts`,
|
|
15
15
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
@@ -20,13 +20,13 @@ class ErrorResponseFunction extends core_1.Construct {
|
|
|
20
20
|
// and replace during build/deploy with static values. This gets around the lambda@edge limitation
|
|
21
21
|
// of no environment variables at runtime.
|
|
22
22
|
define: {
|
|
23
|
-
|
|
24
|
-
}
|
|
23
|
+
"process.env.PATH_PREFIX": JSON.stringify((_a = options.pathPrefix) !== null && _a !== void 0 ? _a : ""),
|
|
24
|
+
},
|
|
25
25
|
}),
|
|
26
26
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
27
|
-
handler:
|
|
27
|
+
handler: "index.handler",
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
exports.ErrorResponseFunction = ErrorResponseFunction;
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUEwQztBQUMxQyxzRUFBbUU7QUFDbkUsb0RBQThDO0FBQzlDLDREQUF1RDtBQU92RCxNQUFhLHFCQUFzQixTQUFRLGdCQUFTO0lBR2xELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE9BQXFDOztRQUVyQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2QkFBWSxDQUFDLFlBQVksQ0FDL0MsSUFBSSxFQUNKLHVCQUF1QixFQUN2QjtZQUNFLElBQUksRUFBRSxtQkFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDcEIsS0FBSyxFQUFFLEdBQUcsU0FBUyw2QkFBNkI7Z0JBQ2hELE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxHQUFHLFNBQVMsWUFBWTtnQkFDckMsZ0JBQWdCLEVBQUUsR0FBRyxTQUFTLDZCQUE2QjtnQkFDM0Qsa0dBQWtHO2dCQUNsRyxrR0FBa0c7Z0JBQ2xHLDBDQUEwQztnQkFDMUMsTUFBTSxFQUFFO29CQUNOLHlCQUF5QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUM7aUJBQ3BFO2FBQ0ssQ0FBQztZQUNULE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7U0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBaENELHNEQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJAYXdzLWNkay9jb3JlXCI7XG5pbXBvcnQgeyBCdW5kbGluZyB9IGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhLW5vZGVqcy9saWIvYnVuZGxpbmdcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgZXhwZXJpbWVudGFsIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBFZGdlRnVuY3Rpb24gfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQvbGliL2V4cGVyaW1lbnRhbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yUmVzcG9uc2VGdW5jdGlvbk9wdGlvbnMge1xuICBwYXRoUHJlZml4Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JSZXNwb25zZUZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBFZGdlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IEVycm9yUmVzcG9uc2VGdW5jdGlvbk9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZWRnZUZ1bmN0aW9uID0gbmV3IGV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJFcnJvclJlc3BvbnNlRnVuY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogQnVuZGxpbmcuYnVuZGxlKHtcbiAgICAgICAgICBlbnRyeTogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9lcnJvci1yZXNwb25zZS50c2AsXG4gICAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgcHJvamVjdFJvb3Q6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvYCxcbiAgICAgICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBgJHtfX2Rpcm5hbWV9L2hhbmRsZXJzL3BhY2thZ2UtbG9jay5qc29uYCxcbiAgICAgICAgICAvLyBEZWZpbmUgb3B0aW9ucyByZXBsYWNlIHZhbHVlcyBhdCBidWlsZCB0aW1lIHNvIHdlIGNhbiB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRlc3QgbG9jYWxseVxuICAgICAgICAgIC8vIGFuZCByZXBsYWNlIGR1cmluZyBidWlsZC9kZXBsb3kgd2l0aCBzdGF0aWMgdmFsdWVzLiBUaGlzIGdldHMgYXJvdW5kIHRoZSBsYW1iZGFAZWRnZSBsaW1pdGF0aW9uXG4gICAgICAgICAgLy8gb2Ygbm8gZW52aXJvbm1lbnQgdmFyaWFibGVzIGF0IHJ1bnRpbWUuXG4gICAgICAgICAgZGVmaW5lOiB7XG4gICAgICAgICAgICBcInByb2Nlc3MuZW52LlBBVEhfUFJFRklYXCI6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGF0aFByZWZpeCA/PyBcIlwiKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9IGFzIGFueSksXG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CloudFrontResponseEvent, CloudFrontResponse
|
|
1
|
+
import "source-map-support/register";
|
|
2
|
+
import { CloudFrontResponseEvent, CloudFrontResponse } from "aws-lambda";
|
|
3
3
|
/*
|
|
4
4
|
Prerender cache control function
|
|
5
5
|
Consider associate this function as *origin response* function
|
|
6
6
|
*/
|
|
7
|
-
export const handler = async (
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export const handler = async (
|
|
8
|
+
event: CloudFrontResponseEvent
|
|
9
|
+
): Promise<CloudFrontResponse> => {
|
|
10
|
+
const cacheKey = process.env.PRERENDER_CACHE_KEY || "x-prerender-requestid";
|
|
11
|
+
const cacheMaxAge = process.env.PRERENDER_CACHE_MAX_AGE || "0";
|
|
12
|
+
const response = event.Records[0].cf.response;
|
|
11
13
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
14
|
+
if (response.headers[`${cacheKey}`]) {
|
|
15
|
+
response.headers["Cache-Control"] = [
|
|
16
|
+
{
|
|
17
|
+
key: "Cache-Control",
|
|
18
|
+
value: `max-age=${cacheMaxAge}`,
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
return response;
|
|
23
|
+
};
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import "source-map-support/register";
|
|
2
|
+
import {
|
|
3
|
+
CloudFrontRequest,
|
|
4
|
+
CloudFrontResponseEvent,
|
|
5
|
+
CloudFrontResponse,
|
|
6
|
+
} from "aws-lambda";
|
|
3
7
|
import axios from "axios";
|
|
4
|
-
import { URL } from
|
|
5
|
-
import * as https from
|
|
8
|
+
import { URL } from "url";
|
|
9
|
+
import * as https from "https";
|
|
6
10
|
|
|
7
11
|
const FRONTEND_HOST = process.env.FRONTEND_HOST;
|
|
8
12
|
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
@@ -12,7 +16,7 @@ const instance = axios.create({
|
|
|
12
16
|
timeout: 1000,
|
|
13
17
|
// Don't follow redirects
|
|
14
18
|
maxRedirects: 0,
|
|
15
|
-
// Only valid response codes are 200
|
|
19
|
+
// Only valid response codes are 200
|
|
16
20
|
validateStatus: function (status) {
|
|
17
21
|
return status == 200;
|
|
18
22
|
},
|
|
@@ -20,32 +24,39 @@ const instance = axios.create({
|
|
|
20
24
|
httpsAgent: new https.Agent({ keepAlive: true }),
|
|
21
25
|
});
|
|
22
26
|
|
|
23
|
-
export const handler = (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
export const handler = (
|
|
28
|
+
event: CloudFrontResponseEvent
|
|
29
|
+
): Promise<CloudFrontResponse | CloudFrontRequest> => {
|
|
30
|
+
const response = event.Records[0].cf.response;
|
|
31
|
+
const request = event.Records[0].cf.request;
|
|
32
|
+
|
|
33
|
+
if (
|
|
34
|
+
response.status != "200" &&
|
|
35
|
+
!request.headers["x-request-prerender"] &&
|
|
36
|
+
request.uri != `${PATH_PREFIX}/index.html`
|
|
37
|
+
) {
|
|
31
38
|
// Fetch default page and return body
|
|
32
|
-
return instance
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
return instance
|
|
40
|
+
.get(`https://${FRONTEND_HOST}${PATH_PREFIX}/index.html`)
|
|
41
|
+
.then(res => {
|
|
42
|
+
response.body = res.data;
|
|
43
|
+
|
|
44
|
+
response.headers["content-type"] = [
|
|
45
|
+
{
|
|
46
|
+
key: "Content-Type",
|
|
47
|
+
value: "text/html",
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
|
|
51
|
+
// Remove content-length if set as this may be the value from the origin.
|
|
52
|
+
delete response.headers["content-length"];
|
|
53
|
+
|
|
54
|
+
return response;
|
|
55
|
+
})
|
|
56
|
+
.catch(err => {
|
|
57
|
+
return response;
|
|
58
|
+
});
|
|
48
59
|
}
|
|
49
60
|
|
|
50
61
|
return Promise.resolve(response);
|
|
51
|
-
}
|
|
62
|
+
};
|
|
@@ -1,34 +1,33 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { CloudFrontRequest, CloudFrontRequestEvent } from
|
|
1
|
+
import "source-map-support/register";
|
|
2
|
+
import { CloudFrontRequest, CloudFrontRequestEvent } from "aws-lambda";
|
|
3
3
|
|
|
4
|
-
const IS_BOT =
|
|
5
|
-
|
|
4
|
+
const IS_BOT =
|
|
5
|
+
/googlebot|Google-InspectionTool|chrome-lighthouse|lighthouse|adsbot\-google|Feedfetcher\-Google|bingbot|yandex|baiduspider|Facebot|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator/i;
|
|
6
|
+
const IS_FILE =
|
|
7
|
+
/\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)$/i;
|
|
6
8
|
|
|
7
|
-
export const handler = async (
|
|
8
|
-
|
|
9
|
+
export const handler = async (
|
|
10
|
+
event: CloudFrontRequestEvent
|
|
11
|
+
): Promise<CloudFrontRequest> => {
|
|
12
|
+
const request = event.Records[0].cf.request;
|
|
9
13
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
// If the request is from a bot, is not a file and is not from prerender
|
|
15
|
+
// then set the x-request-prerender header so the origin-request lambda function
|
|
16
|
+
// alters the origin to prerender.io
|
|
17
|
+
if (IS_BOT.test(request.headers["user-agent"][0].value)) {
|
|
18
|
+
if (!IS_FILE.test(request.uri) && !request.headers["x-prerender"]) {
|
|
19
|
+
request.headers["x-request-prerender"] = [
|
|
15
20
|
{
|
|
16
|
-
key: "x-
|
|
21
|
+
key: "x-request-prerender",
|
|
17
22
|
value: "true",
|
|
18
23
|
},
|
|
19
24
|
];
|
|
20
|
-
if (!IS_FILE.test(request.uri)
|
|
21
|
-
&& !request.headers['x-prerender']) {
|
|
22
|
-
request.headers['x-request-prerender'] = [
|
|
23
|
-
{
|
|
24
|
-
key: 'x-request-prerender',
|
|
25
|
-
value: 'true'
|
|
26
|
-
}
|
|
27
|
-
];
|
|
28
25
|
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
request.headers["x-prerender-host"] = [
|
|
27
|
+
{ key: "X-Prerender-Host", value: request.headers.host[0].value },
|
|
28
|
+
];
|
|
31
29
|
}
|
|
30
|
+
}
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
}
|
|
32
|
+
return request;
|
|
33
|
+
};
|
|
@@ -1,43 +1,51 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import "source-map-support/register";
|
|
2
|
+
import {
|
|
3
|
+
CloudFrontRequest,
|
|
4
|
+
CloudFrontRequestEvent,
|
|
5
|
+
CloudFrontResponse,
|
|
6
|
+
} from "@aws-cdk/aws-lambda";
|
|
3
7
|
|
|
4
8
|
const PRERENDER_TOKEN = process.env.PRERENDER_TOKEN;
|
|
5
9
|
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
6
10
|
const PRERENDER_URL = process.env.PRERENDER_URL;
|
|
7
11
|
|
|
8
|
-
export const handler = async (
|
|
9
|
-
|
|
12
|
+
export const handler = async (
|
|
13
|
+
event: CloudFrontRequestEvent
|
|
14
|
+
): Promise<CloudFrontResponse | CloudFrontRequest> => {
|
|
15
|
+
const request = event.Records[0].cf.request;
|
|
10
16
|
|
|
11
17
|
// viewer-request function will determine whether we prerender or not
|
|
12
18
|
// if we should we add prerender as our custom origin
|
|
13
|
-
if (request.headers[
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
if (request.headers["x-request-prerender"]) {
|
|
20
|
+
// Cloudfront will alter the request for / to /index.html
|
|
21
|
+
// since it is defined as the default root object
|
|
22
|
+
// we do not want to do this when prerendering the homepage
|
|
23
|
+
if (request.uri === `${PATH_PREFIX}/index.html`) {
|
|
24
|
+
request.uri = `${PATH_PREFIX}/`;
|
|
25
|
+
}
|
|
20
26
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
request.origin = {
|
|
28
|
+
custom: {
|
|
29
|
+
domainName: PRERENDER_URL,
|
|
30
|
+
port: 443,
|
|
31
|
+
protocol: "https",
|
|
32
|
+
readTimeout: 20,
|
|
33
|
+
keepaliveTimeout: 5,
|
|
34
|
+
sslProtocols: ["TLSv1", "TLSv1.1", "TLSv1.2"],
|
|
35
|
+
path: "/https%3A%2F%2F" + request.headers["x-prerender-host"][0].value,
|
|
36
|
+
customHeaders: {
|
|
37
|
+
"x-prerender-token": [
|
|
38
|
+
{
|
|
39
|
+
key: "x-prerender-token",
|
|
40
|
+
value: PRERENDER_TOKEN,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
38
46
|
} else {
|
|
39
|
-
|
|
47
|
+
request.uri = `${PATH_PREFIX}/index.html`;
|
|
40
48
|
}
|
|
41
49
|
|
|
42
50
|
return request;
|
|
43
|
-
}
|
|
51
|
+
};
|
|
@@ -9,9 +9,7 @@
|
|
|
9
9
|
"target": "es2017",
|
|
10
10
|
"outDir": "lib",
|
|
11
11
|
"typeRoots": ["./types", "../node_modules/@types"],
|
|
12
|
-
"types": [
|
|
13
|
-
"node"
|
|
14
|
-
]
|
|
12
|
+
"types": ["node"]
|
|
15
13
|
},
|
|
16
14
|
"include": ["./**/*.ts"],
|
|
17
15
|
"exclude": [
|
|
@@ -21,4 +19,4 @@
|
|
|
21
19
|
".vscode/**/*",
|
|
22
20
|
"types"
|
|
23
21
|
]
|
|
24
|
-
}
|
|
22
|
+
}
|
|
@@ -2,7 +2,7 @@ import { Construct } from "@aws-cdk/core";
|
|
|
2
2
|
import { EdgeFunction } from "@aws-cdk/aws-cloudfront/lib/experimental";
|
|
3
3
|
export interface CloudFrontCacheControlOptions {
|
|
4
4
|
cacheKey?: string;
|
|
5
|
-
maxAge?:
|
|
5
|
+
maxAge?: number;
|
|
6
6
|
}
|
|
7
7
|
export declare class CloudFrontCacheControl extends Construct {
|
|
8
8
|
readonly edgeFunction: EdgeFunction;
|
|
@@ -9,7 +9,7 @@ class CloudFrontCacheControl extends core_1.Construct {
|
|
|
9
9
|
constructor(scope, id, options) {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
super(scope, id);
|
|
12
|
-
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this,
|
|
12
|
+
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this, "PrerenderCloudFrontCacheControl", {
|
|
13
13
|
code: bundling_1.Bundling.bundle({
|
|
14
14
|
entry: `${__dirname}/handlers/cache-control.ts`,
|
|
15
15
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
@@ -20,14 +20,14 @@ class CloudFrontCacheControl extends core_1.Construct {
|
|
|
20
20
|
// and replace during build/deploy with static values. This gets around the lambda@edge limitation
|
|
21
21
|
// of no environment variables at runtime.
|
|
22
22
|
define: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
23
|
+
"process.env.PRERENDER_CACHE_KEY": JSON.stringify((_a = options === null || options === void 0 ? void 0 : options.cacheKey) !== null && _a !== void 0 ? _a : "x-prerender-requestid"),
|
|
24
|
+
"process.env.PRERENDER_CACHE_MAX_AGE": JSON.stringify((_b = String(options === null || options === void 0 ? void 0 : options.maxAge)) !== null && _b !== void 0 ? _b : "0"),
|
|
25
|
+
},
|
|
26
26
|
}),
|
|
27
27
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
28
|
-
handler:
|
|
28
|
+
handler: "index.handler",
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.CloudFrontCacheControl = CloudFrontCacheControl;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUEwQztBQUMxQyxzRUFBbUU7QUFDbkUsb0RBQThDO0FBQzlDLDREQUF1RDtBQVF2RCxNQUFhLHNCQUF1QixTQUFRLGdCQUFTO0lBR25ELFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLE9BQXVDOztRQUV2QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2QkFBWSxDQUFDLFlBQVksQ0FDL0MsSUFBSSxFQUNKLGlDQUFpQyxFQUNqQztZQUNFLElBQUksRUFBRSxtQkFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDcEIsS0FBSyxFQUFFLEdBQUcsU0FBUyw0QkFBNEI7Z0JBQy9DLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLFdBQVcsRUFBRSxHQUFHLFNBQVMsWUFBWTtnQkFDckMsZ0JBQWdCLEVBQUUsR0FBRyxTQUFTLDZCQUE2QjtnQkFDM0Qsa0dBQWtHO2dCQUNsRyxrR0FBa0c7Z0JBQ2xHLDBDQUEwQztnQkFDMUMsTUFBTSxFQUFFO29CQUNOLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQy9DLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsbUNBQUksdUJBQXVCLENBQzdDO29CQUNELHFDQUFxQyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ25ELE1BQUEsTUFBTSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUMsbUNBQUksR0FBRyxDQUMvQjtpQkFDRjthQUNLLENBQUM7WUFDVCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxlQUFlO1NBQ3pCLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXJDRCx3REFxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiQGF3cy1jZGsvY29yZVwiO1xuaW1wb3J0IHsgQnVuZGxpbmcgfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanMvbGliL2J1bmRsaW5nXCI7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IGV4cGVyaW1lbnRhbCB9IGZyb20gXCJAYXdzLWNkay9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgRWRnZUZ1bmN0aW9uIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250L2xpYi9leHBlcmltZW50YWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucyB7XG4gIGNhY2hlS2V5Pzogc3RyaW5nO1xuICBtYXhBZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250Q2FjaGVDb250cm9sIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBFZGdlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5lZGdlRnVuY3Rpb24gPSBuZXcgZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIlByZXJlbmRlckNsb3VkRnJvbnRDYWNoZUNvbnRyb2xcIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogQnVuZGxpbmcuYnVuZGxlKHtcbiAgICAgICAgICBlbnRyeTogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9jYWNoZS1jb250cm9sLnRzYCxcbiAgICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xNF9YLFxuICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICBwcm9qZWN0Um9vdDogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9gLFxuICAgICAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvcGFja2FnZS1sb2NrLmpzb25gLFxuICAgICAgICAgIC8vIERlZmluZSBvcHRpb25zIHJlcGxhY2UgdmFsdWVzIGF0IGJ1aWxkIHRpbWUgc28gd2UgY2FuIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGVzdCBsb2NhbGx5XG4gICAgICAgICAgLy8gYW5kIHJlcGxhY2UgZHVyaW5nIGJ1aWxkL2RlcGxveSB3aXRoIHN0YXRpYyB2YWx1ZXMuIFRoaXMgZ2V0cyBhcm91bmQgdGhlIGxhbWJkYUBlZGdlIGxpbWl0YXRpb25cbiAgICAgICAgICAvLyBvZiBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXQgcnVudGltZS5cbiAgICAgICAgICBkZWZpbmU6IHtcbiAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX0tFWVwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgb3B0aW9ucz8uY2FjaGVLZXkgPz8gXCJ4LXByZXJlbmRlci1yZXF1ZXN0aWRcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX01BWF9BR0VcIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIFN0cmluZyhvcHRpb25zPy5tYXhBZ2UpID8/IFwiMFwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgYW55KSxcbiAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -8,18 +8,18 @@ const aws_cloudfront_1 = require("@aws-cdk/aws-cloudfront");
|
|
|
8
8
|
class PrerenderCheckFunction extends core_1.Construct {
|
|
9
9
|
constructor(scope, id) {
|
|
10
10
|
super(scope, id);
|
|
11
|
-
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this,
|
|
11
|
+
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this, "PrerenderCheckFunction", {
|
|
12
12
|
code: bundling_1.Bundling.bundle({
|
|
13
13
|
entry: `${__dirname}/handlers/prerender-check.ts`,
|
|
14
14
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
15
15
|
sourceMap: true,
|
|
16
16
|
projectRoot: `${__dirname}/handlers/`,
|
|
17
|
-
depsLockFilePath: `${__dirname}/handlers/package-lock.json
|
|
17
|
+
depsLockFilePath: `${__dirname}/handlers/package-lock.json`,
|
|
18
18
|
}),
|
|
19
19
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
20
|
-
handler:
|
|
20
|
+
handler: "index.handler",
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
exports.PrerenderCheckFunction = PrerenderCheckFunction;
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNoZWNrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jaGVjay1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQTBDO0FBQzFDLHNFQUFtRTtBQUNuRSxvREFBOEM7QUFDOUMsNERBQXVEO0FBR3ZELE1BQWEsc0JBQXVCLFNBQVEsZ0JBQVM7SUFHbkQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksNkJBQVksQ0FBQyxZQUFZLENBQy9DLElBQUksRUFDSix3QkFBd0IsRUFDeEI7WUFDRSxJQUFJLEVBQUUsbUJBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHLFNBQVMsOEJBQThCO2dCQUNqRCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO2dCQUM1QixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsR0FBRyxTQUFTLFlBQVk7Z0JBQ3JDLGdCQUFnQixFQUFFLEdBQUcsU0FBUyw2QkFBNkI7YUFDckQsQ0FBQztZQUNULE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7U0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBckJELHdEQXFCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJAYXdzLWNkay9jb3JlXCI7XG5pbXBvcnQgeyBCdW5kbGluZyB9IGZyb20gXCJAYXdzLWNkay9hd3MtbGFtYmRhLW5vZGVqcy9saWIvYnVuZGxpbmdcIjtcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgZXhwZXJpbWVudGFsIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBFZGdlRnVuY3Rpb24gfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQvbGliL2V4cGVyaW1lbnRhbFwiO1xuXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyQ2hlY2tGdW5jdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGVkZ2VGdW5jdGlvbjogRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuZWRnZUZ1bmN0aW9uID0gbmV3IGV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJQcmVyZW5kZXJDaGVja0Z1bmN0aW9uXCIsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IEJ1bmRsaW5nLmJ1bmRsZSh7XG4gICAgICAgICAgZW50cnk6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvcHJlcmVuZGVyLWNoZWNrLnRzYCxcbiAgICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xNF9YLFxuICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICBwcm9qZWN0Um9vdDogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9gLFxuICAgICAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvcGFja2FnZS1sb2NrLmpzb25gLFxuICAgICAgICB9IGFzIGFueSksXG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -9,7 +9,7 @@ class PrerenderFunction extends core_1.Construct {
|
|
|
9
9
|
constructor(scope, id, options) {
|
|
10
10
|
var _a, _b;
|
|
11
11
|
super(scope, id);
|
|
12
|
-
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this,
|
|
12
|
+
this.edgeFunction = new aws_cloudfront_1.experimental.EdgeFunction(this, "PrerenderFunction", {
|
|
13
13
|
code: bundling_1.Bundling.bundle({
|
|
14
14
|
entry: `${__dirname}/handlers/prerender.ts`,
|
|
15
15
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
@@ -20,15 +20,15 @@ class PrerenderFunction extends core_1.Construct {
|
|
|
20
20
|
// and replace during build/deploy with static values. This gets around the lambda@edge limitation
|
|
21
21
|
// of no environment variables at runtime.
|
|
22
22
|
define: {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
23
|
+
"process.env.PRERENDER_TOKEN": JSON.stringify(options.prerenderToken),
|
|
24
|
+
"process.env.PATH_PREFIX": JSON.stringify((_a = options.pathPrefix) !== null && _a !== void 0 ? _a : ""),
|
|
25
|
+
"process.env.PRERENDER_URL": JSON.stringify((_b = options.prerenderUrl) !== null && _b !== void 0 ? _b : "service.prerender.io"),
|
|
26
|
+
},
|
|
27
27
|
}),
|
|
28
28
|
runtime: aws_lambda_1.Runtime.NODEJS_14_X,
|
|
29
|
-
handler:
|
|
29
|
+
handler: "index.handler",
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
33
|
exports.PrerenderFunction = PrerenderFunction;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQTBDO0FBQzFDLHNFQUFtRTtBQUNuRSxvREFBOEM7QUFDOUMsNERBQXVEO0FBU3ZELE1BQWEsaUJBQWtCLFNBQVEsZ0JBQVM7SUFHOUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUFpQzs7UUFDekUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksNkJBQVksQ0FBQyxZQUFZLENBQy9DLElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUsbUJBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHLFNBQVMsd0JBQXdCO2dCQUMzQyxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO2dCQUM1QixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsR0FBRyxTQUFTLFlBQVk7Z0JBQ3JDLGdCQUFnQixFQUFFLEdBQUcsU0FBUyw2QkFBNkI7Z0JBQzNELGtHQUFrRztnQkFDbEcsa0dBQWtHO2dCQUNsRywwQ0FBMEM7Z0JBQzFDLE1BQU0sRUFBRTtvQkFDTiw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUMzQyxPQUFPLENBQUMsY0FBYyxDQUN2QjtvQkFDRCx5QkFBeUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQUEsT0FBTyxDQUFDLFVBQVUsbUNBQUksRUFBRSxDQUFDO29CQUNuRSwyQkFBMkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUN6QyxNQUFBLE9BQU8sQ0FBQyxZQUFZLG1DQUFJLHNCQUFzQixDQUMvQztpQkFDRjthQUNLLENBQUM7WUFDVCxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxlQUFlO1NBQ3pCLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWxDRCw4Q0FrQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiQGF3cy1jZGsvY29yZVwiO1xuaW1wb3J0IHsgQnVuZGxpbmcgfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanMvbGliL2J1bmRsaW5nXCI7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IGV4cGVyaW1lbnRhbCB9IGZyb20gXCJAYXdzLWNkay9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgRWRnZUZ1bmN0aW9uIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250L2xpYi9leHBlcmltZW50YWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBQcmVyZW5kZXJGdW5jdGlvbk9wdGlvbnMge1xuICBwcmVyZW5kZXJUb2tlbjogc3RyaW5nO1xuICBwcmVyZW5kZXJVcmw/OiBzdHJpbmc7XG4gIHBhdGhQcmVmaXg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQcmVyZW5kZXJGdW5jdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGVkZ2VGdW5jdGlvbjogRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFByZXJlbmRlckZ1bmN0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmVkZ2VGdW5jdGlvbiA9IG5ldyBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUHJlcmVuZGVyRnVuY3Rpb25cIixcbiAgICAgIHtcbiAgICAgICAgY29kZTogQnVuZGxpbmcuYnVuZGxlKHtcbiAgICAgICAgICBlbnRyeTogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9wcmVyZW5kZXIudHNgLFxuICAgICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE0X1gsXG4gICAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICAgIHByb2plY3RSb290OiBgJHtfX2Rpcm5hbWV9L2hhbmRsZXJzL2AsXG4gICAgICAgICAgZGVwc0xvY2tGaWxlUGF0aDogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9wYWNrYWdlLWxvY2suanNvbmAsXG4gICAgICAgICAgLy8gRGVmaW5lIG9wdGlvbnMgcmVwbGFjZSB2YWx1ZXMgYXQgYnVpbGQgdGltZSBzbyB3ZSBjYW4gdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byB0ZXN0IGxvY2FsbHlcbiAgICAgICAgICAvLyBhbmQgcmVwbGFjZSBkdXJpbmcgYnVpbGQvZGVwbG95IHdpdGggc3RhdGljIHZhbHVlcy4gVGhpcyBnZXRzIGFyb3VuZCB0aGUgbGFtYmRhQGVkZ2UgbGltaXRhdGlvblxuICAgICAgICAgIC8vIG9mIG5vIGVudmlyb25tZW50IHZhcmlhYmxlcyBhdCBydW50aW1lLlxuICAgICAgICAgIGRlZmluZToge1xuICAgICAgICAgICAgXCJwcm9jZXNzLmVudi5QUkVSRU5ERVJfVE9LRU5cIjogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICAgIG9wdGlvbnMucHJlcmVuZGVyVG9rZW5cbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBcInByb2Nlc3MuZW52LlBBVEhfUFJFRklYXCI6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGF0aFByZWZpeCA/PyBcIlwiKSxcbiAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX1VSTFwiOiBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgb3B0aW9ucy5wcmVyZW5kZXJVcmwgPz8gXCJzZXJ2aWNlLnByZXJlbmRlci5pb1wiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0gYXMgYW55KSxcbiAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMTRfWCxcbiAgICAgICAgaGFuZGxlcjogXCJpbmRleC5oYW5kbGVyXCIsXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Construct } from
|
|
2
|
-
import { PrerenderFunction } from
|
|
3
|
-
import { PrerenderCheckFunction } from
|
|
4
|
-
import { ErrorResponseFunction } from
|
|
1
|
+
import { Construct } from "@aws-cdk/core";
|
|
2
|
+
import { PrerenderFunction } from "./prerender-construct";
|
|
3
|
+
import { PrerenderCheckFunction } from "./prerender-check-construct";
|
|
4
|
+
import { ErrorResponseFunction } from "./error-response-construct";
|
|
5
5
|
import { CloudFrontCacheControl, CloudFrontCacheControlOptions } from "./prerender-cf-cache-control-construct";
|
|
6
6
|
export interface PrerenderLambdaProps {
|
|
7
7
|
prerenderToken: string;
|
|
@@ -9,11 +9,11 @@ const prerender_cf_cache_control_construct_1 = require("./prerender-cf-cache-con
|
|
|
9
9
|
class PrerenderLambda extends core_1.Construct {
|
|
10
10
|
constructor(scope, id, props) {
|
|
11
11
|
super(scope, id);
|
|
12
|
-
this.prerenderCheckFunction = new prerender_check_construct_1.PrerenderCheckFunction(this,
|
|
13
|
-
this.prerenderFunction = new prerender_construct_1.PrerenderFunction(this,
|
|
14
|
-
this.errorResponseFunction = new error_response_construct_1.ErrorResponseFunction(this,
|
|
15
|
-
this.cacheControlFunction = new prerender_cf_cache_control_construct_1.CloudFrontCacheControl(this,
|
|
12
|
+
this.prerenderCheckFunction = new prerender_check_construct_1.PrerenderCheckFunction(this, "PrerenderViewerRequest");
|
|
13
|
+
this.prerenderFunction = new prerender_construct_1.PrerenderFunction(this, "PrerenderOriginRequest", props);
|
|
14
|
+
this.errorResponseFunction = new error_response_construct_1.ErrorResponseFunction(this, "ErrorResponse", {});
|
|
15
|
+
this.cacheControlFunction = new prerender_cf_cache_control_construct_1.CloudFrontCacheControl(this, "PrerenderCloudFrontCacheControl", props.cacheControlProps);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
exports.PrerenderLambda = PrerenderLambda;
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWxhbWJkYS1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVyZW5kZXItbGFtYmRhLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3Q0FBcUQ7QUFDckQsK0RBQTBEO0FBQzFELDJFQUFxRTtBQUNyRSx5RUFBbUU7QUFDbkUsaUdBR2dEO0FBUWhELE1BQWEsZUFBZ0IsU0FBUSxnQkFBUztJQU01QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksa0RBQXNCLENBQ3RELElBQUksRUFDSix3QkFBd0IsQ0FDekIsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUFpQixDQUM1QyxJQUFJLEVBQ0osd0JBQXdCLEVBQ3hCLEtBQUssQ0FDTixDQUFDO1FBRUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksZ0RBQXFCLENBQ3BELElBQUksRUFDSixlQUFlLEVBQ2YsRUFBRSxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSw2REFBc0IsQ0FDcEQsSUFBSSxFQUNKLGlDQUFpQyxFQUNqQyxLQUFLLENBQUMsaUJBQWlCLENBQ3hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoQ0QsMENBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0LCBDZm5PdXRwdXQgfSBmcm9tIFwiQGF3cy1jZGsvY29yZVwiO1xuaW1wb3J0IHsgUHJlcmVuZGVyRnVuY3Rpb24gfSBmcm9tIFwiLi9wcmVyZW5kZXItY29uc3RydWN0XCI7XG5pbXBvcnQgeyBQcmVyZW5kZXJDaGVja0Z1bmN0aW9uIH0gZnJvbSBcIi4vcHJlcmVuZGVyLWNoZWNrLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZUZ1bmN0aW9uIH0gZnJvbSBcIi4vZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0XCI7XG5pbXBvcnQge1xuICBDbG91ZEZyb250Q2FjaGVDb250cm9sLFxuICBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucyxcbn0gZnJvbSBcIi4vcHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlcmVuZGVyTGFtYmRhUHJvcHMge1xuICBwcmVyZW5kZXJUb2tlbjogc3RyaW5nO1xuICBleGNsdXNpb25FeHByZXNzaW9uPzogc3RyaW5nO1xuICBjYWNoZUNvbnRyb2xQcm9wcz86IENsb3VkRnJvbnRDYWNoZUNvbnRyb2xPcHRpb25zO1xufVxuXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyTGFtYmRhIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgcHJlcmVuZGVyQ2hlY2tGdW5jdGlvbjogUHJlcmVuZGVyQ2hlY2tGdW5jdGlvbjtcbiAgcmVhZG9ubHkgcHJlcmVuZGVyRnVuY3Rpb246IFByZXJlbmRlckZ1bmN0aW9uO1xuICByZWFkb25seSBlcnJvclJlc3BvbnNlRnVuY3Rpb246IEVycm9yUmVzcG9uc2VGdW5jdGlvbjtcbiAgcmVhZG9ubHkgY2FjaGVDb250cm9sRnVuY3Rpb246IENsb3VkRnJvbnRDYWNoZUNvbnRyb2w7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFByZXJlbmRlckxhbWJkYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucHJlcmVuZGVyQ2hlY2tGdW5jdGlvbiA9IG5ldyBQcmVyZW5kZXJDaGVja0Z1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUHJlcmVuZGVyVmlld2VyUmVxdWVzdFwiXG4gICAgKTtcblxuICAgIHRoaXMucHJlcmVuZGVyRnVuY3Rpb24gPSBuZXcgUHJlcmVuZGVyRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJQcmVyZW5kZXJPcmlnaW5SZXF1ZXN0XCIsXG4gICAgICBwcm9wc1xuICAgICk7XG5cbiAgICB0aGlzLmVycm9yUmVzcG9uc2VGdW5jdGlvbiA9IG5ldyBFcnJvclJlc3BvbnNlRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJFcnJvclJlc3BvbnNlXCIsXG4gICAgICB7fVxuICAgICk7XG5cbiAgICB0aGlzLmNhY2hlQ29udHJvbEZ1bmN0aW9uID0gbmV3IENsb3VkRnJvbnRDYWNoZUNvbnRyb2woXG4gICAgICB0aGlzLFxuICAgICAgXCJQcmVyZW5kZXJDbG91ZEZyb250Q2FjaGVDb250cm9sXCIsXG4gICAgICBwcm9wcy5jYWNoZUNvbnRyb2xQcm9wc1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
package/tsconfig.json
CHANGED