UNPKG

eslint-plugin-import-sorting

Version:

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

40 lines (39 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const utils = require("@typescript-eslint/utils"); const getComment = require("./get-comment.cjs"); const getEslintDisabledRules = require("./get-eslint-disabled-rules.cjs"); function getNodeRange(node, sourceCode, additionalOptions) { let start = node.range.at(0); let end = node.range.at(1); sourceCode.text.slice(start, end); if (utils.ASTUtils.isParenthesized(node, sourceCode)) { let bodyOpeningParen = sourceCode.getTokenBefore(node, utils.ASTUtils.isOpeningParenToken); let bodyClosingParen = sourceCode.getTokenAfter(node, utils.ASTUtils.isClosingParenToken); start = bodyOpeningParen.range.at(0); end = bodyClosingParen.range.at(1); } let comments = getComment.getCommentsBefore(node, sourceCode); let highestBlockComment = comments.find((comment) => comment.type === utils.AST_TOKEN_TYPES.Block); let relevantTopComment; for (let index = comments.length - 1; index >= 0; index--) { let comment = comments[index]; let eslintDisabledRules = getEslintDisabledRules.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]; } exports.getNodeRange = getNodeRange;