UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

47 lines (42 loc) 1.35 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var tslib_es6 = require('../tslib.es6-01322ba9.js'); function excludeRepeatElements(obj) { return Object.keys(obj).reduce(function (acc, key) { acc[key] = Array.from(new Set(obj[key])).filter(function (item) { return item !== key; }); return acc; }, {}); } function realTraverse(list, map, result, originKey) { for (var _i = 0, _a = tslib_es6.__spreadArray([], list, true); _i < _a.length; _i++) { var key = _a[_i]; if (result.indexOf(key) > -1) { continue; } result.push(key); var before = map[key]; if (before) { before = before.filter(function (item) { return item !== originKey && list.indexOf(item) <= -1; }); realTraverse(before, map, result, originKey); } } } function getFlattenedDeps(deps) { deps = excludeRepeatElements(deps); var list = Object.keys(deps); var newDeps = {}; for (var _i = 0, list_1 = list; _i < list_1.length; _i++) { var item = list_1[_i]; var temp = tslib_es6.__spreadArray([], deps[item], true); var result = []; realTraverse(tslib_es6.__spreadArray([], temp, true), deps, result, item); newDeps[item] = result; } var res = excludeRepeatElements(newDeps); return res; } exports.getFlattenedDeps = getFlattenedDeps;