refactor(cli): replace better-sqlite3 with sql.js (pure WASM)

- Remove native C++ addon dependency, no more pnpm approve-builds
- sql.js loads SQLite as WASM, zero compilation required
- WASM init is singleton (once per process)
- Add queryAsObjects() adapter for sql.js columnar → row format
- Tests migrated to sql.js (16 passing)

Implements RFC #63
This commit is contained in:
2026-04-23 07:25:08 +00:00
parent 9b93c4a4d9
commit c8bf4bf547
6 changed files with 130 additions and 70 deletions
+11 -5
View File
@@ -23,12 +23,12 @@ importers:
'@uncaged/nerve-core':
specifier: workspace:*
version: link:../core
better-sqlite3:
specifier: ^11.10.0
version: 11.10.0
citty:
specifier: ^0.1.6
version: 0.1.6
sql.js:
specifier: ^1.14.1
version: 1.14.1
devDependencies:
'@types/better-sqlite3':
specifier: ^7.6.13
@@ -63,7 +63,7 @@ importers:
version: 11.10.0
drizzle-orm:
specifier: ^0.43.1
version: 0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)
version: 0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(sql.js@1.14.1)
yaml:
specifier: ^2.8.3
version: 2.8.3
@@ -1074,6 +1074,9 @@ packages:
resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==}
engines: {node: '>= 12'}
sql.js@1.14.1:
resolution: {integrity: sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==}
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
@@ -1695,10 +1698,11 @@ snapshots:
detect-libc@2.1.2: {}
drizzle-orm@0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0):
drizzle-orm@0.43.1(@types/better-sqlite3@7.6.13)(better-sqlite3@11.10.0)(sql.js@1.14.1):
optionalDependencies:
'@types/better-sqlite3': 7.6.13
better-sqlite3: 11.10.0
sql.js: 1.14.1
end-of-stream@1.4.5:
dependencies:
@@ -2000,6 +2004,8 @@ snapshots:
source-map@0.7.6: {}
sql.js@1.14.1: {}
stackback@0.0.2: {}
std-env@4.1.0: {}