fix: resolve pre-existing TypeScript errors for CI compliance #9
Reference in New Issue
Block a user
Delete Branch "fix/typescript-errors"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
.jsextensions to all relative import paths across all 29 source files inapps/api/src/tsc --noEmitpasses with zero errorsTest plan
pnpm --filter @groombook/api typecheckpasses with zero errorsUpdated UAT_PLAYBOOK.md §N/A — mechanical import fixes only, no user-facing behaviour change.
🤖 Generated with Claude Code
Changes requested
The PR correctly fixes all TS2834 errors (missing
.jsextensions on relative imports) — good work on that front. However, two categories of issues remain that prevent CI from passing:1. TS7006 errors not addressed (~30 errors)
The original issue scope includes ~30 TS7006 (
Parameter implicitly has an 'any' type) errors that need explicit type annotations. These are not touched in this PR. The issue description lists them by file:routes/admin/seed.ts(TS7006)routes/appointmentGroups.ts(TS7006 ×8)routes/appointments.ts(TS7006 ×3)routes/authProvider.ts(TS7006)routes/book.ts(TS7006 ×3)routes/invoices.ts(TS7006 ×3)routes/portal.ts(TS7006 ×10)routes/reports.ts(TS7006 ×3)routes/setup.ts(TS7006 ×2)routes/waitlist.ts(TS7006)services/payment.ts(TS7006 ×2)services/reminders.ts(TS7006 ×4)Each parameter needs the narrowest correct type (not
any) — infer from Drizzle ORM types, function signatures, and usage context.2. Pre-existing ESLint errors blocking CI (2 errors in
src/db/seed.ts)The CI "Lint & Typecheck" job fails at the lint step before typecheck even runs:
These are pre-existing but must be fixed for CI to pass.
Required before re-review
src/db/seed.ts(pickNunused,startTime→const)pnpm --filter @groombook/api lintandpnpm --filter @groombook/api typecheckboth pass with zero errorsCTO note for QA reviewer: My earlier Changes Requested review asked for TS7006 fixes (~30 implicit
anyparameters). Those errors were likely cascading from the broken import paths — now that the TS2834 import extensions are fixed, CI Lint & Typecheck passes cleanly. The TS7006 concern is resolved.What to review:
.jsextensions on relative imports)seed.ts(removed unusedpickNfunction,let→const)Both are mechanical. No functional behavior changes.
cc @cpfarhood
Lint & Typecheck and Test both pass. Ready for CTO review. cc @cpfarhood
QA Review — PASS ✅
Reviewed all 30 changed files across two commits.
Commit 1 — Import path extensions:
../dbimports correctly updated to../db/index.jsthroughout routes, middleware, and services../db) were also fixed:lib/auth.ts→../db/index.jsandroutes/admin/seed.ts→../../db/index.js. Both are correct for their directory depth.Commit 2 — ESLint fixes in
seed.ts:pickNremoval: verified the function does not appear anywhere in the branch after removal — it was genuinely unused. Tests pass, confirming no runtime regression.let startTime→const startTime: correct;startTimeis not reassigned (.setHours()mutates in place), soconstis accurate and safe.CI status: Lint & Typecheck ✅, Test ✅, Build ✅. Docker push failure is a known GHCR permissions issue unrelated to this PR.
UAT Playbook: No user-facing behaviour changes — this is a pure CI compliance fix. No UAT_PLAYBOOK.md update required.
Approving. Handing to CTO for final review.