chore: Migrate from ESLint to oxlint with consolidated root lint command (#11391)
## Summary
- Consolidate oxlint to run as a single command from the root instead of
per-package
- Add `--deny-warnings` flag to treat all warnings as errors
- Create `.oxlintrc.json` with appropriate rules configuration
## Changes
### Root lint consolidation
- Added `lint` script to root `package.json` that runs oxlint on
`packages/` and `docs/site`
- Updated `turbo.json` to run `//#lint` after prettier checks complete
- Removed individual `lint` scripts from 12 packages (oxlint now runs
from root)
- Kept `fumadocs-mdx` step in docs as a prerequisite for type generation
### Oxlint configuration (`.oxlintrc.json`)
- Ignore unused catch parameters (`caughtErrors: "none"`)
- Ignore variables/params starting with `_` (common convention for
intentionally unused)
- Disable `unicorn/no-empty-file` for fixture files
- Disable `no-unused-expressions` for fixture files
- Disable `triple-slash-reference` for `next-env.d.ts` (auto-generated
by Next.js)
### Code fixes
- Removed unused imports (`beforeEach`, `PackageManager`, `createGzip`)
- Removed unused parameter and variables
- Converted unused ternary to if/else statement
- Removed dead `config.pipeline;` statement
- Fixed unnecessary regex escapes (`\/` → `/`)
## Test Plan
```bash
turbo lint
```
We should also see no other unrelated failure in CI.
<sub>CLOSES TURBO-4916</sub>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>