Utilities for ESLint rule fixers and suggestions. π§βπ§
If you're working on an ESLint plugin, install this as a dependency:
pnpm add eslint-fix-utilsYou'll then be able to use any of its exported utilities in your rules.
Version of addObjectProperty that can be passed directly as a fix property.
import { fixAddObjectProperty } from 'eslint-fix-utils';
// ...
export function report(
node: ESTree.ObjectExpression,
propertyKey: string,
propertyValue: string,
) {
context.report({
fix: fixAddObjectProperty(context, node, propertyKey, propertyValue),
messageId,
node,
});
}Version of removeArrayElement that can be passed directly as a fix property.
import { fixRemoveArrayElement } from 'eslint-fix-utils';
// ...
export function report(index: number, node: ESTree.ArrayExpression) {
context.report({
fix: fixRemoveArrayElement(context, index, node.elements),
messageId,
node: node.elements[index],
});
}Version of removeObjectProperty that can be passed directly as a fix property.
import { fixRemoveObjectProperty } from 'eslint-fix-utils';
// ...
export function report(index: number, node: ESTree.ObjectExpression) {
context.report({
fix: fixRemoveObjectProperty(context, node.properties[index]),
messageId,
node: node.properties[index],
});
}Adds a new property to an object expression, along with any necessary commas.
Parameters:
context: Rule.Contextfixer: Rule.RuleFixerobjectExpression: ESTree.ObjectExpression: the object nodepropertyKey: string: the value for the new property's keypropertyValue: unknown: the value for the new property's value
import { addObjectProperty } from "eslint-fix-utils";
// ...
export function report(index: number, node: ESTree.ObjectExpression) {
context.report({
fix: (fixer) {
// Adds a new property to the end of an Object:
return addObjectProperty(context, fixer, node, "type", "module");
},
messageId,
node,
});
}{
name: "my-package",
- version: "1.2.3"
+ version: "1.2.3",
+ type: "module"
}Trailing commas are omitted so that the fixed code will work regardless of whether the language allows them.
Removes an element from an array expression, along with any commas that are no longer necessary.
Parameters:
contextfixerelementOrIndex: the child expression, spread element, or a numeric index of the childparentOrElements: the array expression node, or its.elementsarray
import { removeArrayElement } from 'eslint-fix-utils';
// ...
export function report(index: number, node: ESTree.ArrayExpression) {
context.report({
fix(fixer) {
// Removes the last element of the array:
return removeArrayElement(context, fixer, index, node.elements);
},
messageId,
node: node.elements[index],
});
}[
'a',
- 'b',
- 'c'
+ 'b'
]Trailing commas are removed so that the fixed code will work regardless of whether the language and location allows them.
Removes a property from an object expression, along with any commas that are no longer necessary.
Parameters:
contextfixerproperty: the property node
import { removeObjectProperty } from 'eslint-fix-utils';
// ...
export function report(index: number, node: ESTree.ObjectExpression) {
context.report({
fix(fixer) {
// Removes the last property of the object:
return removeObjectProperty(context, fixer, node.properties[index]);
},
messageId,
node: node.properties[index],
});
}{
a: 1,
- b: 2,
- c: 3,
+ b: 2
}Trailing commas are removed so that the fixed code will work regardless of whether the language and location allows them.
See .github/CONTRIBUTING.md, then .github/DEVELOPMENT.md.
Thanks! π§
Azat S. π€ |
Josh Goldberg β¨ π» π π π€ π π§ π |
michael faith π» π π π€ π π§ π |