1.0.1 • Published 3 years ago
lildata v1.0.1
Lil Data
When you need the opposite of big data.
What
A small, loosly persisted javascript Map
. Since everything is fitted in a JS
object, your data should be small, few megabytes at most. All writes are async
and flushed every 250ms
, loosing data in that time frame must be acceptable or
use something else.
Why
Because sometimes you just want to save the state of your app and even pulling sqlite would be overkill.
- Little overhead on js native
Map
so it's fairly fast - Simple
This solution fit in
100
lines of code.
How
Usage:
// init the table
// will use the name of the file +.json if import.meta is used
const users = persist(import.meta, { primary: 'id' }) // optional
const users = persist('/path/to/some/file')
// adding data, objects only with the primary key
users.put({
id: 1,
name: 'Chris',
birthDate: '1988-05-11',
})
// removing data
users.del(1)
users.del({ id: 1 }) // or
// wait for next batch write
await users.sync()
// get by primary key
const chris = user.get(1)
// query data
const chris = users.find(user => user.name === 'Chris')
// query multiple elements
const users.filter(user => user.birthDate.startsWith('1988'))
// synchronous cleanup the data file (destroy changes history)
users.vacum()