Skip to content

chore: upgrade dependencies and tighten TypeScript config - #385

Merged
xobotyi merged 2 commits into
masterfrom
chore/deps-upgrade
Jul 26, 2026
Merged

chore: upgrade dependencies and tighten TypeScript config#385
xobotyi merged 2 commits into
masterfrom
chore/deps-upgrade

Conversation

@xobotyi

@xobotyi xobotyi commented Jul 26, 2026

Copy link
Copy Markdown
Member

Dependencies

package from to
typescript 5.9.3 7.0.2 (native compiler)
vitest 4.1.8 4.1.10
@vitest/coverage-v8 4.1.8 4.1.10
semantic-release 25.0.3 25.0.8

Everything else is already at latest. TypeScript 7 was blocked by typescript-eslint (the last consumer of the TS JS API), which left with the eslint stack in #384 -- oxlint-tsgolint bundles its own typescript-go checker.

This also supersedes the open dependabot PRs for typescript@6.0.3, eslint-config-xo, eslint-config-xo-typescript, eslint-plugin-unicorn and @ver0/eslint-config -- those packages are gone.

Compiler options

Baseline now matches react-hookz/web: noUncheckedIndexedAccess, exactOptionalPropertyTypes, noUnusedLocals/noUnusedParameters, noImplicitOverride, noImplicitReturns, noFallthroughCasesInSwitch, isolatedModules, verbatimModuleSyntax, erasableSyntaxOnly, moduleDetection: force. lib pinned to ESNext, types to [] -- no ambient type packages leak in.

tsconfig.json is noEmit; tsconfig.build.json re-enables emit and adds isolatedDeclarations, so dist/is-equal.d.ts comes from the annotated signature instead of inference. Emitted declaration is unchanged.

Single piece of fallout: aKeys[l] is string | undefined under noUncheckedIndexedAccess, asserted non-null with a comment since the index is bounded by aKeys.length.

New typecheck script. CI needs no new step -- vp lint runs type-aware and yarn build compiles.

Stacked on #384.

Base automatically changed from chore/vite-plus-toolchain to master July 26, 2026 10:51
xobotyi added 2 commits July 26, 2026 12:53
typescript 5.9.3 -> 7.0.2 (native compiler), vitest and
@vitest/coverage-v8 4.1.8 -> 4.1.10, semantic-release 25.0.3 -> 25.0.8.

typescript-eslint was the last consumer of the TypeScript JS API and
left with the eslint stack, so nothing blocks the native compiler
anymore -- oxlint-tsgolint bundles its own typescript-go checker.
Baseline gains noUncheckedIndexedAccess, exactOptionalPropertyTypes,
noUnusedLocals/Parameters, noImplicitOverride, noImplicitReturns,
noFallthroughCasesInSwitch, isolatedModules, verbatimModuleSyntax,
erasableSyntaxOnly and moduleDetection: force. lib is pinned to
ESNext and types to [] -- the library targets any ES2024 runtime and
pulls in no ambient type packages.

tsconfig.json is now noEmit; tsconfig.build.json turns emit back on
and adds isolatedDeclarations, so the public declaration is derived
from the annotated signature alone rather than from inference.

Only fallout is the key loop: aKeys[l] is string | undefined under
noUncheckedIndexedAccess, asserted non-null since the index is
bounded by aKeys.length.

Exposes a typecheck script; vp lint already type checks.
@xobotyi
xobotyi force-pushed the chore/deps-upgrade branch from 7e83edd to 6c3461b Compare July 26, 2026 10:54
@xobotyi
xobotyi merged commit 6703e8e into master Jul 26, 2026
6 checks passed
@xobotyi
xobotyi deleted the chore/deps-upgrade branch July 26, 2026 12:10
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.

1 participant