UNPKG

cdk-nextjs

Version:

Deploy Next.js apps on AWS with CDK

49 lines 7.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // eslint-disable-next-line import/no-extraneous-dependencies const file_system_cache_1 = require("next/dist/server/lib/incremental-cache/file-system-cache"); const constants_1 = require("../constants"); class CdkNextjsCacheHandler extends file_system_cache_1.default { constructor(options) { /** * @example `/mnt/cdk-nextjs/{relativePathToPackage}/.next/server` * This allows us to tell Next.js `FileSystemCache` to write .next/cache/fetch-cache * data and .next/server/app/*.{html,rsc,meta,body} data to our EFS shared * file system. Note, we cannot control where optimized images are cached * through public Next.js APIs so we must symlink. * * Note, the `serverDistDir` defaults to current directory of the Next.js * app but we cannot use this because 1/ we want to share cache between * mutiple functions or containers via EFS mount 2/ lambda cannot write * to disk (unless /tmp or EFS mount) */ const cdkNextjsServerDistDir = process.env[constants_1.CDK_NEXTJS_SERVER_DIST_DIR_ENV_VAR_NAME]; if (!cdkNextjsServerDistDir) { throw new Error(`${constants_1.CDK_NEXTJS_SERVER_DIST_DIR_ENV_VAR_NAME} environment variable not set`); } super({ ...options, serverDistDir: cdkNextjsServerDistDir }); } get(cacheKey, ctx) { // console.log(JSON.stringify({ cacheKey, ctx }, null, 2)); return super.get(cacheKey, ctx); } set(pathname, data, ctx) { // console.log( // JSON.stringify( // { // pathname, // data: // data?.kind === "PAGE" // ? { ...data, pageData: "...", html: "..." } // : data, // ctx, // }, // null, // 2, // ), // ); return super.set(pathname, data, ctx); } } exports.default = CdkNextjsCacheHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLW5leHRqcy1jYWNoZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25leHRqcy1idWlsZC9jZGstbmV4dGpzLWNhY2hlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSw2REFBNkQ7QUFDN0QsZ0dBQXVGO0FBTXZGLDRDQUF1RTtBQUV2RSxNQUFxQixxQkFBc0IsU0FBUSwyQkFBZTtJQUNoRSxZQUFZLE9BQXlEO1FBQ25FOzs7Ozs7Ozs7OztXQVdHO1FBQ0gsTUFBTSxzQkFBc0IsR0FDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBdUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQ2IsR0FBRyxtREFBdUMsK0JBQStCLENBQzFFLENBQUM7UUFDSixDQUFDO1FBQ0QsS0FBSyxDQUFDLEVBQUUsR0FBRyxPQUFPLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsR0FBRyxDQUNELFFBQWdCLEVBQ2hCLEdBU2E7UUFFYiwyREFBMkQ7UUFDM0QsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsR0FBRyxDQUNELFFBQWdCLEVBQ2hCLElBQWtDLEVBQ2xDLEdBTUM7UUFFRCxlQUFlO1FBQ2Ysb0JBQW9CO1FBQ3BCLFFBQVE7UUFDUixrQkFBa0I7UUFDbEIsY0FBYztRQUNkLGdDQUFnQztRQUNoQyx3REFBd0Q7UUFDeEQsb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYixTQUFTO1FBQ1QsWUFBWTtRQUNaLFNBQVM7UUFDVCxPQUFPO1FBQ1AsS0FBSztRQUNMLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDRjtBQXBFRCx3Q0FvRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBUaGlzIGZpbGUgaXMgY29tcGlsZWQgYXMgZGVmaW5lZCBpbiAucHJvamVucmMudHMgdG8gYmUgdXNlZCBhcyBOZXh0LmpzXG4gIEN1c3RvbSBDYWNoZSBIYW5kbGVyLiBTZWU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL25leHQtY29uZmlnLWpzL2luY3JlbWVudGFsQ2FjaGVIYW5kbGVyUGF0aFxuKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IENhY2hlSGFuZGxlclZhbHVlIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvbGliL2luY3JlbWVudGFsLWNhY2hlXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgRmlsZVN5c3RlbUNhY2hlIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2xpYi9pbmNyZW1lbnRhbC1jYWNoZS9maWxlLXN5c3RlbS1jYWNoZVwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHtcbiAgSW5jcmVtZW50YWxDYWNoZUtpbmRIaW50LFxuICBJbmNyZW1lbnRhbENhY2hlVmFsdWUsXG59IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL3Jlc3BvbnNlLWNhY2hlXCI7XG5pbXBvcnQgeyBDREtfTkVYVEpTX1NFUlZFUl9ESVNUX0RJUl9FTlZfVkFSX05BTUUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENka05leHRqc0NhY2hlSGFuZGxlciBleHRlbmRzIEZpbGVTeXN0ZW1DYWNoZSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENvbnN0cnVjdG9yUGFyYW1ldGVyczx0eXBlb2YgRmlsZVN5c3RlbUNhY2hlPlswXSkge1xuICAgIC8qKlxuICAgICAqIEBleGFtcGxlIGAvbW50L2Nkay1uZXh0anMve3JlbGF0aXZlUGF0aFRvUGFja2FnZX0vLm5leHQvc2VydmVyYFxuICAgICAqIFRoaXMgYWxsb3dzIHVzIHRvIHRlbGwgTmV4dC5qcyBgRmlsZVN5c3RlbUNhY2hlYCB0byB3cml0ZSAubmV4dC9jYWNoZS9mZXRjaC1jYWNoZVxuICAgICAqIGRhdGEgYW5kIC5uZXh0L3NlcnZlci9hcHAvKi57aHRtbCxyc2MsbWV0YSxib2R5fSBkYXRhIHRvIG91ciBFRlMgc2hhcmVkXG4gICAgICogZmlsZSBzeXN0ZW0uIE5vdGUsIHdlIGNhbm5vdCBjb250cm9sIHdoZXJlIG9wdGltaXplZCBpbWFnZXMgYXJlIGNhY2hlZFxuICAgICAqIHRocm91Z2ggcHVibGljIE5leHQuanMgQVBJcyBzbyB3ZSBtdXN0IHN5bWxpbmsuXG4gICAgICpcbiAgICAgKiBOb3RlLCB0aGUgYHNlcnZlckRpc3REaXJgIGRlZmF1bHRzIHRvIGN1cnJlbnQgZGlyZWN0b3J5IG9mIHRoZSBOZXh0LmpzXG4gICAgICogYXBwIGJ1dCB3ZSBjYW5ub3QgdXNlIHRoaXMgYmVjYXVzZSAxLyB3ZSB3YW50IHRvIHNoYXJlIGNhY2hlIGJldHdlZW5cbiAgICAgKiBtdXRpcGxlIGZ1bmN0aW9ucyBvciBjb250YWluZXJzIHZpYSBFRlMgbW91bnQgMi8gbGFtYmRhIGNhbm5vdCB3cml0ZVxuICAgICAqIHRvIGRpc2sgKHVubGVzcyAvdG1wIG9yIEVGUyBtb3VudClcbiAgICAgKi9cbiAgICBjb25zdCBjZGtOZXh0anNTZXJ2ZXJEaXN0RGlyID1cbiAgICAgIHByb2Nlc3MuZW52W0NES19ORVhUSlNfU0VSVkVSX0RJU1RfRElSX0VOVl9WQVJfTkFNRV07XG4gICAgaWYgKCFjZGtOZXh0anNTZXJ2ZXJEaXN0RGlyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGAke0NES19ORVhUSlNfU0VSVkVSX0RJU1RfRElSX0VOVl9WQVJfTkFNRX0gZW52aXJvbm1lbnQgdmFyaWFibGUgbm90IHNldGAsXG4gICAgICApO1xuICAgIH1cbiAgICBzdXBlcih7IC4uLm9wdGlvbnMsIHNlcnZlckRpc3REaXI6IGNka05leHRqc1NlcnZlckRpc3REaXIgfSk7XG4gIH1cblxuICBnZXQoXG4gICAgY2FjaGVLZXk6IHN0cmluZyxcbiAgICBjdHg/OlxuICAgICAgfCB7XG4gICAgICAgICAga2luZEhpbnQ/OiBJbmNyZW1lbnRhbENhY2hlS2luZEhpbnQ7XG4gICAgICAgICAgcmV2YWxpZGF0ZT86IG51bWJlciB8IGZhbHNlO1xuICAgICAgICAgIGZldGNoVXJsPzogc3RyaW5nO1xuICAgICAgICAgIGZldGNoSWR4PzogbnVtYmVyO1xuICAgICAgICAgIHRhZ3M/OiBzdHJpbmdbXTtcbiAgICAgICAgICBzb2Z0VGFncz86IHN0cmluZ1tdO1xuICAgICAgICB9XG4gICAgICB8IHVuZGVmaW5lZCxcbiAgKTogUHJvbWlzZTxDYWNoZUhhbmRsZXJWYWx1ZSB8IG51bGw+IHtcbiAgICAvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh7IGNhY2hlS2V5LCBjdHggfSwgbnVsbCwgMikpO1xuICAgIHJldHVybiBzdXBlci5nZXQoY2FjaGVLZXksIGN0eCk7XG4gIH1cblxuICBzZXQoXG4gICAgcGF0aG5hbWU6IHN0cmluZyxcbiAgICBkYXRhOiBJbmNyZW1lbnRhbENhY2hlVmFsdWUgfCBudWxsLFxuICAgIGN0eDoge1xuICAgICAgcmV2YWxpZGF0ZT86IG51bWJlciB8IGZhbHNlO1xuICAgICAgZmV0Y2hDYWNoZT86IGJvb2xlYW47XG4gICAgICBmZXRjaFVybD86IHN0cmluZztcbiAgICAgIGZldGNoSWR4PzogbnVtYmVyO1xuICAgICAgdGFncz86IHN0cmluZ1tdO1xuICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGNvbnNvbGUubG9nKFxuICAgIC8vICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgLy8gICAgIHtcbiAgICAvLyAgICAgICBwYXRobmFtZSxcbiAgICAvLyAgICAgICBkYXRhOlxuICAgIC8vICAgICAgICAgZGF0YT8ua2luZCA9PT0gXCJQQUdFXCJcbiAgICAvLyAgICAgICAgICAgPyB7IC4uLmRhdGEsIHBhZ2VEYXRhOiBcIi4uLlwiLCBodG1sOiBcIi4uLlwiIH1cbiAgICAvLyAgICAgICAgICAgOiBkYXRhLFxuICAgIC8vICAgICAgIGN0eCxcbiAgICAvLyAgICAgfSxcbiAgICAvLyAgICAgbnVsbCxcbiAgICAvLyAgICAgMixcbiAgICAvLyAgICksXG4gICAgLy8gKTtcbiAgICByZXR1cm4gc3VwZXIuc2V0KHBhdGhuYW1lLCBkYXRhLCBjdHgpO1xuICB9XG59XG4iXX0=