Socket
Book a DemoInstallSign in
Socket

waddler

Package Overview
Dependencies
Maintainers
4
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

waddler

Website • Documentation • Twitter • by [Drizzle Team](https://drizzle.team)

latest
Source
npmnpm
Version
0.1.1
Version published
Weekly downloads
372
-27.49%
Maintainers
4
Weekly downloads
 
Created
Source

Waddler 🦆

WebsiteDocumentationTwitter • by Drizzle Team

Waddler - is a thin SQL client wrapper with modern API inspired by postgresjs and based on ES6 Tagged Template Strings.

You don't need to learn an api for db clients; just use the sql template tag for everything

Waddler is our vision of a modern, all-in-one client for any database dialect. It doesn't perform any specific mappings to or from a database, doesn't handle complex query building, and doesn't parse queries. Waddler simply unifies communication with your database using any client you choose - whether it's a simple TCP connection or an HTTP-based DB client.

We support all the dialects and drivers that Drizzle supports

You can check a full list of clients you can use - here

import { waddler } from "waddler/node-postgres";
import { waddler } from "waddler/mysql2";
import { waddler } from "waddler/libsql";

const sql = waddler({ dbUrl: process.env.DB_URL });
const sql = waddler();

// promisified SQL template API
const result = await sql`select * from users`;

// Easy to use values param
const values = sql.values([["Dan", "dan@acme.com", 25]]);
await sql`insert into "users" ("name", "email", "age") values ${values}`;
// insert into "users" ("name", "email", "age") values ('Dan', 'dan@acme.com', 25);

// no SQL injections
await sql`select * from users where id = ${10}`; // <-- converts to $1 and [10] params
  
// waddler supports types
await sql<{ id: number, name: string }>`select * from users`;

// streaming and chunking
const stream = sql`select * from users`.stream();
for await (const row of stream) {
  console.log(row);
}

const chunked = sql`select * from users`.chunked(2);
for await (const chunk of chunked) {
  console.log(chunk);
}

You can enable logger with all the metadata coming from drivers

import { Logger } from 'waddler';
import { waddler } from 'waddler/...'; // driver specific
class MyLogger implements Logger {
  logQuery(query: string, params: unknown[], metadata?: any): void {
    // metadata will contain all the extra fields coming from the specific db driver
    console.log({ query, params, metadata });
  }
}
const db = waddler({ logger: new MyLogger() });

For more information you can check the docs

FAQs

Package last updated on 13 Aug 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts