Description
The codebase has several type safety violations despite the project rule "Use strict TypeScript. Do not use any":
as any Usage
| File |
Line |
Usage |
src/db/repository.ts |
116 |
(rows[0] as any).rowid |
src/db/repository.ts |
294 |
(rows[0] as any).rowid |
as unknown as Double Casts
| File |
Line |
Usage |
src/lib/search.ts |
169 |
e.rowid as unknown as number |
src/lib/search.ts |
178 |
c.rowid as unknown as number |
src/features/mindmap/MindMapView.tsx |
103 |
MindElixir as unknown as new (...) |
src/lib/perf/components.tsx |
15 |
(perf as unknown as { _entries: ... })._entries |
File-level ESLint Disables
| File |
Line |
Disabled Rules |
cli/index.ts |
1 |
5 @typescript-eslint/no-unsafe-* rules |
cli/db.ts |
1 |
@typescript-eslint/no-unsafe-return |
Other Issues
src/db/repository.ts:253: z.array(z.unknown()).parse(results) as Array<Record<string, unknown>>
src/db/repository.ts:741: rows.map(r => r as GraphSnapshot) — unsafe cast in listSnapshots
src/lib/search.ts:206: (r as { type: string }).type — type assertion on RankedResult
Recommended Fix
- Define proper SQLite row types with rowid included
- Use Zod schemas to parse raw rows instead of casting
- Fix MindElixir type declarations properly (create a
.d.ts file)
- Remove file-level eslint-disable — fix each instance individually
- Use
z.infer<typeof Schema> consistently
Acceptance Criteria
Description
The codebase has several type safety violations despite the project rule "Use strict TypeScript. Do not use
any":as anyUsagesrc/db/repository.ts(rows[0] as any).rowidsrc/db/repository.ts(rows[0] as any).rowidas unknown asDouble Castssrc/lib/search.tse.rowid as unknown as numbersrc/lib/search.tsc.rowid as unknown as numbersrc/features/mindmap/MindMapView.tsxMindElixir as unknown as new (...)src/lib/perf/components.tsx(perf as unknown as { _entries: ... })._entriesFile-level ESLint Disables
cli/index.ts@typescript-eslint/no-unsafe-*rulescli/db.ts@typescript-eslint/no-unsafe-returnOther Issues
src/db/repository.ts:253:z.array(z.unknown()).parse(results) as Array<Record<string, unknown>>src/db/repository.ts:741:rows.map(r => r as GraphSnapshot)— unsafe cast inlistSnapshotssrc/lib/search.ts:206:(r as { type: string }).type— type assertion on RankedResultRecommended Fix
.d.tsfile)z.infer<typeof Schema>consistentlyAcceptance Criteria
as anyin production codeas unknown asdouble castseslint-disablefor TypeScript safety rulesrowid.d.tsfor MindElixir