@aligent/cdk-prerender-proxy 0.1.3 → 0.1.7
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/lib/error-response-construct.d.ts +0 -1
- package/lib/error-response-construct.js +1 -2
- package/lib/handlers/error-response.ts +2 -2
- package/lib/handlers/prerender.ts +31 -83
- package/lib/prerender-construct.d.ts +0 -3
- package/lib/prerender-construct.js +1 -4
- package/lib/prerender-lambda-construct.d.ts +6 -2
- package/lib/prerender-lambda-construct.js +4 -16
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Construct } from "@aws-cdk/core";
|
|
2
2
|
import { EdgeFunction } from "@aws-cdk/aws-cloudfront/lib/experimental";
|
|
3
3
|
export interface ErrorResponseFunctionOptions {
|
|
4
|
-
redirectFrontendHost: string;
|
|
5
4
|
pathPrefix?: string;
|
|
6
5
|
}
|
|
7
6
|
export declare class ErrorResponseFunction extends Construct {
|
|
@@ -20,7 +20,6 @@ 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
|
-
'process.env.REDIRECT_FRONTEND_HOST': JSON.stringify(options.redirectFrontendHost),
|
|
24
23
|
'process.env.PATH_PREFIX': JSON.stringify((_a = options.pathPrefix) !== null && _a !== void 0 ? _a : ''),
|
|
25
24
|
}
|
|
26
25
|
}),
|
|
@@ -30,4 +29,4 @@ class ErrorResponseFunction extends core_1.Construct {
|
|
|
30
29
|
}
|
|
31
30
|
}
|
|
32
31
|
exports.ErrorResponseFunction = ErrorResponseFunction;
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdDQUEwQztBQUMxQyxzRUFBbUU7QUFDbkUsb0RBQThDO0FBQzlDLDREQUF1RDtBQU92RCxNQUFhLHFCQUFzQixTQUFRLGdCQUFTO0lBR2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsT0FBcUM7O1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDZCQUFZLENBQUMsWUFBWSxDQUM3QyxJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCO1lBQ0UsSUFBSSxFQUFFLG1CQUFRLENBQUMsTUFBTSxDQUFDO2dCQUNwQixLQUFLLEVBQUUsR0FBRyxTQUFTLDZCQUE2QjtnQkFDaEQsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztnQkFDNUIsU0FBUyxFQUFFLElBQUk7Z0JBQ2YsV0FBVyxFQUFFLEdBQUcsU0FBUyxZQUFZO2dCQUNyQyxnQkFBZ0IsRUFBRSxHQUFHLFNBQVMsNkJBQTZCO2dCQUMzRCxrR0FBa0c7Z0JBQ2xHLGtHQUFrRztnQkFDbEcsMENBQTBDO2dCQUMxQyxNQUFNLEVBQUU7b0JBQ04seUJBQXlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFBLE9BQU8sQ0FBQyxVQUFVLG1DQUFJLEVBQUUsQ0FBQztpQkFDcEU7YUFDRixDQUFDO1lBQ0YsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixPQUFPLEVBQUUsZUFBZTtTQUN6QixDQUNGLENBQUM7SUFDUixDQUFDO0NBQ0o7QUE1QkQsc0RBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcIkBhd3MtY2RrL2NvcmVcIjtcbmltcG9ydCB7IEJ1bmRsaW5nIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYS1ub2RlanMvbGliL2J1bmRsaW5nJztcbmltcG9ydCB7IFJ1bnRpbWUgfSBmcm9tICdAYXdzLWNkay9hd3MtbGFtYmRhJztcbmltcG9ydCB7IGV4cGVyaW1lbnRhbCB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1jbG91ZGZyb250JztcbmltcG9ydCB7IEVkZ2VGdW5jdGlvbiB9IGZyb20gXCJAYXdzLWNkay9hd3MtY2xvdWRmcm9udC9saWIvZXhwZXJpbWVudGFsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JSZXNwb25zZUZ1bmN0aW9uT3B0aW9ucyB7XG4gICAgcGF0aFByZWZpeD86IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgRXJyb3JSZXNwb25zZUZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgICByZWFkb25seSBlZGdlRnVuY3Rpb246IEVkZ2VGdW5jdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEVycm9yUmVzcG9uc2VGdW5jdGlvbk9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgICAgICB0aGlzLmVkZ2VGdW5jdGlvbiA9IG5ldyBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICdFcnJvclJlc3BvbnNlRnVuY3Rpb24nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2RlOiBCdW5kbGluZy5idW5kbGUoe1xuICAgICAgICAgICAgICAgIGVudHJ5OiBgJHtfX2Rpcm5hbWV9L2hhbmRsZXJzL2Vycm9yLXJlc3BvbnNlLnRzYCxcbiAgICAgICAgICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgICAgICAgICAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9qZWN0Um9vdDogYCR7X19kaXJuYW1lfS9oYW5kbGVycy9gLFxuICAgICAgICAgICAgICAgIGRlcHNMb2NrRmlsZVBhdGg6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvcGFja2FnZS1sb2NrLmpzb25gLFxuICAgICAgICAgICAgICAgIC8vIERlZmluZSBvcHRpb25zIHJlcGxhY2UgdmFsdWVzIGF0IGJ1aWxkIHRpbWUgc28gd2UgY2FuIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gdGVzdCBsb2NhbGx5XG4gICAgICAgICAgICAgICAgLy8gYW5kIHJlcGxhY2UgZHVyaW5nIGJ1aWxkL2RlcGxveSB3aXRoIHN0YXRpYyB2YWx1ZXMuIFRoaXMgZ2V0cyBhcm91bmQgdGhlIGxhbWJkYUBlZGdlIGxpbWl0YXRpb25cbiAgICAgICAgICAgICAgICAvLyBvZiBubyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXQgcnVudGltZS5cbiAgICAgICAgICAgICAgICBkZWZpbmU6IHtcbiAgICAgICAgICAgICAgICAgICdwcm9jZXNzLmVudi5QQVRIX1BSRUZJWCc6IEpTT04uc3RyaW5naWZ5KG9wdGlvbnMucGF0aFByZWZpeCA/PyAnJyksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgICAgICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgfVxufVxuIl19
|
|
@@ -4,7 +4,7 @@ import axios from "axios";
|
|
|
4
4
|
import { URL } from 'url';
|
|
5
5
|
import * as https from 'https';
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const FRONTEND_HOST = process.env.FRONTEND_HOST;
|
|
8
8
|
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
9
9
|
|
|
10
10
|
// Create axios client outside of lambda function for re-use between calls
|
|
@@ -29,7 +29,7 @@ export const handler = (event: CloudFrontResponseEvent): Promise<CloudFrontRespo
|
|
|
29
29
|
request.uri != `${PATH_PREFIX}/index.html`) {
|
|
30
30
|
|
|
31
31
|
// Fetch default page and return body
|
|
32
|
-
return instance.get(`https://${
|
|
32
|
+
return instance.get(`https://${FRONTEND_HOST}${PATH_PREFIX}/index.html`).then((res) => {
|
|
33
33
|
response.body = res.data;
|
|
34
34
|
|
|
35
35
|
|
|
@@ -1,94 +1,42 @@
|
|
|
1
1
|
import 'source-map-support/register';
|
|
2
|
-
import axios from "axios";
|
|
3
2
|
import { CloudFrontRequest, CloudFrontRequestEvent, CloudFrontResponse } from 'aws-lambda';
|
|
4
|
-
import { URL } from 'url';
|
|
5
|
-
import * as https from 'https';
|
|
6
3
|
|
|
7
|
-
const REDIRECT_BACKEND = process.env.REDIRECT_BACKEND;
|
|
8
|
-
const REDIRECT_FRONTEND_HOST = process.env.REDIRECT_FRONTEND_HOST;
|
|
9
4
|
const PRERENDER_TOKEN = process.env.PRERENDER_TOKEN;
|
|
10
|
-
const EXCLUSION_EXPRESSION = process.env.EXCLUSION_EXPRESSION;
|
|
11
5
|
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
12
6
|
|
|
13
|
-
|
|
14
|
-
const instance = axios.create({
|
|
15
|
-
timeout: 1000,
|
|
16
|
-
// Don't follow redirects
|
|
17
|
-
maxRedirects: 0,
|
|
18
|
-
// Only valid response codes are redirects
|
|
19
|
-
validateStatus: function (status) {
|
|
20
|
-
return status == 301 || status == 302;
|
|
21
|
-
},
|
|
22
|
-
// keep connection alive so we don't constantly do SSL negotiation
|
|
23
|
-
httpsAgent: new https.Agent({ keepAlive: true }),
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
export const handler = (event: CloudFrontRequestEvent): Promise<CloudFrontResponse|CloudFrontRequest> => {
|
|
7
|
+
export const handler = async (event: CloudFrontRequestEvent): Promise<CloudFrontResponse|CloudFrontRequest> => {
|
|
27
8
|
let request = event.Records[0].cf.request;
|
|
28
9
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
10
|
+
// viewer-request function will determine whether we prerender or not
|
|
11
|
+
// if we should we add prerender as our custom origin
|
|
12
|
+
if (request.headers['x-request-prerender']) {
|
|
13
|
+
// Cloudfront will alter the request for / to /index.html
|
|
14
|
+
// since it is defined as the default root object
|
|
15
|
+
// we do not want to do this when prerendering the homepage
|
|
16
|
+
if (request.uri === `${PATH_PREFIX}/index.html`) {
|
|
17
|
+
request.uri = `${PATH_PREFIX}/`;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
request.origin = {
|
|
21
|
+
custom: {
|
|
22
|
+
domainName: 'service.prerender.io',
|
|
23
|
+
port: 443,
|
|
24
|
+
protocol: 'https',
|
|
25
|
+
readTimeout: 20,
|
|
26
|
+
keepaliveTimeout: 5,
|
|
27
|
+
sslProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2'],
|
|
28
|
+
path: '/https%3A%2F%2F' + request.headers['x-prerender-host'][0].value,
|
|
29
|
+
customHeaders: {
|
|
30
|
+
'x-prerender-token': [{
|
|
31
|
+
key: 'x-prerender-token',
|
|
32
|
+
value: PRERENDER_TOKEN
|
|
33
|
+
}]
|
|
34
|
+
}
|
|
53
35
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
// An error is returned when any status code except a 301 or 302
|
|
59
|
-
// fallback to normal prerender behavior
|
|
60
|
-
|
|
61
|
-
// viewer-request function will determine whether we prerender or not
|
|
62
|
-
// if we should we add prerender as our custom origin
|
|
63
|
-
if (request.headers['x-request-prerender']) {
|
|
64
|
-
// Cloudfront will alter the request for / to /index.html
|
|
65
|
-
// since it is defined as the default root object
|
|
66
|
-
// we do not want to do this when prerendering the homepage
|
|
67
|
-
if (request.uri === `${PATH_PREFIX}/index.html`) {
|
|
68
|
-
request.uri = `${PATH_PREFIX}/`;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
request.origin = {
|
|
72
|
-
custom: {
|
|
73
|
-
domainName: 'service.prerender.io',
|
|
74
|
-
port: 443,
|
|
75
|
-
protocol: 'https',
|
|
76
|
-
readTimeout: 20,
|
|
77
|
-
keepaliveTimeout: 5,
|
|
78
|
-
sslProtocols: ['TLSv1', 'TLSv1.1', 'TLSv1.2'],
|
|
79
|
-
path: '/https%3A%2F%2F' + request.headers['x-prerender-host'][0].value,
|
|
80
|
-
customHeaders: {
|
|
81
|
-
'x-prerender-token': [{
|
|
82
|
-
key: 'x-prerender-token',
|
|
83
|
-
value: PRERENDER_TOKEN
|
|
84
|
-
}]
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
};
|
|
88
|
-
} else {
|
|
89
|
-
request.uri = `${PATH_PREFIX}/index.html`;
|
|
90
|
-
}
|
|
36
|
+
};
|
|
37
|
+
} else {
|
|
38
|
+
request.uri = `${PATH_PREFIX}/index.html`;
|
|
39
|
+
}
|
|
91
40
|
|
|
92
|
-
|
|
93
|
-
});
|
|
41
|
+
return request;
|
|
94
42
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { Construct } from "@aws-cdk/core";
|
|
2
2
|
import { EdgeFunction } from "@aws-cdk/aws-cloudfront/lib/experimental";
|
|
3
3
|
export interface PrerenderFunctionOptions {
|
|
4
|
-
redirectBackendOrigin: string;
|
|
5
|
-
redirectFrontendHost: string;
|
|
6
4
|
prerenderToken: string;
|
|
7
|
-
exclusionExpression?: string;
|
|
8
5
|
pathPrefix?: string;
|
|
9
6
|
}
|
|
10
7
|
export declare class PrerenderFunction extends Construct {
|
|
@@ -20,11 +20,8 @@ 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
|
-
'process.env.REDIRECT_BACKEND': JSON.stringify(options.redirectBackendOrigin),
|
|
24
|
-
'process.env.REDIRECT_FRONTEND_HOST': JSON.stringify(options.redirectFrontendHost),
|
|
25
23
|
'process.env.PRERENDER_TOKEN': JSON.stringify(options.prerenderToken),
|
|
26
24
|
'process.env.PATH_PREFIX': JSON.stringify((_a = options.pathPrefix) !== null && _a !== void 0 ? _a : ''),
|
|
27
|
-
'process.env.EXCLUSION_EXPRESSION': options.exclusionExpression ? JSON.stringify(options.exclusionExpression) : 'null'
|
|
28
25
|
}
|
|
29
26
|
}),
|
|
30
27
|
runtime: aws_lambda_1.Runtime.NODEJS_12_X,
|
|
@@ -33,4 +30,4 @@ class PrerenderFunction extends core_1.Construct {
|
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
32
|
exports.PrerenderFunction = PrerenderFunction;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQTBDO0FBQzFDLHNFQUFtRTtBQUNuRSxvREFBOEM7QUFDOUMsNERBQXVEO0FBUXZELE1BQWEsaUJBQWtCLFNBQVEsZ0JBQVM7SUFHNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxPQUFpQzs7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksNkJBQVksQ0FBQyxZQUFZLENBQzdDLElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxJQUFJLEVBQUUsbUJBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3BCLEtBQUssRUFBRSxHQUFHLFNBQVMsd0JBQXdCO2dCQUMzQyxPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO2dCQUM1QixTQUFTLEVBQUUsSUFBSTtnQkFDZixXQUFXLEVBQUUsR0FBRyxTQUFTLFlBQVk7Z0JBQ3JDLGdCQUFnQixFQUFFLEdBQUcsU0FBUyw2QkFBNkI7Z0JBQzNELGtHQUFrRztnQkFDbEcsa0dBQWtHO2dCQUNsRywwQ0FBMEM7Z0JBQzFDLE1BQU0sRUFBRTtvQkFDTiw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0JBQ3JFLHlCQUF5QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxFQUFFLENBQUM7aUJBQ3BFO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLGVBQWU7U0FDekIsQ0FDRixDQUFDO0lBQ1IsQ0FBQztDQUNKO0FBN0JELDhDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJAYXdzLWNkay9jb3JlXCI7XG5pbXBvcnQgeyBCdW5kbGluZyB9IGZyb20gJ0Bhd3MtY2RrL2F3cy1sYW1iZGEtbm9kZWpzL2xpYi9idW5kbGluZyc7XG5pbXBvcnQgeyBSdW50aW1lIH0gZnJvbSAnQGF3cy1jZGsvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBleHBlcmltZW50YWwgfSBmcm9tICdAYXdzLWNkay9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgeyBFZGdlRnVuY3Rpb24gfSBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQvbGliL2V4cGVyaW1lbnRhbFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlbmRlckZ1bmN0aW9uT3B0aW9ucyB7XG4gICAgcHJlcmVuZGVyVG9rZW46IHN0cmluZyxcbiAgICBwYXRoUHJlZml4Pzogc3RyaW5nLFxufVxuXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyRnVuY3Rpb24gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAgIHJlYWRvbmx5IGVkZ2VGdW5jdGlvbjogRWRnZUZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogUHJlcmVuZGVyRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAgICAgdGhpcy5lZGdlRnVuY3Rpb24gPSBuZXcgZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbihcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAnUHJlcmVuZGVyRnVuY3Rpb24nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBjb2RlOiBCdW5kbGluZy5idW5kbGUoe1xuICAgICAgICAgICAgICAgIGVudHJ5OiBgJHtfX2Rpcm5hbWV9L2hhbmRsZXJzL3ByZXJlbmRlci50c2AsXG4gICAgICAgICAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgICAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgICAgICAgcHJvamVjdFJvb3Q6IGAke19fZGlybmFtZX0vaGFuZGxlcnMvYCxcbiAgICAgICAgICAgICAgICBkZXBzTG9ja0ZpbGVQYXRoOiBgJHtfX2Rpcm5hbWV9L2hhbmRsZXJzL3BhY2thZ2UtbG9jay5qc29uYCxcbiAgICAgICAgICAgICAgICAvLyBEZWZpbmUgb3B0aW9ucyByZXBsYWNlIHZhbHVlcyBhdCBidWlsZCB0aW1lIHNvIHdlIGNhbiB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHRlc3QgbG9jYWxseVxuICAgICAgICAgICAgICAgIC8vIGFuZCByZXBsYWNlIGR1cmluZyBidWlsZC9kZXBsb3kgd2l0aCBzdGF0aWMgdmFsdWVzLiBUaGlzIGdldHMgYXJvdW5kIHRoZSBsYW1iZGFAZWRnZSBsaW1pdGF0aW9uXG4gICAgICAgICAgICAgICAgLy8gb2Ygbm8gZW52aXJvbm1lbnQgdmFyaWFibGVzIGF0IHJ1bnRpbWUuXG4gICAgICAgICAgICAgICAgZGVmaW5lOiB7XG4gICAgICAgICAgICAgICAgICAncHJvY2Vzcy5lbnYuUFJFUkVOREVSX1RPS0VOJzogSlNPTi5zdHJpbmdpZnkob3B0aW9ucy5wcmVyZW5kZXJUb2tlbiksXG4gICAgICAgICAgICAgICAgICAncHJvY2Vzcy5lbnYuUEFUSF9QUkVGSVgnOiBKU09OLnN0cmluZ2lmeShvcHRpb25zLnBhdGhQcmVmaXggPz8gJycpLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICAgICAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,14 @@
|
|
|
1
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';
|
|
2
5
|
export interface PrerenderLambdaProps {
|
|
3
|
-
redirectBackendOrigin: string;
|
|
4
|
-
redirectFrontendHost: string;
|
|
5
6
|
prerenderToken: string;
|
|
6
7
|
exclusionExpression?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare class PrerenderLambda extends Construct {
|
|
10
|
+
readonly prerenderCheckFunction: PrerenderCheckFunction;
|
|
11
|
+
readonly prerenderFunction: PrerenderFunction;
|
|
12
|
+
readonly errorResponseFunction: ErrorResponseFunction;
|
|
9
13
|
constructor(scope: Construct, id: string, props: PrerenderLambdaProps);
|
|
10
14
|
}
|
|
@@ -8,22 +8,10 @@ const error_response_construct_1 = require("./error-response-construct");
|
|
|
8
8
|
class PrerenderLambda extends core_1.Construct {
|
|
9
9
|
constructor(scope, id, props) {
|
|
10
10
|
super(scope, id);
|
|
11
|
-
|
|
12
|
-
new
|
|
13
|
-
|
|
14
|
-
value: prerenderCheckFunction.edgeFunction.currentVersion.edgeArn,
|
|
15
|
-
});
|
|
16
|
-
const redirectFunction = new prerender_construct_1.PrerenderFunction(this, 'PrerenderOriginRequest', props);
|
|
17
|
-
new core_1.CfnOutput(this, 'PrerenderFunctionVersionARN', {
|
|
18
|
-
description: 'PrerenderFunctionVersionARN',
|
|
19
|
-
value: redirectFunction.edgeFunction.currentVersion.edgeArn,
|
|
20
|
-
});
|
|
21
|
-
const errorResponseFunction = new error_response_construct_1.ErrorResponseFunction(this, 'ErrorResponse', props);
|
|
22
|
-
new core_1.CfnOutput(this, 'ErrorResponseVersionARN', {
|
|
23
|
-
description: 'ErrorResponseVersionARN',
|
|
24
|
-
value: errorResponseFunction.edgeFunction.currentVersion.edgeArn,
|
|
25
|
-
});
|
|
11
|
+
this.prerenderCheckFunction = new prerender_check_construct_1.PrerenderCheckFunction(this, 'PrerenderViewerRequest');
|
|
12
|
+
this.prerenderFunction = new prerender_construct_1.PrerenderFunction(this, 'PrerenderOriginRequest', props);
|
|
13
|
+
this.errorResponseFunction = new error_response_construct_1.ErrorResponseFunction(this, 'ErrorResponse', {});
|
|
26
14
|
}
|
|
27
15
|
}
|
|
28
16
|
exports.PrerenderLambda = PrerenderLambda;
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWxhbWJkYS1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVyZW5kZXItbGFtYmRhLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3Q0FBcUQ7QUFDckQsK0RBQTBEO0FBQzFELDJFQUFxRTtBQUNyRSx5RUFBbUU7QUFPbkUsTUFBYSxlQUFnQixTQUFRLGdCQUFTO0lBTTVDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7UUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxrREFBc0IsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUV6RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFdEYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksZ0RBQXFCLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUVwRixDQUFDO0NBQ0Y7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0LCBDZm5PdXRwdXQgfSBmcm9tICdAYXdzLWNkay9jb3JlJztcbmltcG9ydCB7IFByZXJlbmRlckZ1bmN0aW9uIH0gZnJvbSAnLi9wcmVyZW5kZXItY29uc3RydWN0JztcbmltcG9ydCB7IFByZXJlbmRlckNoZWNrRnVuY3Rpb24gfSBmcm9tICcuL3ByZXJlbmRlci1jaGVjay1jb25zdHJ1Y3QnO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZUZ1bmN0aW9uIH0gZnJvbSAnLi9lcnJvci1yZXNwb25zZS1jb25zdHJ1Y3QnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlbmRlckxhbWJkYVByb3BzIHtcbiAgICBwcmVyZW5kZXJUb2tlbjogc3RyaW5nXG4gICAgZXhjbHVzaW9uRXhwcmVzc2lvbj86IHN0cmluZ1xufVxuXG5leHBvcnQgY2xhc3MgUHJlcmVuZGVyTGFtYmRhIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICByZWFkb25seSAgcHJlcmVuZGVyQ2hlY2tGdW5jdGlvbjpQcmVyZW5kZXJDaGVja0Z1bmN0aW9uXG4gIHJlYWRvbmx5ICBwcmVyZW5kZXJGdW5jdGlvbjpQcmVyZW5kZXJGdW5jdGlvblxuICByZWFkb25seSAgZXJyb3JSZXNwb25zZUZ1bmN0aW9uOkVycm9yUmVzcG9uc2VGdW5jdGlvblxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcmVyZW5kZXJMYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByZXJlbmRlckNoZWNrRnVuY3Rpb24gPSBuZXcgUHJlcmVuZGVyQ2hlY2tGdW5jdGlvbih0aGlzLCAnUHJlcmVuZGVyVmlld2VyUmVxdWVzdCcpO1xuICAgXG4gICAgdGhpcy5wcmVyZW5kZXJGdW5jdGlvbiA9IG5ldyBQcmVyZW5kZXJGdW5jdGlvbih0aGlzLCAnUHJlcmVuZGVyT3JpZ2luUmVxdWVzdCcsIHByb3BzKTtcbiAgICBcbiAgICB0aGlzLmVycm9yUmVzcG9uc2VGdW5jdGlvbiA9IG5ldyBFcnJvclJlc3BvbnNlRnVuY3Rpb24odGhpcywgJ0Vycm9yUmVzcG9uc2UnLCB7fSk7XG5cbiAgfVxufVxuIl19
|