eslint-plugin-perfectionist
Version:
ESLint plugin for sorting various data such as objects, imports, types, enums, JSX props, etc.
32 lines (31 loc) • 999 B
JavaScript
import { AST_NODE_TYPES } from '@typescript-eslint/utils'
/**
* Computes the specifier modifiers of an import-like AST node.
*
* @param node - The AST node representing an import-like declaration.
* @returns A list of specifier modifiers.
*/
function computeSpecifierModifiers(node) {
if (node.type !== AST_NODE_TYPES.ImportDeclaration) {
return []
}
return computeImportDeclarationModifiers(node)
}
function computeImportDeclarationModifiers(node) {
let importClauses = node.specifiers
return [
...(hasSpecifier(importClauses, AST_NODE_TYPES.ImportDefaultSpecifier) ?
['default']
: []),
...(hasSpecifier(importClauses, AST_NODE_TYPES.ImportNamespaceSpecifier) ?
['wildcard']
: []),
...(hasSpecifier(importClauses, AST_NODE_TYPES.ImportSpecifier) ?
['named']
: []),
]
}
function hasSpecifier(importClauses, specifier) {
return importClauses.some(importClause => importClause.type === specifier)
}
export { computeSpecifierModifiers }