Leveldown over IPFS
$ npm install ipfs-level --save
const 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 to
true` 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 use
This 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.