Package detail

eslint-fix-utils

JoshuaKGoldberg311.6kMIT0.4.0

Utilities for ESLint rule fixers and suggestions. πŸ§‘β€πŸ”§

readme

ESLint Fix Utils

Utilities for ESLint rule fixers and suggestions. πŸ§‘β€πŸ”§

πŸ‘ͺ All Contributors: 3 🀝 Code of Conduct: Kept πŸ§ͺ Coverage πŸ“ License: MIT πŸ“¦ npm version πŸ’ͺ TypeScript: Strict

Usage

If you're working on an ESLint plugin, install this as a dependency:

npm i eslint-fix-utils

You'll then be able to use any of its exported utilities in your rules.

Fixer APIs

fixRemoveArrayElement

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],
    });
}

fixRemoveObjectProperty

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],
    });
}

Full APIs

removeArrayElement

Removes an element from an array expression, along with any commas that are no longer necessary.

Parameters:

  1. context
  2. fixer
  3. elementOrIndex: the child expression, spread element, or a numeric index of the child
  4. parentOrElements: the array expression node, or its .elements array
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.

removeObjectProperty

Removes a property from an object expression, along with any commas that are no longer necessary.

Parameters:

  1. context
  2. fixer
  3. property: 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.

Development

See .github/CONTRIBUTING.md, then .github/DEVELOPMENT.md. Thanks! πŸ”§

Contributors

Azat S.
Azat S.

πŸ€”
Josh Goldberg ✨
Josh Goldberg ✨

πŸ’» πŸ–‹ πŸ“– πŸ€” πŸš‡ 🚧 πŸ“† ⚠️ πŸ”§ πŸ›
michael faith
michael faith

πŸ’» πŸ–‹ πŸ“– πŸ€” πŸš‡ 🚧 πŸ“† ⚠️ πŸ”§

πŸ’ This package was templated with create-typescript-app using the Bingo engine.

changelog

Changelog

0.4.0 (2025-06-12)

Features

0.3.0 (2025-06-11)

Bug Fixes

  • bump to create-typescript-app@2 with transitions action (#79) (0bb023f), closes #75

Features

0.2.1 (2025-01-28)

Bug Fixes

  • make @types/estree peer dependency optional (#25) (f6ddd9d), closes #24

0.2.0 (2025-01-23)

Features

  • empty commit to trigger 0.2.0 (1658b2d)

0.1.0 (2025-01-19)

Features

  • initial functionality ✨ (6bf5c33)
  • initialized repo ✨ (31c7630)