UNPKG

msync

Version:

Easily manage building and syncing multiple node-modules in a flexibly defined workspace.

71 lines (70 loc) 3.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.info = void 0; var tslib_1 = require("tslib"); var libs_1 = require("./libs"); function info(pkg, options) { if (options === void 0) { options = {}; } return tslib_1.__awaiter(this, void 0, void 0, function () { var onModuleRead, modules, batchSize, getInfo, res, _i, _a, batch, items; var _this = this; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: onModuleRead = options.onModuleRead; modules = (Array.isArray(pkg) ? pkg : [pkg]).filter(function (pkg) { return pkg.json.private !== true; }); batchSize = (0, libs_1.defaultValue)(options.batchSize, 20); getInfo = function (pkg) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var name_1, version, latest, res_1, error_1, message; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: _a.trys.push([0, 2, , 3]); name_1 = pkg.name; version = pkg.version; return [4, libs_1.npm.getVersion(pkg.name)]; case 1: latest = _a.sent(); if (onModuleRead) { onModuleRead(pkg); } res_1 = { name: name_1, version: version, latest: latest }; return [2, res_1]; case 2: error_1 = _a.sent(); message = "Failed getting NPM info for '".concat(pkg.name, "'. ").concat(error_1.message); throw new Error(message); case 3: return [2]; } }); }); }; res = []; _i = 0, _a = chunk(batchSize, modules); _b.label = 1; case 1: if (!(_i < _a.length)) return [3, 4]; batch = _a[_i]; return [4, Promise.all(batch.map(function (pkg) { return getInfo(pkg); }))]; case 2: items = _b.sent(); res = tslib_1.__spreadArray(tslib_1.__spreadArray([], res, true), items, true); _b.label = 3; case 3: _i++; return [3, 1]; case 4: return [2, res]; } }); }); } exports.info = info; function chunk(size, items) { var chunks = Math.ceil(items.length / size); var result = []; var i = 0; while (i < chunks) { result[i] = items.splice(0, size); i++; } return result; }