This package provides an SQLite database engine compiled for the browser and bundled with sqlean
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
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
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.
Copyright 2023-2024 Anton Zhiyanov.
The software is available under the MIT License.
The package is provided as-is, and I don't currently plan to change anything except to update the SQLite version from time to time.