• 
      

    Update @beanbag/eslint-plugin for eslint 9+

    Review Request #14562 — Created Aug. 19, 2025 and submitted

    Information

    beanbag-eslint-plugin
    master

    Reviewers

    The version of eslint that we use in most places (8) now spews a warning
    about no longer being supported. eslint 9 made a few changes that
    require us to update our plugin (which is more a shared configuration
    than an actual plugin):

    All built-in rules that enforce style have been formally deprecated in
    eslint, and actually removed from @typescript-eslint. These now live
    in a new plugin, @stylistic/eslint-plugin.

    Converting to the new stylistic rules means we can actually simplify our
    configuration a bit. Rules that had typescript-specific modes now no
    longer require us to disable the JS rule and enable a typescript one,
    and we can just include it all in our base configuration.

    The indent rule has some known issues with typescript, and it seems
    like nobody is terribly willing to rewrite it to fix these. The impact
    here seems limited to type parameters for generics. I've added a couple
    ignored node types in order to work around this.

    For linting within this codebase itself, the eslint configuration now
    lives in eslint.config.mjs rather than .eslintrc. This also required
    new dependencies for @eslint/eslintrc, @eslint/js, and globals

    While I was here, I bumped our babel and typescript dependencies,
    why not.

    • Ran npm build
    • Ran linting.
    • Set this up as a link in another package and updated that package to
      use eslint 9. Verified that we got correct linting output.
    Summary ID
    Update @beanbag/eslint-plugin for ESLint 9+
    The version of ESLint that we use in most places (8) now spews a warning about no longer being supported. ESLint 9 made a few changes that require us to update our plugin (which is more a shared configuration than an actual plugin): All built-in rules that enforce style have been formally deprecated in ESLint, and actually removed from `@typescript-eslint`. These now live in a new plugin, `@stylistic/eslint-plugin`. Converting to the new stylistic rules means we can actually simplify our configuration a bit. Rules that had TypeScript-specific modes now no longer require us to disable the JS rule and enable a TypeScript one, and we can just include it all in our base configuration. The `indent` rule has some known issues with TypeScript, and it seems like nobody is terribly willing to rewrite it to fix these. The impact here seems limited to type parameters for generics. I've added a couple ignored node types in order to work around this. For linting within this codebase itself, the ESLint configuration now lives in `eslint.config.mjs` rather than `.eslintrc`. This also required new dependencies for `@eslint/eslintrc`, `@eslint/js`, and `globals` While I was here, I bumped our `babel` and `typescript` dependencies, why not. Testing Done: - Ran `npm build` - Ran linting. - Set this up as a link in another package and updated that package to use eslint 9. Verified that we got correct linting output.
    kvoyurwrsutsmpzqvnqnltslovopqlll
    Description From Last Updated

    "typescript" -> "TypeScript" and "eslint" -> "ESLint" in the description.

    chipx86chipx86

    Two blank lines.

    chipx86chipx86

    This is a mix of node imports, third-pary imports, and first-party imports. Let's separate into groups.

    chipx86chipx86

    Two blank lines here.

    chipx86chipx86
    chipx86
    1. 
        
    2. Show all issues

      "typescript" -> "TypeScript" and "eslint" -> "ESLint" in the description.

    3. 
        
    chipx86
    1. 
        
    2. NEWS.md (Diff revision 1)
       
       
       
       
      Show all issues

      Two blank lines.

    3. eslint.config.mjs (Diff revision 1)
       
       
      Show all issues

      This is a mix of node imports, third-pary imports, and first-party imports. Let's separate into groups.

      1. This was just how their upgrade tool did it. Fixed.

    4. eslint.config.mjs (Diff revision 1)
       
       
       
       
      Show all issues

      Two blank lines here.

    5. 
        
    david
    maubin
    1. Ship It!
    2. 
        
    chipx86
    1. Ship It!
    2. 
        
    david
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to master (5db03e9)