cdk-nextjs
Version:
Deploy Next.js apps on AWS with CDK
49 lines • 7.32 kB
JavaScript
;
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=