JSPM

hypertrie-multigraph

3.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 16
  • Score
    100M100P100Q59042F
  • License MIT

A simple directed multigraph built on Hypertrie

Package Exports

  • hypertrie-multigraph

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 (hypertrie-multigraph) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

hypertrie-multigraph

Build Status

A simple directed multigraph built on Hypertrie. Edges are stored in the Hypertrie using keys of the form label/from/to. Currently, the API exposes an iterator that performs a depth-first graph traversal.

Installation

npm i hypertrie-multigraph --save

Usage

const ram = require('random-access-memory')
const trie = require('hypertrie')
const Graph = require('hypertrie-multigraph')

const trie = hypertrie(ram)
const graph = new Graph(trie)

await graph.put('a', 'b', 'my-label')
await graph.put('b', 'c', 'my-label')
await graph.put('e', 'f', 'other-label')

// Returns the edges a -> b and b -> c
const ite = graph.iterator({ from: 'a', label: 'my-label' })

// Returns the edge a -> b
const ite = graph.iterator({ from: 'a', label: 'my-label', depth: 1 })

API

const graph = new HypertrieGraph(trie)

Creates a new graph that uses the trie for storage.

await graph.put(from, to, label, [cb])

Creates a labelled edge between from and to.

Returns a Promise, and can optionally be used with a callback.

await graph.del(from, to, label, [cb])

Delete an edge.

await graph.batch(ops, [cb])

Batch insert/delete many edges.

ops is an Array with entries of the form:

{
  type: 'put' | 'del',
  from: 'a',
  to: 'b',
  label: 'my-label
}

const ite = graph.iterator(opts)

Creates a depth-first graph iterator that accepts the following options:

{
  from: 'a'         // A starting node
  to: 'b'           // An ending node
  label: 'my-label' // Only iterate over edges with this label
  depth: 10         // Stop the iteration at a certain depth (defaults to infinity)
}

Omitting from or to while providing a label will return all edges with that label.

Iterator return values take the form { from, to }

License

MIT