@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.
Files changed (150) hide show
  1. package/lib/handlers/cache-control.ts +7 -20
  2. package/lib/handlers/error-response.ts +8 -51
  3. package/lib/handlers/node_modules/.package-lock.json +32 -3
  4. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/index.d.ts +6 -0
  5. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/index.js +14 -0
  6. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/cache-control.d.ts +3 -0
  7. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/cache-control.js +24 -0
  8. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/error-response.d.ts +3 -0
  9. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/error-response.js +50 -0
  10. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender-check.d.ts +3 -0
  11. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender-check.js +28 -0
  12. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender.d.ts +3 -0
  13. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/prerender.js +49 -0
  14. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/redirect.d.ts +3 -0
  15. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/lib/redirect.js +33 -0
  16. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/package.json +27 -0
  17. package/lib/handlers/node_modules/@aligent/cdk-lambda-at-edge-handlers/tsconfig.json +3 -0
  18. package/lib/handlers/node_modules/@middy/core/LICENSE +21 -0
  19. package/lib/handlers/node_modules/@middy/core/README.md +65 -0
  20. package/lib/handlers/node_modules/@middy/core/index.cjs +207 -0
  21. package/lib/handlers/node_modules/@middy/core/index.d.ts +91 -0
  22. package/lib/handlers/node_modules/@middy/core/index.js +199 -0
  23. package/lib/handlers/node_modules/@middy/core/package.json +65 -0
  24. package/lib/handlers/node_modules/@types/node/README.md +4 -4
  25. package/lib/handlers/node_modules/@types/node/assert/strict.d.ts +5 -1
  26. package/lib/handlers/node_modules/@types/node/assert.d.ts +904 -67
  27. package/lib/handlers/node_modules/@types/node/async_hooks.d.ts +371 -96
  28. package/lib/handlers/node_modules/@types/node/buffer.d.ts +2199 -25
  29. package/lib/handlers/node_modules/@types/node/child_process.d.ts +1151 -308
  30. package/lib/handlers/node_modules/@types/node/cluster.d.ts +356 -208
  31. package/lib/handlers/node_modules/@types/node/console.d.ts +324 -45
  32. package/lib/handlers/node_modules/@types/node/constants.d.ts +8 -3
  33. package/lib/handlers/node_modules/@types/node/crypto.d.ts +3230 -846
  34. package/lib/handlers/node_modules/@types/node/dgram.d.ts +478 -74
  35. package/lib/handlers/node_modules/@types/node/diagnostics_channel.d.ts +153 -0
  36. package/lib/handlers/node_modules/@types/node/dns/promises.d.ts +308 -35
  37. package/lib/handlers/node_modules/@types/node/dns.d.ts +444 -107
  38. package/lib/handlers/node_modules/@types/node/dom-events.d.ts +126 -0
  39. package/lib/handlers/node_modules/@types/node/domain.d.ts +162 -16
  40. package/lib/handlers/node_modules/@types/node/events.d.ts +624 -39
  41. package/lib/handlers/node_modules/@types/node/fs/promises.d.ts +911 -365
  42. package/lib/handlers/node_modules/@types/node/fs.d.ts +2611 -978
  43. package/lib/handlers/node_modules/@types/node/globals.d.ts +66 -421
  44. package/lib/handlers/node_modules/@types/node/globals.global.d.ts +1 -1
  45. package/lib/handlers/node_modules/@types/node/http.d.ts +1416 -199
  46. package/lib/handlers/node_modules/@types/node/http2.d.ts +1688 -530
  47. package/lib/handlers/node_modules/@types/node/https.d.ts +532 -26
  48. package/lib/handlers/node_modules/@types/node/index.d.ts +92 -16
  49. package/lib/handlers/node_modules/@types/node/inspector.d.ts +511 -811
  50. package/lib/handlers/node_modules/@types/node/module.d.ts +75 -13
  51. package/lib/handlers/node_modules/@types/node/net.d.ts +710 -167
  52. package/lib/handlers/node_modules/@types/node/os.d.ts +252 -25
  53. package/lib/handlers/node_modules/@types/node/package.json +30 -25
  54. package/lib/handlers/node_modules/@types/node/path.d.ts +59 -31
  55. package/lib/handlers/node_modules/@types/node/perf_hooks.d.ts +420 -105
  56. package/lib/handlers/node_modules/@types/node/process.d.ts +1249 -228
  57. package/lib/handlers/node_modules/@types/node/punycode.d.ts +67 -25
  58. package/lib/handlers/node_modules/@types/node/querystring.d.ts +113 -10
  59. package/lib/handlers/node_modules/@types/node/readline/promises.d.ts +143 -0
  60. package/lib/handlers/node_modules/@types/node/readline.d.ts +570 -109
  61. package/lib/handlers/node_modules/@types/node/repl.d.ts +154 -125
  62. package/lib/handlers/node_modules/@types/node/stream/consumers.d.ts +12 -0
  63. package/lib/handlers/node_modules/@types/node/stream/promises.d.ts +18 -43
  64. package/lib/handlers/node_modules/@types/node/stream/web.d.ts +330 -0
  65. package/lib/handlers/node_modules/@types/node/stream.d.ts +1117 -248
  66. package/lib/handlers/node_modules/@types/node/string_decoder.d.ts +60 -0
  67. package/lib/handlers/node_modules/@types/node/test.d.ts +446 -0
  68. package/lib/handlers/node_modules/@types/node/timers/promises.d.ts +81 -9
  69. package/lib/handlers/node_modules/@types/node/timers.d.ts +84 -17
  70. package/lib/handlers/node_modules/@types/node/tls.d.ts +510 -275
  71. package/lib/handlers/node_modules/@types/node/trace_events.d.ts +120 -10
  72. package/lib/handlers/node_modules/@types/node/ts4.8/assert/strict.d.ts +8 -0
  73. package/lib/handlers/node_modules/@types/node/ts4.8/assert.d.ts +961 -0
  74. package/lib/handlers/node_modules/@types/node/ts4.8/async_hooks.d.ts +501 -0
  75. package/lib/handlers/node_modules/@types/node/ts4.8/buffer.d.ts +2259 -0
  76. package/lib/handlers/node_modules/@types/node/ts4.8/child_process.d.ts +1369 -0
  77. package/lib/handlers/node_modules/@types/node/ts4.8/cluster.d.ts +410 -0
  78. package/lib/handlers/node_modules/@types/node/ts4.8/console.d.ts +412 -0
  79. package/lib/handlers/node_modules/@types/node/ts4.8/constants.d.ts +18 -0
  80. package/lib/handlers/node_modules/@types/node/ts4.8/crypto.d.ts +3964 -0
  81. package/lib/handlers/node_modules/@types/node/ts4.8/dgram.d.ts +545 -0
  82. package/lib/handlers/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +153 -0
  83. package/lib/handlers/node_modules/@types/node/ts4.8/dns/promises.d.ts +370 -0
  84. package/lib/handlers/node_modules/@types/node/ts4.8/dns.d.ts +659 -0
  85. package/lib/handlers/node_modules/@types/node/ts4.8/dom-events.d.ts +126 -0
  86. package/lib/handlers/node_modules/@types/node/ts4.8/domain.d.ts +170 -0
  87. package/lib/handlers/node_modules/@types/node/ts4.8/events.d.ts +678 -0
  88. package/lib/handlers/node_modules/@types/node/ts4.8/fs/promises.d.ts +1138 -0
  89. package/lib/handlers/node_modules/@types/node/ts4.8/fs.d.ts +3872 -0
  90. package/lib/handlers/node_modules/@types/node/ts4.8/globals.d.ts +294 -0
  91. package/lib/handlers/node_modules/@types/node/ts4.8/globals.global.d.ts +1 -0
  92. package/lib/handlers/node_modules/@types/node/ts4.8/http.d.ts +1651 -0
  93. package/lib/handlers/node_modules/@types/node/ts4.8/http2.d.ts +2134 -0
  94. package/lib/handlers/node_modules/@types/node/ts4.8/https.d.ts +542 -0
  95. package/lib/handlers/node_modules/@types/node/ts4.8/index.d.ts +88 -0
  96. package/lib/handlers/node_modules/@types/node/ts4.8/inspector.d.ts +2741 -0
  97. package/lib/handlers/node_modules/@types/node/ts4.8/module.d.ts +114 -0
  98. package/lib/handlers/node_modules/@types/node/ts4.8/net.d.ts +869 -0
  99. package/lib/handlers/node_modules/@types/node/ts4.8/os.d.ts +466 -0
  100. package/lib/handlers/node_modules/@types/node/ts4.8/path.d.ts +191 -0
  101. package/lib/handlers/node_modules/@types/node/ts4.8/perf_hooks.d.ts +625 -0
  102. package/lib/handlers/node_modules/@types/node/ts4.8/process.d.ts +1482 -0
  103. package/lib/handlers/node_modules/@types/node/ts4.8/punycode.d.ts +117 -0
  104. package/lib/handlers/node_modules/@types/node/ts4.8/querystring.d.ts +131 -0
  105. package/lib/handlers/node_modules/@types/node/ts4.8/readline/promises.d.ts +143 -0
  106. package/lib/handlers/node_modules/@types/node/ts4.8/readline.d.ts +653 -0
  107. package/lib/handlers/node_modules/@types/node/ts4.8/repl.d.ts +424 -0
  108. package/lib/handlers/node_modules/@types/node/ts4.8/stream/consumers.d.ts +12 -0
  109. package/lib/handlers/node_modules/@types/node/ts4.8/stream/promises.d.ts +42 -0
  110. package/lib/handlers/node_modules/@types/node/ts4.8/stream/web.d.ts +330 -0
  111. package/lib/handlers/node_modules/@types/node/ts4.8/stream.d.ts +1340 -0
  112. package/lib/handlers/node_modules/@types/node/ts4.8/string_decoder.d.ts +67 -0
  113. package/lib/handlers/node_modules/@types/node/ts4.8/test.d.ts +446 -0
  114. package/lib/handlers/node_modules/@types/node/ts4.8/timers/promises.d.ts +93 -0
  115. package/lib/handlers/node_modules/@types/node/ts4.8/timers.d.ts +94 -0
  116. package/lib/handlers/node_modules/@types/node/ts4.8/tls.d.ts +1028 -0
  117. package/lib/handlers/node_modules/@types/node/ts4.8/trace_events.d.ts +171 -0
  118. package/lib/handlers/node_modules/@types/node/ts4.8/tty.d.ts +206 -0
  119. package/lib/handlers/node_modules/@types/node/ts4.8/url.d.ts +897 -0
  120. package/lib/handlers/node_modules/@types/node/ts4.8/util.d.ts +1926 -0
  121. package/lib/handlers/node_modules/@types/node/ts4.8/v8.d.ts +396 -0
  122. package/lib/handlers/node_modules/@types/node/ts4.8/vm.d.ts +509 -0
  123. package/lib/handlers/node_modules/@types/node/ts4.8/wasi.d.ts +158 -0
  124. package/lib/handlers/node_modules/@types/node/ts4.8/worker_threads.d.ts +689 -0
  125. package/lib/handlers/node_modules/@types/node/ts4.8/zlib.d.ts +517 -0
  126. package/lib/handlers/node_modules/@types/node/tty.d.ts +163 -23
  127. package/lib/handlers/node_modules/@types/node/url.d.ts +825 -44
  128. package/lib/handlers/node_modules/@types/node/util.d.ts +1842 -72
  129. package/lib/handlers/node_modules/@types/node/v8.d.ts +276 -78
  130. package/lib/handlers/node_modules/@types/node/vm.d.ts +410 -53
  131. package/lib/handlers/node_modules/@types/node/wasi.d.ts +102 -30
  132. package/lib/handlers/node_modules/@types/node/worker_threads.d.ts +559 -152
  133. package/lib/handlers/node_modules/@types/node/zlib.d.ts +234 -78
  134. package/lib/handlers/node_modules/esbuild/README.md +3 -0
  135. package/lib/handlers/node_modules/esbuild/bin/esbuild +0 -0
  136. package/lib/handlers/node_modules/esbuild/install.js +256 -0
  137. package/lib/handlers/node_modules/esbuild/lib/main.d.ts +397 -0
  138. package/lib/handlers/node_modules/esbuild/lib/main.js +1939 -0
  139. package/lib/handlers/node_modules/esbuild/package.json +15 -0
  140. package/lib/handlers/package-lock.json +62 -6
  141. package/lib/handlers/package.json +6 -1
  142. package/lib/handlers/prerender-check.ts +8 -27
  143. package/lib/handlers/prerender.ts +8 -43
  144. package/package.json +1 -1
  145. package/lib/handlers/node_modules/@types/node/base.d.ts +0 -19
  146. package/lib/handlers/node_modules/@types/node/diagnostic_channel.d.ts +0 -34
  147. package/lib/handlers/node_modules/@types/node/ts3.6/assert.d.ts +0 -98
  148. package/lib/handlers/node_modules/@types/node/ts3.6/base.d.ts +0 -68
  149. package/lib/handlers/node_modules/@types/node/ts3.6/index.d.ts +0 -7
  150. package/lib/handlers/node_modules/@types/node/util/types.d.ts +0 -53
