UNPKG

eslint-plugin-spaces

Version:

Plugin to Eslint which add more spaces options

34 lines (33 loc) 1.41 kB
import { ESLintUtils } from "@typescript-eslint/utils"; import findTokenIndex from "../utils/findTokenIndex.js"; import checkSpaces from "../utils/checkSpaces.js"; import { messages } from "../utils/CommonData.js"; const createRule = ESLintUtils.RuleCreator(() => `https://github.com/Evolveye/eslint`); export default createRule({ name: `space-in-calls`, meta: { type: `layout`, docs: { description: `Require or disallow spacing inside parentheses of function calls`, }, fixable: `whitespace`, schema: [{ type: `string`, enum: [`always`, `never`] }], messages: messages.messagesForParens, }, defaultOptions: [`always`], create(context, [option]) { const insertSpaces = option === `always`; const sourceCode = context.sourceCode; return { CallExpression(node) { const tokens = sourceCode.getTokens(node); const firstParenIndex = node.callee.type === `MemberExpression` ? findTokenIndex(`(`, tokens, tokens.indexOf(sourceCode.getTokenAfter(node.callee))) : findTokenIndex(`(`, tokens, 1); if (firstParenIndex === undefined) return; checkSpaces({ context, code: sourceCode, insertSpaces }, tokens, node.arguments, firstParenIndex); }, }; }, });