eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
30 lines (29 loc) • 1 kB
JavaScript
import { computeDependenciesBySortingNode } from './compute-dependencies-by-sorting-node.js'
import { computeParentNodesWithTypes } from './compute-parent-nodes-with-types.js'
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
function computeDependenciesOutsideFunctionsBySortingNode({
sortingNodes,
sourceCode,
}) {
return computeDependenciesBySortingNode({
shouldIgnoreIdentifierComputer: buildShouldIgnoreIdentifierComputer(),
sortingNodes,
sourceCode,
})
function buildShouldIgnoreIdentifierComputer() {
return ({ referencingSortingNode, identifier }) => {
return (
computeParentNodesWithTypes({
allowedTypes: [
AST_NODE_TYPES.FunctionExpression,
AST_NODE_TYPES.ArrowFunctionExpression,
],
maxParent: referencingSortingNode.node,
consecutiveOnly: false,
node: identifier,
}).length > 0
)
}
}
}
export { computeDependenciesOutsideFunctionsBySortingNode }