@aligent/cdk-prerender-proxy 2.0.2 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { PrerenderLambda, PrerenderLambdaProps } from "./lib/prerender-lambda-construct";
2
+ import { PrerenderFunction, PrerenderFunctionOptions } from "./lib/prerender-construct";
3
+ import { PrerenderCheckFunction } from "./lib/prerender-check-construct";
4
+ import { ErrorResponseFunction, ErrorResponseFunctionOptions } from "./lib/error-response-construct";
5
+ import { CloudFrontCacheControl, CloudFrontCacheControlOptions } from "./lib/prerender-cf-cache-control-construct";
6
+ export { PrerenderLambda, PrerenderFunction, PrerenderCheckFunction, ErrorResponseFunction, CloudFrontCacheControl, CloudFrontCacheControlOptions, ErrorResponseFunctionOptions, PrerenderFunctionOptions, PrerenderLambdaProps, };
@@ -0,0 +1,11 @@
1
+ import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
2
+ import { IVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { Construct } from "constructs";
4
+ export interface ErrorResponseFunctionOptions {
5
+ pathPrefix?: string;
6
+ }
7
+ export declare class ErrorResponseFunction extends Construct {
8
+ readonly edgeFunction: EdgeFunction;
9
+ constructor(scope: Construct, id: string, options: ErrorResponseFunctionOptions);
10
+ getFunctionVersion(): IVersion;
11
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorResponseFunction = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const experimental_1 = require("aws-cdk-lib/aws-cloudfront/lib/experimental");
6
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
7
+ const constructs_1 = require("constructs");
8
+ const path_1 = require("path");
9
+ const cdk_esbuild_1 = require("@aligent/cdk-esbuild");
10
+ class ErrorResponseFunction extends constructs_1.Construct {
11
+ constructor(scope, id, options) {
12
+ var _a;
13
+ super(scope, id);
14
+ const command = [
15
+ "sh",
16
+ "-c",
17
+ 'echo "Docker build not supported. Please install esbuild."',
18
+ ];
19
+ this.edgeFunction = new experimental_1.EdgeFunction(this, `${id}-error-response-fn`, {
20
+ code: aws_lambda_1.Code.fromAsset((0, path_1.join)(__dirname, "handlers"), {
21
+ assetHashType: aws_cdk_lib_1.AssetHashType.OUTPUT,
22
+ bundling: {
23
+ command,
24
+ image: aws_cdk_lib_1.DockerImage.fromRegistry("busybox"),
25
+ local: new cdk_esbuild_1.Esbuild({
26
+ entryPoints: [(0, path_1.join)(__dirname, "handlers/error-response.ts")],
27
+ define: {
28
+ "process.env.PATH_PREFIX": (_a = options.pathPrefix) !== null && _a !== void 0 ? _a : "",
29
+ },
30
+ }),
31
+ },
32
+ }),
33
+ runtime: aws_lambda_1.Runtime.NODEJS_18_X,
34
+ handler: "error-response.handler",
35
+ });
36
+ }
37
+ getFunctionVersion() {
38
+ return aws_lambda_1.Version.fromVersionArn(this, "error-response-fn-version", this.edgeFunction.currentVersion.edgeArn);
39
+ }
40
+ }
41
+ exports.ErrorResponseFunction = ErrorResponseFunction;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCw4RUFBMkU7QUFDM0UsdURBQTBFO0FBQzFFLDJDQUF1QztBQUN2QywrQkFBNEI7QUFDNUIsc0RBQStDO0FBTS9DLE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFHbEQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsT0FBcUM7O1FBRXJDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJO1lBQ0osSUFBSTtZQUNKLDREQUE0RDtTQUM3RCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxvQkFBb0IsRUFBRTtZQUNwRSxJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO2dCQUNuQyxRQUFRLEVBQUU7b0JBQ1IsT0FBTztvQkFDUCxLQUFLLEVBQUUseUJBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUMxQyxLQUFLLEVBQUUsSUFBSSxxQkFBTyxDQUFDO3dCQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQzt3QkFDNUQsTUFBTSxFQUFFOzRCQUNOLHlCQUF5QixFQUFFLE1BQUEsT0FBTyxDQUFDLFVBQVUsbUNBQUksRUFBRTt5QkFDcEQ7cUJBQ0YsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSx3QkFBd0I7U0FDbEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixPQUFPLG9CQUFPLENBQUMsY0FBYyxDQUMzQixJQUFJLEVBQ0osMkJBQTJCLEVBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTFDRCxzREEwQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3NldEhhc2hUeXBlLCBEb2NrZXJJbWFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgRWRnZUZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250L2xpYi9leHBlcmltZW50YWxcIjtcbmltcG9ydCB7IENvZGUsIElWZXJzaW9uLCBSdW50aW1lLCBWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEVzYnVpbGQgfSBmcm9tIFwiQGFsaWdlbnQvY2RrLWVzYnVpbGRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlRnVuY3Rpb25PcHRpb25zIHtcbiAgcGF0aFByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yUmVzcG9uc2VGdW5jdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGVkZ2VGdW5jdGlvbjogRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBFcnJvclJlc3BvbnNlRnVuY3Rpb25PcHRpb25zXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb21tYW5kID0gW1xuICAgICAgXCJzaFwiLFxuICAgICAgXCItY1wiLFxuICAgICAgJ2VjaG8gXCJEb2NrZXIgYnVpbGQgbm90IHN1cHBvcnRlZC4gUGxlYXNlIGluc3RhbGwgZXNidWlsZC5cIicsXG4gICAgXTtcblxuICAgIHRoaXMuZWRnZUZ1bmN0aW9uID0gbmV3IEVkZ2VGdW5jdGlvbih0aGlzLCBgJHtpZH0tZXJyb3ItcmVzcG9uc2UtZm5gLCB7XG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgXCJoYW5kbGVyc1wiKSwge1xuICAgICAgICBhc3NldEhhc2hUeXBlOiBBc3NldEhhc2hUeXBlLk9VVFBVVCxcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIGltYWdlOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJidXN5Ym94XCIpLFxuICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICBlbnRyeVBvaW50czogW2pvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzL2Vycm9yLXJlc3BvbnNlLnRzXCIpXSxcbiAgICAgICAgICAgIGRlZmluZToge1xuICAgICAgICAgICAgICBcInByb2Nlc3MuZW52LlBBVEhfUFJFRklYXCI6IG9wdGlvbnMucGF0aFByZWZpeCA/PyBcIlwiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgIGhhbmRsZXI6IFwiZXJyb3ItcmVzcG9uc2UuaGFuZGxlclwiLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bmN0aW9uVmVyc2lvbigpOiBJVmVyc2lvbiB7XG4gICAgcmV0dXJuIFZlcnNpb24uZnJvbVZlcnNpb25Bcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJlcnJvci1yZXNwb25zZS1mbi12ZXJzaW9uXCIsXG4gICAgICB0aGlzLmVkZ2VGdW5jdGlvbi5jdXJyZW50VmVyc2lvbi5lZGdlQXJuXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,12 @@
1
+ import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
2
+ import { IVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { Construct } from "constructs";
4
+ export interface CloudFrontCacheControlOptions {
5
+ cacheKey?: string;
6
+ maxAge?: number;
7
+ }
8
+ export declare class CloudFrontCacheControl extends Construct {
9
+ readonly edgeFunction: EdgeFunction;
10
+ constructor(scope: Construct, id: string, options?: CloudFrontCacheControlOptions);
11
+ getFunctionVersion(): IVersion;
12
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CloudFrontCacheControl = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const experimental_1 = require("aws-cdk-lib/aws-cloudfront/lib/experimental");
6
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
7
+ const constructs_1 = require("constructs");
8
+ const path_1 = require("path");
9
+ const cdk_esbuild_1 = require("@aligent/cdk-esbuild");
10
+ class CloudFrontCacheControl extends constructs_1.Construct {
11
+ constructor(scope, id, options) {
12
+ var _a, _b;
13
+ super(scope, id);
14
+ const command = [
15
+ "sh",
16
+ "-c",
17
+ 'echo "Docker build not supported. Please install esbuild."',
18
+ ];
19
+ this.edgeFunction = new experimental_1.EdgeFunction(this, `${id}-cache-control-fn`, {
20
+ code: aws_lambda_1.Code.fromAsset((0, path_1.join)(__dirname, "handlers"), {
21
+ assetHashType: aws_cdk_lib_1.AssetHashType.OUTPUT,
22
+ bundling: {
23
+ command,
24
+ image: aws_cdk_lib_1.DockerImage.fromRegistry("busybox"),
25
+ local: new cdk_esbuild_1.Esbuild({
26
+ entryPoints: [(0, path_1.join)(__dirname, "handlers/cache-control.ts")],
27
+ define: {
28
+ "process.env.PRERENDER_CACHE_KEY": (_a = options === null || options === void 0 ? void 0 : options.cacheKey) !== null && _a !== void 0 ? _a : "x-prerender-requestid",
29
+ "process.env.PRERENDER_CACHE_MAX_AGE": (_b = String(options === null || options === void 0 ? void 0 : options.maxAge)) !== null && _b !== void 0 ? _b : "0",
30
+ },
31
+ }),
32
+ },
33
+ }),
34
+ runtime: aws_lambda_1.Runtime.NODEJS_18_X,
35
+ handler: "cache-control.handler",
36
+ });
37
+ }
38
+ getFunctionVersion() {
39
+ return aws_lambda_1.Version.fromVersionArn(this, "cache-control-fn-version", this.edgeFunction.currentVersion.edgeArn);
40
+ }
41
+ }
42
+ exports.CloudFrontCacheControl = CloudFrontCacheControl;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCw4RUFBMkU7QUFDM0UsdURBQTBFO0FBQzFFLDJDQUF1QztBQUN2QywrQkFBNEI7QUFDNUIsc0RBQStDO0FBTy9DLE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7SUFHbkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsT0FBdUM7O1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJO1lBQ0osSUFBSTtZQUNKLDREQUE0RDtTQUM3RCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDJCQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxtQkFBbUIsRUFBRTtZQUNuRSxJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO2dCQUNuQyxRQUFRLEVBQUU7b0JBQ1IsT0FBTztvQkFDUCxLQUFLLEVBQUUseUJBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUMxQyxLQUFLLEVBQUUsSUFBSSxxQkFBTyxDQUFDO3dCQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsMkJBQTJCLENBQUMsQ0FBQzt3QkFDM0QsTUFBTSxFQUFFOzRCQUNOLGlDQUFpQyxFQUMvQixNQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxRQUFRLG1DQUFJLHVCQUF1Qjs0QkFDOUMscUNBQXFDLEVBQ25DLE1BQUEsTUFBTSxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUMsbUNBQUksR0FBRzt5QkFDakM7cUJBQ0YsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSx1QkFBdUI7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixPQUFPLG9CQUFPLENBQUMsY0FBYyxDQUMzQixJQUFJLEVBQ0osMEJBQTBCLEVBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTdDRCx3REE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3NldEhhc2hUeXBlLCBEb2NrZXJJbWFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgRWRnZUZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250L2xpYi9leHBlcmltZW50YWxcIjtcbmltcG9ydCB7IENvZGUsIElWZXJzaW9uLCBSdW50aW1lLCBWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEVzYnVpbGQgfSBmcm9tIFwiQGFsaWdlbnQvY2RrLWVzYnVpbGRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucyB7XG4gIGNhY2hlS2V5Pzogc3RyaW5nO1xuICBtYXhBZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250Q2FjaGVDb250cm9sIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBFZGdlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAgIFwic2hcIixcbiAgICAgIFwiLWNcIixcbiAgICAgICdlY2hvIFwiRG9ja2VyIGJ1aWxkIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSBpbnN0YWxsIGVzYnVpbGQuXCInLFxuICAgIF07XG5cbiAgICB0aGlzLmVkZ2VGdW5jdGlvbiA9IG5ldyBFZGdlRnVuY3Rpb24odGhpcywgYCR7aWR9LWNhY2hlLWNvbnRyb2wtZm5gLCB7XG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgXCJoYW5kbGVyc1wiKSwge1xuICAgICAgICBhc3NldEhhc2hUeXBlOiBBc3NldEhhc2hUeXBlLk9VVFBVVCxcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIGltYWdlOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJidXN5Ym94XCIpLFxuICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICBlbnRyeVBvaW50czogW2pvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzL2NhY2hlLWNvbnRyb2wudHNcIildLFxuICAgICAgICAgICAgZGVmaW5lOiB7XG4gICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX0tFWVwiOlxuICAgICAgICAgICAgICAgIG9wdGlvbnM/LmNhY2hlS2V5ID8/IFwieC1wcmVyZW5kZXItcmVxdWVzdGlkXCIsXG4gICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX01BWF9BR0VcIjpcbiAgICAgICAgICAgICAgICBTdHJpbmcob3B0aW9ucz8ubWF4QWdlKSA/PyBcIjBcIixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICBoYW5kbGVyOiBcImNhY2hlLWNvbnRyb2wuaGFuZGxlclwiLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bmN0aW9uVmVyc2lvbigpOiBJVmVyc2lvbiB7XG4gICAgcmV0dXJuIFZlcnNpb24uZnJvbVZlcnNpb25Bcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJjYWNoZS1jb250cm9sLWZuLXZlcnNpb25cIixcbiAgICAgIHRoaXMuZWRnZUZ1bmN0aW9uLmN1cnJlbnRWZXJzaW9uLmVkZ2VBcm5cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
2
+ import { IVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { Construct } from "constructs";
4
+ export declare class PrerenderCheckFunction extends Construct {
5
+ readonly edgeFunction: EdgeFunction;
6
+ constructor(scope: Construct, id: string);
7
+ getFunctionVersion(): IVersion;
8
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrerenderCheckFunction = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const experimental_1 = require("aws-cdk-lib/aws-cloudfront/lib/experimental");
6
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
7
+ const constructs_1 = require("constructs");
8
+ const path_1 = require("path");
9
+ const cdk_esbuild_1 = require("@aligent/cdk-esbuild");
10
+ class PrerenderCheckFunction extends constructs_1.Construct {
11
+ constructor(scope, id) {
12
+ super(scope, id);
13
+ const command = [
14
+ "sh",
15
+ "-c",
16
+ 'echo "Docker build not supported. Please install esbuild."',
17
+ ];
18
+ this.edgeFunction = new experimental_1.EdgeFunction(this, `${id}-prerender-check-fn`, {
19
+ code: aws_lambda_1.Code.fromAsset((0, path_1.join)(__dirname, "handlers"), {
20
+ assetHashType: aws_cdk_lib_1.AssetHashType.OUTPUT,
21
+ bundling: {
22
+ command,
23
+ image: aws_cdk_lib_1.DockerImage.fromRegistry("busybox"),
24
+ local: new cdk_esbuild_1.Esbuild({
25
+ entryPoints: [(0, path_1.join)(__dirname, "handlers/prerender-check.ts")],
26
+ }),
27
+ },
28
+ }),
29
+ runtime: aws_lambda_1.Runtime.NODEJS_18_X,
30
+ handler: "prerender-check.handler",
31
+ });
32
+ }
33
+ getFunctionVersion() {
34
+ return aws_lambda_1.Version.fromVersionArn(this, "prerender-check-fn-version", this.edgeFunction.currentVersion.edgeArn);
35
+ }
36
+ }
37
+ exports.PrerenderCheckFunction = PrerenderCheckFunction;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNoZWNrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jaGVjay1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlEO0FBQ3pELDhFQUEyRTtBQUMzRSx1REFBMEU7QUFDMUUsMkNBQXVDO0FBQ3ZDLCtCQUE0QjtBQUM1QixzREFBK0M7QUFFL0MsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQUduRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLElBQUk7WUFDSiw0REFBNEQ7U0FDN0QsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwyQkFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUscUJBQXFCLEVBQUU7WUFDckUsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDaEQsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTtnQkFDbkMsUUFBUSxFQUFFO29CQUNSLE9BQU87b0JBQ1AsS0FBSyxFQUFFLHlCQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztvQkFDMUMsS0FBSyxFQUFFLElBQUkscUJBQU8sQ0FBQzt3QkFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLDZCQUE2QixDQUFDLENBQUM7cUJBQzlELENBQUM7aUJBQ0g7YUFDRixDQUFDO1lBQ0YsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixPQUFPLEVBQUUseUJBQXlCO1NBQ25DLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxvQkFBTyxDQUFDLGNBQWMsQ0FDM0IsSUFBSSxFQUNKLDRCQUE0QixFQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFuQ0Qsd0RBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgRG9ja2VySW1hZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEVkZ2VGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZXhwZXJpbWVudGFsXCI7XG5pbXBvcnQgeyBDb2RlLCBJVmVyc2lvbiwgUnVudGltZSwgVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBFc2J1aWxkIH0gZnJvbSBcIkBhbGlnZW50L2Nkay1lc2J1aWxkXCI7XG5cbmV4cG9ydCBjbGFzcyBQcmVyZW5kZXJDaGVja0Z1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBFZGdlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb21tYW5kID0gW1xuICAgICAgXCJzaFwiLFxuICAgICAgXCItY1wiLFxuICAgICAgJ2VjaG8gXCJEb2NrZXIgYnVpbGQgbm90IHN1cHBvcnRlZC4gUGxlYXNlIGluc3RhbGwgZXNidWlsZC5cIicsXG4gICAgXTtcblxuICAgIHRoaXMuZWRnZUZ1bmN0aW9uID0gbmV3IEVkZ2VGdW5jdGlvbih0aGlzLCBgJHtpZH0tcHJlcmVuZGVyLWNoZWNrLWZuYCwge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoam9pbihfX2Rpcm5hbWUsIFwiaGFuZGxlcnNcIiksIHtcbiAgICAgICAgYXNzZXRIYXNoVHlwZTogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgY29tbWFuZCxcbiAgICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYnVzeWJveFwiKSxcbiAgICAgICAgICBsb2NhbDogbmV3IEVzYnVpbGQoe1xuICAgICAgICAgICAgZW50cnlQb2ludHM6IFtqb2luKF9fZGlybmFtZSwgXCJoYW5kbGVycy9wcmVyZW5kZXItY2hlY2sudHNcIildLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgaGFuZGxlcjogXCJwcmVyZW5kZXItY2hlY2suaGFuZGxlclwiLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bmN0aW9uVmVyc2lvbigpOiBJVmVyc2lvbiB7XG4gICAgcmV0dXJuIFZlcnNpb24uZnJvbVZlcnNpb25Bcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJwcmVyZW5kZXItY2hlY2stZm4tdmVyc2lvblwiLFxuICAgICAgdGhpcy5lZGdlRnVuY3Rpb24uY3VycmVudFZlcnNpb24uZWRnZUFyblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
2
+ import { IVersion } from "aws-cdk-lib/aws-lambda";
3
+ import { Construct } from "constructs";
4
+ export interface PrerenderFunctionOptions {
5
+ prerenderToken: string;
6
+ prerenderUrl?: string;
7
+ pathPrefix?: string;
8
+ }
9
+ export declare class PrerenderFunction extends Construct {
10
+ readonly edgeFunction: EdgeFunction;
11
+ constructor(scope: Construct, id: string, options: PrerenderFunctionOptions);
12
+ getFunctionVersion(): IVersion;
13
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrerenderFunction = void 0;
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
+ const experimental_1 = require("aws-cdk-lib/aws-cloudfront/lib/experimental");
6
+ const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
7
+ const constructs_1 = require("constructs");
8
+ const path_1 = require("path");
9
+ const cdk_esbuild_1 = require("@aligent/cdk-esbuild");
10
+ class PrerenderFunction extends constructs_1.Construct {
11
+ constructor(scope, id, options) {
12
+ var _a, _b;
13
+ super(scope, id);
14
+ const command = [
15
+ "sh",
16
+ "-c",
17
+ 'echo "Docker build not supported. Please install esbuild."',
18
+ ];
19
+ this.edgeFunction = new experimental_1.EdgeFunction(this, `${id}-prerender-fn`, {
20
+ code: aws_lambda_1.Code.fromAsset((0, path_1.join)(__dirname, "handlers"), {
21
+ assetHashType: aws_cdk_lib_1.AssetHashType.OUTPUT,
22
+ bundling: {
23
+ command,
24
+ image: aws_cdk_lib_1.DockerImage.fromRegistry("busybox"),
25
+ local: new cdk_esbuild_1.Esbuild({
26
+ entryPoints: [(0, path_1.join)(__dirname, "handlers/prerender.ts")],
27
+ define: {
28
+ "process.env.PRERENDER_TOKEN": options.prerenderToken,
29
+ "process.env.PATH_PREFIX": (_a = options.pathPrefix) !== null && _a !== void 0 ? _a : "",
30
+ "process.env.PRERENDER_URL": (_b = options.prerenderUrl) !== null && _b !== void 0 ? _b : "service.prerender.io",
31
+ },
32
+ }),
33
+ },
34
+ }),
35
+ runtime: aws_lambda_1.Runtime.NODEJS_18_X,
36
+ handler: "prerender.handler",
37
+ });
38
+ }
39
+ getFunctionVersion() {
40
+ return aws_lambda_1.Version.fromVersionArn(this, "prerender-fn-version", this.edgeFunction.currentVersion.edgeArn);
41
+ }
42
+ }
43
+ exports.PrerenderFunction = PrerenderFunction;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlEO0FBQ3pELDhFQUEyRTtBQUMzRSx1REFBMEU7QUFDMUUsMkNBQXVDO0FBQ3ZDLCtCQUE0QjtBQUM1QixzREFBK0M7QUFRL0MsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUc5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWlDOztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLElBQUk7WUFDSiw0REFBNEQ7U0FDN0QsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSwyQkFBWSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsZUFBZSxFQUFFO1lBQy9ELElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ2hELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07Z0JBQ25DLFFBQVEsRUFBRTtvQkFDUixPQUFPO29CQUNQLEtBQUssRUFBRSx5QkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7b0JBQzFDLEtBQUssRUFBRSxJQUFJLHFCQUFPLENBQUM7d0JBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO3dCQUN2RCxNQUFNLEVBQUU7NEJBQ04sNkJBQTZCLEVBQUUsT0FBTyxDQUFDLGNBQWM7NEJBQ3JELHlCQUF5QixFQUFFLE1BQUEsT0FBTyxDQUFDLFVBQVUsbUNBQUksRUFBRTs0QkFDbkQsMkJBQTJCLEVBQ3pCLE1BQUEsT0FBTyxDQUFDLFlBQVksbUNBQUksc0JBQXNCO3lCQUNqRDtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLG1CQUFtQjtTQUM3QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sb0JBQU8sQ0FBQyxjQUFjLENBQzNCLElBQUksRUFDSixzQkFBc0IsRUFDdEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBekNELDhDQXlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2V0SGFzaFR5cGUsIERvY2tlckltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBFZGdlRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2V4cGVyaW1lbnRhbFwiO1xuaW1wb3J0IHsgQ29kZSwgSVZlcnNpb24sIFJ1bnRpbWUsIFZlcnNpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgRXNidWlsZCB9IGZyb20gXCJAYWxpZ2VudC9jZGstZXNidWlsZFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlbmRlckZ1bmN0aW9uT3B0aW9ucyB7XG4gIHByZXJlbmRlclRva2VuOiBzdHJpbmc7XG4gIHByZXJlbmRlclVybD86IHN0cmluZztcbiAgcGF0aFByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFByZXJlbmRlckZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBFZGdlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgb3B0aW9uczogUHJlcmVuZGVyRnVuY3Rpb25PcHRpb25zKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgICBcInNoXCIsXG4gICAgICBcIi1jXCIsXG4gICAgICAnZWNobyBcIkRvY2tlciBidWlsZCBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgaW5zdGFsbCBlc2J1aWxkLlwiJyxcbiAgICBdO1xuXG4gICAgdGhpcy5lZGdlRnVuY3Rpb24gPSBuZXcgRWRnZUZ1bmN0aW9uKHRoaXMsIGAke2lkfS1wcmVyZW5kZXItZm5gLCB7XG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgXCJoYW5kbGVyc1wiKSwge1xuICAgICAgICBhc3NldEhhc2hUeXBlOiBBc3NldEhhc2hUeXBlLk9VVFBVVCxcbiAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgIGltYWdlOiBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoXCJidXN5Ym94XCIpLFxuICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICBlbnRyeVBvaW50czogW2pvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzL3ByZXJlbmRlci50c1wiKV0sXG4gICAgICAgICAgICBkZWZpbmU6IHtcbiAgICAgICAgICAgICAgXCJwcm9jZXNzLmVudi5QUkVSRU5ERVJfVE9LRU5cIjogb3B0aW9ucy5wcmVyZW5kZXJUb2tlbixcbiAgICAgICAgICAgICAgXCJwcm9jZXNzLmVudi5QQVRIX1BSRUZJWFwiOiBvcHRpb25zLnBhdGhQcmVmaXggPz8gXCJcIixcbiAgICAgICAgICAgICAgXCJwcm9jZXNzLmVudi5QUkVSRU5ERVJfVVJMXCI6XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5wcmVyZW5kZXJVcmwgPz8gXCJzZXJ2aWNlLnByZXJlbmRlci5pb1wiLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgIGhhbmRsZXI6IFwicHJlcmVuZGVyLmhhbmRsZXJcIixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRGdW5jdGlvblZlcnNpb24oKTogSVZlcnNpb24ge1xuICAgIHJldHVybiBWZXJzaW9uLmZyb21WZXJzaW9uQXJuKFxuICAgICAgdGhpcyxcbiAgICAgIFwicHJlcmVuZGVyLWZuLXZlcnNpb25cIixcbiAgICAgIHRoaXMuZWRnZUZ1bmN0aW9uLmN1cnJlbnRWZXJzaW9uLmVkZ2VBcm5cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Construct } from "constructs";
2
+ import { CloudFrontCacheControl, CloudFrontCacheControlOptions } from "./prerender-cf-cache-control-construct";
3
+ import { PrerenderCheckFunction } from "./prerender-check-construct";
4
+ import { PrerenderFunction } from "./prerender-construct";
5
+ import { ErrorResponseFunction } from "./error-response-construct";
6
+ export interface PrerenderLambdaProps {
7
+ prerenderToken: string;
8
+ exclusionExpression?: string;
9
+ cacheControlProps?: CloudFrontCacheControlOptions;
10
+ }
11
+ export declare class PrerenderLambda extends Construct {
12
+ readonly prerenderCheckFunction: PrerenderCheckFunction;
13
+ readonly prerenderFunction: PrerenderFunction;
14
+ readonly errorResponseFunction: ErrorResponseFunction;
15
+ readonly cacheControlFunction: CloudFrontCacheControl;
16
+ constructor(scope: Construct, id: string, props: PrerenderLambdaProps);
17
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrerenderLambda = void 0;
4
+ const constructs_1 = require("constructs");
5
+ const prerender_cf_cache_control_construct_1 = require("./prerender-cf-cache-control-construct");
6
+ const prerender_check_construct_1 = require("./prerender-check-construct");
7
+ const prerender_construct_1 = require("./prerender-construct");
8
+ const error_response_construct_1 = require("./error-response-construct");
9
+ class PrerenderLambda extends constructs_1.Construct {
10
+ constructor(scope, id, props) {
11
+ super(scope, id);
12
+ this.prerenderCheckFunction = new prerender_check_construct_1.PrerenderCheckFunction(this, "PrerenderViewerRequest");
13
+ this.prerenderFunction = new prerender_construct_1.PrerenderFunction(this, "PrerenderOriginRequest", props);
14
+ this.errorResponseFunction = new error_response_construct_1.ErrorResponseFunction(this, "ErrorResponse", {});
15
+ this.cacheControlFunction = new prerender_cf_cache_control_construct_1.CloudFrontCacheControl(this, "PrerenderCloudFrontCacheControl", props.cacheControlProps);
16
+ }
17
+ }
18
+ exports.PrerenderLambda = PrerenderLambda;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWxhbWJkYS1jb25zdHJ1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVyZW5kZXItbGFtYmRhLWNvbnN0cnVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsaUdBR2dEO0FBQ2hELDJFQUFxRTtBQUNyRSwrREFBMEQ7QUFDMUQseUVBQW1FO0FBUW5FLE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQU01QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCO1FBQ25FLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksa0RBQXNCLENBQ3RELElBQUksRUFDSix3QkFBd0IsQ0FDekIsQ0FBQztRQUVGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLHVDQUFpQixDQUM1QyxJQUFJLEVBQ0osd0JBQXdCLEVBQ3hCLEtBQUssQ0FDTixDQUFDO1FBRUYsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksZ0RBQXFCLENBQ3BELElBQUksRUFDSixlQUFlLEVBQ2YsRUFBRSxDQUNILENBQUM7UUFFRixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSw2REFBc0IsQ0FDcEQsSUFBSSxFQUNKLGlDQUFpQyxFQUNqQyxLQUFLLENBQUMsaUJBQWlCLENBQ3hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFoQ0QsMENBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIENsb3VkRnJvbnRDYWNoZUNvbnRyb2wsXG4gIENsb3VkRnJvbnRDYWNoZUNvbnRyb2xPcHRpb25zLFxufSBmcm9tIFwiLi9wcmVyZW5kZXItY2YtY2FjaGUtY29udHJvbC1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IFByZXJlbmRlckNoZWNrRnVuY3Rpb24gfSBmcm9tIFwiLi9wcmVyZW5kZXItY2hlY2stY29uc3RydWN0XCI7XG5pbXBvcnQgeyBQcmVyZW5kZXJGdW5jdGlvbiB9IGZyb20gXCIuL3ByZXJlbmRlci1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEVycm9yUmVzcG9uc2VGdW5jdGlvbiB9IGZyb20gXCIuL2Vycm9yLXJlc3BvbnNlLWNvbnN0cnVjdFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlbmRlckxhbWJkYVByb3BzIHtcbiAgcHJlcmVuZGVyVG9rZW46IHN0cmluZztcbiAgZXhjbHVzaW9uRXhwcmVzc2lvbj86IHN0cmluZztcbiAgY2FjaGVDb250cm9sUHJvcHM/OiBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIFByZXJlbmRlckxhbWJkYSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHByZXJlbmRlckNoZWNrRnVuY3Rpb246IFByZXJlbmRlckNoZWNrRnVuY3Rpb247XG4gIHJlYWRvbmx5IHByZXJlbmRlckZ1bmN0aW9uOiBQcmVyZW5kZXJGdW5jdGlvbjtcbiAgcmVhZG9ubHkgZXJyb3JSZXNwb25zZUZ1bmN0aW9uOiBFcnJvclJlc3BvbnNlRnVuY3Rpb247XG4gIHJlYWRvbmx5IGNhY2hlQ29udHJvbEZ1bmN0aW9uOiBDbG91ZEZyb250Q2FjaGVDb250cm9sO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQcmVyZW5kZXJMYW1iZGFQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLnByZXJlbmRlckNoZWNrRnVuY3Rpb24gPSBuZXcgUHJlcmVuZGVyQ2hlY2tGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBcIlByZXJlbmRlclZpZXdlclJlcXVlc3RcIlxuICAgICk7XG5cbiAgICB0aGlzLnByZXJlbmRlckZ1bmN0aW9uID0gbmV3IFByZXJlbmRlckZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUHJlcmVuZGVyT3JpZ2luUmVxdWVzdFwiLFxuICAgICAgcHJvcHNcbiAgICApO1xuXG4gICAgdGhpcy5lcnJvclJlc3BvbnNlRnVuY3Rpb24gPSBuZXcgRXJyb3JSZXNwb25zZUZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRXJyb3JSZXNwb25zZVwiLFxuICAgICAge31cbiAgICApO1xuXG4gICAgdGhpcy5jYWNoZUNvbnRyb2xGdW5jdGlvbiA9IG5ldyBDbG91ZEZyb250Q2FjaGVDb250cm9sKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUHJlcmVuZGVyQ2xvdWRGcm9udENhY2hlQ29udHJvbFwiLFxuICAgICAgcHJvcHMuY2FjaGVDb250cm9sUHJvcHNcbiAgICApO1xuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aligent/cdk-prerender-proxy",
3
- "version": "2.0.2",
3
+ "version": "2.1.1",
4
4
  "description": "Cloudfront Lambda@Edge constructs for integrating with prerender.io",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -16,20 +16,20 @@
16
16
  },
17
17
  "homepage": "https://github.com/aligent/aws-cdk-prerender-proxy-stack#readme",
18
18
  "devDependencies": {
19
- "@types/jest": "^29.5.5",
19
+ "@types/jest": "^29.5.10",
20
20
  "@types/node": "20.6.3",
21
21
  "@types/aws-lambda": "^8.10.122",
22
- "aws-cdk": "2.97.0",
22
+ "aws-cdk": "2.113.0",
23
23
  "jest": "^29.7.0",
24
24
  "ts-jest": "^29.1.1",
25
25
  "ts-node": "^10.9.1",
26
- "typescript": "~5.2.2",
27
- "@aligent/esbuild": "^2.0"
26
+ "typescript": "~5.3.2"
28
27
  },
29
28
  "dependencies": {
30
- "aws-cdk-lib": "2.97.0",
29
+ "@aligent/cdk-esbuild": "^2.0",
30
+ "aws-cdk-lib": "2.113.0",
31
31
  "axios": "^1.5.1",
32
- "constructs": "^10.0.0",
32
+ "constructs": "^10.3.0",
33
33
  "esbuild": "^0.17.0",
34
34
  "source-map-support": "^0.5.21"
35
35
  }
package/index.ts DELETED
@@ -1,29 +0,0 @@
1
- import {
2
- PrerenderLambda,
3
- PrerenderLambdaProps,
4
- } from "./lib/prerender-lambda-construct";
5
- import {
6
- PrerenderFunction,
7
- PrerenderFunctionOptions,
8
- } from "./lib/prerender-construct";
9
- import { PrerenderCheckFunction } from "./lib/prerender-check-construct";
10
- import {
11
- ErrorResponseFunction,
12
- ErrorResponseFunctionOptions,
13
- } from "./lib/error-response-construct";
14
- import {
15
- CloudFrontCacheControl,
16
- CloudFrontCacheControlOptions,
17
- } from "./lib/prerender-cf-cache-control-construct";
18
-
19
- export {
20
- PrerenderLambda,
21
- PrerenderFunction,
22
- PrerenderCheckFunction,
23
- ErrorResponseFunction,
24
- CloudFrontCacheControl,
25
- CloudFrontCacheControlOptions,
26
- ErrorResponseFunctionOptions,
27
- PrerenderFunctionOptions,
28
- PrerenderLambdaProps,
29
- };
@@ -1,54 +0,0 @@
1
- import { AssetHashType, DockerImage } from "aws-cdk-lib";
2
- import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
3
- import { Code, IVersion, Runtime, Version } from "aws-cdk-lib/aws-lambda";
4
- import { Construct } from "constructs";
5
- import { join } from "path";
6
- import { Esbuild } from "@aligent/esbuild";
7
-
8
- export interface ErrorResponseFunctionOptions {
9
- pathPrefix?: string;
10
- }
11
-
12
- export class ErrorResponseFunction extends Construct {
13
- readonly edgeFunction: EdgeFunction;
14
-
15
- constructor(
16
- scope: Construct,
17
- id: string,
18
- options: ErrorResponseFunctionOptions
19
- ) {
20
- super(scope, id);
21
-
22
- const command = [
23
- "sh",
24
- "-c",
25
- 'echo "Docker build not supported. Please install esbuild."',
26
- ];
27
-
28
- this.edgeFunction = new EdgeFunction(this, `${id}-error-response-fn`, {
29
- code: Code.fromAsset(join(__dirname, "handlers"), {
30
- assetHashType: AssetHashType.OUTPUT,
31
- bundling: {
32
- command,
33
- image: DockerImage.fromRegistry("busybox"),
34
- local: new Esbuild({
35
- entryPoints: [join(__dirname, "handlers/error-response.ts")],
36
- define: {
37
- "process.env.PATH_PREFIX": options.pathPrefix ?? "",
38
- },
39
- }),
40
- },
41
- }),
42
- runtime: Runtime.NODEJS_18_X,
43
- handler: "error-response.handler",
44
- });
45
- }
46
-
47
- public getFunctionVersion(): IVersion {
48
- return Version.fromVersionArn(
49
- this,
50
- "error-response-fn-version",
51
- this.edgeFunction.currentVersion.edgeArn
52
- );
53
- }
54
- }
@@ -1,58 +0,0 @@
1
- import { AssetHashType, DockerImage } from "aws-cdk-lib";
2
- import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
3
- import { Code, IVersion, Runtime, Version } from "aws-cdk-lib/aws-lambda";
4
- import { Construct } from "constructs";
5
- import { join } from "path";
6
- import { Esbuild } from "@aligent/esbuild";
7
-
8
- export interface CloudFrontCacheControlOptions {
9
- cacheKey?: string;
10
- maxAge?: number;
11
- }
12
-
13
- export class CloudFrontCacheControl extends Construct {
14
- readonly edgeFunction: EdgeFunction;
15
-
16
- constructor(
17
- scope: Construct,
18
- id: string,
19
- options?: CloudFrontCacheControlOptions
20
- ) {
21
- super(scope, id);
22
-
23
- const command = [
24
- "sh",
25
- "-c",
26
- 'echo "Docker build not supported. Please install esbuild."',
27
- ];
28
-
29
- this.edgeFunction = new EdgeFunction(this, `${id}-cache-control-fn`, {
30
- code: Code.fromAsset(join(__dirname, "handlers"), {
31
- assetHashType: AssetHashType.OUTPUT,
32
- bundling: {
33
- command,
34
- image: DockerImage.fromRegistry("busybox"),
35
- local: new Esbuild({
36
- entryPoints: [join(__dirname, "handlers/cache-control.ts")],
37
- define: {
38
- "process.env.PRERENDER_CACHE_KEY":
39
- options?.cacheKey ?? "x-prerender-requestid",
40
- "process.env.PRERENDER_CACHE_MAX_AGE":
41
- String(options?.maxAge) ?? "0",
42
- },
43
- }),
44
- },
45
- }),
46
- runtime: Runtime.NODEJS_18_X,
47
- handler: "cache-control.handler",
48
- });
49
- }
50
-
51
- public getFunctionVersion(): IVersion {
52
- return Version.fromVersionArn(
53
- this,
54
- "cache-control-fn-version",
55
- this.edgeFunction.currentVersion.edgeArn
56
- );
57
- }
58
- }
@@ -1,43 +0,0 @@
1
- import { AssetHashType, DockerImage } from "aws-cdk-lib";
2
- import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
3
- import { Code, IVersion, Runtime, Version } from "aws-cdk-lib/aws-lambda";
4
- import { Construct } from "constructs";
5
- import { join } from "path";
6
- import { Esbuild } from "@aligent/esbuild";
7
-
8
- export class PrerenderCheckFunction extends Construct {
9
- readonly edgeFunction: EdgeFunction;
10
-
11
- constructor(scope: Construct, id: string) {
12
- super(scope, id);
13
-
14
- const command = [
15
- "sh",
16
- "-c",
17
- 'echo "Docker build not supported. Please install esbuild."',
18
- ];
19
-
20
- this.edgeFunction = new EdgeFunction(this, `${id}-prerender-check-fn`, {
21
- code: Code.fromAsset(join(__dirname, "handlers"), {
22
- assetHashType: AssetHashType.OUTPUT,
23
- bundling: {
24
- command,
25
- image: DockerImage.fromRegistry("busybox"),
26
- local: new Esbuild({
27
- entryPoints: [join(__dirname, "handlers/prerender-check.ts")],
28
- }),
29
- },
30
- }),
31
- runtime: Runtime.NODEJS_18_X,
32
- handler: "prerender-check.handler",
33
- });
34
- }
35
-
36
- public getFunctionVersion(): IVersion {
37
- return Version.fromVersionArn(
38
- this,
39
- "prerender-check-fn-version",
40
- this.edgeFunction.currentVersion.edgeArn
41
- );
42
- }
43
- }
@@ -1,55 +0,0 @@
1
- import { AssetHashType, DockerImage } from "aws-cdk-lib";
2
- import { EdgeFunction } from "aws-cdk-lib/aws-cloudfront/lib/experimental";
3
- import { Code, IVersion, Runtime, Version } from "aws-cdk-lib/aws-lambda";
4
- import { Construct } from "constructs";
5
- import { join } from "path";
6
- import { Esbuild } from "@aligent/esbuild";
7
-
8
- export interface PrerenderFunctionOptions {
9
- prerenderToken: string;
10
- prerenderUrl?: string;
11
- pathPrefix?: string;
12
- }
13
-
14
- export class PrerenderFunction extends Construct {
15
- readonly edgeFunction: EdgeFunction;
16
-
17
- constructor(scope: Construct, id: string, options: PrerenderFunctionOptions) {
18
- super(scope, id);
19
-
20
- const command = [
21
- "sh",
22
- "-c",
23
- 'echo "Docker build not supported. Please install esbuild."',
24
- ];
25
-
26
- this.edgeFunction = new EdgeFunction(this, `${id}-prerender-fn`, {
27
- code: Code.fromAsset(join(__dirname, "handlers"), {
28
- assetHashType: AssetHashType.OUTPUT,
29
- bundling: {
30
- command,
31
- image: DockerImage.fromRegistry("busybox"),
32
- local: new Esbuild({
33
- entryPoints: [join(__dirname, "handlers/prerender.ts")],
34
- define: {
35
- "process.env.PRERENDER_TOKEN": options.prerenderToken,
36
- "process.env.PATH_PREFIX": options.pathPrefix ?? "",
37
- "process.env.PRERENDER_URL":
38
- options.prerenderUrl ?? "service.prerender.io",
39
- },
40
- }),
41
- },
42
- }),
43
- runtime: Runtime.NODEJS_18_X,
44
- handler: "prerender.handler",
45
- });
46
- }
47
-
48
- public getFunctionVersion(): IVersion {
49
- return Version.fromVersionArn(
50
- this,
51
- "prerender-fn-version",
52
- this.edgeFunction.currentVersion.edgeArn
53
- );
54
- }
55
- }
@@ -1,48 +0,0 @@
1
- import { Construct } from "constructs";
2
- import {
3
- CloudFrontCacheControl,
4
- CloudFrontCacheControlOptions,
5
- } from "./prerender-cf-cache-control-construct";
6
- import { PrerenderCheckFunction } from "./prerender-check-construct";
7
- import { PrerenderFunction } from "./prerender-construct";
8
- import { ErrorResponseFunction } from "./error-response-construct";
9
-
10
- export interface PrerenderLambdaProps {
11
- prerenderToken: string;
12
- exclusionExpression?: string;
13
- cacheControlProps?: CloudFrontCacheControlOptions;
14
- }
15
-
16
- export class PrerenderLambda extends Construct {
17
- readonly prerenderCheckFunction: PrerenderCheckFunction;
18
- readonly prerenderFunction: PrerenderFunction;
19
- readonly errorResponseFunction: ErrorResponseFunction;
20
- readonly cacheControlFunction: CloudFrontCacheControl;
21
-
22
- constructor(scope: Construct, id: string, props: PrerenderLambdaProps) {
23
- super(scope, id);
24
-
25
- this.prerenderCheckFunction = new PrerenderCheckFunction(
26
- this,
27
- "PrerenderViewerRequest"
28
- );
29
-
30
- this.prerenderFunction = new PrerenderFunction(
31
- this,
32
- "PrerenderOriginRequest",
33
- props
34
- );
35
-
36
- this.errorResponseFunction = new ErrorResponseFunction(
37
- this,
38
- "ErrorResponse",
39
- {}
40
- );
41
-
42
- this.cacheControlFunction = new CloudFrontCacheControl(
43
- this,
44
- "PrerenderCloudFrontCacheControl",
45
- props.cacheControlProps
46
- );
47
- }
48
- }