graph-core

2.0.4 • Public • Published

graph-core

A core graph data structure: multiedged, directed and cyclic

API

class:Graph()

Create a new instance of a Graph.

Graph::setVertex(id, type, props={})

Set a vertex (create or update) with an id and a type.

g.setVertex('foo', 'Person', {name: 'Foo Bar', age: 23});

Graph::vertex(id)

Get a vertex by its id.

g.vertex('foo').name === 'Foo Bar';

Graph::hasVertex(id)

Check if a vertex exists by its id.

g.hasVertex('foo') === true;

Graph::removeVertex(id)

Remove a vertex by its id and all of its edges. Returns all of the discarded edges.

g.removeVertex('foo');

Graph::setEdge(origin, target, type, properties={})

Ensure an edge of type type from vertex origin to vertex target.

g.setEdge('foo', 'bar', 'friendOf');

Graph::edge(origin, target, type)

Get the type edge from origin to target if exists, null otherwise.

g.edge('foo', 'bar', 'friendOf').type === 'friends';
g.edge('foo', 'bar', 'father') === null;

Graph::hasEdge(origin, target, type)

Check if a type edge from origin to target exists.

g.hasEdge('foo', 'bar', 'friendOf') === true;

Graph::removeEdge(origin, target, type)

Remove a type edge from origin to target.

g.removeEdge('foo', 'bar', 'friendOf');

Graph::inEdges(target), Graph::outEdges(origin), Graph::interEdges(origin, target), Graph::allEdges(vertexId)

Get all edges to target, all edges from origin, all edges from origin to target, all edges involving vertexId - respectively.

Graph::vertices(type?)

An iterator over all the graph's vertices.

Graph::toObject(), Graph.fromObject(bareObject)

Serialize and de-serialize the graph

Usage

'use strict';

const Graph = require('graph-core');
const g = new Graph();

g.setVertex('foo', 'Person', {name: 'Foo Bar', age: 23});
g.setVertex('bar', 'Person', {name: 'Bar Bar', age: 22});
g.setEdge('foo', 'bar', 'friendOf');
g.outEdges('foo')
 .filter(({type}) => type === 'friendsOf')
 .map(({target}) => g.vertex(target).age); // [22]

Readme

Keywords

Package Sidebar

Install

npm i graph-core

Weekly Downloads

0

Version

2.0.4

License

MIT

Unpacked Size

13.1 kB

Total Files

6

Last publish

Collaborators

  • oakfang