Skip to content

🔧 Upgrade Tooling: ESLint + Rollup - #155

Merged
armando-navarro merged 11 commits into
FirebaseExtended:mainfrom
KingDarBoja:tooling/eslint-rollup
Oct 28, 2026
Merged

armando-navarro merged 11 commits into
FirebaseExtended:mainfrom
KingDarBoja:tooling/eslint-rollup

Conversation

@KingDarBoja

@KingDarBoja KingDarBoja commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Tooling Improvements

ESLint Changes

Rollup

  • Upgrade to Rollup 4 with compatible CommonJS, node-resolve, and TypeScript plugins
  • Upgrade glob to v13 for Node.js 20 support and use its globSync API

This is the second stage of #123 pull request but solely focused on ESLint and Rollup tools.

- Dropped the old "eslint-config-google" package.
- Updated typescript-eslint to v8
- Upgrade to Rollup 4 with compatible CommonJS, node-resolve, and TypeScript plugins
- Upgrade glob to v13 for Node.js 20 support and use its globSync API
@KingDarBoja
KingDarBoja marked this pull request as ready for review September 25, 2026 21:52
@KingDarBoja KingDarBoja changed the title Upgrade Tooling: ESLint + Rollup 🔧 Upgrade Tooling: ESLint + Rollup Sep 25, 2026
@KingDarBoja

Copy link
Copy Markdown
Contributor Author

@armando-navarro bump

@armando-navarro armando-navarro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @KingDarBoja, thanks for splitting this out of #123, and sorry for the long wait. I built the branch and compared its output with main's. Three things before I approve, then a few small ones.

Required: CommonJS output options in rollup.config.js

Rollup 4 changed some CommonJS defaults, which changes the published .cjs.js bundles:

  • performance now keeps a native import('firebase/performance'), so Jest users get "A dynamic import callback was invoked without --experimental-vm-modules".
  • Every sub-package bundle loses the __esModule marker, so jest.spyOn on a namespace import no longer replaces the real function.

These three options bring the bundles back to today's output, apart from comments:

{
  file: resolve(component, main),
  format: 'cjs',
  dynamicImportInCjs: false,
  esModule: true,
  interop: 'auto',
  sourcemap: true
},

Required: leftovers from the removed lint directives

The deleted eslint-disable comments left whitespace-only lines behind (git diff 2f2bb97 --check lists them), and the comments explaining them, such as "auth is used as a namespace to access types", now explain nothing. Please delete both.

Required: the jsdoc rules

The old config had these rules switched off. Turning them on adds 177 warnings to every lint run, and yarn lint:fix fills 16 files with empty @param stubs. I'd drop the jsdoc block and eslint-plugin-jsdoc from this PR and leave JSDoc for a separate change.

Optional

  • ecmaVersion and sourceType under parserOptions are ignored in flat config. Move them up to languageOptions or delete them.
  • Renaming rollup.config.js to rollup.config.mjs removes the warning Node prints on every build.
  • eslint.config.mjs needs a final newline, and @eslint/js and typescript-eslint are out of alphabetical order in devDependencies.

If I've misread anything about the Rollup options, let me know.

@armando-navarro armando-navarro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @KingDarBoja for the commits addressing my review. Everything looks good now. Approving.

@armando-navarro
armando-navarro merged commit de67438 into FirebaseExtended:main Oct 28, 2026
18 checks passed
@KingDarBoja
KingDarBoja deleted the tooling/eslint-rollup branch October 28, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants