UNPKG

eslint-plugin-import-sorting

Version:

ESLint plugin to group and sort imports by module, à la Python isort

40 lines (39 loc) 1.79 kB
import { ASTUtils, AST_TOKEN_TYPES } from "@typescript-eslint/utils"; import { getCommentsBefore } from "./get-comment.js"; import { getEslintDisabledRules } from "./get-eslint-disabled-rules.js"; function getNodeRange(node, sourceCode, additionalOptions) { let start = node.range.at(0); let end = node.range.at(1); sourceCode.text.slice(start, end); if (ASTUtils.isParenthesized(node, sourceCode)) { let bodyOpeningParen = sourceCode.getTokenBefore(node, ASTUtils.isOpeningParenToken); let bodyClosingParen = sourceCode.getTokenAfter(node, ASTUtils.isClosingParenToken); start = bodyOpeningParen.range.at(0); end = bodyClosingParen.range.at(1); } let comments = getCommentsBefore(node, sourceCode); let highestBlockComment = comments.find((comment) => comment.type === AST_TOKEN_TYPES.Block); let relevantTopComment; for (let index = comments.length - 1; index >= 0; index--) { let comment = comments[index]; let eslintDisabledRules = getEslintDisabledRules(comment.value); if ((eslintDisabledRules == null ? void 0 : eslintDisabledRules.eslintDisableDirective) === "eslint-disable" || (eslintDisabledRules == null ? void 0 : eslintDisabledRules.eslintDisableDirective) === "eslint-enable") { break; } let previousCommentOrNodeStartLine = index === comments.length - 1 ? node.loc.start.line : comments[index + 1].loc.start.line; if (comment.loc.end.line !== previousCommentOrNodeStartLine - 1) { break; } if ((additionalOptions == null ? void 0 : additionalOptions.ignoreHighestBlockComment) && comment === highestBlockComment) { break; } relevantTopComment = comment; } if (relevantTopComment) { start = relevantTopComment.range.at(0); } return [start, end]; } export { getNodeRange };