UNPKG

eslint-plugin-stylistic-compat

Version:

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

171 lines (167 loc) 7.87 kB
'use strict'; var _Object$assign = require('@babel/runtime-corejs3/core-js/object/assign'); var _someInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/some'); var _Object$keys = require('@babel/runtime-corejs3/core-js/object/keys'); var _sliceInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/slice'); var _forEachInstanceProperty = require('@babel/runtime-corejs3/core-js/instance/for-each'); 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/object/define-properties'); 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/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/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 noMultiSpaces = utils.createRule({ name: "no-multi-spaces", package: "js", meta: { type: "layout", docs: { description: "Disallow multiple spaces" }, fixable: "whitespace", schema: [{ type: "object", properties: { exceptions: { type: "object", patternProperties: { "^([A-Z][a-z]*)+$": { type: "boolean" } }, additionalProperties: false }, ignoreEOLComments: { type: "boolean", default: false }, includeTabs: { type: "boolean", default: true } }, additionalProperties: false }], messages: { multipleSpaces: "Multiple spaces found before '{{displayValue}}'." } }, create(context) { var _context; const sourceCode = context.sourceCode; const options = context.options[0] || {}; const ignoreEOLComments = options.ignoreEOLComments; const exceptions = _Object$assign({ Property: true, ImportAttribute: true }, options.exceptions); const hasExceptions = _someInstanceProperty(_context = _Object$keys(exceptions)).call(_context, key => exceptions[key]); const spacesRe = options.includeTabs === false ? / {2}/ : /[ \t]{2}/; function formatReportedCommentValue(token) { const valueLines = token.value.split("\n"); const value = valueLines[0]; const formattedValue = `${_sliceInstanceProperty(value).call(value, 0, 12)}...`; return valueLines.length === 1 && value.length <= 12 ? value : formattedValue; } return { Program() { var _context2; _forEachInstanceProperty(_context2 = sourceCode.tokensAndComments).call(_context2, (leftToken, leftIndex, tokensAndComments) => { var _context3; if (leftIndex === tokensAndComments.length - 1) return; const rightToken = tokensAndComments[leftIndex + 1]; if (!spacesRe.test(_sliceInstanceProperty(_context3 = sourceCode.text).call(_context3, leftToken.range[1], rightToken.range[0])) || leftToken.loc.end.line < rightToken.loc.start.line) { return; } if (ignoreEOLComments && utils.isCommentToken(rightToken) && (leftIndex === tokensAndComments.length - 2 || rightToken.loc.end.line < tokensAndComments[leftIndex + 2].loc.start.line)) { return; } if (hasExceptions) { const parentNode = sourceCode.getNodeByRangeIndex(rightToken.range[0] - 1); if (parentNode && exceptions[parentNode.type]) return; } let displayValue; if (rightToken.type === "Block") displayValue = `/*${formatReportedCommentValue(rightToken)}*/`;else if (rightToken.type === "Line") displayValue = `//${formatReportedCommentValue(rightToken)}`;else displayValue = rightToken.value; context.report({ node: rightToken, loc: { start: leftToken.loc.end, end: rightToken.loc.start }, messageId: "multipleSpaces", data: { displayValue }, fix: fixer => fixer.replaceTextRange([leftToken.range[1], rightToken.range[0]], " ") }); }); } }; } }); module.exports = noMultiSpaces;