UNPKG

vtils

Version:

一个面向业务的 JavaScript/TypeScript 实用程序库。

30 lines 977 B
import { has } from "../../../utils/index.js"; import toposort from 'toposort'; import { split } from 'property-expr'; import Ref from "../Reference.js"; import isSchema from "./isSchema.js"; export default function sortFields(fields, excludes) { if (excludes === void 0) { excludes = []; } var edges = []; var nodes = []; function addNode(depPath, key) { var node = split(depPath)[0]; if (!~nodes.indexOf(node)) nodes.push(node); if (!~excludes.indexOf(key + "-" + node)) edges.push([key, node]); } var _loop = function _loop(key) { if (has(fields, key)) { var value = fields[key]; if (!~nodes.indexOf(key)) nodes.push(key); if (Ref.isRef(value) && value.isSibling) addNode(value.path, key);else if (isSchema(value) && value._deps) value._deps.forEach(function (path) { return addNode(path, key); }); } }; for (var key in fields) { _loop(key); } return toposort.array(nodes, edges).reverse(); }