abstract-chunk-store
A test suite and interface you can use to implement a chunk based storage backend
Install
npm install abstract-chunk-store
Some modules that use this
- memory-chunk-store
- fs-chunk-store
- immediate-chunk-store
- cache-chunk-store
- chunk-store-stream
- chunk-store-multi-get
- abstract-chunk-transport
- fd-chunk-store
- sparse-chunk-store
- ls-chunk-store
- deferred-chunk-store
- indexeddb-chunk-store
- idb-chunk-store
- idbkv-chunk-store
- cache-storage-chunk-store
Send a PR adding yours if you write a new one.
API
chunkStore = new ChunkStore(chunkLength)
Create a new chunk store. Chunks must have a length of chunkLength
.
chunkStore.put(index, chunkBuffer, [cb])
Add a new chunk to the storage. Index should be an integer.
chunkStore.get(index, [options], cb)
Retrieve a chunk stored. Index should be an integer. Options include:
{
offset: chunkByteOffset,
length: byteLength
}
If the index doesn't exist in the storage an error should be returned.
chunkStore.close([cb])
Close the underlying resource, e.g. if the store is backed by a file, this would close the file descriptor.
chunkStore.destroy([cb])
Destroy the file data, e.g. if the store is backed by a file, this would delete the file from the filesystem.
chunkStore.chunkLength
Expose the chunk length from the constructor so that code that receives a chunk store can know what size of chunks to write.
Test Suite
Publishing a test suite as a module lets multiple modules all ensure compatibility since they use the same test suite.
To use the test suite from this module you can require('abstract-chunk-store/tests')
.
An example of this can be found in the memory-chunk-store test suite.
To run the tests simply pass your test module (tap
or tape
or any other compatible
modules are supported) and your store's constructor (or a setup function) in:
var tests = require('abstract-chunk-store/tests')
tests(require('tape'), require('your-custom-chunk-store'))
Badge
If you make a new module that uses the abstract-chunk-store
API, include this badge in your readme!
[![abstract chunk store](https://cdn.rawgit.com/mafintosh/abstract-chunk-store/master/badge.svg)](https://github.com/mafintosh/abstract-chunk-store)
Background
An abstract chunk store is a binary data store that allows you to interact with individual chunks of a larger blob (a.k.a. binary file). A chunk can be thought of as a small partial blob that fits in memory.
Related:
License
MIT