5.0.0 β€’ Published 5 days ago

@putout/plugin-eslint-plugin v5.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 days ago

@putout/plugin-eslint-plugin NPM version

Find and fix problems in your JavaScript code

(c) eslint.org

🐊Putout plugin helps to automate fixing ESLint plugins.

Install

npm i @putout/plugin-eslint-plugin -D

Rules

Config

{
    "rules": {
        "eslint-plugin/convert-context-to-source": "on",
        "eslint-plugin/apply-flat-config-to-rule-tester": "on",
        "eslint-plugin/convert-require-resolve-to-require": "on",
        "eslint-plugin/turn-off-schema": "on",
        "eslint-plugin/update-ecma-version": ["on", {
            "ecmaVersion": 2024
        }]
    }
}

convert-context-to-source

When ESLint v9.0.0 is released, it will ship with several breaking changes for rule authors. These changes are necessary as part of the work to implement language plugins, which gives ESLint first-class support for linting languages other than JavaScript.

(c) eslint.org

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

context.parserServices;
sourceCode.parserServices;
context.getAncestors(node);
context.getDeclaredVariables(node);
context.getScope();
context.getCwd();
context.getSourceCode();
context.markVariableAsUsed(name);
context.getFilename();
context.getPhysicalFilename();
const nextNode = context.getNodeByRangeIndex(node.range[1] + 2);

context.getSource();
context.getSourceLines();
context.getAllComments();
context.getComments();
context.getCommentsBefore();
context.getCommentsAfter();
context.getCommentsInside();
context.getJSDocComment();
context.getFirstToken();
context.getFirstTokens();
context.getLastToken();
context.getLastTokens();
context.getTokenAfter();
context.getTokenBefore();
context.getTokenByRangeStart();
context.getTokens();
context.getTokensAfter();
context.getTokensBefore();
context.getTokensBetween();
context.parserServices;

βœ… Example of correct code

sourceCode.parserServices;
sourceCode.parserServices;
sourceCode.getAncestors(node);
sourceCode.getDeclaredVariables(node);
sourceCode.getScope();
context.cwd;
context.sourceCode;
sourceCode.markVariableAsUsed(name);
context.filename;
context.physicalFilename;
const nextNode = sourceCode.getNodeByRangeIndex(node.range[1] + 2);

sourceCode.getText();
sourceCode.getLines();
sourceCode.getAllComments();
sourceCode.getComments();
sourceCode.getCommentsBefore();
sourceCode.getCommentsAfter();
sourceCode.getCommentsInside();
sourceCode.getJSDocComment();
sourceCode.getFirstToken();
sourceCode.getFirstTokens();
sourceCode.getLastToken();
sourceCode.getLastTokens();
sourceCode.getTokenAfter();
sourceCode.getTokenBefore();
sourceCode.getTokenByRangeStart();
sourceCode.getTokens();
sourceCode.getTokensAfter();
sourceCode.getTokensBefore();
sourceCode.getTokensBetween();
sourceCode.parserServices;

apply-flat-config-to-rule-tester

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

const parserTester = new RuleTester({
    parser: require.resolve('@babel/eslint-parser/experimental-worker'),
    parserOptions: {
        requireConfigFile: false,
        babelOptions: {
            plugins: ['@babel/plugin-syntax-typescript'],
        },
    },
});

βœ… Example of correct code

const parserTester = new RuleTester({
    parser: require.resolve('@babel/eslint-parser/experimental-worker'),
    parserOptions: {
        requireConfigFile: false,
        babelOptions: {
            plugins: ['@babel/plugin-syntax-typescript'],
        },
    },
});

convert-require-resolve-to-require

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

const test = new RuleTester({
    languageOptions: {
        parser: require.resolve('@babel/eslint-parser/experimental-worker'),
        parserOptions: {
            requireConfigFile: false,
            babelOptions: {
                plugins: ['@babel/plugin-syntax-typescript'],
            },
        },
    },
});

βœ… Example of correct code

const test = new RuleTester({
    languageOptions: {
        parser: require('@babel/eslint-parser/experimental-worker'),
        parserOptions: {
            requireConfigFile: false,
            babelOptions: {
                plugins: ['@babel/plugin-syntax-typescript'],
            },
        },
    },
});

turn-off-schema

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

function getMeta(plugin) {
    const {
        type = 'layout',
        recommended = true,
        fixable = 'whitespace',
    } = plugin;
    
    return {
        type,
        docs: {
            recommended,
        },
        schema: {},
        fixable,
    };
}

βœ… Example of correct code

function getMeta(plugin) {
    const {
        type = 'layout',
        recommended = true,
        fixable = 'whitespace',
    } = plugin;
    
    return {
        type,
        docs: {
            recommended,
        },
        schema: false,
        fixable,
    };
}

update-ecma-version

Checkout in 🐊Putout Editor.

❌ Example of incorrect code

const ruleTester = new RuleTester({
    languageOptions: {
        parserOptions: {
            ecmaVersion: 2022,
            sourceType: 'module',
        },
    },
});

βœ… Example of correct code

const ruleTester = new RuleTester({
    languageOptions: {
        parserOptions: {
            ecmaVersion: 2024,
            sourceType: 'module',
        },
    },
});

License

MIT

5.0.0

5 days ago

4.0.1

4 months ago

4.0.0

4 months ago

3.0.0

7 months ago

2.1.0

8 months ago

2.0.0

8 months ago

1.0.0

1 year ago