@babel/eslint-plugin
Version:
Companion rules for @babel/eslint-parser
1 lines • 7.01 kB
Source Map (JSON)
{"version":3,"names":["ruleComposer","require","eslint","eslintVersion","ESLint","version","OPT_OUT_PATTERN","rule","parseInt","builtinRules","Linter","getRules","get","isSemicolon","token","type","value","isUnnecessarySemicolon","context","lastToken","nextToken","getSourceCode","getTokenAfter","lastTokenLine","loc","end","line","nextTokenLine","start","isOptOutToken","test","isDivider","isOneLinerBlock","node","parent","report","missing","getLastToken","message","fix","fixer","insertTextAfter","remove","module","exports","joinReports","ClassProperty, ClassPrivateProperty, PropertyDefinition","options","exceptOneLine","omitLastInOneLineBlock","sourceCode"],"sources":["../../src/rules/semi.cjs"],"sourcesContent":["const ruleComposer = require(\"eslint-rule-composer\");\nconst eslint = require(\"eslint\");\nconst eslintVersion = eslint.ESLint.version;\n\nconst OPT_OUT_PATTERN = /^[-[(/+`]/; // One of [(/+-`\n\nconst rule = (\n parseInt(eslintVersion, 10) >= 9\n ? require(\"eslint/use-at-your-own-risk\").builtinRules\n : new eslint.Linter().getRules()\n).get(\"semi\");\n\nfunction isSemicolon(token) {\n return token.type === \"Punctuator\" && token.value === \";\";\n}\n\nfunction isUnnecessarySemicolon(context, lastToken) {\n if (!isSemicolon(lastToken)) {\n return false;\n }\n\n const nextToken = context.getSourceCode().getTokenAfter(lastToken);\n\n if (!nextToken) {\n return true;\n }\n\n const lastTokenLine = lastToken.loc.end.line;\n const nextTokenLine = nextToken.loc.start.line;\n const isOptOutToken =\n OPT_OUT_PATTERN.test(nextToken.value) &&\n nextToken.value !== \"++\" &&\n nextToken.value !== \"--\";\n const isDivider = nextToken.value === \"}\" || nextToken.value === \";\";\n\n return (lastTokenLine !== nextTokenLine && !isOptOutToken) || isDivider;\n}\n\nfunction isOneLinerBlock(context, node) {\n const nextToken = context.getSourceCode().getTokenAfter(node);\n\n if (!nextToken || nextToken.value !== \"}\") {\n return false;\n }\n\n const parent = node.parent;\n\n return (\n parent &&\n parent.type === \"BlockStatement\" &&\n parent.loc.start.line === parent.loc.end.line\n );\n}\n\nfunction report(context, node, missing) {\n const lastToken = context.getSourceCode().getLastToken(node);\n\n let message,\n fix,\n loc = lastToken.loc;\n\n if (!missing) {\n message = \"Missing semicolon.\";\n loc = loc.end;\n fix = function (fixer) {\n return fixer.insertTextAfter(lastToken, \";\");\n };\n } else {\n message = \"Extra semicolon.\";\n loc = loc.start;\n fix = function (fixer) {\n return fixer.remove(lastToken);\n };\n }\n\n context.report({\n node,\n loc,\n message,\n fix,\n });\n}\n\nif (parseInt(eslintVersion, 10) >= 8) {\n // ESLint 8 supports class properties / private methods natively\n // so we simply forward the original rule\n module.exports = rule;\n} else {\n module.exports = ruleComposer.joinReports([\n rule,\n context => ({\n \"ClassProperty, ClassPrivateProperty, PropertyDefinition\"(node) {\n const options = context.options[1];\n const exceptOneLine =\n options && options.omitLastInOneLineBlock === true;\n const sourceCode = context.getSourceCode();\n const lastToken = sourceCode.getLastToken(node);\n\n if (context.options[0] === \"never\") {\n if (isUnnecessarySemicolon(context, lastToken)) {\n report(context, node, true);\n }\n } else {\n if (!isSemicolon(lastToken)) {\n if (!exceptOneLine || !isOneLinerBlock(context, node)) {\n report(context, node);\n }\n } else {\n if (exceptOneLine && isOneLinerBlock(context, node)) {\n report(context, node, true);\n }\n }\n }\n },\n }),\n ]);\n}\n"],"mappings":"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","ignoreList":[]}