eslint-plugin-import-sorting
Version:
ESLint plugin to group and sort imports by module, à la Python isort
40 lines (39 loc) • 1.93 kB
JavaScript
;
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;