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
.
const RAI = require('random-access-idb')
const random = RAI.storage('dbname') // or, new RAI('cool.txt', { dbname: '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
})
})
const RAI = require('random-access-idb')
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
dbname: String, // name of the idb instance that backs RAI instances, default: "random-access-idb"
version: Number, // version of idb instance, default: 1
name: String, // name of the RAI instance to open, throws if none passed
}
You must keep opts.size
the same after you've written data.
If you change the size, bad things will happen.
Read length
bytes at an offset
from file
as cb(err, buf)
.
Write buf
to file
at an offset
.
Delete the specified amount of bytes at the specified offset. Optionally pass a callback that is called with (err) when the delete has completed.
Truncate the storage at the specified offset. Optionally pass a callback that is called with (err) when the truncate has completed.
Stat the storage, returns an object to callback including:
{
size: Number, // total number of bytes in storage across all pages
blksize: Number, // individual page size
blocks: Number // sum of all pages byteLength divided by logical byte size (512 bytes)
}
Explicitly open the storage. If you do not call this yourself, it will automatically called before any read/write/del/stat operation.
Close the storage instance.
npm install random-access-idb
BSD