sleepfile

Sleep files for Node.js

Usage no npm install needed!

<script type="module">
  import sleepfile from 'https://cdn.skypack.dev/sleepfile';
</script>

README

sleepfile

Sleep files for Node.js

npm install sleepfile

Usage

const Sleepfile = require('sleepfile')
const ram = require('random-access-memory')

const file = new Sleepfile(ram())

file.put(42, Buffer.alloc(42), function (err) {
  console.log('Inserted an entry at index 42')
  file.get(42, function (err, buf) {
    console.log('Read it out again')
  })
})

API

file = new Sleepfile(storage, [options])

Create a new sleep file. Storage should be a random-access-storage instance.

Options include

{
  magicBytes: 0x00000000, // set a magic bytes header of the file
  valueSize: 42, // explicitly set the valueSize (infered on first put otherwise)
  valueEncoding: encoding, // optionally set an abstract-encoding for the values
  name: 'algo', // optionally set the algorithm name in the header
  overwrite: false // reset the file content
}

file.put(index, value, [callback])

Insert a value at an index.

file.putBatch(offset, values, [callback])

Insert an array of values starting at offset.

file.get(index, callback)

Get the value at index.

file.getBatch(offset, length, [callback])

Get an array of values starting at offset.

file.stat(callback)

Get metadata about the sleepfile itself. Returned object looks like this:

{
  magicBytes: 0x00000000, // the magic bytes stored
  version: 0, // sleep version
  valueSize: 42,
  name: 'algo name',
  length: 42, // how many values are there maximum
  density: 0.60 // how much of the underlying storage are actually in use
}

file.head(callback)

Get the value out with the highest index, i.e. stat.length - 1. If the file is empty null is returned.

License

MIT