refactor(types): 消除非必要 as 逃逸,锁紧 strict 政策

按 Oracle 复核处置全仓 5 处类型断言:

- fields.ts: as const → satisfies Record<GeneratedFieldKey, true>
- compile.ts: as readonly string[] → ReadonlySet<string>.has()
- embed-migrations.ts: JSON.parse as Journal → Zod schema 运行时校验,JSON.parse 显式 unknown
- interceptors.ts: 唯一保留的跨包断言(ORPC→Zod)注释扩写为完整背景
- router.tsx: satisfies 非 cast,保留

biome.json 增配 noExplicitAny / noTsIgnore / noNonNullAssertion,防止后续漂移。
This commit is contained in:
2026-04-25 14:23:08 +08:00
parent f520b54ca5
commit 695e826dcf
5 changed files with 38 additions and 9 deletions
+19 -5
View File
@@ -1,17 +1,31 @@
import { existsSync } from 'node:fs'
import { readFile, writeFile } from 'node:fs/promises'
import { z } from 'zod'
const JOURNAL = './drizzle/meta/_journal.json'
const OUTPUT = './src/server/db/migrations.gen.ts'
const SQL_RELATIVE_FROM_OUTPUT = '../../../drizzle'
type JournalEntry = { idx: number; tag: string; when: number; breakpoints: boolean }
type Journal = { entries: JournalEntry[] }
const journalEntrySchema = z.object({
idx: z.number(),
tag: z.string(),
when: z.number(),
breakpoints: z.boolean(),
})
const journalSchema = z.object({ entries: z.array(journalEntrySchema).default([]) })
type JournalEntry = z.infer<typeof journalEntrySchema>
const readJournalEntries = async (): Promise<JournalEntry[]> => {
if (!existsSync(JOURNAL)) {
return []
}
const raw: unknown = JSON.parse(await readFile(JOURNAL, 'utf-8'))
return journalSchema.parse(raw).entries.sort((a, b) => a.idx - b.idx)
}
const main = async () => {
const entries: JournalEntry[] = existsSync(JOURNAL)
? ((JSON.parse(await readFile(JOURNAL, 'utf-8')) as Journal).entries ?? []).sort((a, b) => a.idx - b.idx)
: []
const entries = await readJournalEntries()
const imports = entries
.map((e) => `import sql_${e.idx} from '${SQL_RELATIVE_FROM_OUTPUT}/${e.tag}.sql' with { type: 'text' }`)