OrbitDB Storage Adapter
A wrapper for abstract-leveldown compliant stores, used by OrbitDB
This is a tool that manages a persistent connection to an abstract-leveldown compliant store. The implementation tests indicate include examples for the following stores
leveldownmemdownlevel-jsjsondownmongodownsqldownfruitdownlocalstorage-downredisdownlocaldown
Help is wanted to support more stores!
OrbitDB uses it primarily with levelup (in node.js) and level-js (in the browser) and inside the orbit-db-keystore and orbit-db-cache packages.
Install
Leveldown is used as an example here, but you could install any abstract-leveldown complaint store.
npm install orbit-db-storage-adapter leveldownUsage
Usage is the same on the command line or in the browser. async/await used for brevity.
// Requirements
const leveldown = require('leveldown') // or any abstract-leveldown complaint store
const leveldownOptions = {}
const storage = require('orbit-db-storage-adapter')(leveldown, leveldownOptions)
const levelupOptions = {} // see below
store = await storage.createStore(location, levelupOptions) // These options passed to levelup instance
// ***
// Do stuff with the store here: get, put, delete, batch, etc
// **
await store.close()
await storage.destroy(store)Options
When setting everything up, you have the opportunity to pass two sets of options: one for the leveldown instantiation, and the other for the levelup instantiation.
Contributing
Pull requests and issues are welcome. Issues tagged with "Help Wanted" will have the most impact.
License
MIT © Haja Networks Oy

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
