UNPKG

cdk-nextjs

Version:

Deploy Next.js apps on AWS with CDK

71 lines 10.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.s3 = void 0; exports.fsToS3 = fsToS3; exports.createS3Key = createS3Key; const node_fs_1 = require("node:fs"); const node_path_1 = require("node:path"); // eslint-disable-next-line import/no-extraneous-dependencies const client_s3_1 = require("@aws-sdk/client-s3"); // eslint-disable-next-line import/no-extraneous-dependencies const lib_storage_1 = require("@aws-sdk/lib-storage"); // eslint-disable-next-line import/no-extraneous-dependencies const mime = require("mime-types"); const common_1 = require("./common"); const constants_1 = require("../../constants"); const utils_1 = require("../utils"); exports.s3 = new client_s3_1.S3Client({}); async function fsToS3(props) { const { buildId, destinationBucketName, destinationKeyPrefix, nextjsType, sourcePath, } = props; const sourceFilePaths = (0, common_1.listFilePaths)(sourcePath); for await (const filePathChunk of (0, common_1.chunkArray)(sourceFilePaths, 100)) { const putObjectInputs = filePathChunk.map((path) => { const contentType = mime.lookup(path) || undefined; const key = createS3Key({ keyPrefix: destinationKeyPrefix, path, basePath: sourcePath, }); let body; if (path.includes(".next/static/chunks/main-app-") && nextjsType === constants_1.NextjsType.GLOBAL_FUNCTIONS) { // see src/lambdas/assets-deployment/patch-fetch.js for why this is needed const mainAppFileContent = (0, node_fs_1.readFileSync)(path); const patchFetchContent = (0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, "patch-fetch.js")) .toString() // remove "use strict" because it causes: Uncaught ReferenceError: _N_E is not defined // since strict mode doesn't allow webpack to define undeclared variables .replace('"use strict";', ""); body = patchFetchContent + "\n" + mainAppFileContent; } else { body = (0, node_fs_1.createReadStream)(path); } return { Body: body, Bucket: destinationBucketName, ContentType: contentType, Key: key, Metadata: { "next-build-id": buildId, }, }; }); (0, utils_1.debug)(putObjectInputs.map((i) => ({ bucket: i.Bucket, key: i.Key, }))); await Promise.all(putObjectInputs.map((input) => new lib_storage_1.Upload({ client: exports.s3, params: input }).done())); } } /** * Create S3 Key given local path */ function createS3Key({ keyPrefix, path, basePath }) { const objectKeyParts = []; if (keyPrefix) objectKeyParts.push(keyPrefix); objectKeyParts.push((0, node_path_1.relative)(basePath, path)); return (0, node_path_1.join)(...objectKeyParts); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMtdG8tczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9mcy10by1zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFvQkEsd0JBMkRDO0FBVUQsa0NBS0M7QUE5RkQscUNBQXFFO0FBQ3JFLHlDQUEyQztBQUMzQyw2REFBNkQ7QUFDN0Qsa0RBQXFFO0FBQ3JFLDZEQUE2RDtBQUM3RCxzREFBOEM7QUFDOUMsNkRBQTZEO0FBQzdELG1DQUFtQztBQUNuQyxxQ0FBcUQ7QUFDckQsK0NBQTZDO0FBRTdDLG9DQUFpQztBQUVwQixRQUFBLEVBQUUsR0FBRyxJQUFJLG9CQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7QUFPNUIsS0FBSyxVQUFVLE1BQU0sQ0FBQyxLQUFrQjtJQUM3QyxNQUFNLEVBQ0osT0FBTyxFQUNQLHFCQUFxQixFQUNyQixvQkFBb0IsRUFDcEIsVUFBVSxFQUNWLFVBQVUsR0FDWCxHQUFHLEtBQUssQ0FBQztJQUNWLE1BQU0sZUFBZSxHQUFHLElBQUEsc0JBQWEsRUFBQyxVQUFVLENBQUMsQ0FBQztJQUNsRCxJQUFJLEtBQUssRUFBRSxNQUFNLGFBQWEsSUFBSSxJQUFBLG1CQUFVLEVBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkUsTUFBTSxlQUFlLEdBQTRCLGFBQWEsQ0FBQyxHQUFHLENBQ2hFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDUCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQztZQUNuRCxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUM7Z0JBQ3RCLFNBQVMsRUFBRSxvQkFBb0I7Z0JBQy9CLElBQUk7Z0JBQ0osUUFBUSxFQUFFLFVBQVU7YUFDckIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxJQUF5QixDQUFDO1lBQzlCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsQ0FBQztnQkFDOUMsVUFBVSxLQUFLLHNCQUFVLENBQUMsZ0JBQWdCLEVBQzFDLENBQUM7Z0JBQ0QsMEVBQTBFO2dCQUMxRSxNQUFNLGtCQUFrQixHQUFHLElBQUEsc0JBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLHNCQUFZLEVBQ3BDLElBQUEsZ0JBQUksRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUMsQ0FDbEM7cUJBQ0UsUUFBUSxFQUFFO29CQUNYLHNGQUFzRjtvQkFDdEYseUVBQXlFO3FCQUN4RSxPQUFPLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoQyxJQUFJLEdBQUcsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLGtCQUFrQixDQUFDO1lBQ3ZELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsSUFBQSwwQkFBZ0IsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSTtnQkFDVixNQUFNLEVBQUUscUJBQXFCO2dCQUM3QixXQUFXLEVBQUUsV0FBVztnQkFDeEIsR0FBRyxFQUFFLEdBQUc7Z0JBQ1IsUUFBUSxFQUFFO29CQUNSLGVBQWUsRUFBRSxPQUFPO2lCQUN6QjthQUNGLENBQUM7UUFDSixDQUFDLENBQ0YsQ0FBQztRQUNGLElBQUEsYUFBSyxFQUNILGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO1lBQ2hCLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztTQUNYLENBQUMsQ0FBQyxDQUNKLENBQUM7UUFDRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQzVCLElBQUksb0JBQU0sQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQ2pELENBQ0YsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBT0Q7O0dBRUc7QUFDSCxTQUFnQixXQUFXLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBb0I7SUFDekUsTUFBTSxjQUFjLEdBQWEsRUFBRSxDQUFDO0lBQ3BDLElBQUksU0FBUztRQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDOUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFBLG9CQUFRLEVBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsT0FBTyxJQUFBLGdCQUFJLEVBQUMsR0FBRyxjQUFjLENBQUMsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgcmVhZEZpbGVTeW5jLCBSZWFkU3RyZWFtIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0IHsgUHV0T2JqZWN0Q29tbWFuZElucHV0LCBTM0NsaWVudCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCB7IFVwbG9hZCB9IGZyb20gXCJAYXdzLXNkay9saWItc3RvcmFnZVwiO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgbWltZSBmcm9tIFwibWltZS10eXBlc1wiO1xuaW1wb3J0IHsgY2h1bmtBcnJheSwgbGlzdEZpbGVQYXRocyB9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgTmV4dGpzVHlwZSB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCB0eXBlIHsgRnNUb1MzQWN0aW9uIH0gZnJvbSBcIi4uLy4uL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IHMzID0gbmV3IFMzQ2xpZW50KHt9KTtcblxuaW50ZXJmYWNlIEZzVG9TM1Byb3BzIGV4dGVuZHMgRnNUb1MzQWN0aW9uIHtcbiAgYnVpbGRJZDogc3RyaW5nO1xuICBuZXh0anNUeXBlPzogTmV4dGpzVHlwZTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZzVG9TMyhwcm9wczogRnNUb1MzUHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGJ1aWxkSWQsXG4gICAgZGVzdGluYXRpb25CdWNrZXROYW1lLFxuICAgIGRlc3RpbmF0aW9uS2V5UHJlZml4LFxuICAgIG5leHRqc1R5cGUsXG4gICAgc291cmNlUGF0aCxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBzb3VyY2VGaWxlUGF0aHMgPSBsaXN0RmlsZVBhdGhzKHNvdXJjZVBhdGgpO1xuICBmb3IgYXdhaXQgKGNvbnN0IGZpbGVQYXRoQ2h1bmsgb2YgY2h1bmtBcnJheShzb3VyY2VGaWxlUGF0aHMsIDEwMCkpIHtcbiAgICBjb25zdCBwdXRPYmplY3RJbnB1dHM6IFB1dE9iamVjdENvbW1hbmRJbnB1dFtdID0gZmlsZVBhdGhDaHVuay5tYXAoXG4gICAgICAocGF0aCkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG1pbWUubG9va3VwKHBhdGgpIHx8IHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3Qga2V5ID0gY3JlYXRlUzNLZXkoe1xuICAgICAgICAgIGtleVByZWZpeDogZGVzdGluYXRpb25LZXlQcmVmaXgsXG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBiYXNlUGF0aDogc291cmNlUGF0aCxcbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBib2R5OiBzdHJpbmcgfCBSZWFkU3RyZWFtO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcGF0aC5pbmNsdWRlcyhcIi5uZXh0L3N0YXRpYy9jaHVua3MvbWFpbi1hcHAtXCIpICYmXG4gICAgICAgICAgbmV4dGpzVHlwZSA9PT0gTmV4dGpzVHlwZS5HTE9CQUxfRlVOQ1RJT05TXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIHNlZSBzcmMvbGFtYmRhcy9hc3NldHMtZGVwbG95bWVudC9wYXRjaC1mZXRjaC5qcyBmb3Igd2h5IHRoaXMgaXMgbmVlZGVkXG4gICAgICAgICAgY29uc3QgbWFpbkFwcEZpbGVDb250ZW50ID0gcmVhZEZpbGVTeW5jKHBhdGgpO1xuICAgICAgICAgIGNvbnN0IHBhdGNoRmV0Y2hDb250ZW50ID0gcmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgam9pbihfX2Rpcm5hbWUsIFwicGF0Y2gtZmV0Y2guanNcIiksXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLnRvU3RyaW5nKClcbiAgICAgICAgICAgIC8vIHJlbW92ZSBcInVzZSBzdHJpY3RcIiBiZWNhdXNlIGl0IGNhdXNlczogVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IF9OX0UgaXMgbm90IGRlZmluZWRcbiAgICAgICAgICAgIC8vIHNpbmNlIHN0cmljdCBtb2RlIGRvZXNuJ3QgYWxsb3cgd2VicGFjayB0byBkZWZpbmUgdW5kZWNsYXJlZCB2YXJpYWJsZXNcbiAgICAgICAgICAgIC5yZXBsYWNlKCdcInVzZSBzdHJpY3RcIjsnLCBcIlwiKTtcbiAgICAgICAgICBib2R5ID0gcGF0Y2hGZXRjaENvbnRlbnQgKyBcIlxcblwiICsgbWFpbkFwcEZpbGVDb250ZW50O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJvZHkgPSBjcmVhdGVSZWFkU3RyZWFtKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgQm9keTogYm9keSxcbiAgICAgICAgICBCdWNrZXQ6IGRlc3RpbmF0aW9uQnVja2V0TmFtZSxcbiAgICAgICAgICBDb250ZW50VHlwZTogY29udGVudFR5cGUsXG4gICAgICAgICAgS2V5OiBrZXksXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgIFwibmV4dC1idWlsZC1pZFwiOiBidWlsZElkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG4gICAgZGVidWcoXG4gICAgICBwdXRPYmplY3RJbnB1dHMubWFwKChpKSA9PiAoe1xuICAgICAgICBidWNrZXQ6IGkuQnVja2V0LFxuICAgICAgICBrZXk6IGkuS2V5LFxuICAgICAgfSkpLFxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwdXRPYmplY3RJbnB1dHMubWFwKChpbnB1dCkgPT5cbiAgICAgICAgbmV3IFVwbG9hZCh7IGNsaWVudDogczMsIHBhcmFtczogaW5wdXQgfSkuZG9uZSgpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG59XG5cbmludGVyZmFjZSBDcmVhdGVTM0tleVByb3BzIHtcbiAga2V5UHJlZml4Pzogc3RyaW5nO1xuICBwYXRoOiBzdHJpbmc7XG4gIGJhc2VQYXRoOiBzdHJpbmc7XG59XG4vKipcbiAqIENyZWF0ZSBTMyBLZXkgZ2l2ZW4gbG9jYWwgcGF0aFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUzNLZXkoeyBrZXlQcmVmaXgsIHBhdGgsIGJhc2VQYXRoIH06IENyZWF0ZVMzS2V5UHJvcHMpIHtcbiAgY29uc3Qgb2JqZWN0S2V5UGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmIChrZXlQcmVmaXgpIG9iamVjdEtleVBhcnRzLnB1c2goa2V5UHJlZml4KTtcbiAgb2JqZWN0S2V5UGFydHMucHVzaChyZWxhdGl2ZShiYXNlUGF0aCwgcGF0aCkpO1xuICByZXR1cm4gam9pbiguLi5vYmplY3RLZXlQYXJ0cyk7XG59XG4iXX0=