UNPKG

npm-check-updates

Version:

Find newer versions of dependencies than what your package.json allows

78 lines 3.49 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const find_up_1 = __importDefault(require("find-up")); const promises_1 = __importDefault(require("fs/promises")); const get_stdin_1 = __importDefault(require("get-stdin")); const path_1 = __importDefault(require("path")); const logging_1 = require("../lib/logging"); const chalk_1 = __importDefault(require("./chalk")); const programError_1 = __importDefault(require("./programError")); /** * Finds the package file and data. * * Searches as follows: * --packageData flag * --packageFile flag * --stdin * --findUp */ async function findPackage(options) { let pkgData; let pkgFile = null; const pkgPath = options.packageFile || 'package.json'; /** Reads the contents of a package file. */ function getPackageDataFromFile(pkgFile, pkgFileName) { // exit if no pkgFile to read from fs if (pkgFile != null) { const relPathToPackage = path_1.default.resolve(pkgFile); (0, logging_1.print)(options, `${options.upgrade ? 'Upgrading' : 'Checking'} ${relPathToPackage}`); } else { (0, programError_1.default)(options, `${chalk_1.default.red(`No ${pkgFileName}`)}\n\nPlease add a ${pkgFileName} to the current directory, specify the ${chalk_1.default.cyan('--packageFile')} or ${chalk_1.default.cyan('--packageData')} options, or pipe a ${pkgFileName} to stdin and specify ${chalk_1.default.cyan('--stdin')}.`, { color: false }); } return promises_1.default.readFile(pkgFile, 'utf-8').catch(e => { (0, programError_1.default)(options, e); }); } (0, logging_1.print)(options, 'Running in local mode', 'verbose'); (0, logging_1.print)(options, 'Finding package file data', 'verbose'); // get the package data from the various input possibilities if (options.packageData) { pkgFile = null; pkgData = Promise.resolve(options.packageData); } else if (options.packageFile) { pkgFile = options.packageFile; pkgData = getPackageDataFromFile(pkgFile, pkgPath); } else if (options.stdin) { (0, logging_1.print)(options, 'Waiting for package data on stdin', 'verbose'); // get data from stdin // trim stdin to account for \r\n const stdinData = await (0, get_stdin_1.default)(); const data = stdinData.trim().length > 0 ? stdinData : null; // if no stdin content fall back to searching for package.json from pwd and up to root pkgFile = data || !pkgPath ? null : await (0, find_up_1.default)(pkgPath); pkgData = data || getPackageDataFromFile(await pkgFile, pkgPath); } else { // find the closest package starting from the current working directory and going up to the root pkgFile = pkgPath ? await (0, find_up_1.default)(!options.packageFile && options.packageManager === 'deno' ? ['deno.json', 'deno.jsonc'] : pkgPath, { cwd: options.cwd || process.cwd(), }) : null; pkgData = getPackageDataFromFile(pkgFile, pkgPath); } const pkgDataResolved = await pkgData; return { pkgData: pkgDataResolved, pkgFile: pkgFile || null, pkgPath, }; } exports.default = findPackage; //# sourceMappingURL=findPackage.js.map