JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q15116F
  • License MIT

forking graph of cascading namespaces

Package Exports

  • level-forks

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (level-forks) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

level-forks

create a forking graph of cascading leveldb namespaces

example

var collect = require('collect-stream');
var Forks = require('level-forks');
var level = require('level');
var forks = Forks(level('./db'));

var docs = [
  {
    id: 'A',
    prev: null,
    batch: [
      { type: 'put', key: 'a', value: 100 },
      { type: 'put', key: 'b', value: 200 },
      { type: 'put', key: 'c', value: 300 }
    ]
  },
  {
    id: 'B',
    prev: 'A',
    batch: [
      { type: 'put', key: 'a', value: 123 },
      { type: 'put', key: 'd', value: 400 },
      { type: 'del', key: 'c' },
    ]
  },
  {
    id: 'C',
    prev: 'B',
    batch: [
      { type: 'put', key: 'c', value: 333 }
    ]
  },
  {
    id: 'D',
    prev: 'B',
    batch: [
      { type: 'put', key: 'e', value: 555 }
    ]
  }
];

var pending = docs.length;
docs.forEach(function (doc) {
  var c = forks.create(doc.id, doc.prev, { valueEncoding: 'json' });
  c.batch(doc.batch, function (err) {
    if (err) console.error(err);
    if (--pending === 0) ready();
  });
});

function ready () {
  forks.open('C').createReadStream().on('data', console.log);
}

output:

{ key: 'a', value: '123' }
{ key: 'b', value: '200' }
{ key: 'c', value: '333' }
{ key: 'd', value: '400' }

api

var Forks = require('level-forks')

var forks = Forks(db, opts)

Create a new instance forks from a levelup or leveldown handle db.

Options from opts are passed to levelup so you can set things like opts.valueEncoding and opts.keyEncoding.

var db = forks.create(key, prev=[], opts={}, cb)

Create a new db identified by key that link back to the keys in prev, if any.

db is a levelup handle that represents the database at key in the graph.

When the links are written, cb(err, db) fires with any errors err or the database handle db.

Set encodings with opts.valueEncoding or opts.keyEncoding or:

  • opts.prebatch(function (rows, cb) {}) - intercept batches, calling cb(err, rows) with rows to insert on a batch

var db = forks.open(key, opts)

Open an existing levelup handle by its key.

Set encodings with opts.valueEncoding or opts.keyEncoding or:

  • opts.prebatch(function (rows, cb) {}) - intercept batches, calling cb(err, rows) with rows to insert on a batch

install

npm install level-forks

license

MIT