The JS lint gate in CI (npm run lint in format.yml) only covers src/**/*.{ts,tsx} because of the lint script's glob in crates/trusted-server-js/lib/package.json. ESLint errors in test/**, the Node build scripts (build-all.mjs, build-prebid-external.mjs), and config files are invisible to CI — npx eslint . on main reports 280 accumulated errors:
- 249 ×
@typescript-eslint/no-explicit-any in test files (the established (window as any) mock convention)
- 16 ×
no-undef in the .mjs Node scripts (process/console/Buffer — no Node globals declared for them)
- 10 ×
import/order, 4 × @typescript-eslint/no-unused-vars (intentionally unused _-prefixed params), 1 × prefer-const
New lint errors in these files land unnoticed.
Fix: widen the lint script to eslint . and make the widened surface clean — disable no-explicit-any for tests (matching the existing convention), declare Node globals for the .mjs scripts, honor the ^_ unused-arg convention, and fix the mechanical remainder. No workflow change needed since format.yml already runs npm run lint.
The JS lint gate in CI (
npm run lintinformat.yml) only coverssrc/**/*.{ts,tsx}because of the lint script's glob incrates/trusted-server-js/lib/package.json. ESLint errors intest/**, the Node build scripts (build-all.mjs,build-prebid-external.mjs), and config files are invisible to CI —npx eslint .onmainreports 280 accumulated errors:@typescript-eslint/no-explicit-anyin test files (the established(window as any)mock convention)no-undefin the.mjsNode scripts (process/console/Buffer— no Node globals declared for them)import/order, 4 ×@typescript-eslint/no-unused-vars(intentionally unused_-prefixed params), 1 ×prefer-constNew lint errors in these files land unnoticed.
Fix: widen the lint script to
eslint .and make the widened surface clean — disableno-explicit-anyfor tests (matching the existing convention), declare Node globals for the.mjsscripts, honor the^_unused-arg convention, and fix the mechanical remainder. No workflow change needed sinceformat.ymlalready runsnpm run lint.