UNPKG

@alexanderjeurissen/yarn-bundle

Version:
44 lines (43 loc) 1.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPackageDetails = exports.fetchPackageInfo = exports.fetchGlobalNodeModules = exports.execAsync = void 0; const child_process_1 = require("child_process"); const chalk_1 = __importDefault(require("chalk")); exports.execAsync = async (cmd) => { return new Promise((resolve) => { child_process_1.exec(cmd, (error, stdout, stderr) => { if (error) { console.error(chalk_1.default.red(error)); } if (stderr) { console.error(chalk_1.default.red(stderr)); } resolve(stdout ? stdout : stderr); }); }); }; exports.fetchGlobalNodeModules = async () => { const stdout = await exports.execAsync("yarn global --json --no-progress list"); const entries = JSON.parse(`[${stdout.trim().split("\n").join(",")}]`); const listEntries = entries.filter((entry) => entry["type"] === "list"); const infoEntries = entries.filter((entry) => entry["type"] === "info"); return { entries, listEntries, infoEntries }; }; exports.fetchPackageInfo = async (packageName) => { const result = await exports.execAsync(`yarn --json info ${packageName}`); return JSON.parse(result)["data"]; }; exports.getPackageDetails = (options) => async (nodePackage) => { const { data } = nodePackage; const [, name, version] = data.match(/^"(.*)@(.*)" has binaries/); const details = { name, version }; // NOTE: only fetch description if --describe flag is passed if (options.describe) { const { description } = await exports.fetchPackageInfo(name); details["description"] = description; } return details; };