client/api.js -> api.ts. Types the fetch infrastructure: generic _fetch<T> and get/post/put/patch/del<T> helpers, an ApiError interface (status/code/ details/data), a QueryParams type for the query-string builder, and File-typed upload helpers. Endpoint response shapes are typed incrementally — most methods default to Promise<unknown>; the ones consumed by typed .ts files get real shapes (quickPay -> PaymentRecord, togglePaid -> TogglePaidResult, settings -> settings map). Typing togglePaid's result surfaced a latent narrowing bug in usePaymentActions: the un-pay Undo closure read result.paymentId (number|undefined) inside a deferred async callback where TS re-widens the if-narrowed value — fixed by capturing the id in a const before the closure. The 16 files importing '@/api.js' with an explicit extension were normalized to '@/api' so Vite/TS resolve the .ts. Verified: typecheck 0, lint 0 errors (47 warns), build green, 48 client tests, and 17/17 e2e probe (every page renders, all API paths respond) — the central fetch-module rename is runtime-safe. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| components | ||
| contexts | ||
| hooks | ||
| lib | ||
| pages | ||
| public/img | ||
| App.jsx | ||
| api.ts | ||
| index.css | ||
| main.jsx | ||