Skip to content

nalgeon/sqlean.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 

Repository files navigation

sqlean.js

This package provides an SQLite database engine compiled for the browser and bundled with sqlean extensions. It's a drop-in replacement for the standard sqlite-wasm package.

Live Demo

Extensions

sqlean.js contains 9 essential SQLite extensions:

  • crypto: Hashing, encoding and decoding data
  • define: User-defined functions and dynamic SQL
  • fuzzy: Fuzzy string matching and phonetics
  • ipaddr: IP address manipulation
  • math: Math functions
  • regexp: Regular expressions
  • stats: Math statistics
  • text: String functions
  • uuid: Universally Unique IDentifiers

Installation

You'll need the SQLite JavaScript API. Include it from CDN or (better) download and host locally:

<script src="https://unpkg.com/@antonz/sqlean/dist/sqlean.js"></script>

It's also available as an ECMAScript module:

import sqlite3InitModule from "https://unpkg.com/@antonz/sqlean/dist/sqlean.mjs";

You'll also need to download and serve an SQLite WASM file if you're hosting locally:

https://unpkg.com/@antonz/sqlean/dist/sqlean.wasm

sqlean.wasm is used internally by the sqlean.js script, so place them in the same folder.

I suggest you host both files locally because they weigh ≈1.5Mb, and CDNs tend to be quite slow with such large files.

You can install them using npm:

npm install @antonz/sqlean

Usage

Initialize SQLite:

async function init() {
    const sqlite3 = await sqlite3InitModule({
        print: console.log,
        printErr: console.error,
    });
    const version = sqlite3.capi.sqlite3_libversion();
    console.log(`Loaded SQLite ${version}`);
    return sqlite3;
}

Create and query a database:

const SCHEMA = `
create table employees(id, name, salary);
insert into employees values
(1, 'Alice', 120),
(2, 'Bob', 100),
(3, 'Cindy', 80);
`;

init().then((sqlite3) => {
    const db = new sqlite3.oo1.DB();
    db.exec(SCHEMA);

    const sql = "select * from employees";
    let rows = [];
    db.exec({
        sql,
        rowMode: "object",
        resultRows: rows,
    });

    console.log(rows);
});

Which prints the following:

[
    {
        "id": 1,
        "name": "Alice",
        "salary": 120
    },
    {
        "id": 2,
        "name": "Bob",
        "salary": 100
    },
    {
        "id": 3,
        "name": "Cindy",
        "salary": 80
    }
]

See the SQLite documentation for details.

License

Copyright 2023-2024 Anton Zhiyanov.

The software is available under the MIT License.

Stay tuned

Subscribe to stay on top of new features 🚀