Leveldown over IPFS
$ npm install ipfs-level --saveconst IPFSLevel = require('ipfs-level')Returns a new IPFSLevel instance. This object obeys the LevelDown interface.
Arguments:
options(object, defaults to this): with the following keys:ipfsOptions(object). IPFS options object.log(LevelDown-compatible database that stores the log)ipfs(IPFS object): an IPFS object instance. If you already can provide an IPFS object, pass it in here.retainLog(boolean, defaults to false): whether or not the log should be retained. Besides wasting storage space, setting this option totrue` provides no direct benefit, except if you want to somehow explore the log database.
You can create a constructor that curries some default arguments by using IPFSLevel.defaults(options) like this:
const ipfsLevel = IPFSLevel.defaults({
log: someLevelDownLogDatabase
})An IPFSLevel instance emits the following events
When started.
Emitted whenever there is a change in the database. The event payload is a change object, which has the following properties:
type(string: "put" or "del")key(string): the key affected by this changevalue(any): the new value for the mentioned key
Whenever the log has a new head. The payload, cid is a content identifier (internal to IPFS)
This default options feature may be useful if you want to pass a constructor into which you'll have no saying about the options, like on the Levelup constructor:
const LevelUp = require('levelup')
const Memdown = require('memdown') // any leveldown db will do for caching log entries
const IPFSLevel = require('ipfs-level').defaults({
log: Memdown('some-partition-name') // log database should be scoped to partition
})
const db = LevelUp({ db: IPFSLevel })
// now you have a levelup db you can useThis package uses debug, so you can activate debug messages by setting the environment variable DEBUG to ipfs-level:*
MIT
Feel free to join in. All welcome. Open an issue!
This repository falls under the IPFS Code of Conduct.
