UNPKG

@expressjs/codemod

Version:

Codemods for updating express servers.

51 lines (50 loc) 2.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.transform = transform; const node_path_1 = require("node:path"); const Runner_1 = require("jscodeshift/src/Runner"); const picocolors_1 = require("picocolors"); const prompts_1 = __importDefault(require("prompts")); const config_1 = require("../config"); const prompts_2 = require("../utils/prompts"); const transformerDirectory = (0, node_path_1.join)(__dirname, '../', 'transforms'); const selectCodemod = async () => { const res = await (0, prompts_1.default)({ type: 'select', name: 'transformer', message: 'Which codemod would you like to apply?', choices: config_1.TRANSFORM_OPTIONS.map(({ description, value, version }) => { return { title: `(${(0, picocolors_1.bold)(`v${version}`)}) ${value}`, description, value, }; }), }, { onCancel: prompts_2.onCancel }); return res.transformer; }; async function transform(codemodName, source, options) { const existCodemod = config_1.TRANSFORM_OPTIONS.find(({ value }) => value === codemodName); const codemodSelected = !codemodName || (codemodName && !existCodemod) ? await selectCodemod() : codemodName; if (!codemodSelected) { console.info('> Codemod is not selected. Exits the program. \n'); process.exit(1); } const sourceSelected = source || (await (0, prompts_2.promptSource)('Which files or directories should the codemods be applied to?')); if (!sourceSelected) { console.info('> Source path for project is not selected. Exits the program. \n'); process.exit(1); } const transformerPath = (0, node_path_1.join)(transformerDirectory, `${codemodSelected}.js`); const args = { ...options, verbose: options?.verbose ? 2 : 0, babel: false, ignorePattern: '**/node_modules/**', extensions: 'cts,mts,ts,js,mjs,cjs', }; await (0, Runner_1.run)(transformerPath, [(0, node_path_1.resolve)(sourceSelected)], args); }