Skip to content

Latest commit

 

History

History

rstream-dot

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

rstream-dot

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Graphviz DOT conversion of @thi.ng/rstream dataflow graph topologies.

Status

STABLE - used in production

Related packages

  • @thi.ng/dot - Graphviz document abstraction & serialization to DOT format

Installation

yarn add @thi.ng/rstream-dot
// ES module
<script type="module" src="https://unpkg.com/@thi.ng/rstream-dot?module" crossorigin></script>

// UMD
<script src="https://unpkg.com/@thi.ng/rstream-dot/lib/index.umd.js" crossorigin></script>

Package sizes (gzipped, pre-treeshake): ESM: 780 bytes / CJS: 825 bytes / UMD: 914 bytes

Dependencies

API

Generated API docs

import * as rsd from "@thi.ng/rstream-dot";

import * as rs from "@thi.ng/rstream";
import * as tx from "@thi.ng/transducers";

// create dummy dataflow
a = rs.fromIterable([1,2,3]);
b = rs.fromIterable([10, 20, 30]);
a.transform(tx.map((x) => x * 10), "x10");
rs.merge({src: [a, b]}).subscribe(rs.trace());

// now capture the topology by walking the graph from its root(s)
// and convert the result to GraphViz DOT format
console.log(rsd.toDot(rsd.walk([a, b])));

// digraph g {
// rankdir=LR;
// node[fontname=Inconsolata,fontsize=11,style=filled,fontcolor=white];
// edge[fontname=Inconsolata,fontsize=11];
// s0[label="iterable-0\n(Stream)", color=blue];
// s1[label="x10", color=black];
// s2[label="in-iterable-0", color=black];
// s3[label="<noid>", color=gray];
// s4[label="streammerge-0\n(StreamMerge)", color=red];
// s5[label="sub-1", color=black];
// s6[label="<noid>", color=gray];
// s7[label="iterable-1\n(Stream)", color=blue];
// s8[label="in-iterable-1", color=black];
// s9[label="<noid>", color=gray];
// s5 -> s6;
// s4 -> s5;
// s3 -> s4;
// s2 -> s3;
// s0 -> s1[label="xform"];
// s0 -> s2;
// s9 -> s4;
// s8 -> s9;
// s7 -> s8;
// }

Copy output to file graph.dot and then run:

dot -Tsvg -o graph.svg graph.dot

This will generate this diagram:

graphviz output

Authors

Karsten Schmidt

License

© 2018 - 2020 Karsten Schmidt // Apache Software License 2.0