JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 440
  • Score
    100M100P100Q108261F
  • License MIT

Runtime-agnostic TypeScript SQL toolkit for Bun, Node.js, and Deno with typed schemas, dialect-aware builders, engine adapters, migrations, and batch inserts.

Package Exports

  • @coderbuzz/sql
  • @coderbuzz/sql/ansi
  • @coderbuzz/sql/clickhouse
  • @coderbuzz/sql/clickhouse-types
  • @coderbuzz/sql/databricks
  • @coderbuzz/sql/databricks-types
  • @coderbuzz/sql/mssql
  • @coderbuzz/sql/mssql-types
  • @coderbuzz/sql/mysql
  • @coderbuzz/sql/mysql-types
  • @coderbuzz/sql/oracle
  • @coderbuzz/sql/oracle-types
  • @coderbuzz/sql/postgres
  • @coderbuzz/sql/postgres-types
  • @coderbuzz/sql/snowflake
  • @coderbuzz/sql/snowflake-types
  • @coderbuzz/sql/sqlite
  • @coderbuzz/sql/sqlite-types

Readme

@coderbuzz/sql

The un-opinionated SQL toolkit for TypeScript. Schema-driven, multi-dialect, runtime agnostic — no ORM lock-in.

8 databases — SQLite, PostgreSQL, MySQL, MSSQL, ClickHouse, Oracle, Snowflake, Databricks. One API. Full type safety.

Why @coderbuzz/sql?

  • 8 dialects vs Drizzle/Kysely's 5–6 — includes ClickHouse, Snowflake, Databricks
  • No ORM magic — you write SQL with type-safe builders, tagged templates, and full dialect awareness
  • Built-in batcher — debounce, timeout, backpressure for high-throughput inserts
  • Schema migration utilities — introspect live DBs, diff schemas, generate ALTER TABLE — no CLI
  • Middleware pipelinedb.use() for logging, tracing, safety guards
  • <30 KB gzip — tree-shakeable, zero runtime overhead vs hand-written SQL

Installation

npm install @coderbuzz/sql

Plus a driver for your database (pg, mysql2, mssql, better-sqlite3, oracledb, snowflake-sdk, @databricks/sql). SQLite on Bun is built-in.

Quick Start

import { sqlite } from "@coderbuzz/sql/sqlite";

const db = sqlite.connect({ path: ":memory:" });

const users = sqlite.table("users", {
  id: sqlite.integer().primaryKey(),
  email: sqlite.text().notNull().unique(),
  name: sqlite.text().notNull(),
});

await db.migrate(users);

const rows = await users.from(db)
  .fields("id", "email", "name")
  .where(sqlite.eq("active", true))
  .order_by("id DESC")
  .limit(10)
  .execute();

db.close();

Documentation

Full API reference, dialect guides, and migration utilities: DOCS.md

License

MIT © 2026 Indra Gunawan