lek-sessions-storage-sqlite-bun
v1.0.0
Published
Persistent SQLite storage for lek-sessions using bun:sqlite
Maintainers
Readme
lek-sessions-storage-sqlite-bun
Persistent SQLite storage for lek-sessions using Bun's built-in bun:sqlite.
Keeps sessions across restarts. No external dependencies — Bun ships its own SQLite.
Install
npm i lek-sessions-storage-sqlite-bunUsage
const LekSessions = require("lek-sessions");
const SqliteStorage = require("lek-sessions-storage-sqlite-bun");
const storage = new SqliteStorage("./sessions.db");
const lek = new LekSessions("your-secret-key", { storage });
// Create session — stored in SQLite
const { access_token, refresh_token } = await lek.create("user-1", {
metadata: { role: "admin" }
});
// Confirm — reads from SQLite
const result = await lek.confirm(access_token);
// → { success: true, id_subject: "user-1", metadata: { role: "admin" } }
// Refresh — updates keys in SQLite
const refreshed = await lek.refresh(refresh_token);
// Revoke — deletes or marks session
await lek.revoke(access_token);
// Close — cleanup timer + DB connection
await lek.close();Options
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| delete_on_revoke | boolean | true | When true, revoking a session deletes its row. When false, sets revoked=1 instead. |
| auto_clean_up | boolean | true | Periodically removes expired and revoked sessions from the database. |
| clean_up_interval | number | 3600000 | Milliseconds between clean-up runs (default: 1 hour). Only used if auto_clean_up is true. |
Example with options
const storage = new SqliteStorage("./sessions.db", {
delete_on_revoke: false, // keep revoked sessions (marked as revoked)
auto_clean_up: true,
clean_up_interval: 60000 // clean every minute
});How it works
- Uses
bun:sqlitewith WAL mode for concurrency. - The
sessionstable stores session data as BLOBs (id, keys) and TEXT (dates, metadata, subject). auto_clean_upspawns asetIntervalthat deletes sessions whererevoked=1or both tokens expired.- Call
close()to clear the interval and close the database cleanly.
License
ISC
