Skip to content

Repository files navigation

statewalker-db

Database adapters: DuckDB and SQLite (libSQL) for browser and Node.

Packages

PackageDescription
@statewalker/db-apiDriver-agnostic database client interface.
@statewalker/db-duckdb-browserDuckDB WASM driver for browser environments.
@statewalker/db-duckdb-nodeDuckDB Node.js driver backed by @duckdb/node-api.
@statewalker/db-sqlite-browserlibSQL/SQLite WASM driver for browser environments.
@statewalker/db-sqlite-nodelibSQL/SQLite Node.js driver backed by @libsql/client.
@statewalker/db-testsShared conformance suite every db-api implementation runs, in Node and (via Vitest browser mode) the browser.

Apps

AppDescription
sqlite-search-demoVite demo combining FTS5 + vector search on real SQLite (@sqlite.org/sqlite-wasm, in-browser).

Cross-repo dependencies

This repository depends on no other repository. It is a foundation of the StateWalker dependency graph — everything below it may be built without it.

Cross-repo dependencies are declared workspace:* rather than catalog:. This is deliberate: turbo derives its task graph from workspace: specifiers and does not resolve catalog:, so a catalog: cross-repo dependency is invisible to the scheduler and its consumer can be built before it.

Development

pnpm install
pnpm run build
pnpm run test

pnpm 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 suites

pnpm 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:browser

The 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.

Release

Releases are managed via changesets:

pnpm changeset # describe the change
pnpm version-packages # roll versions + regenerate CHANGELOGs
pnpm release-packages # publish to npm

About

Database drivers: db-api, db-duckdb-browser, db-duckdb-node, db-turso-browser, db-turso-node.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages