@aligent/cdk-prerender-proxy 2.1.0 → 2.1.2
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 +6 -0
- package/lib/error-response-construct.d.ts +11 -0
- package/lib/error-response-construct.js +42 -0
- package/lib/prerender-cf-cache-control-construct.d.ts +12 -0
- package/lib/prerender-cf-cache-control-construct.js +43 -0
- package/lib/prerender-check-construct.d.ts +8 -0
- package/lib/prerender-check-construct.js +38 -0
- package/lib/prerender-construct.d.ts +13 -0
- package/lib/prerender-construct.js +44 -0
- package/lib/prerender-lambda-construct.d.ts +17 -0
- package/lib/prerender-lambda-construct.js +19 -0
- package/package.json +3 -3
- package/index.ts +0 -29
- package/lib/error-response-construct.ts +0 -54
- package/lib/prerender-cf-cache-control-construct.ts +0 -58
- package/lib/prerender-check-construct.ts +0 -43
- package/lib/prerender-construct.ts +0 -55
- package/lib/prerender-lambda-construct.ts +0 -48
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 { experimental } from "aws-cdk-lib/aws-cloudfront";
|
|
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: experimental.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 aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
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 aws_cloudfront_1.experimental.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXJyb3ItcmVzcG9uc2UtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCwrREFBMEQ7QUFDMUQsdURBQTBFO0FBQzFFLDJDQUF1QztBQUN2QywrQkFBNEI7QUFDNUIsc0RBQStDO0FBTS9DLE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFHbEQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsT0FBcUM7O1FBRXJDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJO1lBQ0osSUFBSTtZQUNKLDREQUE0RDtTQUM3RCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDZCQUFZLENBQUMsWUFBWSxDQUMvQyxJQUFJLEVBQ0osR0FBRyxFQUFFLG9CQUFvQixFQUN6QjtZQUNFLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ2hELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07Z0JBQ25DLFFBQVEsRUFBRTtvQkFDUixPQUFPO29CQUNQLEtBQUssRUFBRSx5QkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7b0JBQzFDLEtBQUssRUFBRSxJQUFJLHFCQUFPLENBQUM7d0JBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO3dCQUM1RCxNQUFNLEVBQUU7NEJBQ04seUJBQXlCLEVBQUUsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxFQUFFO3lCQUNwRDtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLHdCQUF3QjtTQUNsQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sb0JBQU8sQ0FBQyxjQUFjLENBQzNCLElBQUksRUFDSiwyQkFBMkIsRUFDM0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBOUNELHNEQThDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2V0SGFzaFR5cGUsIERvY2tlckltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBleHBlcmltZW50YWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IENvZGUsIElWZXJzaW9uLCBSdW50aW1lLCBWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEVzYnVpbGQgfSBmcm9tIFwiQGFsaWdlbnQvY2RrLWVzYnVpbGRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlRnVuY3Rpb25PcHRpb25zIHtcbiAgcGF0aFByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yUmVzcG9uc2VGdW5jdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IGVkZ2VGdW5jdGlvbjogZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogRXJyb3JSZXNwb25zZUZ1bmN0aW9uT3B0aW9uc1xuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAgIFwic2hcIixcbiAgICAgIFwiLWNcIixcbiAgICAgICdlY2hvIFwiRG9ja2VyIGJ1aWxkIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSBpbnN0YWxsIGVzYnVpbGQuXCInLFxuICAgIF07XG5cbiAgICB0aGlzLmVkZ2VGdW5jdGlvbiA9IG5ldyBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfS1lcnJvci1yZXNwb25zZS1mbmAsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzXCIpLCB7XG4gICAgICAgICAgYXNzZXRIYXNoVHlwZTogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYnVzeWJveFwiKSxcbiAgICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICAgIGVudHJ5UG9pbnRzOiBbam9pbihfX2Rpcm5hbWUsIFwiaGFuZGxlcnMvZXJyb3ItcmVzcG9uc2UudHNcIildLFxuICAgICAgICAgICAgICBkZWZpbmU6IHtcbiAgICAgICAgICAgICAgICBcInByb2Nlc3MuZW52LlBBVEhfUFJFRklYXCI6IG9wdGlvbnMucGF0aFByZWZpeCA/PyBcIlwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIGhhbmRsZXI6IFwiZXJyb3ItcmVzcG9uc2UuaGFuZGxlclwiLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVuY3Rpb25WZXJzaW9uKCk6IElWZXJzaW9uIHtcbiAgICByZXR1cm4gVmVyc2lvbi5mcm9tVmVyc2lvbkFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImVycm9yLXJlc3BvbnNlLWZuLXZlcnNpb25cIixcbiAgICAgIHRoaXMuZWRnZUZ1bmN0aW9uLmN1cnJlbnRWZXJzaW9uLmVkZ2VBcm5cbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { experimental } from "aws-cdk-lib/aws-cloudfront";
|
|
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: experimental.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 aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
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 aws_cloudfront_1.experimental.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicHJlcmVuZGVyLWNmLWNhY2hlLWNvbnRyb2wtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCwrREFBMEQ7QUFDMUQsdURBQTBFO0FBQzFFLDJDQUF1QztBQUN2QywrQkFBNEI7QUFDNUIsc0RBQStDO0FBTy9DLE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7SUFHbkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsT0FBdUM7O1FBRXZDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxPQUFPLEdBQUc7WUFDZCxJQUFJO1lBQ0osSUFBSTtZQUNKLDREQUE0RDtTQUM3RCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLDZCQUFZLENBQUMsWUFBWSxDQUMvQyxJQUFJLEVBQ0osR0FBRyxFQUFFLG1CQUFtQixFQUN4QjtZQUNFLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEVBQUU7Z0JBQ2hELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE1BQU07Z0JBQ25DLFFBQVEsRUFBRTtvQkFDUixPQUFPO29CQUNQLEtBQUssRUFBRSx5QkFBVyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUM7b0JBQzFDLEtBQUssRUFBRSxJQUFJLHFCQUFPLENBQUM7d0JBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO3dCQUMzRCxNQUFNLEVBQUU7NEJBQ04saUNBQWlDLEVBQy9CLE1BQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFFBQVEsbUNBQUksdUJBQXVCOzRCQUM5QyxxQ0FBcUMsRUFDbkMsTUFBQSxNQUFNLENBQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sQ0FBQyxtQ0FBSSxHQUFHO3lCQUNqQztxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztZQUNGLE9BQU8sRUFBRSxvQkFBTyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLHVCQUF1QjtTQUNqQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLE9BQU8sb0JBQU8sQ0FBQyxjQUFjLENBQzNCLElBQUksRUFDSiwwQkFBMEIsRUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBakRELHdEQWlEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzc2V0SGFzaFR5cGUsIERvY2tlckltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBleHBlcmltZW50YWwgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnRcIjtcbmltcG9ydCB7IENvZGUsIElWZXJzaW9uLCBSdW50aW1lLCBWZXJzaW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IEVzYnVpbGQgfSBmcm9tIFwiQGFsaWdlbnQvY2RrLWVzYnVpbGRcIjtcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250Q2FjaGVDb250cm9sT3B0aW9ucyB7XG4gIGNhY2hlS2V5Pzogc3RyaW5nO1xuICBtYXhBZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250Q2FjaGVDb250cm9sIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBvcHRpb25zPzogQ2xvdWRGcm9udENhY2hlQ29udHJvbE9wdGlvbnNcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNvbW1hbmQgPSBbXG4gICAgICBcInNoXCIsXG4gICAgICBcIi1jXCIsXG4gICAgICAnZWNobyBcIkRvY2tlciBidWlsZCBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgaW5zdGFsbCBlc2J1aWxkLlwiJyxcbiAgICBdO1xuXG4gICAgdGhpcy5lZGdlRnVuY3Rpb24gPSBuZXcgZXhwZXJpbWVudGFsLkVkZ2VGdW5jdGlvbihcbiAgICAgIHRoaXMsXG4gICAgICBgJHtpZH0tY2FjaGUtY29udHJvbC1mbmAsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzXCIpLCB7XG4gICAgICAgICAgYXNzZXRIYXNoVHlwZTogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYnVzeWJveFwiKSxcbiAgICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICAgIGVudHJ5UG9pbnRzOiBbam9pbihfX2Rpcm5hbWUsIFwiaGFuZGxlcnMvY2FjaGUtY29udHJvbC50c1wiKV0sXG4gICAgICAgICAgICAgIGRlZmluZToge1xuICAgICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX0NBQ0hFX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz8uY2FjaGVLZXkgPz8gXCJ4LXByZXJlbmRlci1yZXF1ZXN0aWRcIixcbiAgICAgICAgICAgICAgICBcInByb2Nlc3MuZW52LlBSRVJFTkRFUl9DQUNIRV9NQVhfQUdFXCI6XG4gICAgICAgICAgICAgICAgICBTdHJpbmcob3B0aW9ucz8ubWF4QWdlKSA/PyBcIjBcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU18xOF9YLFxuICAgICAgICBoYW5kbGVyOiBcImNhY2hlLWNvbnRyb2wuaGFuZGxlclwiLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVuY3Rpb25WZXJzaW9uKCk6IElWZXJzaW9uIHtcbiAgICByZXR1cm4gVmVyc2lvbi5mcm9tVmVyc2lvbkFybihcbiAgICAgIHRoaXMsXG4gICAgICBcImNhY2hlLWNvbnRyb2wtZm4tdmVyc2lvblwiLFxuICAgICAgdGhpcy5lZGdlRnVuY3Rpb24uY3VycmVudFZlcnNpb24uZWRnZUFyblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { experimental } from "aws-cdk-lib/aws-cloudfront";
|
|
2
|
+
import { IVersion } from "aws-cdk-lib/aws-lambda";
|
|
3
|
+
import { Construct } from "constructs";
|
|
4
|
+
export declare class PrerenderCheckFunction extends Construct {
|
|
5
|
+
readonly edgeFunction: experimental.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 aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
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 aws_cloudfront_1.experimental.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNoZWNrLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jaGVjay1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlEO0FBQ3pELCtEQUEwRDtBQUMxRCx1REFBMEU7QUFDMUUsMkNBQXVDO0FBQ3ZDLCtCQUE0QjtBQUM1QixzREFBK0M7QUFFL0MsTUFBYSxzQkFBdUIsU0FBUSxzQkFBUztJQUduRCxZQUFZLEtBQWdCLEVBQUUsRUFBVTtRQUN0QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLElBQUk7WUFDSiw0REFBNEQ7U0FDN0QsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2QkFBWSxDQUFDLFlBQVksQ0FDL0MsSUFBSSxFQUNKLEdBQUcsRUFBRSxxQkFBcUIsRUFDMUI7WUFDRSxJQUFJLEVBQUUsaUJBQUksQ0FBQyxTQUFTLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxFQUFFO2dCQUNoRCxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO2dCQUNuQyxRQUFRLEVBQUU7b0JBQ1IsT0FBTztvQkFDUCxLQUFLLEVBQUUseUJBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO29CQUMxQyxLQUFLLEVBQUUsSUFBSSxxQkFBTyxDQUFDO3dCQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztxQkFDOUQsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixPQUFPLEVBQUUsb0JBQU8sQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSx5QkFBeUI7U0FDbkMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixPQUFPLG9CQUFPLENBQUMsY0FBYyxDQUMzQixJQUFJLEVBQ0osNEJBQTRCLEVBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDekMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZDRCx3REF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3NldEhhc2hUeXBlLCBEb2NrZXJJbWFnZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgZXhwZXJpbWVudGFsIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCI7XG5pbXBvcnQgeyBDb2RlLCBJVmVyc2lvbiwgUnVudGltZSwgVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBFc2J1aWxkIH0gZnJvbSBcIkBhbGlnZW50L2Nkay1lc2J1aWxkXCI7XG5cbmV4cG9ydCBjbGFzcyBQcmVyZW5kZXJDaGVja0Z1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IFtcbiAgICAgIFwic2hcIixcbiAgICAgIFwiLWNcIixcbiAgICAgICdlY2hvIFwiRG9ja2VyIGJ1aWxkIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSBpbnN0YWxsIGVzYnVpbGQuXCInLFxuICAgIF07XG5cbiAgICB0aGlzLmVkZ2VGdW5jdGlvbiA9IG5ldyBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIGAke2lkfS1wcmVyZW5kZXItY2hlY2stZm5gLFxuICAgICAge1xuICAgICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgXCJoYW5kbGVyc1wiKSwge1xuICAgICAgICAgIGFzc2V0SGFzaFR5cGU6IEFzc2V0SGFzaFR5cGUuT1VUUFVULFxuICAgICAgICAgIGJ1bmRsaW5nOiB7XG4gICAgICAgICAgICBjb21tYW5kLFxuICAgICAgICAgICAgaW1hZ2U6IERvY2tlckltYWdlLmZyb21SZWdpc3RyeShcImJ1c3lib3hcIiksXG4gICAgICAgICAgICBsb2NhbDogbmV3IEVzYnVpbGQoe1xuICAgICAgICAgICAgICBlbnRyeVBvaW50czogW2pvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzL3ByZXJlbmRlci1jaGVjay50c1wiKV0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMThfWCxcbiAgICAgICAgaGFuZGxlcjogXCJwcmVyZW5kZXItY2hlY2suaGFuZGxlclwiLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0RnVuY3Rpb25WZXJzaW9uKCk6IElWZXJzaW9uIHtcbiAgICByZXR1cm4gVmVyc2lvbi5mcm9tVmVyc2lvbkFybihcbiAgICAgIHRoaXMsXG4gICAgICBcInByZXJlbmRlci1jaGVjay1mbi12ZXJzaW9uXCIsXG4gICAgICB0aGlzLmVkZ2VGdW5jdGlvbi5jdXJyZW50VmVyc2lvbi5lZGdlQXJuXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { experimental } from "aws-cdk-lib/aws-cloudfront";
|
|
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: experimental.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 aws_cloudfront_1 = require("aws-cdk-lib/aws-cloudfront");
|
|
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 aws_cloudfront_1.experimental.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlcmVuZGVyLWNvbnN0cnVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInByZXJlbmRlci1jb25zdHJ1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlEO0FBQ3pELCtEQUEwRDtBQUMxRCx1REFBMEU7QUFDMUUsMkNBQXVDO0FBQ3ZDLCtCQUE0QjtBQUM1QixzREFBK0M7QUFRL0MsTUFBYSxpQkFBa0IsU0FBUSxzQkFBUztJQUc5QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLE9BQWlDOztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLElBQUk7WUFDSiw0REFBNEQ7U0FDN0QsQ0FBQztRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSw2QkFBWSxDQUFDLFlBQVksQ0FDL0MsSUFBSSxFQUNKLEdBQUcsRUFBRSxlQUFlLEVBQ3BCO1lBQ0UsSUFBSSxFQUFFLGlCQUFJLENBQUMsU0FBUyxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsRUFBRTtnQkFDaEQsYUFBYSxFQUFFLDJCQUFhLENBQUMsTUFBTTtnQkFDbkMsUUFBUSxFQUFFO29CQUNSLE9BQU87b0JBQ1AsS0FBSyxFQUFFLHlCQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztvQkFDMUMsS0FBSyxFQUFFLElBQUkscUJBQU8sQ0FBQzt3QkFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLHVCQUF1QixDQUFDLENBQUM7d0JBQ3ZELE1BQU0sRUFBRTs0QkFDTiw2QkFBNkIsRUFBRSxPQUFPLENBQUMsY0FBYzs0QkFDckQseUJBQXlCLEVBQUUsTUFBQSxPQUFPLENBQUMsVUFBVSxtQ0FBSSxFQUFFOzRCQUNuRCwyQkFBMkIsRUFDekIsTUFBQSxPQUFPLENBQUMsWUFBWSxtQ0FBSSxzQkFBc0I7eUJBQ2pEO3FCQUNGLENBQUM7aUJBQ0g7YUFDRixDQUFDO1lBQ0YsT0FBTyxFQUFFLG9CQUFPLENBQUMsV0FBVztZQUM1QixPQUFPLEVBQUUsbUJBQW1CO1NBQzdCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsT0FBTyxvQkFBTyxDQUFDLGNBQWMsQ0FDM0IsSUFBSSxFQUNKLHNCQUFzQixFQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQ3pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUE3Q0QsOENBNkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXRIYXNoVHlwZSwgRG9ja2VySW1hZ2UgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IGV4cGVyaW1lbnRhbCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udFwiO1xuaW1wb3J0IHsgQ29kZSwgSVZlcnNpb24sIFJ1bnRpbWUsIFZlcnNpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IHsgRXNidWlsZCB9IGZyb20gXCJAYWxpZ2VudC9jZGstZXNidWlsZFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByZXJlbmRlckZ1bmN0aW9uT3B0aW9ucyB7XG4gIHByZXJlbmRlclRva2VuOiBzdHJpbmc7XG4gIHByZXJlbmRlclVybD86IHN0cmluZztcbiAgcGF0aFByZWZpeD86IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFByZXJlbmRlckZ1bmN0aW9uIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgZWRnZUZ1bmN0aW9uOiBleHBlcmltZW50YWwuRWRnZUZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IFByZXJlbmRlckZ1bmN0aW9uT3B0aW9ucykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBjb21tYW5kID0gW1xuICAgICAgXCJzaFwiLFxuICAgICAgXCItY1wiLFxuICAgICAgJ2VjaG8gXCJEb2NrZXIgYnVpbGQgbm90IHN1cHBvcnRlZC4gUGxlYXNlIGluc3RhbGwgZXNidWlsZC5cIicsXG4gICAgXTtcblxuICAgIHRoaXMuZWRnZUZ1bmN0aW9uID0gbmV3IGV4cGVyaW1lbnRhbC5FZGdlRnVuY3Rpb24oXG4gICAgICB0aGlzLFxuICAgICAgYCR7aWR9LXByZXJlbmRlci1mbmAsXG4gICAgICB7XG4gICAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KGpvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJzXCIpLCB7XG4gICAgICAgICAgYXNzZXRIYXNoVHlwZTogQXNzZXRIYXNoVHlwZS5PVVRQVVQsXG4gICAgICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgICAgIGNvbW1hbmQsXG4gICAgICAgICAgICBpbWFnZTogRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KFwiYnVzeWJveFwiKSxcbiAgICAgICAgICAgIGxvY2FsOiBuZXcgRXNidWlsZCh7XG4gICAgICAgICAgICAgIGVudHJ5UG9pbnRzOiBbam9pbihfX2Rpcm5hbWUsIFwiaGFuZGxlcnMvcHJlcmVuZGVyLnRzXCIpXSxcbiAgICAgICAgICAgICAgZGVmaW5lOiB7XG4gICAgICAgICAgICAgICAgXCJwcm9jZXNzLmVudi5QUkVSRU5ERVJfVE9LRU5cIjogb3B0aW9ucy5wcmVyZW5kZXJUb2tlbixcbiAgICAgICAgICAgICAgICBcInByb2Nlc3MuZW52LlBBVEhfUFJFRklYXCI6IG9wdGlvbnMucGF0aFByZWZpeCA/PyBcIlwiLFxuICAgICAgICAgICAgICAgIFwicHJvY2Vzcy5lbnYuUFJFUkVOREVSX1VSTFwiOlxuICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wcmVyZW5kZXJVcmwgPz8gXCJzZXJ2aWNlLnByZXJlbmRlci5pb1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzE4X1gsXG4gICAgICAgIGhhbmRsZXI6IFwicHJlcmVuZGVyLmhhbmRsZXJcIixcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHVibGljIGdldEZ1bmN0aW9uVmVyc2lvbigpOiBJVmVyc2lvbiB7XG4gICAgcmV0dXJuIFZlcnNpb24uZnJvbVZlcnNpb25Bcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJwcmVyZW5kZXItZm4tdmVyc2lvblwiLFxuICAgICAgdGhpcy5lZGdlRnVuY3Rpb24uY3VycmVudFZlcnNpb24uZWRnZUFyblxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "Cloudfront Lambda@Edge constructs for integrating with prerender.io",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"jest": "^29.7.0",
|
|
24
24
|
"ts-jest": "^29.1.1",
|
|
25
25
|
"ts-node": "^10.9.1",
|
|
26
|
-
"typescript": "~5.3.2"
|
|
27
|
-
"@aligent/esbuild": "^2.0"
|
|
26
|
+
"typescript": "~5.3.2"
|
|
28
27
|
},
|
|
29
28
|
"dependencies": {
|
|
29
|
+
"@aligent/cdk-esbuild": "^2.0",
|
|
30
30
|
"aws-cdk-lib": "2.113.0",
|
|
31
31
|
"axios": "^1.5.1",
|
|
32
32
|
"constructs": "^10.3.0",
|
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
|
-
}
|