CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-sqlite

SQLite client for Node.js applications with SQL-based migrations API written in TypeScript

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

SQLite

SQLite is a TypeScript library that provides a promise-based wrapper around the sqlite3 package with zero dependencies. It adds ES6 promises and a comprehensive migrations API to sqlite3, enabling modern async/await patterns for SQLite database operations in Node.js applications.

Package Information

  • Package Name: sqlite
  • Package Type: npm
  • Language: TypeScript
  • Installation: npm install sqlite sqlite3 (sqlite3 is a required peer dependency)

Core Imports

import { open, Database, Statement, ISqlite, IMigrate } from "sqlite";
import sqlite3 from "sqlite3";

For CommonJS:

const { open, Database, Statement, ISqlite, IMigrate } = require("sqlite");
const sqlite3 = require("sqlite3");

For ESM (modern modules):

import { open, Database, Statement, ISqlite, IMigrate } from "sqlite";
import sqlite3 from "sqlite3";

Basic Usage

import { open } from "sqlite";
import sqlite3 from "sqlite3";

// Open database
const db = await open({
  filename: "./database.db",
  driver: sqlite3.Database
});

// Create and populate table
await db.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)");
await db.run("INSERT INTO users (name, email) VALUES (?, ?)", "Alice", "alice@example.com");

// Query data
const user = await db.get("SELECT * FROM users WHERE name = ?", "Alice");
const allUsers = await db.all("SELECT * FROM users");

// Run migrations
await db.migrate({
  migrationsPath: "./migrations"
});

// Close database
await db.close();

Architecture

SQLite is built around several key components:

  • Database Class: Main promisified wrapper providing async methods for all database operations
  • Statement Class: Prepared statement wrapper for reusable parameterized queries
  • Migration System: SQL-based migration framework with up/down migration support
  • Type System: Complete TypeScript integration with generic type support for query results
  • Driver Abstraction: Support for multiple sqlite3-compatible drivers including caching

Capabilities

Database Opening

Core functionality for opening and configuring SQLite database connections with support for multiple drivers and caching.

function open<
  Driver extends sqlite3.Database = sqlite3.Database,
  Stmt extends sqlite3.Statement = sqlite3.Statement
>(config: ISqlite.Config): Promise<Database<Driver, Stmt>>;

interface Config {
  filename: string;
  mode?: number;
  driver: any;
}

Database Operations

Prepared Statements

Prepared statement functionality for efficient reusable queries with parameter binding and result processing.

class Statement<S extends sqlite3.Statement = sqlite3.Statement> {
  bind(...params: any[]): Promise<void>;
  run(...params: any[]): Promise<ISqlite.RunResult>;
  get<T>(...params: any[]): Promise<T | undefined>;
  all<T>(...params: any[]): Promise<T>;
  reset(): Promise<void>;
  finalize(): Promise<void>;
}

Statement Operations

Database Migrations

SQL-based migration system supporting up/down migrations, rollback functionality, and migration state management.

interface MigrationParams {
  force?: boolean;
  table?: string;
  migrationsPath?: string;
  migrations?: readonly MigrationData[];
}

// Available on Database instance
migrate(config?: MigrationParams): Promise<void>;

Migrations

Core Types

interface RunResult<Stmt extends sqlite3.Statement = sqlite3.Statement> {
  stmt: Statement<Stmt>;
  lastID?: number;
  changes?: number;
}

type SqlType = SQLStatement | string;

interface SQLStatement {
  sql: string;
  values?: any[];
}

Type Definitions

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/sqlite@5.1.x
Publish Source
CLI
Badge
tessl/npm-sqlite badge