SQLite client for Node.js applications with SQL-based migrations API written in TypeScript
npx @tessl/cli install tessl/npm-sqlite@5.1.0SQLite 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.
npm install sqlite sqlite3 (sqlite3 is a required peer dependency)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";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();SQLite is built around several key components:
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;
}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>;
}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>;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[];
}