or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

database-operations.mdindex.mdmigrations.mdstatement-operations.mdtypes.md
tile.json

tessl/npm-sqlite

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

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/sqlite@5.1.x

To install, run

npx @tessl/cli install tessl/npm-sqlite@5.1.0

index.mddocs/

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