msync
Version:
Easily manage building and syncing multiple node-modules in a flexibly defined workspace.
23 lines (22 loc) • 979 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SortUtil = void 0;
var libs_1 = require("./libs");
exports.SortUtil = {
orderByDepth: function (packages) {
var toDependenciesArray = function (pkg) {
var deps = pkg.dependencies;
var result = deps.map(function (dep) { return dep.name; }).map(function (name) { return [pkg.name, name]; });
return deps.length === 0 ? [[pkg.name]] : result;
};
var graph = packages
.map(function (pkg) { return toDependenciesArray(pkg); })
.reduce(function (acc, items) {
items.forEach(function (item) { return acc.push(item); });
return acc;
}, []);
var names = (0, libs_1.toposort)(graph).reverse();
var result = names.map(function (name) { return libs_1.R.find(libs_1.R.propEq('name', name), packages); });
return libs_1.R.reject(libs_1.R.isNil, result);
},
};