Exploration of declarative programming with data models and graph theory using JavaScript, Node.js, and HTML5.
"Begin at the beginning," the King said very gravely. "and go on till you come to the end: then stop." - Lewis Carroll, Alice in Wonderland
See also: Mathematical Graph Theory
NEW DOCS for the v0.7.1 release: ARCcore.graph
This is a data modeling and algorithms library. It does not draw graphs in your browser!
Encapsule/jsgraph (aka ARCcore.graph) is a JavaScript library for storing and processing in-memory directed graph data sets inspired by Jeremy Siek's work on the Boost C++ Graph Library (BGL). The library is not a complete port of the BGL but does provide a very useful subset its functionality that is useful for building data-driven JavaScript applications.
Briefly, jsgraph library provides:
- DirectedGraph container class:
- Vertex and edge add, remove, enumerate, and existence testing. And, vertex and edge-associated property maps.
- JSON serialization and deserialization of the container.
- Algorithms:
- Directed graph transpose algorithm.
- Non-recursive visitor pattern implementation of breadth-first visit and search algorithms with edge classification.
- Non-recursive visitor pattern implementation of depth-first visit and search algorithm with edge classification.
Encapsule/jsgraph is a stand-alone JavaScript library that may be used directly in Node.js applications. Or in the browser via webpack.
The library is also distributed as part of the Encapsule/ARCcore package that contains a number of other libraries for modeling and processing complex in-memory data in JavaScript applications that some of you may find interesting and useful.
This library is used in production applications. And, in ridiculous derived science projects. So, the bar is pretty high for taking changes (particularly breaking changes). And, PR's need to come with tests! Exceptions made on a case-by-case basis for nice people and important projects with wide benefit.
v0.7.1 is a maintenance release
- Encapsule/jsgraph sources are now officially part of the Encapsule/ARCcore package.
- Travis CI updated for Node.js v6.10.x LTS and v7.9.0 current releases. Older builds dropped.
- Fixed a single test break caused by latest Node.js increasing verbosity of JSON parse error to include character position of failure.
- Documentation has been revised and is now available on the Encapsule Project website: ARCcore.graph.
v0.7 is a breaking API change and documentation release
- Added new method
DirectedGraph.stringify
- Changed method semantics of
DirectedGraph.toJSON
to return a serializable object instead of a JSON-encoded string. - Alias method
DirectedGraph.toObject
to callDirectedGraph.toJSON
. ThetoObject
method is now deprecated and will be removed in a future release. - Updated documentation:
- Per above breaking changes to the
DirectedGraph
serialization API. - Added additional information on set/get of
DirectedGraph
name and description properties.
- Per above breaking changes to the
v0.6 is a bug fix release that's API-compatible with v0.5
- DFT algorithm bug fixes impacting order and identity of client visitor callbacks.
- Better error handling on bad developer-supplied visitor interfaces.
- Better error handling for BFT/DFT algorithm empty start vector case.
- You can now set
name
anddescription
string properties on aDirectedGraph
:
v0.5 is a breaking upgrade for users of v0.4
- Stylistic changes are required to v0.4 clients to upgrade.
- No more exceptions. jsgraph now returns error/result response objects.
- Breadth-first * algorithms coalesced into
breadthFirstTraverse
. - Depth-first * algorithms coalesced into
depthFirstTraverse
. - Algorithms now support early terminate under client control.
- ~400 new tests added for v0.5 release.
- Documentation and example updates.
Copyright © 2014-2017 Christopher D. Russell