Skip to content

Strengthen TypeScript Checks#1153

Merged
CryZe merged 2 commits into
LiveSplit:masterfrom
CryZe:strict-typescript-config
Jul 23, 2026
Merged

Strengthen TypeScript Checks#1153
CryZe merged 2 commits into
LiveSplit:masterfrom
CryZe:strict-typescript-config

Conversation

@CryZe

@CryZe CryZe commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Enable exact optional properties, unchecked indexed access, explicit index-signature access, isolated modules, verbatim module syntax, no implicit overrides, and the remaining low-risk compiler checks across the frontend and Node configurations.

Migrate imports and unsafe array or optional-property access to satisfy the stricter contracts. Advance livesplit-core to its improved TypeScript bindings, use its fixed color and gradient tuples directly, expose localized language names through the JavaScript-safe Lang.displayName, and annotate intentional React overrides.

Add a reusable typecheck script and enforce it in web CI. Keep library declaration checking disabled for the Node configuration because the combined DOM, WebWorker, and Workbox declarations conflict.

Validation: npm ci, a full livesplit-core WebAssembly rebuild, ESLint, both TypeScript configurations, web production build, and Tauri frontend build.

CryZe added 2 commits July 23, 2026 12:12
Enable exact optional properties, unchecked indexed access, explicit index-signature access, isolated modules, verbatim module syntax, and the remaining low-risk compiler checks across the frontend and Node configurations.

Migrate imports and unsafe array or optional-property access to satisfy the stricter contracts. Validate RGBA tuples and generated binding data at their boundaries instead of hiding possible undefined values with assertions.

Add a reusable typecheck script and enforce it in web CI. Keep library declaration checking disabled for the Node configuration because the combined DOM, WebWorker, and Workbox declarations conflict, and leave frontend noImplicitOverride disabled until generated livesplit-core classes emit override modifiers.

Validation: npm ci, ESLint, both TypeScript configurations, web production build, and Tauri frontend build.
Advance livesplit-core to the merged TypeScript binding improvements. Use the generated fixed-size color and gradient tuples directly, switch the JavaScript localization API to Lang.displayName, and remove the frontend's temporary RGBA validation boundary.

Enable noImplicitOverride for the frontend and annotate the React lifecycle methods that intentionally override their base class contracts.

Validation: full livesplit-core WebAssembly rebuild, ESLint, both TypeScript configurations, web production build, and Tauri frontend build.
@CryZe
CryZe merged commit 39987f8 into LiveSplit:master Jul 23, 2026
4 checks passed
@CryZe CryZe added enhancement A new feature or general improvement to LiveSplit One. code quality The goal is to improve the quality of the code. labels Jul 23, 2026
@CryZe
CryZe deleted the strict-typescript-config branch July 23, 2026 12:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

code quality The goal is to improve the quality of the code. enhancement A new feature or general improvement to LiveSplit One.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant