Skip to content

chore: simplify tooling to oxlint + tsc - #184

Open
dinwwwh wants to merge 1 commit into
mainfrom
claude/simplify-lint-build-tools-wo4j8a
Open

dinwwwh wants to merge 1 commit into
mainfrom
claude/simplify-lint-build-tools-wo4j8a

Conversation

@dinwwwh

@dinwwwh dinwwwh commented Nov 5, 2026

Copy link
Copy Markdown
Member

Replaces uncheck and unbuild with a smaller setup: oxlint for lint and type checks, oxfmt for formatting, and plain tsc (TypeScript 7) for builds.

Lint and type check

  • pnpm check / pnpm fix run oxlint, with type-aware rules and type checking enabled in oxlint.config.ts (via oxlint-tsgolint). One pass covers lint, type-aware rules and TypeScript errors, including *.test-d.ts.
  • pnpm format runs oxfmt. Formatting is no longer checked in CI.
  • Removed uncheck, sherif and the pre-commit hook. The former presets are written out in oxlint.config.ts, oxfmt.config.ts and the tsconfigs.
  • The correctness and suspicious categories are errors, plus a short list of hand-picked rules. All existing warnings are fixed. In public types this only drops union members that unknown or ? already cover (for example StandardBody), so the types are identical, including under exactOptionalPropertyTypes.
  • Dropped the dependabot groups.

TypeScript

  • TypeScript 7 for builds, type checks and the playgrounds.
  • module: nodenext and verbatimModuleSyntax. Relative imports now use explicit .ts extensions, which rewriteRelativeImportExtensions turns into .js on build.
  • fastify and aws-lambda use the same lib as node (Node types, no DOM), so project references and composite are no longer needed.
  • Shared settings live in tsconfig.lib.json, including include (src and package.json) and exclude. Most package tsconfigs are now a single extends.

Build

  • prepack runs plain tsc, which emits one .js and one .d.ts per source file into dist. publishConfig.exports now points at dist/index.js and dist/index.d.ts, replacing the .mjs and .d.mts files unbuild produced.
  • Tested by packing all 7 packages and installing the tarballs in a fresh project. It type-checks with skipLibCheck: false under nodenext and bundler resolution, and runs in Node.

Editors and agents

  • VS Code recommends the oxc extension.
  • Zed formats and fixes on save through the Oxc extension's oxfmt and oxlint language servers.
  • Added AGENTS.md. .agents/ and .claude/ are now tracked, except .claude/worktrees/, which .gitignore and vitest both skip.

Misc

  • oxlint 1.91 and oxfmt 0.76. Vitest is unchanged.
  • pnpm is pinned through packageManager instead of devEngines.

Notes

  • A clean pnpm check takes about 1.7 s, against about 8.3 s for the old uncheck on a fresh checkout.
  • Errors that only come from generating .d.ts files show up at build time (prepack), not in pnpm check. CI still catches them, because publish_preview packs every package.
  • Contributors using Zed need to install the Oxc extension themselves, since Zed only accepts auto_install_extensions in personal settings.

Generated by Claude Code

Lint and type check
- `check`/`fix` run oxlint with type-aware rules and type checking enabled
  in oxlint.config.ts (via oxlint-tsgolint); `format` runs oxfmt and is no
  longer checked in CI
- remove uncheck, sherif and the pre-commit hook; inline the oxlint/oxfmt
  presets
- `correctness` and `suspicious` categories as errors, plus a short list of
  hand-picked rules; fix all existing warnings (public types unchanged)
- drop dependabot groups

TypeScript
- TypeScript 7 for the build, type checks and playgrounds
- inline the tsconfig presets into tsconfig.json + tsconfig.lib.json,
  dropping options that are already the default
- `module: nodenext`, `verbatimModuleSyntax`; relative imports use explicit
  `.ts` extensions, rewritten to `.js` on build
- fastify and aws-lambda use the same lib as node (no DOM), so project
  references are no longer needed
- package tsconfigs share include (src + package.json) and exclude from
  tsconfig.lib.json; drop root include patterns that matched nothing

Build
- replace unbuild with plain `tsc` (per-file .js + .d.ts in dist)

Editors and agents
- VS Code recommends the oxc extension
- Zed formats and fixes on save through the Oxc extension's oxfmt and
  oxlint language servers
- add AGENTS.md; track .agents and .claude, but ignore .claude/worktrees
  (also excluded from vitest)

Misc
- oxlint 1.91, oxfmt 0.76
- pin pnpm via `packageManager` instead of `devEngines`

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VVaw7QpWMUaPoB4z52Dy9p
@pkg-pr-new

pkg-pr-new Bot commented Nov 5, 2026

Copy link
Copy Markdown
@standard-server/aws-lambda

npm i https://pkg.pr.new/@standard-server/aws-lambda@184

@standard-server/core

npm i https://pkg.pr.new/@standard-server/core@184

@standard-server/fastify

npm i https://pkg.pr.new/@standard-server/fastify@184

@standard-server/fetch

npm i https://pkg.pr.new/@standard-server/fetch@184

@standard-server/node

npm i https://pkg.pr.new/@standard-server/node@184

@standard-server/peer

npm i https://pkg.pr.new/@standard-server/peer@184

@standard-server/shared

npm i https://pkg.pr.new/@standard-server/shared@184

commit: 2c73b45

@codecov

codecov Bot commented Nov 5, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@codspeed

codspeed Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

1 warning

⚠️ 5 benchmarks are dominated by system calls

System calls cannot be simulated consistently and are left out of the measure. The reported value understates the real cost. Switch to the Walltime instrument to measure them.

Learn more about system calls

See affected benchmarks

✅ 26 untouched benchmarks
⏩ 108 skipped benchmarks1


Comparing claude/simplify-lint-build-tools-wo4j8a (2c73b45) with main (a840ead)

Open in CodSpeed

Footnotes

  1. 108 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

@pullfrog pullfrog Bot 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.

✅ No new issues found.

Reviewed changes

  • Lint and type checking: pnpm check now runs oxlint with type-aware rules and TS compiler diagnostics through oxlint-tsgolint, and pnpm format runs oxfmt. Probe files confirmed it catches plain TS errors plus .test.ts and .test-d.ts errors.
  • Build: prepack runs tsc per package and publishConfig.exports points at dist/index.js / dist/index.d.ts; all 7 packages pack, and packed types resolve under TS 5.9, 6.0 and 7 with nodenext and bundler resolution.
  • TypeScript config: module: nodenext, verbatimModuleSyntax, allowImportingTsExtensions / rewriteRelativeImportExtensions, and a shared tsconfig.lib.json; TS 7 already defaults strict, noUncheckedSideEffectImports and moduleDetection to the old preset's effective values.
  • Source changes: .ts relative imports and the mechanical type cleanups (StandardBody = unknown, redundant | undefined removal, void-ing ignored promises) are behavior-preserving; the express test handler now forwards errors through next.
  • Repo tooling: oxlint / oxfmt configs reproduce the former presets, pnpm is pinned via packageManager, and AGENTS.md / editor configs are added.

Verified locally: pnpm check (0 errors), pnpm exec vitest run (60 files / 1485 tests), pnpm run -r prepack (all 7 packages), pnpm exec oxfmt --check, clean git status.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

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