Migrate scripts/ from JavaScript to TypeScript#30
Open
blackwood wants to merge 1 commit into
Open
Conversation
Convert the build/validate/lint tooling under scripts/ from .mjs to .mts, type-checked with TypeScript via `tsc --noEmit` and run directly by Node's native type-stripping (no compile/emit step; Node >=22.18 strips types at runtime, already pinned via .nvmrc). - Add tsconfig.json (strict, noEmit, NodeNext, verbatimModuleSyntax) and a `typecheck` script wired into `npm run check`; add typescript + @types/node. - Add scripts/lib/types.mts with shared Location/Finding/LintResult/Form/ FormMapData shapes. - Type the selector linter against css-what's own token types, using explicit type-predicate filters and `in` guards for the discriminated union. - ajv/ajv-formats are CommonJS; alias their `.default` since NodeNext types the ESM default import as the module namespace. - Repoint package.json scripts and lint-staged, and the README link, to .mts. No behavior change: the built dist/forms.v1.json is byte-identical to the pre-migration output, and all 189 tests pass.
🤖 Bitwarden Claude Code ReviewOverall Assessment: APPROVE This PR migrates the Code Review Details
Dependency Changes
|
bensbits91
approved these changes
Jun 25, 2026
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.
🎟️ Tracking
PM-35418
📔 Objective
Convert the build/validate/lint tooling under scripts/ from .mjs to .mts, type-checked with TypeScript via
tsc --noEmitand run directly by Node's native type-stripping (no compile/emit step; Node >=22.18 strips types at runtime, already pinned via .nvmrc).typecheckscript wired intonpm run check; add typescript + @types/node.inguards for the discriminated union..defaultsince NodeNext types the ESM default import as the module namespace.No behavior change: the built dist/forms.v1.json is byte-identical to the pre-migration output, and all 189 tests pass.