scuttleup-blacklist

3.4.3 • Public • Published

scuttleup-blacklist

Scuttlebutt like eventual consistent log replication for levelup that allows blacklisting.

npm install --save scuttleup-blacklist

build status AppVeyor Build Status

Usage

var scuttleupBlacklist = require('scuttleup-blacklist')
 
var log = scuttleupBlacklist(db) // db is a levelup instance
 
var changes = log.createReadStream({
  live: true
})
 
changes.on('data', function(data) {
  console.log(data) // print out the log - data.entry will be 'hello world'
})
 
log.append('hello world') // add something to the log

Replication

To replicate two logs pipe their replication stream together using the scuttlebutt protocol

var repl1 = log1.createReplicationStream()
var repl2 = log2.createReplicationStream()
 
// the two logs will now replicate to each other
repl1.pipe(repl2).pipe(repl1)

Blacklisting

var fraudsta = scuttleupBlacklist(db1)
var alman = scuttleupBlacklist(db2)
 
var fraudr = fraudsta.createReplicationStream()
var almar = alman.createReplicationStream()
 
fraudsta.append('some juju', function(err, data) {
  if (err) return console.error(err)
  alman.blacklist(data.peer, data.seq, function(err) {
    if (err) return console.error(err)
    fraudr.pipe(almar).pipe(fraudr)
    // fraudsta's juju will not be piped into alman's levelup
  })
})
 

API

var log = scuttleupBlacklist(db, [opts])

Create a log new instance. Options can include

{
  id: 'a-globally-unique-peer-id',
  valueEncoding: 'utf-8' // encoding of log entries
}

log.append(entry, [callback])

Add a new entry to the log

log.entry(peer, seq, [options], callback)

Retrieve a entry from the log from a given peer and seq

var ws = log.createAppendStream()

.append as a stream

var repl = log.createReplicationStream(opts)

Create a log replication stream. Pipe this to the replication stream of another log. Replication is eventual consistent and works using the scuttlebutt protocol

Options can include

{
  live: false, // disable live replication. defaults to true
  mode: 'sync' | 'push' | 'pull' // set replication mode. defaults to sync
}

var rs = log.createReadStream(opts)

Create a log read stream. Options can include

{
  live: false, // continiously read the changes,
  tail: false, // only read new changes
}

var ws = log.createWriteStream()

Create a log write stream

log.blacklist(peer, seq[, callback])

Blacklist specific logs from being written into your levelup instance.

log.whitelist(peer, seq[, callback])

Remove a specific log from your blacklist.

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i scuttleup-blacklist

Weekly Downloads

0

Version

3.4.3

License

MIT

Last publish

Collaborators

  • chiefbiiko