chore: replace Biome with oxlint, oxfmt and Knip - #20
Open
Thomasims wants to merge 4 commits into
Open
Conversation
Adopts the shared @antelopejs/tooling-configs presets: oxlint with the vendored anti-slop rules, oxfmt for formatting and Knip for dead code. Type-aware linting needs a tsconfig tsgolint accepts, so the removed moduleResolution node10 option goes away and baseUrl gives way to rootDir, in the playground as well. The module stays on commonjs so the emit keeps using require, which is what the AntelopeJS resolver hooks. Drops mocha, which was declared as a runtime dependency but is supplied by the test runner.
Thomasims
marked this pull request as draft
September 7, 2026 10:37
Thomasims
marked this pull request as ready for review
September 7, 2026 16:10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the repository onto the shared
@antelopejs/tooling-configspresets: oxlint with the vendored anti-slop rules, oxfmt for formatting, and Knip for dead code.Tooling
biome.jsonand@biomejs/biomeare gone, replaced byoxlint.config.ts,oxfmt.config.tsandknip.config.ts.lint,lint:fixandformatpoint at the new tools, andformat:checkandknipare new.tsconfig
Type-aware linting runs through tsgolint, which rejects options TypeScript 7 removes and auto-discovers each file's own
tsconfig.json, so both the root and the playground config change.moduleResolution: "node"(node10) is removed in TS7 and goes;baseUrlgives way to an explicitrootDir.moduledeliberately stays oncommonjs: undernode16TypeScript stops downlevellingawait import(...)and emits a native ESM dynamic import, which does not go through the AntelopeJS CJS resolver detour. Leavingmodulealone and simply droppingmoduleResolutionsatisfies tsgolint and keeps the emit byte-compatible, so type-aware linting is fully enabled.Code changes the linter asked for
Nothing beyond the import ordering that
oxlint --fixapplies. The two remaining findings areanti-slopwarnings (no-unknown-type-aliasesonAuthPayload,no-object-parametersonjwt.ts) which the preset raises deliberately and which do not fail the build. They are backlog items, not a gate.Knip
mochawas declared as a runtime dependency and nothing imports it — the mocha the suites run under comes from the test runner, not from this package. Removing it leavespnpm testat 4 passing, so it goes.chai,@types/chaiand@types/mochalook equally unused from the source but are not removable: the auth conformance suite ships compiled inside@antelopejs/interface-authandrequire("chai")out of this module's ownnode_modules. They are recorded inignoreDependencieswith that reason.ajsis ignored because CI installs@antelopejs/coreglobally rather than pulling the whole CLI into the dependency tree.Verification
pnpm build,pnpm lintandpnpm knipare clean.pnpm testis 4 passing / 0 failing — identical to untouchedmain, measured in a throwaway worktree before any of this landed.The formatting pass is its own commit and is recorded in
.git-blame-ignore-revs.The
.github/ISSUE_TEMPLATE/**entry inoxfmt.config.tsis temporary and can be dropped once AntelopeJS/tooling-configs#5 ships.