UNPKG

rete-kit

Version:

Rete.js Kit ==== [![Made in Ukraine](https://img.shields.io/badge/made_in-ukraine-ffd700.svg?labelColor=0057b7)](https://stand-with-ukraine.pp.ua) [![Discord](https://img.shields.io/discord/1081223198055604244?color=%237289da&label=Discord)](https://disco

31 lines (30 loc) 1.29 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDependencyTopo = getDependencyTopo; const toposort_1 = __importDefault(require("toposort")); function getDependencyTopo(list) { const packages = Object.fromEntries(list.map(item => { const { config: { name, dependencies, devDependencies, peerDependencies } } = item; return [name, { ...item, dependencies: Object.keys({ ...dependencies, ...devDependencies, ...peerDependencies }) .filter(dependencyName => list.map(({ config }) => config.name).includes(dependencyName)) }]; })); const edges = Object.values(packages).reduce((acc, { config, dependencies }) => { return [ ...acc, ...dependencies.map(dependencyName => [dependencyName, config.name]) ]; }, []); const topo = (0, toposort_1.default)(edges); return topo.map(name => ({ ...packages[name], dependent: Object.values(packages) .filter(item => item.dependencies.includes(name)) .map(item => item.config.name) })); }