UNPKG

eslint-plugin-stylistic-compat

Version:

Compatibility version of @stylistic/eslint-plugin for Node.js >= 12 and ESLint v8

184 lines (180 loc) 7.27 kB
'use strict'; var _Object$assign = require('@babel/runtime-corejs3/core-js/object/assign'); var utils = require('../utils.js'); require('@babel/runtime-corejs3/core-js/object/from-entries'); require('@babel/runtime-corejs3/core-js/instance/map'); require('@babel/runtime-corejs3/core-js/instance/filter'); require('@babel/runtime-corejs3/core-js/object/entries'); require('@babel/runtime-corejs3/core-js/set'); require('@babel/runtime-corejs3/core-js/instance/flags'); require('@babel/runtime-corejs3/core-js/instance/includes'); require('@babel/runtime-corejs3/core-js/instance/starts-with'); require('../vendor.js'); require('@babel/runtime-corejs3/core-js/object/create'); require('@babel/runtime-corejs3/core-js/object/freeze'); require('@babel/runtime-corejs3/core-js/array/is-array'); require('@babel/runtime-corejs3/core-js/instance/last-index-of'); require('@babel/runtime-corejs3/core-js/instance/slice'); require('@babel/runtime-corejs3/core-js/object/define-properties'); require('@babel/runtime-corejs3/core-js/object/keys'); require('@babel/runtime-corejs3/core-js/instance/index-of'); require('@babel/runtime-corejs3/core-js/instance/at'); require('@babel/runtime-corejs3/core-js/symbol'); require('@babel/runtime-corejs3/core-js/symbol/iterator'); require('@babel/runtime-corejs3/core-js/parse-int'); require('@babel/runtime-corejs3/core-js/parse-float'); require('@babel/runtime-corejs3/core-js/weak-map'); require('@babel/runtime-corejs3/core-js/object/define-property'); require('@babel/runtime-corejs3/core-js/global-this'); require('@babel/runtime-corejs3/core-js/instance/for-each'); require('@babel/runtime-corejs3/core-js/array/from'); require('eslint/use-at-your-own-risk'); require('eslint'); require('@babel/runtime-corejs3/core-js/object/get-own-property-descriptor'); require('@babel/runtime-corejs3/core-js/map'); require('@babel/runtime-corejs3/core-js/instance/some'); require('@babel/runtime-corejs3/core-js/instance/find'); require('@babel/runtime-corejs3/core-js/instance/every'); require('@babel/runtime-corejs3/core-js/instance/sort'); require('@babel/runtime-corejs3/core-js/array/of'); require('@babel/runtime-corejs3/core-js/instance/concat'); require('@babel/runtime-corejs3/core-js/instance/entries'); require('@babel/runtime-corejs3/core-js/instance/find-index'); require('@babel/runtime-corejs3/core-js/instance/flat'); require('@babel/runtime-corejs3/core-js/instance/keys'); require('@babel/runtime-corejs3/core-js/instance/values'); require('@babel/runtime-corejs3/core-js/object/get-own-property-names'); require('@babel/runtime-corejs3/core-js/number/is-finite'); require('@babel/runtime-corejs3/core-js/number/is-nan'); require('@babel/runtime-corejs3/core-js/number/parse-float'); require('@babel/runtime-corejs3/core-js/number/parse-int'); require('@babel/runtime-corejs3/core-js/object/is'); require('@babel/runtime-corejs3/core-js/object/is-extensible'); require('@babel/runtime-corejs3/core-js/object/is-frozen'); require('@babel/runtime-corejs3/core-js/object/is-sealed'); require('@babel/runtime-corejs3/core-js/object/values'); require('@babel/runtime-corejs3/core-js/string/from-code-point'); require('@babel/runtime-corejs3/core-js/string/raw'); require('@babel/runtime-corejs3/core-js/instance/code-point-at'); require('@babel/runtime-corejs3/core-js/instance/ends-with'); require('@babel/runtime-corejs3/core-js/instance/pad-end'); require('@babel/runtime-corejs3/core-js/instance/pad-start'); require('@babel/runtime-corejs3/core-js/instance/trim'); require('@babel/runtime-corejs3/core-js/instance/trim-end'); require('@babel/runtime-corejs3/core-js/instance/trim-left'); require('@babel/runtime-corejs3/core-js/instance/trim-right'); require('@babel/runtime-corejs3/core-js/instance/trim-start'); require('@babel/runtime-corejs3/core-js/symbol/for'); require('@babel/runtime-corejs3/core-js/symbol/key-for'); require('@babel/runtime-corejs3/core-js/object/prevent-extensions'); require('@babel/runtime-corejs3/core-js/object/seal'); require('@babel/runtime-corejs3/core-js/object/get-prototype-of'); require('@babel/runtime-corejs3/core-js/symbol/replace'); require('@babel/runtime-corejs3/core-js/instance/bind'); require('@babel/runtime-corejs3/core-js/instance/splice'); require('@babel/runtime-corejs3/core-js/instance/repeat'); require('@babel/runtime-corejs3/core-js/instance/reduce'); require('@babel/runtime-corejs3/core-js/instance/reverse'); var arrowSpacing = utils.createRule({ name: "arrow-spacing", package: "js", meta: { type: "layout", docs: { description: "Enforce consistent spacing before and after the arrow in arrow functions" }, fixable: "whitespace", schema: [{ type: "object", properties: { before: { type: "boolean", default: true }, after: { type: "boolean", default: true } }, additionalProperties: false }], messages: { expectedBefore: "Missing space before =>.", unexpectedBefore: "Unexpected space before =>.", expectedAfter: "Missing space after =>.", unexpectedAfter: "Unexpected space after =>." } }, create(context) { const rule = _Object$assign({}, context.options[0]); rule.before = rule.before !== false; rule.after = rule.after !== false; const sourceCode = context.sourceCode; function getTokens(node) { const arrow = sourceCode.getTokenBefore(node.body, utils.isArrowToken); return { before: sourceCode.getTokenBefore(arrow), arrow, after: sourceCode.getTokenAfter(arrow) }; } function countSpaces(tokens) { const before = tokens.arrow.range[0] - tokens.before.range[1]; const after = tokens.after.range[0] - tokens.arrow.range[1]; return { before, after }; } function spaces(node) { const tokens = getTokens(node); const countSpace = countSpaces(tokens); if (rule.before) { if (countSpace.before === 0) { context.report({ node: tokens.before, messageId: "expectedBefore", fix(fixer) { return fixer.insertTextBefore(tokens.arrow, " "); } }); } } else { if (countSpace.before > 0) { context.report({ node: tokens.before, messageId: "unexpectedBefore", fix(fixer) { return fixer.removeRange([tokens.before.range[1], tokens.arrow.range[0]]); } }); } } if (rule.after) { if (countSpace.after === 0) { context.report({ node: tokens.after, messageId: "expectedAfter", fix(fixer) { return fixer.insertTextAfter(tokens.arrow, " "); } }); } } else { if (countSpace.after > 0) { context.report({ node: tokens.after, messageId: "unexpectedAfter", fix(fixer) { return fixer.removeRange([tokens.arrow.range[1], tokens.after.range[0]]); } }); } } } return { ArrowFunctionExpression: spaces }; } }); module.exports = arrowSpacing;