ipfs-level

1.2.2 • Public • Published

ipfs-level

Leveldown over IPFS

made by Protocol Labs Freenode

Build Status

Install

$ npm install ipfs-level --save

Import

const IPFSLevel = require('ipfs-level')

API

IPFSLevel(partition, options)

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.

Default arguments

You can create a constructor that curries some default arguments by using IPFSLevel.defaults(options) like this:

const ipfsLevel = IPFSLevel.defaults({
  log: someLevelDownLogDatabase
})

Events

An IPFSLevel instance emits the following events

emit("started")

When started.

emit("change", change)

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 change
  • value (any): the new value for the mentioned key

emit("new head", cid)

Whenever the log has a new head. The payload, cid is a content identifier (internal to IPFS)

With Levelup

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('levleup')
const Memdown = require('memdown') // any leveldown db will do for caching log entries
const 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

Test and debug

This package uses debug, so you can activate debug messages by setting the environment variable DEBUG to ipfs-level:*

License

MIT

Contribute

Feel free to join in. All welcome. Open an issue!

This repository falls under the IPFS Code of Conduct.

License

MIT

Dependencies (8)

Dev Dependencies (9)

Package Sidebar

Install

npm i ipfs-level

Weekly Downloads

7

Version

1.2.2

License

MIT

Last publish

Collaborators

  • pgte