@aligent/cdk-prerender-proxy 0.2.4 → 0.2.5-beta
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/handlers/cache-control.ts +7 -20
- package/lib/handlers/error-response.ts +8 -51
- package/lib/handlers/node_modules/.package-lock.json +32 -3
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/index.d.ts +6 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/index.js +14 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/cache-control.d.ts +3 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/cache-control.js +24 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/error-response.d.ts +3 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/error-response.js +50 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender-check.d.ts +3 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender-check.js +28 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender.d.ts +3 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender.js +49 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/redirect.d.ts +3 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/redirect.js +33 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/package.json +27 -0
- package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/tsconfig.json +3 -0
- package/lib/handlers/node_modules/@middy/core/LICENSE +21 -0
- package/lib/handlers/node_modules/@middy/core/README.md +65 -0
- package/lib/handlers/node_modules/@middy/core/index.cjs +207 -0
- package/lib/handlers/node_modules/@middy/core/index.d.ts +91 -0
- package/lib/handlers/node_modules/@middy/core/index.js +199 -0
- package/lib/handlers/node_modules/@middy/core/package.json +65 -0
- package/lib/handlers/node_modules/@types/node/README.md +4 -4
- package/lib/handlers/node_modules/@types/node/assert/strict.d.ts +5 -1
- package/lib/handlers/node_modules/@types/node/assert.d.ts +904 -67
- package/lib/handlers/node_modules/@types/node/async_hooks.d.ts +371 -96
- package/lib/handlers/node_modules/@types/node/buffer.d.ts +2199 -25
- package/lib/handlers/node_modules/@types/node/child_process.d.ts +1151 -308
- package/lib/handlers/node_modules/@types/node/cluster.d.ts +356 -208
- package/lib/handlers/node_modules/@types/node/console.d.ts +324 -45
- package/lib/handlers/node_modules/@types/node/constants.d.ts +8 -3
- package/lib/handlers/node_modules/@types/node/crypto.d.ts +3230 -846
- package/lib/handlers/node_modules/@types/node/dgram.d.ts +478 -74
- package/lib/handlers/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
- package/lib/handlers/node_modules/@types/node/dns/promises.d.ts +308 -35
- package/lib/handlers/node_modules/@types/node/dns.d.ts +444 -107
- package/lib/handlers/node_modules/@types/node/dom-events.d.ts +126 -0
- package/lib/handlers/node_modules/@types/node/domain.d.ts +162 -16
- package/lib/handlers/node_modules/@types/node/events.d.ts +624 -39
- package/lib/handlers/node_modules/@types/node/fs/promises.d.ts +911 -365
- package/lib/handlers/node_modules/@types/node/fs.d.ts +2611 -978
- package/lib/handlers/node_modules/@types/node/globals.d.ts +66 -421
- package/lib/handlers/node_modules/@types/node/globals.global.d.ts +1 -1
- package/lib/handlers/node_modules/@types/node/http.d.ts +1416 -199
- package/lib/handlers/node_modules/@types/node/http2.d.ts +1688 -530
- package/lib/handlers/node_modules/@types/node/https.d.ts +532 -26
- package/lib/handlers/node_modules/@types/node/index.d.ts +92 -16
- package/lib/handlers/node_modules/@types/node/inspector.d.ts +511 -811
- package/lib/handlers/node_modules/@types/node/module.d.ts +75 -13
- package/lib/handlers/node_modules/@types/node/net.d.ts +710 -167
- package/lib/handlers/node_modules/@types/node/os.d.ts +252 -25
- package/lib/handlers/node_modules/@types/node/package.json +30 -25
- package/lib/handlers/node_modules/@types/node/path.d.ts +59 -31
- package/lib/handlers/node_modules/@types/node/perf_hooks.d.ts +420 -105
- package/lib/handlers/node_modules/@types/node/process.d.ts +1249 -228
- package/lib/handlers/node_modules/@types/node/punycode.d.ts +67 -25
- package/lib/handlers/node_modules/@types/node/querystring.d.ts +113 -10
- package/lib/handlers/node_modules/@types/node/readline/promises.d.ts +143 -0
- package/lib/handlers/node_modules/@types/node/readline.d.ts +570 -109
- package/lib/handlers/node_modules/@types/node/repl.d.ts +154 -125
- package/lib/handlers/node_modules/@types/node/stream/consumers.d.ts +12 -0
- package/lib/handlers/node_modules/@types/node/stream/promises.d.ts +18 -43
- package/lib/handlers/node_modules/@types/node/stream/web.d.ts +330 -0
- package/lib/handlers/node_modules/@types/node/stream.d.ts +1117 -248
- package/lib/handlers/node_modules/@types/node/string_decoder.d.ts +60 -0
- package/lib/handlers/node_modules/@types/node/test.d.ts +446 -0
- package/lib/handlers/node_modules/@types/node/timers/promises.d.ts +81 -9
- package/lib/handlers/node_modules/@types/node/timers.d.ts +84 -17
- package/lib/handlers/node_modules/@types/node/tls.d.ts +510 -275
- package/lib/handlers/node_modules/@types/node/trace_events.d.ts +120 -10
- package/lib/handlers/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/console.d.ts +412 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/events.d.ts +678 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/http.d.ts +1651 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/https.d.ts +542 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/index.d.ts +88 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/module.d.ts +114 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/net.d.ts +869 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/os.d.ts +466 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/path.d.ts +191 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/test.d.ts +446 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/timers/promises.d.ts +93 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/url.d.ts +897 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/util.d.ts +1926 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
- package/lib/handlers/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
- package/lib/handlers/node_modules/@types/node/tty.d.ts +163 -23
- package/lib/handlers/node_modules/@types/node/url.d.ts +825 -44
- package/lib/handlers/node_modules/@types/node/util.d.ts +1842 -72
- package/lib/handlers/node_modules/@types/node/v8.d.ts +276 -78
- package/lib/handlers/node_modules/@types/node/vm.d.ts +410 -53
- package/lib/handlers/node_modules/@types/node/wasi.d.ts +102 -30
- package/lib/handlers/node_modules/@types/node/worker_threads.d.ts +559 -152
- package/lib/handlers/node_modules/@types/node/zlib.d.ts +234 -78
- package/lib/handlers/node_modules/esbuild/README.md +3 -0
- package/lib/handlers/node_modules/esbuild/bin/esbuild +0 -0
- package/lib/handlers/node_modules/esbuild/install.js +256 -0
- package/lib/handlers/node_modules/esbuild/lib/main.d.ts +397 -0
- package/lib/handlers/node_modules/esbuild/lib/main.js +1939 -0
- package/lib/handlers/node_modules/esbuild/package.json +15 -0
- package/lib/handlers/package-lock.json +62 -6
- package/lib/handlers/package.json +6 -1
- package/lib/handlers/prerender-check.ts +8 -27
- package/lib/handlers/prerender.ts +8 -43
- package/package.json +1 -1
- package/lib/handlers/node_modules/@types/node/base.d.ts +0 -19
- package/lib/handlers/node_modules/@types/node/diagnostic_channel.d.ts +0 -34
- package/lib/handlers/node_modules/@types/node/ts3.6/assert.d.ts +0 -98
- package/lib/handlers/node_modules/@types/node/ts3.6/base.d.ts +0 -68
- package/lib/handlers/node_modules/@types/node/ts3.6/index.d.ts +0 -7
- package/lib/handlers/node_modules/@types/node/util/types.d.ts +0 -53
|
@@ -1,21 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
/*
|
|
4
|
-
Prerender cache control function
|
|
5
|
-
Consider associate this function as *origin response* function
|
|
6
|
-
*/
|
|
7
|
-
export const handler = async (event: CloudFrontResponseEvent): Promise<CloudFrontResponse> => {
|
|
8
|
-
const cacheKey = process.env.PRERENDER_CACHE_KEY || 'x-prerender-requestid';
|
|
9
|
-
const cacheMaxAge = process.env.PRERENDER_CACHE_MAX_AGE || '0';
|
|
10
|
-
let response = event.Records[0].cf.response;
|
|
1
|
+
import middy from "@middy/core";
|
|
2
|
+
import { PrerenderCacheControlHandler } from "@aligent/cdk-lambda-at-edge-handlers";
|
|
11
3
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
]
|
|
19
|
-
}
|
|
20
|
-
return response;
|
|
21
|
-
}
|
|
4
|
+
/**
|
|
5
|
+
* Prerender Cache Control Handler
|
|
6
|
+
* @link https://github.com/aligent/cdk-constructs/blob/main/packages/lambda-at-edge-handlers/lib/cache-control.ts
|
|
7
|
+
*/
|
|
8
|
+
export const handler = middy(PrerenderCacheControlHandler);
|
|
@@ -1,51 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
// Create axios client outside of lambda function for re-use between calls
|
|
11
|
-
const instance = axios.create({
|
|
12
|
-
timeout: 1000,
|
|
13
|
-
// Don't follow redirects
|
|
14
|
-
maxRedirects: 0,
|
|
15
|
-
// Only valid response codes are 200
|
|
16
|
-
validateStatus: function (status) {
|
|
17
|
-
return status == 200;
|
|
18
|
-
},
|
|
19
|
-
// keep connection alive so we don't constantly do SSL negotiation
|
|
20
|
-
httpsAgent: new https.Agent({ keepAlive: true }),
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
export const handler = (event: CloudFrontResponseEvent): Promise<CloudFrontResponse|CloudFrontRequest> => {
|
|
24
|
-
let response = event.Records[0].cf.response;
|
|
25
|
-
let request = event.Records[0].cf.request;
|
|
26
|
-
|
|
27
|
-
if (response.status != '200' &&
|
|
28
|
-
! request.headers['x-request-prerender'] &&
|
|
29
|
-
request.uri != `${PATH_PREFIX}/index.html`) {
|
|
30
|
-
|
|
31
|
-
// Fetch default page and return body
|
|
32
|
-
return instance.get(`https://${FRONTEND_HOST}${PATH_PREFIX}/index.html`).then((res) => {
|
|
33
|
-
response.body = res.data;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
response.headers['content-type'] = [{
|
|
37
|
-
key: 'Content-Type',
|
|
38
|
-
value: 'text/html'
|
|
39
|
-
}];
|
|
40
|
-
|
|
41
|
-
// Remove content-length if set as this may be the value from the origin.
|
|
42
|
-
delete response.headers['content-length']
|
|
43
|
-
|
|
44
|
-
return response;
|
|
45
|
-
}).catch((err) => {
|
|
46
|
-
return response
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return Promise.resolve(response);
|
|
51
|
-
}
|
|
1
|
+
import middy from "@middy/core";
|
|
2
|
+
import { PrerenderErrorResponseHandler } from "@aligent/cdk-lambda-at-edge-handlers";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Prerender Error ResponseHandler
|
|
6
|
+
* @link https://github.com/aligent/cdk-constructs/blob/main/packages/lambda-at-edge-handlers/lib/error-response.ts
|
|
7
|
+
*/
|
|
8
|
+
export const handler = middy(PrerenderErrorResponseHandler);
|
|
@@ -3,15 +3,35 @@
|
|
|
3
3
|
"lockfileVersion": 2,
|
|
4
4
|
"requires": true,
|
|
5
5
|
"packages": {
|
|
6
|
+
"node_modules/@aligent/cdk-lambda-at-edge-handlers": {
|
|
7
|
+
"version": "0.1.0",
|
|
8
|
+
"resolved": "https://registry.npmjs.org/@aligent/cdk-lambda-at-edge-handlers/-/cdk-lambda-at-edge-handlers-0.1.0.tgz",
|
|
9
|
+
"integrity": "sha512-5qZi5NWXDySDr6Djv+EuA4Y1+f3imQSkSI9sBFzizG/cqfTb5dHF96n3GERpwvNbo4xIuIB7GRLQ4xh3U9PcUA==",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@types/aws-lambda": "^8.10.77",
|
|
12
|
+
"axios": "^0.21.1",
|
|
13
|
+
"esbuild": "0.12.15",
|
|
14
|
+
"source-map-support": "^0.5.16"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"node_modules/@middy/core": {
|
|
18
|
+
"version": "3.6.2",
|
|
19
|
+
"resolved": "https://registry.npmjs.org/@middy/core/-/core-3.6.2.tgz",
|
|
20
|
+
"integrity": "sha512-/vyvG34RIt7CTmuB/jksGkk9vs6RCoOlRFPfdQq11dHkiKlT2mm8j/jZx7gSpEhXXh9LeaEMuKPnsgWBIlGS1g==",
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=14"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
6
25
|
"node_modules/@types/aws-lambda": {
|
|
7
26
|
"version": "8.10.77",
|
|
8
27
|
"resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.77.tgz",
|
|
9
28
|
"integrity": "sha512-n0EMFJU/7u3KvHrR83l/zrKOVURXl5pUJPNED/Bzjah89QKCHwCiKCBoVUXRwTGRfCYGIDdinJaAlKDHZdp/Ng=="
|
|
10
29
|
},
|
|
11
30
|
"node_modules/@types/node": {
|
|
12
|
-
"version": "
|
|
13
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-
|
|
14
|
-
"integrity": "sha512-
|
|
31
|
+
"version": "18.11.18",
|
|
32
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz",
|
|
33
|
+
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==",
|
|
34
|
+
"dev": true
|
|
15
35
|
},
|
|
16
36
|
"node_modules/axios": {
|
|
17
37
|
"version": "0.21.1",
|
|
@@ -26,6 +46,15 @@
|
|
|
26
46
|
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
|
|
27
47
|
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
|
|
28
48
|
},
|
|
49
|
+
"node_modules/esbuild": {
|
|
50
|
+
"version": "0.12.15",
|
|
51
|
+
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.15.tgz",
|
|
52
|
+
"integrity": "sha512-72V4JNd2+48eOVCXx49xoSWHgC3/cCy96e7mbXKY+WOWghN00cCmlGnwVLRhRHorvv0dgCyuMYBZlM2xDM5OQw==",
|
|
53
|
+
"hasInstallScript": true,
|
|
54
|
+
"bin": {
|
|
55
|
+
"esbuild": "bin/esbuild"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
29
58
|
"node_modules/follow-redirects": {
|
|
30
59
|
"version": "1.14.1",
|
|
31
60
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz",
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { handler as PrerenderHandler } from "./lib/prerender";
|
|
2
|
+
import { handler as PrerenderCacheControlHandler } from "./lib/cache-control";
|
|
3
|
+
import { handler as PrerenderErrorResponseHandler } from "./lib/error-response";
|
|
4
|
+
import { handler as PrerenderCheckHandler } from "./lib/prerender-check";
|
|
5
|
+
import { handler as GeoIpRedirectHandler } from "./lib/redirect";
|
|
6
|
+
export { PrerenderHandler, PrerenderCacheControlHandler, PrerenderErrorResponseHandler, PrerenderCheckHandler, GeoIpRedirectHandler, };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GeoIpRedirectHandler = exports.PrerenderCheckHandler = exports.PrerenderErrorResponseHandler = exports.PrerenderCacheControlHandler = exports.PrerenderHandler = void 0;
|
|
4
|
+
const prerender_1 = require("./lib/prerender");
|
|
5
|
+
Object.defineProperty(exports, "PrerenderHandler", { enumerable: true, get: function () { return prerender_1.handler; } });
|
|
6
|
+
const cache_control_1 = require("./lib/cache-control");
|
|
7
|
+
Object.defineProperty(exports, "PrerenderCacheControlHandler", { enumerable: true, get: function () { return cache_control_1.handler; } });
|
|
8
|
+
const error_response_1 = require("./lib/error-response");
|
|
9
|
+
Object.defineProperty(exports, "PrerenderErrorResponseHandler", { enumerable: true, get: function () { return error_response_1.handler; } });
|
|
10
|
+
const prerender_check_1 = require("./lib/prerender-check");
|
|
11
|
+
Object.defineProperty(exports, "PrerenderCheckHandler", { enumerable: true, get: function () { return prerender_check_1.handler; } });
|
|
12
|
+
const redirect_1 = require("./lib/redirect");
|
|
13
|
+
Object.defineProperty(exports, "GeoIpRedirectHandler", { enumerable: true, get: function () { return redirect_1.handler; } });
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBOEQ7QUFPNUQsaUdBUGtCLG1CQUFnQixPQU9sQjtBQU5sQix1REFBOEU7QUFPNUUsNkdBUGtCLHVCQUE0QixPQU9sQjtBQU45Qix5REFBZ0Y7QUFPOUUsOEdBUGtCLHdCQUE2QixPQU9sQjtBQU4vQiwyREFBeUU7QUFPdkUsc0dBUGtCLHlCQUFxQixPQU9sQjtBQU52Qiw2Q0FBaUU7QUFPL0QscUdBUGtCLGtCQUFvQixPQU9sQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGhhbmRsZXIgYXMgUHJlcmVuZGVySGFuZGxlciB9IGZyb20gXCIuL2xpYi9wcmVyZW5kZXJcIjtcbmltcG9ydCB7IGhhbmRsZXIgYXMgUHJlcmVuZGVyQ2FjaGVDb250cm9sSGFuZGxlciB9IGZyb20gXCIuL2xpYi9jYWNoZS1jb250cm9sXCI7XG5pbXBvcnQgeyBoYW5kbGVyIGFzIFByZXJlbmRlckVycm9yUmVzcG9uc2VIYW5kbGVyIH0gZnJvbSBcIi4vbGliL2Vycm9yLXJlc3BvbnNlXCI7XG5pbXBvcnQgeyBoYW5kbGVyIGFzIFByZXJlbmRlckNoZWNrSGFuZGxlciB9IGZyb20gXCIuL2xpYi9wcmVyZW5kZXItY2hlY2tcIjtcbmltcG9ydCB7IGhhbmRsZXIgYXMgR2VvSXBSZWRpcmVjdEhhbmRsZXIgfSBmcm9tIFwiLi9saWIvcmVkaXJlY3RcIjtcblxuZXhwb3J0IHtcbiAgUHJlcmVuZGVySGFuZGxlcixcbiAgUHJlcmVuZGVyQ2FjaGVDb250cm9sSGFuZGxlcixcbiAgUHJlcmVuZGVyRXJyb3JSZXNwb25zZUhhbmRsZXIsXG4gIFByZXJlbmRlckNoZWNrSGFuZGxlcixcbiAgR2VvSXBSZWRpcmVjdEhhbmRsZXIsXG59O1xuIl19
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
/*
|
|
6
|
+
Prerender cache control function
|
|
7
|
+
Consider associate this function as *origin response* function
|
|
8
|
+
*/
|
|
9
|
+
const handler = async (event) => {
|
|
10
|
+
const cacheKey = process.env.PRERENDER_CACHE_KEY || 'x-prerender-requestid';
|
|
11
|
+
const cacheMaxAge = process.env.PRERENDER_CACHE_MAX_AGE || '0';
|
|
12
|
+
let response = event.Records[0].cf.response;
|
|
13
|
+
if (response.headers[`${cacheKey}`]) {
|
|
14
|
+
response.headers['Cache-Control'] = [
|
|
15
|
+
{
|
|
16
|
+
key: 'Cache-Control',
|
|
17
|
+
value: `max-age=${cacheMaxAge}`
|
|
18
|
+
}
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
return response;
|
|
22
|
+
};
|
|
23
|
+
exports.handler = handler;
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtY29udHJvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNhY2hlLWNvbnRyb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXFDO0FBRXJDOzs7RUFHRTtBQUNLLE1BQU0sT0FBTyxHQUFHLEtBQUssRUFBRSxLQUE4QixFQUErQixFQUFFO0lBQ3pGLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksdUJBQXVCLENBQUM7SUFDNUUsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyx1QkFBdUIsSUFBSSxHQUFHLENBQUM7SUFDL0QsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBRTVDLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsRUFBRSxDQUFDLEVBQUU7UUFDakMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRztZQUNoQztnQkFDSSxHQUFHLEVBQUUsZUFBZTtnQkFDcEIsS0FBSyxFQUFFLFdBQVcsV0FBVyxFQUFFO2FBQ2xDO1NBQ0osQ0FBQTtLQUNKO0lBQ0QsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQyxDQUFBO0FBZFksUUFBQSxPQUFPLFdBY25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdzb3VyY2UtbWFwLXN1cHBvcnQvcmVnaXN0ZXInO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFJlc3BvbnNlRXZlbnQsIENsb3VkRnJvbnRSZXNwb25zZSAgfSBmcm9tICdhd3MtbGFtYmRhJztcbi8qICBcbiAgICBQcmVyZW5kZXIgY2FjaGUgY29udHJvbCBmdW5jdGlvbiBcbiAgICBDb25zaWRlciBhc3NvY2lhdGUgdGhpcyBmdW5jdGlvbiBhcyAqb3JpZ2luIHJlc3BvbnNlKiBmdW5jdGlvblxuKi9cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKGV2ZW50OiBDbG91ZEZyb250UmVzcG9uc2VFdmVudCk6IFByb21pc2U8Q2xvdWRGcm9udFJlc3BvbnNlPiA9PiB7XG4gICAgY29uc3QgY2FjaGVLZXkgPSBwcm9jZXNzLmVudi5QUkVSRU5ERVJfQ0FDSEVfS0VZIHx8ICd4LXByZXJlbmRlci1yZXF1ZXN0aWQnO1xuICAgIGNvbnN0IGNhY2hlTWF4QWdlID0gcHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX01BWF9BR0UgfHwgJzAnO1xuICAgIGxldCByZXNwb25zZSA9IGV2ZW50LlJlY29yZHNbMF0uY2YucmVzcG9uc2U7XG5cbiAgICBpZiAocmVzcG9uc2UuaGVhZGVyc1tgJHtjYWNoZUtleX1gXSkge1xuICAgICAgICByZXNwb25zZS5oZWFkZXJzWydDYWNoZS1Db250cm9sJ10gPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiAnQ2FjaGUtQ29udHJvbCcsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGBtYXgtYWdlPSR7Y2FjaGVNYXhBZ2V9YFxuICAgICAgICAgICAgfVxuICAgICAgICBdXG4gICAgfVxuICAgIHJldHVybiByZXNwb25zZTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const axios_1 = require("axios");
|
|
6
|
+
const https = require("https");
|
|
7
|
+
const FRONTEND_HOST = process.env.FRONTEND_HOST;
|
|
8
|
+
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
9
|
+
// Create axios client outside of lambda function for re-use between calls
|
|
10
|
+
const instance = axios_1.default.create({
|
|
11
|
+
timeout: 1000,
|
|
12
|
+
// Don't follow redirects
|
|
13
|
+
maxRedirects: 0,
|
|
14
|
+
// Only valid response codes are 200
|
|
15
|
+
validateStatus: function (status) {
|
|
16
|
+
return status == 200;
|
|
17
|
+
},
|
|
18
|
+
// keep connection alive so we don't constantly do SSL negotiation
|
|
19
|
+
httpsAgent: new https.Agent({ keepAlive: true }),
|
|
20
|
+
});
|
|
21
|
+
const handler = (event) => {
|
|
22
|
+
let response = event.Records[0].cf.response;
|
|
23
|
+
let request = event.Records[0].cf.request;
|
|
24
|
+
if (response.status != "200" &&
|
|
25
|
+
!request.headers["x-request-prerender"] &&
|
|
26
|
+
request.uri != `${PATH_PREFIX}/index.html`) {
|
|
27
|
+
// Fetch default page and return body
|
|
28
|
+
return instance
|
|
29
|
+
.get(`https://${FRONTEND_HOST}${PATH_PREFIX}/index.html`)
|
|
30
|
+
.then((res) => {
|
|
31
|
+
// Commenting this as there is body is not defined in the CloudFrontResponse type
|
|
32
|
+
// response.body = res.data;
|
|
33
|
+
response.headers["content-type"] = [
|
|
34
|
+
{
|
|
35
|
+
key: "Content-Type",
|
|
36
|
+
value: "text/html",
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
// Remove content-length if set as this may be the value from the origin.
|
|
40
|
+
delete response.headers["content-length"];
|
|
41
|
+
return response;
|
|
42
|
+
})
|
|
43
|
+
.catch((err) => {
|
|
44
|
+
return response;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return Promise.resolve(response);
|
|
48
|
+
};
|
|
49
|
+
exports.handler = handler;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlcnJvci1yZXNwb25zZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBcUM7QUFNckMsaUNBQTBCO0FBQzFCLCtCQUErQjtBQUUvQixNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztBQUNoRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztBQUU1QywwRUFBMEU7QUFDMUUsTUFBTSxRQUFRLEdBQUcsZUFBSyxDQUFDLE1BQU0sQ0FBQztJQUM1QixPQUFPLEVBQUUsSUFBSTtJQUNiLHlCQUF5QjtJQUN6QixZQUFZLEVBQUUsQ0FBQztJQUNmLG9DQUFvQztJQUNwQyxjQUFjLEVBQUUsVUFBVSxNQUFNO1FBQzlCLE9BQU8sTUFBTSxJQUFJLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBQ0Qsa0VBQWtFO0lBQ2xFLFVBQVUsRUFBRSxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7Q0FDakQsQ0FBQyxDQUFDO0FBRUksTUFBTSxPQUFPLEdBQUcsQ0FDckIsS0FBOEIsRUFDbUIsRUFBRTtJQUNuRCxJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDNUMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBRTFDLElBQ0UsUUFBUSxDQUFDLE1BQU0sSUFBSSxLQUFLO1FBQ3hCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztRQUN2QyxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsV0FBVyxhQUFhLEVBQzFDO1FBQ0EscUNBQXFDO1FBQ3JDLE9BQU8sUUFBUTthQUNaLEdBQUcsQ0FBQyxXQUFXLGFBQWEsR0FBRyxXQUFXLGFBQWEsQ0FBQzthQUN4RCxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNaLGlGQUFpRjtZQUNqRiw0QkFBNEI7WUFFNUIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRztnQkFDakM7b0JBQ0UsR0FBRyxFQUFFLGNBQWM7b0JBQ25CLEtBQUssRUFBRSxXQUFXO2lCQUNuQjthQUNGLENBQUM7WUFFRix5RUFBeUU7WUFDekUsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFFMUMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDYixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztLQUNOO0lBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQztBQXBDVyxRQUFBLE9BQU8sV0FvQ2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwic291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyXCI7XG5pbXBvcnQge1xuICBDbG91ZEZyb250UmVxdWVzdCxcbiAgQ2xvdWRGcm9udFJlc3BvbnNlRXZlbnQsXG4gIENsb3VkRnJvbnRSZXNwb25zZSxcbn0gZnJvbSBcImF3cy1sYW1iZGFcIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCAqIGFzIGh0dHBzIGZyb20gXCJodHRwc1wiO1xuXG5jb25zdCBGUk9OVEVORF9IT1NUID0gcHJvY2Vzcy5lbnYuRlJPTlRFTkRfSE9TVDtcbmNvbnN0IFBBVEhfUFJFRklYID0gcHJvY2Vzcy5lbnYuUEFUSF9QUkVGSVg7XG5cbi8vIENyZWF0ZSBheGlvcyBjbGllbnQgb3V0c2lkZSBvZiBsYW1iZGEgZnVuY3Rpb24gZm9yIHJlLXVzZSBiZXR3ZWVuIGNhbGxzXG5jb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XG4gIHRpbWVvdXQ6IDEwMDAsXG4gIC8vIERvbid0IGZvbGxvdyByZWRpcmVjdHNcbiAgbWF4UmVkaXJlY3RzOiAwLFxuICAvLyBPbmx5IHZhbGlkIHJlc3BvbnNlIGNvZGVzIGFyZSAyMDBcbiAgdmFsaWRhdGVTdGF0dXM6IGZ1bmN0aW9uIChzdGF0dXMpIHtcbiAgICByZXR1cm4gc3RhdHVzID09IDIwMDtcbiAgfSxcbiAgLy8ga2VlcCBjb25uZWN0aW9uIGFsaXZlIHNvIHdlIGRvbid0IGNvbnN0YW50bHkgZG8gU1NMIG5lZ290aWF0aW9uXG4gIGh0dHBzQWdlbnQ6IG5ldyBodHRwcy5BZ2VudCh7IGtlZXBBbGl2ZTogdHJ1ZSB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IChcbiAgZXZlbnQ6IENsb3VkRnJvbnRSZXNwb25zZUV2ZW50XG4pOiBQcm9taXNlPENsb3VkRnJvbnRSZXNwb25zZSB8IENsb3VkRnJvbnRSZXF1ZXN0PiA9PiB7XG4gIGxldCByZXNwb25zZSA9IGV2ZW50LlJlY29yZHNbMF0uY2YucmVzcG9uc2U7XG4gIGxldCByZXF1ZXN0ID0gZXZlbnQuUmVjb3Jkc1swXS5jZi5yZXF1ZXN0O1xuXG4gIGlmIChcbiAgICByZXNwb25zZS5zdGF0dXMgIT0gXCIyMDBcIiAmJlxuICAgICFyZXF1ZXN0LmhlYWRlcnNbXCJ4LXJlcXVlc3QtcHJlcmVuZGVyXCJdICYmXG4gICAgcmVxdWVzdC51cmkgIT0gYCR7UEFUSF9QUkVGSVh9L2luZGV4Lmh0bWxgXG4gICkge1xuICAgIC8vIEZldGNoIGRlZmF1bHQgcGFnZSBhbmQgcmV0dXJuIGJvZHlcbiAgICByZXR1cm4gaW5zdGFuY2VcbiAgICAgIC5nZXQoYGh0dHBzOi8vJHtGUk9OVEVORF9IT1NUfSR7UEFUSF9QUkVGSVh9L2luZGV4Lmh0bWxgKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAvLyBDb21tZW50aW5nIHRoaXMgYXMgdGhlcmUgaXMgYm9keSBpcyBub3QgZGVmaW5lZCBpbiB0aGUgQ2xvdWRGcm9udFJlc3BvbnNlIHR5cGVcbiAgICAgICAgLy8gcmVzcG9uc2UuYm9keSA9IHJlcy5kYXRhO1xuXG4gICAgICAgIHJlc3BvbnNlLmhlYWRlcnNbXCJjb250ZW50LXR5cGVcIl0gPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAga2V5OiBcIkNvbnRlbnQtVHlwZVwiLFxuICAgICAgICAgICAgdmFsdWU6IFwidGV4dC9odG1sXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICAvLyBSZW1vdmUgY29udGVudC1sZW5ndGggaWYgc2V0IGFzIHRoaXMgbWF5IGJlIHRoZSB2YWx1ZSBmcm9tIHRoZSBvcmlnaW4uXG4gICAgICAgIGRlbGV0ZSByZXNwb25zZS5oZWFkZXJzW1wiY29udGVudC1sZW5ndGhcIl07XG5cbiAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXNwb25zZSk7XG59O1xuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const IS_BOT = /googlebot|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 = /\.(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;
|
|
7
|
+
const handler = async (event) => {
|
|
8
|
+
let request = event.Records[0].cf.request;
|
|
9
|
+
// If the request is from a bot, is not a file and is not from prerender
|
|
10
|
+
// then set the x-request-prerender header so the origin-request lambda function
|
|
11
|
+
// alters the origin to prerender.io
|
|
12
|
+
if (!IS_FILE.test(request.uri) &&
|
|
13
|
+
IS_BOT.test(request.headers["user-agent"][0].value) &&
|
|
14
|
+
!request.headers["x-prerender"]) {
|
|
15
|
+
request.headers["x-request-prerender"] = [
|
|
16
|
+
{
|
|
17
|
+
key: "x-request-prerender",
|
|
18
|
+
value: "true",
|
|
19
|
+
},
|
|
20
|
+
];
|
|
21
|
+
request.headers["x-prerender-host"] = [
|
|
22
|
+
{ key: "X-Prerender-Host", value: request.headers.host[0].value },
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
return request;
|
|
26
|
+
};
|
|
27
|
+
exports.handler = handler;
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNoZWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlcmVuZGVyLWNoZWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFxQztBQUdyQyxNQUFNLE1BQU0sR0FDViwyUEFBMlAsQ0FBQztBQUM5UCxNQUFNLE9BQU8sR0FDWCxxTEFBcUwsQ0FBQztBQUVqTCxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQzFCLEtBQTZCLEVBQ0QsRUFBRTtJQUM5QixJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUM7SUFFMUMsd0VBQXdFO0lBQ3hFLGdGQUFnRjtJQUNoRixvQ0FBb0M7SUFDcEMsSUFDRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztRQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ25ELENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFDL0I7UUFDQSxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEdBQUc7WUFDdkM7Z0JBQ0UsR0FBRyxFQUFFLHFCQUFxQjtnQkFDMUIsS0FBSyxFQUFFLE1BQU07YUFDZDtTQUNGLENBQUM7UUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUc7WUFDcEMsRUFBRSxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRTtTQUNsRSxDQUFDO0tBQ0g7SUFFRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUM7QUExQlcsUUFBQSxPQUFPLFdBMEJsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInNvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3RlclwiO1xuaW1wb3J0IHsgQ2xvdWRGcm9udFJlcXVlc3QsIENsb3VkRnJvbnRSZXF1ZXN0RXZlbnQgfSBmcm9tIFwiYXdzLWxhbWJkYVwiO1xuXG5jb25zdCBJU19CT1QgPVxuICAvZ29vZ2xlYm90fGNocm9tZS1saWdodGhvdXNlfGxpZ2h0aG91c2V8YWRzYm90XFwtZ29vZ2xlfEZlZWRmZXRjaGVyXFwtR29vZ2xlfGJpbmdib3R8eWFuZGV4fGJhaWR1c3BpZGVyfEZhY2Vib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHx0d2l0dGVyYm90fHJvZ2VyYm90fGxpbmtlZGluYm90fGVtYmVkbHl8cXVvcmEgbGluayBwcmV2aWV3fHNob3d5b3Vib3R8b3V0YnJhaW58cGludGVyZXN0fHNsYWNrYm90fHZrU2hhcmV8VzNDX1ZhbGlkYXRvci9pO1xuY29uc3QgSVNfRklMRSA9XG4gIC9cXC4oanN8Y3NzfHhtbHxsZXNzfHBuZ3xqcGd8anBlZ3xnaWZ8cGRmfGRvY3x0eHR8aWNvfHJzc3x6aXB8bXAzfHJhcnxleGV8d212fGRvY3xhdml8cHB0fG1wZ3xtcGVnfHRpZnx3YXZ8bW92fHBzZHxhaXx4bHN8bXA0fG00YXxzd2Z8ZGF0fGRtZ3xpc298Zmx2fG00dnx0b3JyZW50fHR0Znx3b2ZmfHN2Z3xlb3QpJC9pO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlciA9IGFzeW5jIChcbiAgZXZlbnQ6IENsb3VkRnJvbnRSZXF1ZXN0RXZlbnRcbik6IFByb21pc2U8Q2xvdWRGcm9udFJlcXVlc3Q+ID0+IHtcbiAgbGV0IHJlcXVlc3QgPSBldmVudC5SZWNvcmRzWzBdLmNmLnJlcXVlc3Q7XG5cbiAgLy8gSWYgdGhlIHJlcXVlc3QgaXMgZnJvbSBhIGJvdCwgaXMgbm90IGEgZmlsZSBhbmQgaXMgbm90IGZyb20gcHJlcmVuZGVyXG4gIC8vIHRoZW4gc2V0IHRoZSB4LXJlcXVlc3QtcHJlcmVuZGVyIGhlYWRlciBzbyB0aGUgb3JpZ2luLXJlcXVlc3QgbGFtYmRhIGZ1bmN0aW9uXG4gIC8vIGFsdGVycyB0aGUgb3JpZ2luIHRvIHByZXJlbmRlci5pb1xuICBpZiAoXG4gICAgIUlTX0ZJTEUudGVzdChyZXF1ZXN0LnVyaSkgJiZcbiAgICBJU19CT1QudGVzdChyZXF1ZXN0LmhlYWRlcnNbXCJ1c2VyLWFnZW50XCJdWzBdLnZhbHVlKSAmJlxuICAgICFyZXF1ZXN0LmhlYWRlcnNbXCJ4LXByZXJlbmRlclwiXVxuICApIHtcbiAgICByZXF1ZXN0LmhlYWRlcnNbXCJ4LXJlcXVlc3QtcHJlcmVuZGVyXCJdID0gW1xuICAgICAge1xuICAgICAgICBrZXk6IFwieC1yZXF1ZXN0LXByZXJlbmRlclwiLFxuICAgICAgICB2YWx1ZTogXCJ0cnVlXCIsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXF1ZXN0LmhlYWRlcnNbXCJ4LXByZXJlbmRlci1ob3N0XCJdID0gW1xuICAgICAgeyBrZXk6IFwiWC1QcmVyZW5kZXItSG9zdFwiLCB2YWx1ZTogcmVxdWVzdC5oZWFkZXJzLmhvc3RbMF0udmFsdWUgfSxcbiAgICBdO1xuICB9XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const PRERENDER_TOKEN = process.env.PRERENDER_TOKEN
|
|
6
|
+
? process.env.PRERENDER_TOKEN
|
|
7
|
+
: "undefined";
|
|
8
|
+
const PATH_PREFIX = process.env.PATH_PREFIX;
|
|
9
|
+
const PRERENDER_URL = process.env.PRERENDER_URL
|
|
10
|
+
? process.env.PRERENDER_URL
|
|
11
|
+
: "service.prerender.io";
|
|
12
|
+
const handler = async (event) => {
|
|
13
|
+
let request = event.Records[0].cf.request;
|
|
14
|
+
// viewer-request function will determine whether we prerender or not
|
|
15
|
+
// if we should we add prerender as our custom origin
|
|
16
|
+
if (request.headers["x-request-prerender"]) {
|
|
17
|
+
// Cloudfront will alter the request for / to /index.html
|
|
18
|
+
// since it is defined as the default root object
|
|
19
|
+
// we do not want to do this when prerendering the homepage
|
|
20
|
+
if (request.uri === `${PATH_PREFIX}/index.html`) {
|
|
21
|
+
request.uri = `${PATH_PREFIX}/`;
|
|
22
|
+
}
|
|
23
|
+
request.origin = {
|
|
24
|
+
custom: {
|
|
25
|
+
domainName: PRERENDER_URL,
|
|
26
|
+
port: 443,
|
|
27
|
+
protocol: "https",
|
|
28
|
+
readTimeout: 20,
|
|
29
|
+
keepaliveTimeout: 5,
|
|
30
|
+
sslProtocols: ["TLSv1", "TLSv1.1", "TLSv1.2"],
|
|
31
|
+
path: "/https%3A%2F%2F" + request.headers["x-prerender-host"][0].value,
|
|
32
|
+
customHeaders: {
|
|
33
|
+
"x-prerender-token": [
|
|
34
|
+
{
|
|
35
|
+
key: "x-prerender-token",
|
|
36
|
+
value: PRERENDER_TOKEN,
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
request.uri = `${PATH_PREFIX}/index.html`;
|
|
45
|
+
}
|
|
46
|
+
return request;
|
|
47
|
+
};
|
|
48
|
+
exports.handler = handler;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlcmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFxQztBQU9yQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWU7SUFDakQsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZTtJQUM3QixDQUFDLENBQUMsV0FBVyxDQUFDO0FBQ2hCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO0FBQzVDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYTtJQUM3QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhO0lBQzNCLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQztBQUVwQixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQzFCLEtBQTZCLEVBQ29CLEVBQUU7SUFDbkQsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBRTFDLHFFQUFxRTtJQUNyRSxxREFBcUQ7SUFDckQsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUU7UUFDMUMseURBQXlEO1FBQ3pELGlEQUFpRDtRQUNqRCwyREFBMkQ7UUFDM0QsSUFBSSxPQUFPLENBQUMsR0FBRyxLQUFLLEdBQUcsV0FBVyxhQUFhLEVBQUU7WUFDL0MsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFHLFdBQVcsR0FBRyxDQUFDO1NBQ2pDO1FBRUQsT0FBTyxDQUFDLE1BQU0sR0FBRztZQUNmLE1BQU0sRUFBRTtnQkFDTixVQUFVLEVBQUUsYUFBYTtnQkFDekIsSUFBSSxFQUFFLEdBQUc7Z0JBQ1QsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFdBQVcsRUFBRSxFQUFFO2dCQUNmLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO2dCQUM3QyxJQUFJLEVBQUUsaUJBQWlCLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7Z0JBQ3RFLGFBQWEsRUFBRTtvQkFDYixtQkFBbUIsRUFBRTt3QkFDbkI7NEJBQ0UsR0FBRyxFQUFFLG1CQUFtQjs0QkFDeEIsS0FBSyxFQUFFLGVBQWU7eUJBQ3ZCO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0tBQ0g7U0FBTTtRQUNMLE9BQU8sQ0FBQyxHQUFHLEdBQUcsR0FBRyxXQUFXLGFBQWEsQ0FBQztLQUMzQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQztBQXZDVyxRQUFBLE9BQU8sV0F1Q2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFwic291cmNlLW1hcC1zdXBwb3J0L3JlZ2lzdGVyXCI7XG5pbXBvcnQge1xuICBDbG91ZEZyb250UmVxdWVzdCxcbiAgQ2xvdWRGcm9udFJlcXVlc3RFdmVudCxcbiAgQ2xvdWRGcm9udFJlc3BvbnNlLFxufSBmcm9tIFwiYXdzLWxhbWJkYVwiO1xuXG5jb25zdCBQUkVSRU5ERVJfVE9LRU4gPSBwcm9jZXNzLmVudi5QUkVSRU5ERVJfVE9LRU5cbiAgPyBwcm9jZXNzLmVudi5QUkVSRU5ERVJfVE9LRU5cbiAgOiBcInVuZGVmaW5lZFwiO1xuY29uc3QgUEFUSF9QUkVGSVggPSBwcm9jZXNzLmVudi5QQVRIX1BSRUZJWDtcbmNvbnN0IFBSRVJFTkRFUl9VUkwgPSBwcm9jZXNzLmVudi5QUkVSRU5ERVJfVVJMXG4gID8gcHJvY2Vzcy5lbnYuUFJFUkVOREVSX1VSTFxuICA6IFwic2VydmljZS5wcmVyZW5kZXIuaW9cIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZXIgPSBhc3luYyAoXG4gIGV2ZW50OiBDbG91ZEZyb250UmVxdWVzdEV2ZW50XG4pOiBQcm9taXNlPENsb3VkRnJvbnRSZXNwb25zZSB8IENsb3VkRnJvbnRSZXF1ZXN0PiA9PiB7XG4gIGxldCByZXF1ZXN0ID0gZXZlbnQuUmVjb3Jkc1swXS5jZi5yZXF1ZXN0O1xuXG4gIC8vIHZpZXdlci1yZXF1ZXN0IGZ1bmN0aW9uIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIgd2UgcHJlcmVuZGVyIG9yIG5vdFxuICAvLyBpZiB3ZSBzaG91bGQgd2UgYWRkIHByZXJlbmRlciBhcyBvdXIgY3VzdG9tIG9yaWdpblxuICBpZiAocmVxdWVzdC5oZWFkZXJzW1wieC1yZXF1ZXN0LXByZXJlbmRlclwiXSkge1xuICAgIC8vIENsb3VkZnJvbnQgd2lsbCBhbHRlciB0aGUgcmVxdWVzdCBmb3IgLyB0byAvaW5kZXguaHRtbFxuICAgIC8vIHNpbmNlIGl0IGlzIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcm9vdCBvYmplY3RcbiAgICAvLyB3ZSBkbyBub3Qgd2FudCB0byBkbyB0aGlzIHdoZW4gcHJlcmVuZGVyaW5nIHRoZSBob21lcGFnZVxuICAgIGlmIChyZXF1ZXN0LnVyaSA9PT0gYCR7UEFUSF9QUkVGSVh9L2luZGV4Lmh0bWxgKSB7XG4gICAgICByZXF1ZXN0LnVyaSA9IGAke1BBVEhfUFJFRklYfS9gO1xuICAgIH1cblxuICAgIHJlcXVlc3Qub3JpZ2luID0ge1xuICAgICAgY3VzdG9tOiB7XG4gICAgICAgIGRvbWFpbk5hbWU6IFBSRVJFTkRFUl9VUkwsXG4gICAgICAgIHBvcnQ6IDQ0MyxcbiAgICAgICAgcHJvdG9jb2w6IFwiaHR0cHNcIixcbiAgICAgICAgcmVhZFRpbWVvdXQ6IDIwLFxuICAgICAgICBrZWVwYWxpdmVUaW1lb3V0OiA1LFxuICAgICAgICBzc2xQcm90b2NvbHM6IFtcIlRMU3YxXCIsIFwiVExTdjEuMVwiLCBcIlRMU3YxLjJcIl0sXG4gICAgICAgIHBhdGg6IFwiL2h0dHBzJTNBJTJGJTJGXCIgKyByZXF1ZXN0LmhlYWRlcnNbXCJ4LXByZXJlbmRlci1ob3N0XCJdWzBdLnZhbHVlLFxuICAgICAgICBjdXN0b21IZWFkZXJzOiB7XG4gICAgICAgICAgXCJ4LXByZXJlbmRlci10b2tlblwiOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGtleTogXCJ4LXByZXJlbmRlci10b2tlblwiLFxuICAgICAgICAgICAgICB2YWx1ZTogUFJFUkVOREVSX1RPS0VOLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJlcXVlc3QudXJpID0gYCR7UEFUSF9QUkVGSVh9L2luZGV4Lmh0bWxgO1xuICB9XG5cbiAgcmV0dXJuIHJlcXVlc3Q7XG59O1xuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const REDIRECT_HOST = process.env.REDIRECT_HOST || '';
|
|
6
|
+
const SUPPORTED_REGIONS = new RegExp(process.env.SUPPORTED_REGIONS || '');
|
|
7
|
+
const DEFAULT_REGION = process.env.DEFAULT_REGION || '';
|
|
8
|
+
const handler = async (event) => {
|
|
9
|
+
let request = event.Records[0].cf.request;
|
|
10
|
+
let redirectURL = `https://${REDIRECT_HOST}/`;
|
|
11
|
+
if (request.headers['cloudfront-viewer-country']) {
|
|
12
|
+
const countryCode = request.headers['cloudfront-viewer-country'][0].value;
|
|
13
|
+
if (SUPPORTED_REGIONS.test(countryCode)) {
|
|
14
|
+
redirectURL = `${redirectURL}${countryCode.toLowerCase()}${request.uri}`;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
redirectURL = `${redirectURL}${DEFAULT_REGION.toLowerCase()}${request.uri}`;
|
|
18
|
+
}
|
|
19
|
+
return {
|
|
20
|
+
status: '302',
|
|
21
|
+
statusDescription: 'Found',
|
|
22
|
+
headers: {
|
|
23
|
+
location: [{
|
|
24
|
+
key: 'Location',
|
|
25
|
+
value: redirectURL,
|
|
26
|
+
}],
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return request;
|
|
31
|
+
};
|
|
32
|
+
exports.handler = handler;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWRpcmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1Q0FBcUM7QUFHckMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO0FBQ3RELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxNQUFNLENBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUMxRSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsSUFBSSxFQUFFLENBQUM7QUFFakQsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLEtBQTZCLEVBQWlELEVBQUU7SUFDekcsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDO0lBRTFDLElBQUksV0FBVyxHQUFHLFdBQVcsYUFBYSxHQUFHLENBQUM7SUFDOUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUU7UUFDN0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUMxRSxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNwQyxXQUFXLEdBQUcsR0FBRyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztTQUM3RTthQUFNO1lBQ0YsV0FBVyxHQUFHLEdBQUcsV0FBVyxHQUFHLGNBQWMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7U0FDaEY7UUFFRCxPQUFPO1lBQ0YsTUFBTSxFQUFFLEtBQUs7WUFDYixpQkFBaUIsRUFBRSxPQUFPO1lBQzFCLE9BQU8sRUFBRTtnQkFDSixRQUFRLEVBQUUsQ0FBQzt3QkFDTixHQUFHLEVBQUUsVUFBVTt3QkFDZixLQUFLLEVBQUUsV0FBVztxQkFDdEIsQ0FBQzthQUNOO1NBQ0wsQ0FBQztLQUNOO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFFcEIsQ0FBQyxDQUFBO0FBMUJZLFFBQUEsT0FBTyxXQTBCbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJ3NvdXJjZS1tYXAtc3VwcG9ydC9yZWdpc3Rlcic7XG5pbXBvcnQgeyBDbG91ZEZyb250UmVxdWVzdEV2ZW50LCBDbG91ZEZyb250UmVzcG9uc2UsIENsb3VkRnJvbnRSZXF1ZXN0IH0gZnJvbSAnYXdzLWxhbWJkYSc7XG5cbmNvbnN0IFJFRElSRUNUX0hPU1QgPSBwcm9jZXNzLmVudi5SRURJUkVDVF9IT1NUIHx8ICcnO1xuY29uc3QgU1VQUE9SVEVEX1JFR0lPTlMgPSBuZXcgUmVnRXhwKCBwcm9jZXNzLmVudi5TVVBQT1JURURfUkVHSU9OUyB8fCAnJylcbmNvbnN0IERFRkFVTFRfUkVHSU9OID0gcHJvY2Vzcy5lbnYuREVGQVVMVF9SRUdJT04gfHwgJyc7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVyID0gYXN5bmMgKGV2ZW50OiBDbG91ZEZyb250UmVxdWVzdEV2ZW50KTogUHJvbWlzZTxDbG91ZEZyb250UmVzcG9uc2V8Q2xvdWRGcm9udFJlcXVlc3Q+ID0+IHtcbiAgICAgbGV0IHJlcXVlc3QgPSBldmVudC5SZWNvcmRzWzBdLmNmLnJlcXVlc3Q7XG5cbiAgICAgbGV0IHJlZGlyZWN0VVJMID0gYGh0dHBzOi8vJHtSRURJUkVDVF9IT1NUfS9gO1xuICAgICBpZiAocmVxdWVzdC5oZWFkZXJzWydjbG91ZGZyb250LXZpZXdlci1jb3VudHJ5J10pIHtcbiAgICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IHJlcXVlc3QuaGVhZGVyc1snY2xvdWRmcm9udC12aWV3ZXItY291bnRyeSddWzBdLnZhbHVlO1xuICAgICAgICAgIGlmIChTVVBQT1JURURfUkVHSU9OUy50ZXN0KGNvdW50cnlDb2RlKSkge1xuICAgICAgICAgICAgICAgcmVkaXJlY3RVUkwgPSBgJHtyZWRpcmVjdFVSTH0ke2NvdW50cnlDb2RlLnRvTG93ZXJDYXNlKCl9JHtyZXF1ZXN0LnVyaX1gO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICByZWRpcmVjdFVSTCA9IGAke3JlZGlyZWN0VVJMfSR7REVGQVVMVF9SRUdJT04udG9Mb3dlckNhc2UoKX0ke3JlcXVlc3QudXJpfWA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgIHN0YXR1czogJzMwMicsXG4gICAgICAgICAgICAgICBzdGF0dXNEZXNjcmlwdGlvbjogJ0ZvdW5kJyxcbiAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAga2V5OiAnTG9jYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZWRpcmVjdFVSTCxcbiAgICAgICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgIH1cblxuICAgICByZXR1cm4gcmVxdWVzdDtcblxufVxuIl19
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@aligent/cdk-lambda-at-edge-handlers",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "A Cloudfront Lambda@Edge handlers powered by Middy",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsc",
|
|
8
|
+
"prepublish": "tsc",
|
|
9
|
+
"watch": "tsc -w",
|
|
10
|
+
"test": "echo \"No test specified\" && exit 0"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+https://github.com/aligent/aws-cdk-constructs.git"
|
|
15
|
+
},
|
|
16
|
+
"license": "GPL-3.0-only",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/aligent/cdk-constructs/issues"
|
|
19
|
+
},
|
|
20
|
+
"homepage": "https://github.com/aligent/cdk-constructs#readme",
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@types/aws-lambda": "^8.10.77",
|
|
23
|
+
"esbuild": "0.12.15",
|
|
24
|
+
"source-map-support": "^0.5.16",
|
|
25
|
+
"axios": "^0.21.1"
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017-2022 [Luciano Mammino](https://github.com/lmammino), [will Farrell](https://github.com/willfarrell) and the [Middy team](https://github.com/middyjs/middy/graphs/contributors)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>Middy Core</h1>
|
|
3
|
+
<img alt="Middy logo" src="https://raw.githubusercontent.com/middyjs/middy/main/docs/img/middy-logo.svg"/>
|
|
4
|
+
<p><strong>Core component of the middy framework, the stylish Node.js middleware engine for AWS Lambda</strong></p>
|
|
5
|
+
<p>
|
|
6
|
+
<a href="https://www.npmjs.com/package/@middy/core?activeTab=versions">
|
|
7
|
+
<img src="https://badge.fury.io/js/%40middy%2Fcore.svg" alt="npm version" style="max-width:100%;">
|
|
8
|
+
</a>
|
|
9
|
+
<a href="https://packagephobia.com/result?p=@middy/core">
|
|
10
|
+
<img src="https://packagephobia.com/badge?p=@middy/core" alt="npm install size" style="max-width:100%;">
|
|
11
|
+
</a>
|
|
12
|
+
<a href="https://github.com/middyjs/middy/actions/workflows/tests.yml">
|
|
13
|
+
<img src="https://github.com/middyjs/middy/actions/workflows/tests.yml/badge.svg?branch=main&event=push" alt="GitHub Actions CI status badge" style="max-width:100%;">
|
|
14
|
+
</a>
|
|
15
|
+
<br/>
|
|
16
|
+
<a href="https://standardjs.com/">
|
|
17
|
+
<img src="https://img.shields.io/badge/code_style-standard-brightgreen.svg" alt="Standard Code Style" style="max-width:100%;">
|
|
18
|
+
</a>
|
|
19
|
+
<a href="https://snyk.io/test/github/middyjs/middy">
|
|
20
|
+
<img src="https://snyk.io/test/github/middyjs/middy/badge.svg" alt="Known Vulnerabilities" data-canonical-src="https://snyk.io/test/github/middyjs/middy" style="max-width:100%;">
|
|
21
|
+
</a>
|
|
22
|
+
<a href="https://lgtm.com/projects/g/middyjs/middy/context:javascript">
|
|
23
|
+
<img src="https://img.shields.io/lgtm/grade/javascript/g/middyjs/middy.svg?logo=lgtm&logoWidth=18" alt="Language grade: JavaScript" style="max-width:100%;">
|
|
24
|
+
</a>
|
|
25
|
+
<a href="https://bestpractices.coreinfrastructure.org/projects/5280">
|
|
26
|
+
<img src="https://bestpractices.coreinfrastructure.org/projects/5280/badge" alt="Core Infrastructure Initiative (CII) Best Practices" style="max-width:100%;">
|
|
27
|
+
</a>
|
|
28
|
+
<br/>
|
|
29
|
+
<a href="https://gitter.im/middyjs/Lobby">
|
|
30
|
+
<img src="https://badges.gitter.im/gitterHQ/gitter.svg" alt="Chat on Gitter" style="max-width:100%;">
|
|
31
|
+
</a>
|
|
32
|
+
<a href="https://stackoverflow.com/questions/tagged/middy?sort=Newest&uqlId=35052">
|
|
33
|
+
<img src="https://img.shields.io/badge/StackOverflow-[middy]-yellow" alt="Ask questions on StackOverflow" style="max-width:100%;">
|
|
34
|
+
</a>
|
|
35
|
+
</p>
|
|
36
|
+
<p>You can read the documentation at: <a href="https://middy.js.org">https://middy.js.org</a></p>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
To install middy you can use NPM:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install --save @middy/core
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
## Documentation and examples
|
|
50
|
+
|
|
51
|
+
For documentation and examples, refers to the main [Middy monorepo on GitHub](https://github.com/middyjs/middy) or [Middy official website](https://middy.js.org).
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
## Contributing
|
|
55
|
+
|
|
56
|
+
Everyone is very welcome to contribute to this repository. Feel free to [raise issues](https://github.com/middyjs/middy/issues) or to [submit Pull Requests](https://github.com/middyjs/middy/pulls).
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## License
|
|
60
|
+
|
|
61
|
+
Licensed under [MIT License](LICENSE). Copyright (c) 2017-2022 [Luciano Mammino](https://github.com/lmammino), [will Farrell](https://github.com/willfarrell), and the [Middy team](https://github.com/middyjs/middy/graphs/contributors).
|
|
62
|
+
|
|
63
|
+
<a href="https://app.fossa.io/projects/git%2Bgithub.com%2Fmiddyjs%2Fmiddy?ref=badge_large">
|
|
64
|
+
<img src="https://app.fossa.io/api/projects/git%2Bgithub.com%2Fmiddyjs%2Fmiddy.svg?type=large" alt="FOSSA Status" style="max-width:100%;">
|
|
65
|
+
</a>
|