UNPKG

msync

Version:

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

66 lines (65 loc) 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 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 modules, batchSize, getInfo, res, _i, _a, batch, items; var _this = this; return tslib_1.__generator(this, function (_b) { switch (_b.label) { case 0: modules = (Array.isArray(pkg) ? pkg : [pkg]).filter(function (pkg) { return pkg.json.private !== true; }); batchSize = 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(); 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 '" + pkg.name + "'. " + 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.__spreadArrays(res, items); _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; }