@@ -1,21 +1,8 @@
1
- import 'source-map-support/register';
2
- import { CloudFrontResponseEvent, CloudFrontResponse } from 'aws-lambda';
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
- if (response.headers[`${cacheKey}`]) {
13
- response.headers['Cache-Control'] = [
14
- {
15
- key: 'Cache-Control',
16
- value: `max-age=${cacheMaxAge}`
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 'source-map-support/register';
2
- import { CloudFrontRequest, CloudFrontResponseEvent, CloudFrontResponse } from 'aws-lambda';
3
- import axios from "axios";
4
- import { URL } from 'url';
5
- import * as https from 'https';
6
-
7
- const FRONTEND_HOST = process.env.FRONTEND_HOST;
8
- const PATH_PREFIX = process.env.PATH_PREFIX;
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": "15.12.4",
13
- "resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.4.tgz",
14
- "integrity": "sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA=="
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,3 @@
1
+ import 'source-map-support/register';
2
+ import { CloudFrontResponseEvent, CloudFrontResponse } from 'aws-lambda';
3
+ export declare const handler: (event: CloudFrontResponseEvent) => Promise<CloudFrontResponse>;
@@ -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,3 @@
1
+ import "source-map-support/register";
2
+ import { CloudFrontRequest, CloudFrontResponseEvent, CloudFrontResponse } from "aws-lambda";
3
+ export declare const handler: (event: CloudFrontResponseEvent) => Promise<CloudFrontResponse | CloudFrontRequest>;
@@ -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,3 @@
1
+ import "source-map-support/register";
2
+ import { CloudFrontRequest, CloudFrontRequestEvent } from "aws-lambda";
3
+ export declare const handler: (event: CloudFrontRequestEvent) => Promise<CloudFrontRequest>;
@@ -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,3 @@
1
+ import "source-map-support/register";
2
+ import { CloudFrontRequest, CloudFrontRequestEvent, CloudFrontResponse } from "aws-lambda";
3
+ export declare const handler: (event: CloudFrontRequestEvent) => Promise<CloudFrontResponse | CloudFrontRequest>;
@@ -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,3 @@
1
+ import 'source-map-support/register';
2
+ import { CloudFrontRequestEvent, CloudFrontResponse, CloudFrontRequest } from 'aws-lambda';
3
+ export declare const handler: (event: CloudFrontRequestEvent) => Promise<CloudFrontResponse | CloudFrontRequest>;
@@ -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,3 @@
1
+ {
2
+ "extends": "../../tsconfig.json"
3
+ }
@@ -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>