msync
Version:
Easily manage building and syncing multiple node-modules in a flexibly defined workspace.
71 lines (70 loc) • 3.16 kB
JavaScript
;
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;
}