stochastic-access-idb
v2.0.6
Published
[random-access][1]-compatible indexedDB storage layer
Downloads
14
Maintainers
Readme
stochastic-access-idb
random-access-compatible indexedDB storage layer
NB: This version is a fork of @substack's original random-access-idb that implements random-access-storage abstraction. It helps normalizing every random access instances and eases rai usage in modules like random-access-network.
Implements every random-access-storage method except unlink
and suspend
.
example
const SAI = require('stochastic-access-idb')
const random = SAI('dbname')
const cool = random('cool.txt')
cool.write(100, Buffer.from('GREETINGS'), function (err) {
if (err) return console.error(err)
cool.read(104, 3, function (err, buf) {
if (err) return console.error(err)
console.log(buf.toString()) // TIN
})
})
api
const SAI = require('stochastic-access-idb')
var db = SAI(dbname, opts)(name)
Open an indexedDB database at dbname
.
Any opts
provided are forwarded to db(name, opts)
as default options.
Create a handle file
from name
and opts
. Options include:
{
size: Number, // internal page size in bytes, default: 4096
}
You must keep opts.size
the same after you've written data.
If you change the size, bad things will happen.
file.read(offset, length, cb)
Read length
bytes at an offset
from file
as cb(err, buf)
.
file.write(offset, buf, cb)
Write buf
to file
at an offset
.
file.del(offset, size, [cb])
Delete the specified amount of bytes at the specified offset. Optionally pass a callback that is called with (err) when the delete has completed.
file.truncate(offset, [cb])
Truncate the storage at the specified offset. Optionally pass a callback that is called with (err) when the truncate has completed.
file.stat(cb)
Stat the storage, returns an object to callback including:
{
size: Number, // total number of bytes in storage across all pages
}
file.open([cb])
Explicitly open the storage. If you do not call this yourself, it will automatically called before any read/write/del/stat operation.
file.close([cb])
Close the storage instance.
install
npm install stochastic-access-idb
license
BSD