# @suaveplan/db-sqlite - Universal SQLite adapter for Suaveplan: bun:sqlite on the Bun server, @sqlite.org/sqlite-wasm in the browser, unified behind a Drizzle-ORM surface with LRU prepared-statement cache, forward-only migration runner, OTel instrumentation, and structured SQLITE.* error codes. ## Summary Universal SQLite adapter for Suaveplan. Runs on `bun:sqlite` on the Bun server and `@sqlite.org/sqlite-wasm` (Web Worker) in the browser, unified behind a single `SqliteAdapter` that implements `DatabaseAdapter` from `@suaveplan/db`. Includes an LRU prepared-statement cache (128 entries by default), a forward-only ledger-tracked `MigrationRunner` with dry-run support, OpenTelemetry span instrumentation, structured `SQLITE_*` error codes, and a `./unsafe` subpath for raw queries. ## Documentation tree - [adapter](./src/adapter/adapter.md) — _(no submodules)_ - adapter.wasm — Browser-runtime entry point for the…… - [adapter.bun](./src/adapter/adapter.bun.md) — Bun-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a bundler or the Bun run… - [adapter](./src/adapter/adapter.md) — _(no submodules)_ - adapter.wasm — Browser-runtime entry point for the…… - [adapter.wasm](./src/adapter/adapter.wasm.md) — Browser-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a browser bundler re… - [cache](./src/cache/cache.md) — _(no submodules)_ - [cache](./src/cache/cache.md) — _(no submodules)_ - [conformance](./src/conformance/conformance-suite.md) — _(no submodules)_ - [conformance-suite](./src/conformance/conformance-suite.md) — _(no submodules)_ - [connection](./src/connection/connection.md) — _(no submodules)_ - [connection](./src/connection/connection.md) — _(no submodules)_ - [bun-driver](./src/drivers/bun-driver.md) — Provides `createBunDriver`, the server-side SQLite driver for `@suaveplan/db-sqlite`. It dynamically imports `bun:sqlit… - [wasm-driver](./src/drivers/wasm-driver.md) — Provides `createWasmDriver`, the browser-side SQLite driver for `@suaveplan/db-sqlite`. It spawns a Web Worker running… - [wasm-worker](./src/drivers/wasm-worker.md) — Web Worker implementation for the WASM SQLite driver. This module runs inside a dedicated worker thread created by `cre… - [errors](./src/errors/errors.md) — _(no submodules)_ - [errors](./src/errors/errors.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_ - [otel](./src/otel/otel.md) — _(no submodules)_ - [otel](./src/otel/otel.md) — _(no submodules)_ - [schemas](./src/schemas/schemas.md) — _(no submodules)_ - [schemas](./src/schemas/schemas.md) — _(no submodules)_ - [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_ - [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_ - adapter.wasm — Browser-runtime entry point for the…… - [adapter.bun](./src/adapter/adapter.bun.md) — Bun-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a bundler or the Bun run… - [adapter](./src/adapter/adapter.md) — _(no submodules)_- adapter.wasm — Browser-runtime entry point for the…… - [adapter.wasm](./src/adapter/adapter.wasm.md) — Browser-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a browser bundler re… - [cache](./src/cache/cache.md) — _(no submodules)_- [cache](./src/cache/cache.md) — _(no submodules)_- [conformance](./src/conformance/conformance-suite.md) — _(no submodules)_- [conformance-suite](./src/conformance/conformance-suite.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [bun-driver](./src/drivers/bun-driver.md) — Provides `createBunDriver`, the server-side SQLite driver for `@suaveplan/db-sqlite`. It dynamically imports `bun:sqlit… - [wasm-driver](./src/drivers/wasm-driver.md) — Provides `createWasmDriver`, the browser-side SQLite driver for `@suaveplan/db-sqlite`. It spawns a Web Worker running… - [wasm-worker](./src/drivers/wasm-worker.md) — Web Worker implementation for the WASM SQLite driver. This module runs inside a dedicated worker thread created by `cre… - [errors](./src/errors/errors.md) — _(no submodules)_- [errors](./src/errors/errors.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- adapter.wasm — Browser-runtime entry point for the…… - [adapter.bun](./src/adapter/adapter.bun.md) — Bun-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a bundler or the Bun run… - [adapter](./src/adapter/adapter.md) — _(no submodules)_- adapter.wasm — Browser-runtime entry point for the…… - [adapter.wasm](./src/adapter/adapter.wasm.md) — Browser-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a browser bundler re… - [cache](./src/cache/cache.md) — _(no submodules)_- [cache](./src/cache/cache.md) — _(no submodules)_- [conformance](./src/conformance/conformance-suite.md) — _(no submodules)_- [conformance-suite](./src/conformance/conformance-suite.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [bun-driver](./src/drivers/bun-driver.md) — Provides `createBunDriver`, the server-side SQLite driver for `@suaveplan/db-sqlite`. It dynamically imports `bun:sqlit… - [wasm-driver](./src/drivers/wasm-driver.md) — Provides `createWasmDriver`, the browser-side SQLite driver for `@suaveplan/db-sqlite`. It spawns a Web Worker running… - [wasm-worker](./src/drivers/wasm-worker.md) — Web Worker implementation for the WASM SQLite driver. This module runs inside a dedicated worker thread created by `cre… - [errors](./src/errors/errors.md) — _(no submodules)_- [errors](./src/errors/errors.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- adapter.wasm — Browser-runtime entry point for the… - [adapter.bun](./src/adapter/adapter.bun.md) — Bun-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a bundler or the Bun run… - [adapter](./src/adapter/adapter.md) — _(no submodules)_- adapter.wasm — Browser-runtime entry point for the… - [adapter.wasm](./src/adapter/adapter.wasm.md) — Browser-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a browser bundler re… - [cache](./src/cache/cache.md) — _(no submodules)_- [cache](./src/cache/cache.md) — _(no submodules)_- [conformance](./src/conformance/conformance-suite.md) — _(no submodules)_- [conformance-suite](./src/conformance/conformance-suite.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_- [bun-driver](./src/drivers/bun-driver.md) — Provides `createBunDriver`, the server-side SQLite driver for `@suaveplan/db-sqlite`. It dynamically imports `bun:sqlit… - [wasm-driver](./src/drivers/wasm-driver.md) — Provides `createWasmDriver`, the browser-side SQLite driver for `@suaveplan/db-sqlite`. It spawns a Web Worker running… - [wasm-worker](./src/drivers/wasm-worker.md) — Web Worker implementation for the WASM SQLite driver. This module runs inside a dedicated worker thread created by `cre… - [errors](./src/errors/errors.md) — _(no submodules)_- [errors](./src/errors/errors.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_- [adapter.bun](./src/adapter/adapter.bun.md) — Bun-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a bundler or the Bun run… - [adapter](./src/adapter/adapter.md) — _(no submodules)_- [adapter.wasm](./src/adapter/adapter.wasm.md) — Browser-runtime entry point for the `./adapter` conditional export in `@suaveplan/db-sqlite`. When a browser bundler re… - [cache](./src/cache/cache.md) — _(no submodules)_ - [cache](./src/cache/cache.md) — _(no submodules)_- [conformance](./src/conformance/conformance-suite.md) — _(no submodules)_ - [conformance-suite](./src/conformance/conformance-suite.md) — _(no submodules)_- [connection](./src/connection/connection.md) — _(no submodules)_ - [connection](./src/connection/connection.md) — _(no submodules)_- [bun-driver](./src/drivers/bun-driver.md) — Provides `createBunDriver`, the server-side SQLite driver for `@suaveplan/db-sqlite`. It dynamically imports `bun:sqlit… - [wasm-driver](./src/drivers/wasm-driver.md) — Provides `createWasmDriver`, the browser-side SQLite driver for `@suaveplan/db-sqlite`. It spawns a Web Worker running… - [wasm-worker](./src/drivers/wasm-worker.md) — Web Worker implementation for the WASM SQLite driver. This module runs inside a dedicated worker thread created by `cre… - [errors](./src/errors/errors.md) — _(no submodules)_ - [errors](./src/errors/errors.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_- [otel](./src/otel/otel.md) — _(no submodules)_ - [otel](./src/otel/otel.md) — _(no submodules)_- [schemas](./src/schemas/schemas.md) — _(no submodules)_ - [schemas](./src/schemas/schemas.md) — _(no submodules)_- [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_ - [unsafe](./src/unsafe/unsafe.md) — _(no submodules)_ ## Install ```bash bun add @suaveplan/db-sqlite ``` ## Quick start ```ts import { createSqliteAdapter } from "@suaveplan/db-sqlite/adapter"; const db = await createSqliteAdapter({ url: ":memory:" }); await db.exec(` CREATE TABLE users ( id TEXT PRIMARY KEY, email TEXT NOT NULL ); `); await db.run("INSERT INTO users (id, email) VALUES (?, ?)", [ "user-123", "alice@example.com", ]); const rows = await db.all<{ id: string; email: string }>( "SELECT id, email FROM users WHERE id = ?", ["user-123"], ); await db.close(); ``` ## Modules - [Adapter (universal)](./src/adapter/adapter.md) — `SqliteAdapter`, `createSqliteAdapter`, runtime selection - [Adapter (Bun)](./src/adapter/adapter.bun.md) — `bun:sqlite` driver binding - [Adapter (WASM)](./src/adapter/adapter.wasm.md) — browser/Worker `@sqlite.org/sqlite-wasm` binding - [Cache](./src/cache/cache.md) — `PreparedStatementCache` (LRU) - [Connection](./src/connection/connection.md) — connection helpers and singleton management - [Bun driver](./src/drivers/bun-driver.md) — low-level Bun SQLite driver - [WASM driver](./src/drivers/wasm-driver.md) — low-level WASM SQLite driver - [WASM worker](./src/drivers/wasm-worker.md) — Web Worker host for WASM driver - [Errors](./src/errors/errors.md) — `SqliteError`, `SQLITE_*` codes - [Migration](./src/migration/migration.md) — `MigrationRunner`, forward-only migration ledger - [OTel](./src/otel/otel.md) — span and metric instrumentation - [Schemas](./src/schemas/schemas.md) — Zod-validated config types - [Conformance](./src/conformance/conformance-suite.md) — shared `DatabaseAdapter` conformance suite - [Unsafe](./src/unsafe/unsafe.md) — `./unsafe` subpath for raw queries