Add static analysis: type checking, ESLint, and Prettier#152
Merged
jakebromberg merged 8 commits intomainfrom Feb 13, 2026
Merged
Add static analysis: type checking, ESLint, and Prettier#152jakebromberg merged 8 commits intomainfrom
jakebromberg merged 8 commits intomainfrom
Conversation
added 7 commits
February 12, 2026 18:14
Add `tsc --noEmit` typecheck scripts to all workspace package.json files
and a root orchestrator that builds shared packages first for correct
module resolution.
Type error fixes:
- Remove deprecated bearerClient import (better-auth 1.4.x)
- Remove IFSEntry entry_type override that conflicted with FSEntry enum
- Cast session.user for admin plugin ban fields
- Fix LRUCache generics to satisfy `V extends {}` constraint
- Use nullish coalescing for nullable-to-non-nullable transforms
- Access metadata fields through entry.metadata in V2 transform
- Replace db.execute().rows with direct cast (drizzle-orm 0.41)
- Replace internal database path import with @wxyc/database
- Cast DiscogsService for pipeline interface compatibility
- Add missing project reference in authentication tsconfig
- Generalize .gitignore tsbuildinfo pattern
Configure ESLint 9 flat config with typescript-eslint recommendedTypeChecked, eslint-plugin-security, and eslint-config-prettier. Fix all lint errors (async safety, useless escapes) while keeping warnings for gradual cleanup.
Add .prettierrc.json and .prettierignore with format and format:check scripts. Configured to match existing code style (single quotes, trailing commas, 120 char line width).
Run prettier --write . to normalize all existing code formatting. No logic changes, only whitespace and quote style adjustments.
Add three new steps before the build step in lint-and-typecheck job: tsc --noEmit for type checking, eslint for linting, and prettier --check for formatting verification.
Add Code Quality section documenting typecheck, lint, lint:fix, format, and format:check scripts. Fix unit tests to match IFSEntry metadata nesting structure.
Use optional chaining when accessing entry.metadata since getPlaylist returns raw FSEntry objects without metadata joins. This fixes a 500 error on the V2 playlist endpoint.
AyBruno
approved these changes
Feb 13, 2026
7507479 to
dc7f6ec
Compare
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.
Summary
tsc --noEmittype checking across all workspaces, catching and fixing ~10 type errors that were silently passing through tsup/esbuildChanges
feat: add typecheck scripts and fix type errorstsc --noEmitto all workspaces. Fix type errors: deprecatedbearerClientimport, IFSEntry interface conflict, LRUCache generics, drizzle-orm return types, internal path importsfeat: add ESLint with TypeScript type-checked rules and security pluginrecommendedTypeChecked, security plugin, prettier compat. Fix async safety errors (floating promises, misused promises), useless escapeschore: add Prettier configuration.prettierrc.json(single quotes, trailing commas, 120 char width) and.prettierignorestyle: format codebase with Prettierci: add typecheck, lint, and format steps to CI workflowlint-and-typecheckjobdocs: add code quality commands to READMENew Commands
Test plan
npm run typecheckpasses with 0 errorsnpm run lintpasses with 0 errors (130 warnings acceptable)npm run format:checkpassesnpm run buildpassesnpm run test:unitpasses (113/113 tests)