UNPKG

cdkdx

Version:

Zero-config CLI for aws cdk development

106 lines 13.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeModulesPlugin = void 0; const module_1 = require("module"); const path = __importStar(require("path")); const fs = __importStar(require("fs-extra")); const package_manager_1 = require("../package-manager"); class NodeModulesPlugin { constructor(options) { this.options = options; this.packageJsonMap = {}; this.packageManager = new package_manager_1.PackageManager(); } apply(compiler) { if (this.options.nodeModules.length === 0) return; // eslint-disable-next-line @typescript-eslint/no-explicit-any const processModule = async (name, module) => { var _a; const portableId = module.portableId ? module.portableId : module.identifier(); if (!portableId.startsWith('external')) return; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const moduleName = /"(.*?)"/.exec(portableId)[1]; if (module_1.builtinModules.includes(moduleName)) return; // check external if (!this.options.nodeModules.includes(moduleName)) return; const context = (_a = module.issuer) === null || _a === void 0 ? void 0 : _a.context; try { const modulePackageFile = require.resolve(`${moduleName}/package.json`, context ? { paths: [context], } : undefined); const { version } = (await fs.readJSON(modulePackageFile)); if (!version) throw new Error('Package.json without version'); this.packageJsonMap[name] = { name, private: true, dependencies: { [moduleName]: version, }, }; // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (e) { throw new Error(`Error while processing nodeModules: ${e.message}`); } }; compiler.hooks.emit.tapPromise(NodeModulesPlugin.NAME, async (compilation) => { await Promise.all(compilation.chunks.map((chunk) => Promise.all( // eslint-disable-next-line @typescript-eslint/no-explicit-any chunk.modulesIterable.map((module) => processModule(chunk.name, module))))); Object.keys(this.packageJsonMap).forEach((key) => { const json = JSON.stringify(this.packageJsonMap[key]); compilation.assets[`${key}/package.json`] = { source: function () { return json; }, size: function () { return json.length; }, }; }); }); compiler.hooks.afterEmit.tapPromise(NodeModulesPlugin.NAME, async () => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const outputPath = compiler.options.output.path; await Promise.all(Object.keys(this.packageJsonMap).map((key) => this.packageManager.install({ cwd: path.join(outputPath, key), noLockfile: true, }))); }); } } exports.NodeModulesPlugin = NodeModulesPlugin; NodeModulesPlugin.NAME = 'NodeModulesPlugin'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1tb2R1bGVzLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbHVnaW5zL25vZGUtbW9kdWxlcy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBd0M7QUFDeEMsMkNBQTZCO0FBQzdCLDZDQUErQjtBQUkvQix3REFBb0Q7QUFNcEQsTUFBYSxpQkFBaUI7SUFNNUIsWUFBNkIsT0FBaUM7UUFBakMsWUFBTyxHQUFQLE9BQU8sQ0FBMEI7UUFDNUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLGdDQUFjLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQTBCO1FBQzlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBRWxELDhEQUE4RDtRQUM5RCxNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsSUFBWSxFQUFFLE1BQVcsRUFBRSxFQUFFOztZQUN4RCxNQUFNLFVBQVUsR0FBVyxNQUFNLENBQUMsVUFBVTtnQkFDMUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVO2dCQUNuQixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRXhCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztnQkFBRSxPQUFPO1lBRS9DLG9FQUFvRTtZQUNwRSxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxELElBQUksdUJBQWMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUFFLE9BQU87WUFFaEQsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENB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LENBQUM7O0FBdkdILDhDQXdHQztBQXZHd0Isc0JBQUksR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWx0aW5Nb2R1bGVzIH0gZnJvbSAnbW9kdWxlJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgd2VicGFjayBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IFBhY2thZ2VKc29uIH0gZnJvbSAndHlwZS1mZXN0JztcblxuaW1wb3J0IHsgUGFja2FnZU1hbmFnZXIgfSBmcm9tICcuLi9wYWNrYWdlLW1hbmFnZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVNb2R1bGVzUGx1Z2luT3B0aW9ucyB7XG4gIG5vZGVNb2R1bGVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGNsYXNzIE5vZGVNb2R1bGVzUGx1Z2luIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOQU1FID0gJ05vZGVNb2R1bGVzUGx1Z2luJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHBhY2thZ2VKc29uTWFwOiBSZWNvcmQ8c3RyaW5nLCBQYWNrYWdlSnNvbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI6IFBhY2thZ2VNYW5hZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTm9kZU1vZHVsZXNQbHVnaW5PcHRpb25zKSB7XG4gICAgdGhpcy5wYWNrYWdlSnNvbk1hcCA9IHt9O1xuICAgIHRoaXMucGFja2FnZU1hbmFnZXIgPSBuZXcgUGFja2FnZU1hbmFnZXIoKTtcbiAgfVxuXG4gIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5ub2RlTW9kdWxlcy5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgcHJvY2Vzc01vZHVsZSA9IGFzeW5jIChuYW1lOiBzdHJpbmcsIG1vZHVsZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBwb3J0YWJsZUlkOiBzdHJpbmcgPSBtb2R1bGUucG9ydGFibGVJZFxuICAgICAgICA/IG1vZHVsZS5wb3J0YWJsZUlkXG4gICAgICAgIDogbW9kdWxlLmlkZW50aWZpZXIoKTtcblxuICAgICAgaWYgKCFwb3J0YWJsZUlkLnN0YXJ0c1dpdGgoJ2V4dGVybmFsJykpIHJldHVybjtcblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSAvXCIoLio/KVwiLy5leGVjKHBvcnRhYmxlSWQpIVsxXTtcblxuICAgICAgaWYgKGJ1aWx0aW5Nb2R1bGVzLmluY2x1ZGVzKG1vZHVsZU5hbWUpKSByZXR1cm47XG5cbiAgICAgIC8vIGNoZWNrIGV4dGVybmFsXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5ub2RlTW9kdWxlcy5pbmNsdWRlcyhtb2R1bGVOYW1lKSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBjb250ZXh0ID0gbW9kdWxlLmlzc3Vlcj8uY29udGV4dDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbW9kdWxlUGFja2FnZUZpbGUgPSByZXF1aXJlLnJlc29sdmUoXG4gICAgICAgICAgYCR7bW9kdWxlTmFtZX0vcGFja2FnZS5qc29uYCxcbiAgICAgICAgICBjb250ZXh0XG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBwYXRoczogW2NvbnRleHRdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCB7IHZlcnNpb24gfSA9IChhd2FpdCBmcy5yZWFkSlNPTihcbiAgICAgICAgICBtb2R1bGVQYWNrYWdlRmlsZSxcbiAgICAgICAgKSkgYXMgUGFja2FnZUpzb247XG5cbiAgICAgICAgaWYgKCF2ZXJzaW9uKSB0aHJvdyBuZXcgRXJyb3IoJ1BhY2thZ2UuanNvbiB3aXRob3V0IHZlcnNpb24nKTtcblxuICAgICAgICB0aGlzLnBhY2thZ2VKc29uTWFwW25hbWVdID0ge1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgcHJpdmF0ZTogdHJ1ZSxcbiAgICAgICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICAgIFttb2R1bGVOYW1lXTogdmVyc2lvbixcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3Igd2hpbGUgcHJvY2Vzc2luZyBub2RlTW9kdWxlczogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbXBpbGVyLmhvb2tzLmVtaXQudGFwUHJvbWlzZShcbiAgICAgIE5vZGVNb2R1bGVzUGx1Z2luLk5BTUUsXG4gICAgICBhc3luYyAoY29tcGlsYXRpb246IHdlYnBhY2suY29tcGlsYXRpb24uQ29tcGlsYXRpb24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgICAgY29tcGlsYXRpb24uY2h1bmtzLm1hcCgoY2h1bmspID0+XG4gICAgICAgICAgICBQcm9taXNlLmFsbChcbiAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICAgKGNodW5rLm1vZHVsZXNJdGVyYWJsZSBhcyBBcnJheTxhbnk+KS5tYXAoKG1vZHVsZSkgPT5cbiAgICAgICAgICAgICAgICBwcm9jZXNzTW9kdWxlKGNodW5rLm5hbWUsIG1vZHVsZSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5wYWNrYWdlSnNvbk1hcCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KHRoaXMucGFja2FnZUpzb25NYXBba2V5XSk7XG5cbiAgICAgICAgICBjb21waWxhdGlvbi5hc3NldHNbYCR7a2V5fS9wYWNrYWdlLmpzb25gXSA9IHtcbiAgICAgICAgICAgIHNvdXJjZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICByZXR1cm4ganNvbjtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHJldHVybiBqc29uLmxlbmd0aDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb21waWxlci5ob29rcy5hZnRlckVtaXQudGFwUHJvbWlzZShOb2RlTW9kdWxlc1BsdWdpbi5OQU1FLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgY29uc3Qgb3V0cHV0UGF0aCA9IGNvbXBpbGVyLm9wdGlvbnMub3V0cHV0IS5wYXRoIGFzIHN0cmluZztcblxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMucGFja2FnZUpzb25NYXApLm1hcCgoa2V5KSA9PlxuICAgICAgICAgIHRoaXMucGFja2FnZU1hbmFnZXIuaW5zdGFsbCh7XG4gICAgICAgICAgICBjd2Q6IHBhdGguam9pbihvdXRwdXRQYXRoLCBrZXkpLFxuICAgICAgICAgICAgbm9Mb2NrZmlsZTogdHJ1ZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==