eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
39 lines (38 loc) • 981 B
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
const compare = require('./compare.js')
let sortNodes = ({
fallbackSortNodeValueGetter,
ignoreEslintDisabledNodes,
nodeValueGetter,
isNodeIgnored,
options,
nodes,
}) => {
let nonIgnoredNodes = []
let ignoredNodeIndices = []
for (let [index, sortingNode] of nodes.entries()) {
if (
(sortingNode.isEslintDisabled && ignoreEslintDisabledNodes) ||
(isNodeIgnored == null ? void 0 : isNodeIgnored(sortingNode))
) {
ignoredNodeIndices.push(index)
} else {
nonIgnoredNodes.push(sortingNode)
}
}
let sortedNodes = [...nonIgnoredNodes].sort((a, b) =>
compare.compare({
fallbackSortNodeValueGetter,
nodeValueGetter,
options,
a,
b,
}),
)
for (let ignoredIndex of ignoredNodeIndices) {
sortedNodes.splice(ignoredIndex, 0, nodes[ignoredIndex])
}
return sortedNodes
}
exports.sortNodes = sortNodes