npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

Iโ€™ve always been into building performant and accessible sites, but lately Iโ€™ve been taking it extremely seriously. So much so that Iโ€™ve been building a tool to help me optimize and monitor the sites that I build to make sure that Iโ€™m making an attempt to offer the best experience to those who visit them. If youโ€™re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, ๐Ÿ‘‹, Iโ€™m Ryan Hefnerย  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If youโ€™re interested in other things Iโ€™m working on, follow me on Twitter or check out the open source projects Iโ€™ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soonโ€“ish.

Open Software & Tools

This site wouldnโ€™t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you ๐Ÿ™

ยฉ 2026 โ€“ย Pkg Stats / Ryan Hefner

puddysql

v1.0.0-beta-4

Published

๐Ÿฎ Powerful SQL toolkit for Node.js, built with flexibility and structure in mind. Easily manage SQLite3/PostgreSQL, advanced queries, smart tag systems, and full JSON-friendly filters.

Readme

๐Ÿฎ PuddySQL

PuddySQL is a modular and extensible SQL toolkit for Node.js โ€” designed to make dynamic queries, filters, pagination, and tag-based searches easy, safe, and powerful.

Built with composability in mind, each part of PuddySQL focuses on one job while integrating smoothly with the others. Whether you're working with SQLite or PostgreSQL, this package helps you build robust, readable, and scalable query logic.


๐Ÿ“ฆ Installation

npm install puddysql

๐Ÿงฑ Main Features

  • โœ… Safe, composable SQL queries with named methods
  • ๐Ÿ” Powerful nested filters using JSON logic (AND/OR, operators, etc.)
  • ๐Ÿท๏ธ Built-in tag filtering engine for JSON/array-based fields
  • ๐Ÿ”— Dynamic JOIN builder with alias support
  • ๐Ÿ“ƒ Smart pagination with automatic counters
  • ๐Ÿงช Strong input validation and type safety

๐Ÿ“š Documentation

For API reference, check each moduleโ€™s own documentation:

๐Ÿ‘‰ See: docs/README.md


๐Ÿ”ง Module Overview

| Module | Description | | ------------------ | ------------------------------------------- | | PuddySqlEngine | Low-level query runner with DB abstraction | | PuddySqlInstance | Manages databases and table bindings | | PuddySqlQuery | High-level querying with filters and joins | | PuddySqlTags | Parses tag filters into safe SQL conditions |


๐Ÿงช Requirements

  • Node.js 18+ recommended

  • Works with:

    • โœ… SQLite3
    • โœ… PostgreSQL (via pg adapter)

๐Ÿงญ Modules Menu

The PuddySql class is the main access point to all core features of the library. You should not instantiate it directly โ€” instead, use PuddySql.Instance.

Here's a quick overview of what's available:

| ๐Ÿ“ฆ Static Property | ๐Ÿ” Description | | ------------------- | --------------------------------------------------------------------------- | | PuddySql.Instance | ๐ŸŽฎ Main SQL client class for managing databases (PostgreSQL or SQLite3) | | PuddySql.Query | ๐Ÿง  Query builder and smart search engine with advanced filtering | | PuddySql.Tags | ๐Ÿท๏ธ Flexible tag system parser (with support for JSON arrays, boosts, etc.) | | PuddySql.Events | ๐ŸŽฏ Event manager to attach lifecycle hooks to query logic | | PuddySql.Utils | ๐Ÿ› ๏ธ Useful utilities (object flattening, merge helpers, SQL formatters) | | PuddySql.pg | ๐Ÿ˜ PostgreSQL database engine (pg wrapper) | | PuddySql.sqlite3 | ๐Ÿ“€ SQLite3 engine for local/in-memory usage (sqlite3 wrapper) |


๐Ÿš€ Quick Example

Hereโ€™s how to get started using PuddySQL:

import path from 'path';
import { fileURLToPath } from 'url';
import PuddySql from 'puddysql';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// ๐ŸŽฎ Create a new SQL instance
const db = new PuddySql.Instance();

// ๐Ÿ“ก Run queries
(async () => {
  await db.initSqlite3();

  // Insert a new user
  const table = await db.initTable({ name: 'tinytest', id: 'id' }, [
      ['id', 'TEXT', 'PRIMARY KEY'],
      ['prompt', 'TEXT'],
      ['yay', 'BOOLEAN']
  ]);

  console.log('Set');
  console.log(await table.set('1', { prompt: 'pudding', yay: true }));
  console.log(await table.set('2', { prompt: 'cookie', yay: true }));
  console.log(await table.set('3', { prompt: 'brigadeiro', yay: true }));
  console.log(await table.set('4', { prompt: 'banana', yay: false }));
  console.log(await table.set('5', { prompt: 'chocolate', yay: true }));

  console.log('Get All');
  console.log(await table.getAll());

  // Find a user by ID
  console.log('Get');
  const user = await table.get(1);
  console.log(user); // โ†’ { id: 1, prompt: 'pudding', yay: true }

  // Get a paginated list
  console.log('Search');
  const data1 = await db.getTable('tinytest').search({
      q: {
        group: 'AND',
        conditions: [{ column: 'prompt', value: 'pudding' }],
      },
    });

  const data2 = await table.search({
      q: {
          group: 'OR',
          conditions: [
            { column: 'prompt', value: 'pudding' },
            { column: 'yay', value: false },
          ],
      },
    });

  console.log(data1); 
  console.log(data2); 
})();

๐Ÿค Contributions

Feel free to fork, contribute, and create pull requests for improvements! Whether it's a bug fix or an additional feature, contributions are always welcome.

๐Ÿ“ License

This project is licensed under the GPL-3.0 License - see the LICENSE file for details.

๐Ÿง  Note: This documentation was written by ChatGPT, an AI assistant developed by OpenAI, based on the project structure and descriptions provided by the repository author.
If you find any inaccuracies or need improvements, feel free to contribute or open an issue!


๐Ÿ”™ Back to Tiny Essentials

Did you like this module? Itโ€™s part of the Tiny Essentials collection โ€” a set of minimal yet powerful tools to make development easier. ๐Ÿ‘‰ Click here to explore more Tiny Essentials modules