Update @beanbag/eslint-plugin to use modern config and plugin layout.

Review Request #14653 — Created Oct. 25, 2025 and updated — Latest diff uploaded

Information

beanbag-eslint-plugin
master

Reviewers

When I updated the ESLint plugin to support version 9, I did so in only
the most minimal way. This ended up requiring that consumers install an
additional package (@eslint/eslintrc) and use FlatCompat in their
configurations.

This change updates our plugin to actually be a modern plugin with
modern shared configuration:

  • Each of our predefined config layers is itself a flat config.
  • Configs are exported as plugin.configs.XXX.
  • Our cascading glob configs have been updated to use **/..., which makes
    it properly detect said files no matter where they are. This means we no
    longer have to do things like unversally include tests globals, since
    the jasmine block will be loaded when its supposed to be.
  • Moved some things from devDependencies to dependencies to reduce
    what consumers have to install themselves.

There are also some changes to the build process:

  • Use rollup instead of invoking babel directly.
  • Provide ESM and CJS exports in addition to UMD.
  • Generate and provide type definitions.

I've also made a couple tweaks to the rules themselves:

  • Added some additional stuff to indent ignore rules to avoid issues
    with complex generic class definitions.
  • Switch ES6 quotes rule to use @stylistic/quotes.
  • Add a configuration for @typescript-eslint/no-unused-vars to match
    the JS one, and added underscore prefixes to allow us to ignore things
    even that aren't parameters or locals (for example, inside TS generic
    definitions).
  • Fixed links to @stylistic docs to link to the latest docs instead of
    an older version that we weren't even using.
  • Built the plugin.
  • Used this from all of our other packages.

Commits

Files