Skip to content

Browser-based SQLite with extensions

License

Notifications You must be signed in to change notification settings

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 withsqleanextensions. It's a drop-in replacement for the standardsqlite-wasmpackage.

Live Demo

Extensions

sqlean.jscontains 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:

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

It's also available as an ECMAScript module:

importsqlite3InitModulefrom"https://unpkg /@antonz/sqlean/dist/sqlean.mjs";

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

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

sqlean.wasmis used internally by thesqlean.jsscript, 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:

asyncfunctioninit(){
constsqlite3=awaitsqlite3InitModule({
print:console.log,
printErr:console.error,
});
constversion=sqlite3.capi.sqlite3_libversion();
console.log(`Loaded SQLite${version}`);
returnsqlite3;
}

Create and query a database:

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

init().then((sqlite3)=>{
constdb=newsqlite3.oo1.DB();
db.exec(SCHEMA);

constsql="select * from employees";
letrows=[];
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 theSQLite documentationfor details.

License

Copyright 2023-2024Anton Zhiyanov.

The software is available under the MIT License.

Stay tuned

Subscribeto stay on top of new features 🚀