UNPKG

eslint-plugin-perfectionist

Version:

ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.

35 lines (34 loc) 1.15 kB
'use strict' Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }) const computeNodesInCircularDependencies = require('./compute-nodes-in-circular-dependencies.js') let sortNodesByDependencies = (nodes, extraOptions) => { let nodesInCircularDependencies = computeNodesInCircularDependencies.computeNodesInCircularDependencies(nodes) let result = [] let visitedNodes = /* @__PURE__ */ new Set() let visitNode = sortingNode => { if (visitedNodes.has(sortingNode)) { return } let dependentNodes = nodes .filter(dependentNode => !nodesInCircularDependencies.has(dependentNode)) .filter(({ dependencyName, name }) => sortingNode.dependencies.includes(dependencyName ?? name), ) for (let dependentNode of dependentNodes) { if ( !extraOptions.ignoreEslintDisabledNodes || !dependentNode.isEslintDisabled ) { visitNode(dependentNode) } } visitedNodes.add(sortingNode) result.push(sortingNode) } for (let node of nodes) { visitNode(node) } return result } exports.sortNodesByDependencies = sortNodesByDependencies