Database adapters: DuckDB and SQLite (libSQL) for browser and Node.
| Package | Description |
|---|---|
| @statewalker/db-api | Driver-agnostic database client interface. |
| @statewalker/db-duckdb-browser | DuckDB WASM driver for browser environments. |
| @statewalker/db-duckdb-node | DuckDB Node.js driver backed by @duckdb/node-api. |
| @statewalker/db-sqlite-browser | libSQL/SQLite WASM driver for browser environments. |
| @statewalker/db-sqlite-node | libSQL/SQLite Node.js driver backed by @libsql/client. |
| App | Description |
|---|---|
| sqlite-search-demo | Vite demo combining FTS5 + vector search on real SQLite (@sqlite.org/sqlite-wasm, in-browser). |
pnpm install
pnpm run build
pnpm run testpnpm run test runs the Node test suites. The two browser adapters
(db-sqlite-browser, db-duckdb-browser) additionally run the shared
conformance suite in a real headless Chromium via Vitest browser mode +
Playwright:
pnpm exec playwright install chromium # one-time: fetch the Chromium binary
pnpm run test:browser # run both browser adapter suitespnpm run test:browser fans out to each browser package's own test:browser
script (vitest run --config vitest.browser.config.ts). To run just one:
pnpm --filter @statewalker/db-sqlite-browser test:browser
pnpm --filter @statewalker/db-duckdb-browser test:browserThe DuckDB browser suite fetches its WASM bundle from jsDelivr, so it needs
outbound network access from the browser; the libSQL suite serves sqlite3.wasm
locally (via the config's publicDir) and needs none.
Releases are managed via changesets:
pnpm changeset # describe the change
pnpm version-packages # roll versions + regenerate CHANGELOGs
pnpm release-packages # publish to npm