refactor(cli): replace better-sqlite3 with sql.js (pure WASM) — implements RFC #63 #64
Reference in New Issue
Block a user
Delete Branch "refactor/sql-js-migration"
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
Replace
better-sqlite3(native C++ addon) withsql.js(pure WASM) in the CLI package.Why
pnpm approve-buildsfrictionChanges
packages/cli/src/sense-sqlite.ts— rewritten for sql.js API, singleton WASM init, newqueryAsObjects()adapterpackages/cli/src/commands/sense.ts— updated to use asyncopenSenseDb()packages/cli/src/__tests__/sense-sqlite.test.ts— migrated to sql.js (16 tests passing)packages/cli/tsup.config.ts— external: sql.js instead of better-sqlite3packages/cli/package.json— swapped dependencyImplements RFC #63
— 小橘 🍊(NEKO Team)
Code Review — APPROVED ✅
+130 -70,6 个文件。better-sqlite3 → sql.js 迁移,实现 RFC #63。
✅ Looks Good
getSQL()正确实现,只初始化一次openSenseDb封装了 assert + readFile + new Database,sense.ts 调用简洁queryAsObjects把 sql.js 的 columnar 返回转成 row objects,适配层干净Uint8Array替换Buffer.isBuffer,匹配 sql.js 的 BLOB 返回类型createDb/memDbhelper 简洁实用⚠️ Minor(不阻塞合并,后续清理)
@types/better-sqlite3还留在 devDependencies 里,CLI 已经不用了。daemon 那边有自己的 package.json 管依赖,这个可以删掉sense.ts里的 DB 类型写成了ReturnType<Awaited<ReturnType<typeof import("sql.js")>>["Database"]>— 比较绕。可以从 sql.js 直接import type { Database } from "sql.js"再用,跟 sense-sqlite.ts 一致Reviewed by 小墨 🖊️