eslint-plugin-unicorn
Version:
More than 100 powerful ESLint rules
47 lines (40 loc) • 1.08 kB
JavaScript
import {isMethodCall} from './ast/index.js';
const MESSAGE_ID = 'prefer-string-trim-start-end';
const messages = {
[MESSAGE_ID]: 'Prefer `String#{{replacement}}()` over `String#{{method}}()`.',
};
/** @param {import('eslint').Rule.RuleContext} context */
const create = () => ({
CallExpression(callExpression) {
if (!isMethodCall(callExpression, {
methods: ['trimLeft', 'trimRight'],
argumentsLength: 0,
optionalCall: false,
})) {
return;
}
const node = callExpression.callee.property;
const method = node.name;
const replacement = method === 'trimLeft' ? 'trimStart' : 'trimEnd';
return {
node,
messageId: MESSAGE_ID,
data: {method, replacement},
fix: fixer => fixer.replaceText(node, replacement),
};
},
});
/** @type {import('eslint').Rule.RuleModule} */
const config = {
create,
meta: {
type: 'suggestion',
docs: {
description: 'Prefer `String#trimStart()` / `String#trimEnd()` over `String#trimLeft()` / `String#trimRight()`.',
recommended: true,
},
fixable: 'code',
messages,
},
};
export default config;