@derhuerst/level-tree
Store trees in a LevelDB.
Last updated 2 years ago by derhuerst .
ISC · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @derhuerst/level-tree 
SYNC missed versions from official npm registry.

level-tree

Store trees in a LevelDB.

npm version build status ISC-licensed chat on gitter support me on Patreon

Installing

npm install @derhuerst/level-tree

Usage

const levelTree = require('@derhuerst/level-tree')

const db = levelup(memdown)
const tree = levelTree(db)

tree.put('example', {
	a1: 'A1',
	a2: [
		'A2-0',
		{
			b1: 'A2-1-B1'
		}
	]
}, (err) => {
	if (err) return console.error(err)

	db.put('example.a2.0', 'a new value', (err) => {
		if (err) return console.error(err)

		tree.get('example', (err, example) => {
			if (err) return console.error(err)

			console.log(example)
		})
	})
})
{
	a1: 'A1',
	a2: [
		'a new value',
		{
			b1: 'A2-1-B1'
		}
	]
}

You can also load get, put & del separately:

const createGet = require('@derhuerst/level-tree/get')
const createPut = require('@derhuerst/level-tree/put')
const createDel = require('@derhuerst/level-tree/del')

const get = createGet(db)
const put = createPut(db)
const del = createDel(db)

patches

level-tree can apply JSON Patch diffs to the tree. Using the db from above:

const createPatch = require('@derhuerst/level-tree/patch')
const patch = createPatch(db)

patch('example', [
	{op: 'move', path: '/a3', from: '/a2/1'}
], (err) => {
	if (err) return console.error(err)

	tree.get('example', (err, example) => {
		if (err) return console.error(err)

		console.log(example)
	})
})
{
	a1: 'A1',
	a2: [
		'a new value'
	],
	a3: {
		b1: 'A2-1-B1'
	}
}

API

const tree = createTree(db)

db must be a levelup-compatible database.

tree.get(namespace, cb)

Will try to infer the tree from all keys starting with namespace.

tree.put(namespace, [dryRun], data, cb)

If dryRun is true, cb will be called with all ops to be executed. Otherwise, they will be executed.

tree.del(namespace, [dryRun], cb)

If dryRun is true, cb will be called with all ops to be executed. Otherwise, they will be executed.

If it fails to find any chilren under namespace, it will try to delete at namespace itself (the root so to say) as well.

Contributing

If you have a question or have difficulties using level-tree, please double-check your code and setup first. If you think you have found a bug or want to propose a feature, refer to the issues page.

Current Tags

  • 0.1.1                                ...           latest (2 years ago)

2 Versions

  • 0.1.1                                ...           2 years ago
  • 0.1.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (1)
Dev Dependencies (5)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |