t-comm
Version:
专业、稳定、纯粹的工具库
47 lines (42 loc) • 1.35 kB
JavaScript
;
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;