UNPKG

eslint-plugin-perfectionist

Version:

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

52 lines (51 loc) 1.57 kB
import { passesAllNamesMatchPatternFilter } from '../../utils/context-matching/passes-all-names-match-pattern-filter.js' import { passesAstSelectorFilter } from '../../utils/context-matching/passes-ast-selector-filter.js' import { computeNodeName } from './compute-node-name.js' /** * Computes the matched context options for a given array node. * * @param params - Parameters. * @param params.matchedAstSelectors - The matched AST selectors for an array * node. * @param params.elements - The array elements to compute the context options * for. * @param params.context - The rule context. * @returns The matched context options or undefined if none match. */ function computeMatchedContextOptions({ matchedAstSelectors, elements, context, }) { let nodeNames = elements .filter(element => element !== null) .map(element => computeNodeName({ sourceCode: context.sourceCode, node: element, }), ) return context.options.find(options => isContextOptionMatching({ matchedAstSelectors, nodeNames, options, }), ) } function isContextOptionMatching({ matchedAstSelectors, nodeNames, options }) { if (!options.useConfigurationIf) { return true } return ( passesAllNamesMatchPatternFilter({ allNamesMatchPattern: options.useConfigurationIf.allNamesMatchPattern, nodeNames, }) && passesAstSelectorFilter({ matchesAstSelector: options.useConfigurationIf.matchesAstSelector, matchedAstSelectors, }) ) } export { computeMatchedContextOptions }