v2.2.0
Minor Changes
-
#32
3baa78cThanks @davidkpiano! - Add lazy, multi-source, directional, radius-limited postorder traversal. Keep
active traversal structure stable across graph mutations and reject non-finite
A-star heuristic values. -
e4a800eThanks @davidkpiano! - Add immutable counterparts for graph CRUD, patch application, and layout geometry updates. These helpers return updated graph copies while leaving their input graphs untouched. -
7b5ac38Thanks @davidkpiano! - Add graph-generic path-set and coverage utilities: path inspection and
containment, coverage targets and coverage-preserving reduction, edge-covering
path planning, ordered shortest simple paths, Eulerian paths/circuits, and line
graph construction. -
#31
0bd1016Thanks @davidkpiano! - Add multi-source, directional, radius-limited BFS and DFS; induced neighborhood subgraphs; and graph union, intersection, difference, symmetric difference, disjoint union, and complement operations. -
97622b1Thanks @davidkpiano! - New algorithms, public kernel, cancellation, and format fidelity:- New algorithms:
isPlanar(left-right planarity test),getTSPTour
(nearest-neighbor + 2-opt),getSteinerTree(metric-closure
2-approximation),getGraphColoring/isValidColoring(Welsh–Powell and
DSatur),genAllPairsShortestPaths(lazy gen twin of
getAllPairsShortestPaths). - New generators:
createWattsStrogatzGraph,createBarabasiAlbertGraph. - New
@statelyai/graph/kernelsubpath:getIndex,getCSR,
invalidateIndex, andmemoizeByGraph— the fast-path primitives for
large graphs and third-party algorithm plugins. - Cancellation: expensive algorithms (centrality, community detection,
max-flow, all-pairs paths, isomorphism, dominators) accept
options.signal: AbortSignal. - Round-trip fidelity: DOT preserves graph attributes, node/edge
defaults,rank=same, HTML labels, and compass points; Mermaid preserves
%%{init}%%directives, click handlers, linkStyle (now index-stable),
state notes, mindmap::icon(), and block arrow tokens. - Fix:
getAllPairsShortestPathsno longer overflows the call stack on
graphs with a few hundred nodes. - Benchmarks: reproducible via
pnpm bench:compare(--quickvariant,
JSON results, generated docs tables, fairness notes).
- New algorithms:
-
#33
66b3828Thanks @davidkpiano! - AddgetMappedGraph()andgetFilteredGraph()structural transforms.getMappedGraph()returns a new graph with node/edgedatatransformed by mapping functions while preserving all structure;getFilteredGraph()returns a new graph keeping only nodes and edges that pass the given predicates, dropping incident edges of removed nodes.getSubgraph(),getReversedGraph(), and the new transforms now also preserve graph-leveldirectionandstyle.