@dagrejs/dagre 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +0 -7
  2. package/dist/dagre.js +443 -445
  3. package/dist/dagre.min.js +52 -52
  4. package/index.d.ts +18 -3
  5. package/lib/acyclic.js +20 -28
  6. package/lib/add-border-segments.js +23 -15
  7. package/lib/coordinate-system.js +13 -23
  8. package/lib/data/list.js +40 -37
  9. package/lib/debug.js +31 -22
  10. package/lib/greedy-fas.js +60 -55
  11. package/lib/index.js +38 -0
  12. package/lib/layout.js +158 -155
  13. package/lib/nesting-graph.js +35 -40
  14. package/lib/normalize.js +34 -30
  15. package/lib/order/add-subgraph-constraints.js +9 -5
  16. package/lib/order/barycenter.js +17 -9
  17. package/lib/order/build-layer-graph.js +24 -18
  18. package/lib/order/cross-count.js +22 -19
  19. package/lib/order/index.js +37 -28
  20. package/lib/order/init-order.js +14 -13
  21. package/lib/order/resolve-conflicts.js +20 -30
  22. package/lib/order/sort-subgraph.js +25 -31
  23. package/lib/order/sort.js +18 -17
  24. package/lib/parent-dummy-chains.js +36 -38
  25. package/lib/position/bk.js +103 -145
  26. package/lib/position/index.js +14 -13
  27. package/lib/rank/feasible-tree.js +15 -18
  28. package/lib/rank/index.js +25 -15
  29. package/lib/rank/network-simplex.js +22 -43
  30. package/lib/rank/util.js +6 -12
  31. package/lib/util.js +69 -84
  32. package/lib/version.js +8 -1
  33. package/mjs-lib/acyclic.js +62 -0
  34. package/mjs-lib/add-border-segments.js +35 -0
  35. package/mjs-lib/coordinate-system.js +65 -0
  36. package/mjs-lib/data/list.js +56 -0
  37. package/mjs-lib/debug.js +30 -0
  38. package/mjs-lib/greedy-fas.js +125 -0
  39. package/mjs-lib/index.js +9 -0
  40. package/mjs-lib/layout.js +405 -0
  41. package/mjs-lib/nesting-graph.js +120 -0
  42. package/mjs-lib/normalize.js +84 -0
  43. package/mjs-lib/order/add-subgraph-constraints.js +49 -0
  44. package/mjs-lib/order/barycenter.js +24 -0
  45. package/mjs-lib/order/build-layer-graph.js +71 -0
  46. package/mjs-lib/order/cross-count.js +64 -0
  47. package/mjs-lib/order/index.js +70 -0
  48. package/mjs-lib/order/init-order.js +34 -0
  49. package/mjs-lib/order/resolve-conflicts.js +116 -0
  50. package/mjs-lib/order/sort-subgraph.js +71 -0
  51. package/mjs-lib/order/sort.js +54 -0
  52. package/mjs-lib/parent-dummy-chains.js +82 -0
  53. package/mjs-lib/position/bk.js +409 -0
  54. package/mjs-lib/position/index.js +30 -0
  55. package/mjs-lib/rank/feasible-tree.js +93 -0
  56. package/mjs-lib/rank/index.js +46 -0
  57. package/mjs-lib/rank/network-simplex.js +233 -0
  58. package/mjs-lib/rank/util.js +58 -0
  59. package/mjs-lib/util.js +305 -0
  60. package/mjs-lib/version.js +1 -0
  61. package/package.json +14 -3
package/lib/acyclic.js CHANGED
@@ -1,44 +1,39 @@
1
1
  "use strict";
2
2
 
3
- var greedyFAS = require("./greedy-fas");
4
- var uniqueId = require("./util").uniqueId;
5
-
6
- module.exports = {
7
- run: run,
8
- undo: undo
9
- };
10
-
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.run = run;
7
+ exports.undo = undo;
8
+ var _greedyFas = _interopRequireDefault(require("./greedy-fas.js"));
9
+ var _util = require("./util.js");
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
  function run(g) {
12
- var fas = (g.graph().acyclicer === "greedy"
13
- ? greedyFAS(g, weightFn(g))
14
- : dfsFAS(g));
15
- fas.forEach(function(e) {
16
- var label = g.edge(e);
12
+ let fas = g.graph().acyclicer === "greedy" ? (0, _greedyFas.default)(g, weightFn(g)) : dfsFAS(g);
13
+ fas.forEach(e => {
14
+ let label = g.edge(e);
17
15
  g.removeEdge(e);
18
16
  label.forwardName = e.name;
19
17
  label.reversed = true;
20
- g.setEdge(e.w, e.v, label, uniqueId("rev"));
18
+ g.setEdge(e.w, e.v, label, (0, _util.uniqueId)("rev"));
21
19
  });
22
-
23
20
  function weightFn(g) {
24
- return function(e) {
21
+ return e => {
25
22
  return g.edge(e).weight;
26
23
  };
27
24
  }
28
25
  }
29
-
30
26
  function dfsFAS(g) {
31
- var fas = [];
32
- var stack = {};
33
- var visited = {};
34
-
27
+ let fas = [];
28
+ let stack = {};
29
+ let visited = {};
35
30
  function dfs(v) {
36
31
  if (visited.hasOwnProperty(v)) {
37
32
  return;
38
33
  }
39
34
  visited[v] = true;
40
35
  stack[v] = true;
41
- g.outEdges(v).forEach(function(e) {
36
+ g.outEdges(v).forEach(e => {
42
37
  if (stack.hasOwnProperty(e.w)) {
43
38
  fas.push(e);
44
39
  } else {
@@ -47,18 +42,15 @@ function dfsFAS(g) {
47
42
  });
48
43
  delete stack[v];
49
44
  }
50
-
51
45
  g.nodes().forEach(dfs);
52
46
  return fas;
53
47
  }
54
-
55
48
  function undo(g) {
56
- g.edges().forEach(function(e) {
57
- var label = g.edge(e);
49
+ g.edges().forEach(e => {
50
+ let label = g.edge(e);
58
51
  if (label.reversed) {
59
52
  g.removeEdge(e);
60
-
61
- var forwardName = label.forwardName;
53
+ let forwardName = label.forwardName;
62
54
  delete label.reversed;
63
55
  delete label.forwardName;
64
56
  g.setEdge(e.w, e.v, label, forwardName);
@@ -1,37 +1,45 @@
1
- var util = require("./util");
2
-
3
- module.exports = addBorderSegments;
1
+ "use strict";
4
2
 
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = addBorderSegments;
7
+ var util = _interopRequireWildcard(require("./util.js"));
8
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
9
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
5
10
  function addBorderSegments(g) {
6
11
  function dfs(v) {
7
- var children = g.children(v);
8
- var node = g.node(v);
12
+ let children = g.children(v);
13
+ let node = g.node(v);
9
14
  if (children.length) {
10
15
  children.forEach(dfs);
11
16
  }
12
-
13
17
  if (node.hasOwnProperty("minRank")) {
14
18
  node.borderLeft = [];
15
19
  node.borderRight = [];
16
- for (var rank = node.minRank, maxRank = node.maxRank + 1;
17
- rank < maxRank;
18
- ++rank) {
20
+ for (let rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) {
19
21
  addBorderNode(g, "borderLeft", "_bl", v, node, rank);
20
22
  addBorderNode(g, "borderRight", "_br", v, node, rank);
21
23
  }
22
24
  }
23
25
  }
24
-
25
26
  g.children().forEach(dfs);
26
27
  }
27
-
28
28
  function addBorderNode(g, prop, prefix, sg, sgNode, rank) {
29
- var label = { width: 0, height: 0, rank: rank, borderType: prop };
30
- var prev = sgNode[prop][rank - 1];
31
- var curr = util.addDummyNode(g, "border", label, prefix);
29
+ let label = {
30
+ width: 0,
31
+ height: 0,
32
+ rank: rank,
33
+ borderType: prop
34
+ };
35
+ let prev = sgNode[prop][rank - 1];
36
+ let curr = util.addDummyNode(g, "border", label, prefix);
32
37
  sgNode[prop][rank] = curr;
33
38
  g.setParent(curr, sg);
34
39
  if (prev) {
35
- g.setEdge(prev, curr, { weight: 1 });
40
+ g.setEdge(prev, curr, {
41
+ weight: 1
42
+ });
36
43
  }
37
44
  }
45
+ module.exports = exports.default;
@@ -1,70 +1,60 @@
1
1
  "use strict";
2
2
 
3
- module.exports = {
4
- adjust: adjust,
5
- undo: undo
6
- };
7
-
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.adjust = adjust;
7
+ exports.undo = undo;
8
8
  function adjust(g) {
9
- var rankDir = g.graph().rankdir.toLowerCase();
9
+ let rankDir = g.graph().rankdir.toLowerCase();
10
10
  if (rankDir === "lr" || rankDir === "rl") {
11
11
  swapWidthHeight(g);
12
12
  }
13
13
  }
14
-
15
14
  function undo(g) {
16
- var rankDir = g.graph().rankdir.toLowerCase();
15
+ let rankDir = g.graph().rankdir.toLowerCase();
17
16
  if (rankDir === "bt" || rankDir === "rl") {
18
17
  reverseY(g);
19
18
  }
20
-
21
19
  if (rankDir === "lr" || rankDir === "rl") {
22
20
  swapXY(g);
23
21
  swapWidthHeight(g);
24
22
  }
25
23
  }
26
-
27
24
  function swapWidthHeight(g) {
28
25
  g.nodes().forEach(v => swapWidthHeightOne(g.node(v)));
29
26
  g.edges().forEach(e => swapWidthHeightOne(g.edge(e)));
30
27
  }
31
-
32
28
  function swapWidthHeightOne(attrs) {
33
- var w = attrs.width;
29
+ let w = attrs.width;
34
30
  attrs.width = attrs.height;
35
31
  attrs.height = w;
36
32
  }
37
-
38
33
  function reverseY(g) {
39
34
  g.nodes().forEach(v => reverseYOne(g.node(v)));
40
-
41
- g.edges().forEach(function(e) {
42
- var edge = g.edge(e);
35
+ g.edges().forEach(e => {
36
+ let edge = g.edge(e);
43
37
  edge.points.forEach(reverseYOne);
44
38
  if (edge.hasOwnProperty("y")) {
45
39
  reverseYOne(edge);
46
40
  }
47
41
  });
48
42
  }
49
-
50
43
  function reverseYOne(attrs) {
51
44
  attrs.y = -attrs.y;
52
45
  }
53
-
54
46
  function swapXY(g) {
55
47
  g.nodes().forEach(v => swapXYOne(g.node(v)));
56
-
57
- g.edges().forEach(function(e) {
58
- var edge = g.edge(e);
48
+ g.edges().forEach(e => {
49
+ let edge = g.edge(e);
59
50
  edge.points.forEach(swapXYOne);
60
51
  if (edge.hasOwnProperty("x")) {
61
52
  swapXYOne(edge);
62
53
  }
63
54
  });
64
55
  }
65
-
66
56
  function swapXYOne(attrs) {
67
- var x = attrs.x;
57
+ let x = attrs.x;
68
58
  attrs.x = attrs.y;
69
59
  attrs.y = x;
70
60
  }
package/lib/data/list.js CHANGED
@@ -1,56 +1,59 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
1
7
  /*
2
8
  * Simple doubly linked list implementation derived from Cormen, et al.,
3
9
  * "Introduction to Algorithms".
4
10
  */
5
11
 
6
- module.exports = List;
7
-
8
- function List() {
9
- var sentinel = {};
10
- sentinel._next = sentinel._prev = sentinel;
11
- this._sentinel = sentinel;
12
- }
13
-
14
- List.prototype.dequeue = function() {
15
- var sentinel = this._sentinel;
16
- var entry = sentinel._prev;
17
- if (entry !== sentinel) {
18
- unlink(entry);
19
- return entry;
12
+ class List {
13
+ constructor() {
14
+ let sentinel = {};
15
+ sentinel._next = sentinel._prev = sentinel;
16
+ this._sentinel = sentinel;
20
17
  }
21
- };
22
-
23
- List.prototype.enqueue = function(entry) {
24
- var sentinel = this._sentinel;
25
- if (entry._prev && entry._next) {
26
- unlink(entry);
18
+ dequeue() {
19
+ let sentinel = this._sentinel;
20
+ let entry = sentinel._prev;
21
+ if (entry !== sentinel) {
22
+ unlink(entry);
23
+ return entry;
24
+ }
27
25
  }
28
- entry._next = sentinel._next;
29
- sentinel._next._prev = entry;
30
- sentinel._next = entry;
31
- entry._prev = sentinel;
32
- };
33
-
34
- List.prototype.toString = function() {
35
- var strs = [];
36
- var sentinel = this._sentinel;
37
- var curr = sentinel._prev;
38
- while (curr !== sentinel) {
39
- strs.push(JSON.stringify(curr, filterOutLinks));
40
- curr = curr._prev;
26
+ enqueue(entry) {
27
+ let sentinel = this._sentinel;
28
+ if (entry._prev && entry._next) {
29
+ unlink(entry);
30
+ }
31
+ entry._next = sentinel._next;
32
+ sentinel._next._prev = entry;
33
+ sentinel._next = entry;
34
+ entry._prev = sentinel;
41
35
  }
42
- return "[" + strs.join(", ") + "]";
43
- };
44
-
36
+ toString() {
37
+ let strs = [];
38
+ let sentinel = this._sentinel;
39
+ let curr = sentinel._prev;
40
+ while (curr !== sentinel) {
41
+ strs.push(JSON.stringify(curr, filterOutLinks));
42
+ curr = curr._prev;
43
+ }
44
+ return "[" + strs.join(", ") + "]";
45
+ }
46
+ }
47
+ exports.default = List;
45
48
  function unlink(entry) {
46
49
  entry._prev._next = entry._next;
47
50
  entry._next._prev = entry._prev;
48
51
  delete entry._next;
49
52
  delete entry._prev;
50
53
  }
51
-
52
54
  function filterOutLinks(k, v) {
53
55
  if (k !== "_next" && k !== "_prev") {
54
56
  return v;
55
57
  }
56
58
  }
59
+ module.exports = exports.default;
package/lib/debug.js CHANGED
@@ -1,33 +1,42 @@
1
- var util = require("./util");
2
- var Graph = require("@dagrejs/graphlib").Graph;
1
+ "use strict";
3
2
 
4
- module.exports = {
5
- debugOrdering: debugOrdering
6
- };
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = debugOrdering;
7
+ var util = _interopRequireWildcard(require("./util.js"));
8
+ var _graphlib = require("@dagrejs/graphlib");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ // web-devs write a <script type="importmap"> to map
12
+ // nodejs paths to actual http://paths
7
13
 
8
14
  /* istanbul ignore next */
9
15
  function debugOrdering(g) {
10
- var layerMatrix = util.buildLayerMatrix(g);
11
-
12
- var h = new Graph({ compound: true, multigraph: true }).setGraph({});
13
-
14
- g.nodes().forEach(function(v) {
15
- h.setNode(v, { label: v });
16
+ let layerMatrix = util.buildLayerMatrix(g);
17
+ let h = new _graphlib.Graph({
18
+ compound: true,
19
+ multigraph: true
20
+ }).setGraph({});
21
+ g.nodes().forEach(v => {
22
+ h.setNode(v, {
23
+ label: v
24
+ });
16
25
  h.setParent(v, "layer" + g.node(v).rank);
17
26
  });
18
-
19
- g.edges().forEach(function(e) {
20
- h.setEdge(e.v, e.w, {}, e.name);
21
- });
22
-
23
- layerMatrix.forEach(function(layer, i) {
24
- var layerV = "layer" + i;
25
- h.setNode(layerV, { rank: "same" });
26
- layer.reduce(function(u, v) {
27
- h.setEdge(u, v, { style: "invis" });
27
+ g.edges().forEach(e => h.setEdge(e.v, e.w, {}, e.name));
28
+ layerMatrix.forEach((layer, i) => {
29
+ let layerV = "layer" + i;
30
+ h.setNode(layerV, {
31
+ rank: "same"
32
+ });
33
+ layer.reduce((u, v) => {
34
+ h.setEdge(u, v, {
35
+ style: "invis"
36
+ });
28
37
  return v;
29
38
  });
30
39
  });
31
-
32
40
  return h;
33
41
  }
42
+ module.exports = exports.default;
package/lib/greedy-fas.js CHANGED
@@ -1,5 +1,14 @@
1
- var Graph = require("@dagrejs/graphlib").Graph;
2
- var List = require("./data/list");
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = greedyFAS;
7
+ var _graphlib = require("@dagrejs/graphlib");
8
+ var _list = _interopRequireDefault(require("./data/list.js"));
9
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
+ // web-devs write a <script type="importmap"> to map
11
+ // nodejs paths to actual http://paths
3
12
 
4
13
  /*
5
14
  * A greedy heuristic for finding a feedback arc set for a graph. A feedback
@@ -8,32 +17,32 @@ var List = require("./data/list");
8
17
  * effective heuristic for the feedback arc set problem." This implementation
9
18
  * adjusts that from the paper to allow for weighted edges.
10
19
  */
11
- module.exports = greedyFAS;
12
-
13
- var DEFAULT_WEIGHT_FN = () => 1;
14
20
 
21
+ let DEFAULT_WEIGHT_FN = () => 1;
15
22
  function greedyFAS(g, weightFn) {
16
23
  if (g.nodeCount() <= 1) {
17
24
  return [];
18
25
  }
19
- var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
20
- var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
26
+ let state = buildState(g, weightFn || DEFAULT_WEIGHT_FN);
27
+ let results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx);
21
28
 
22
29
  // Expand multi-edges
23
30
  return results.flatMap(e => g.outEdges(e.v, e.w));
24
31
  }
25
-
26
32
  function doGreedyFAS(g, buckets, zeroIdx) {
27
- var results = [];
28
- var sources = buckets[buckets.length - 1];
29
- var sinks = buckets[0];
30
-
31
- var entry;
33
+ let results = [];
34
+ let sources = buckets[buckets.length - 1];
35
+ let sinks = buckets[0];
36
+ let entry;
32
37
  while (g.nodeCount()) {
33
- while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }
34
- while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); }
38
+ while (entry = sinks.dequeue()) {
39
+ removeNode(g, buckets, zeroIdx, entry);
40
+ }
41
+ while (entry = sources.dequeue()) {
42
+ removeNode(g, buckets, zeroIdx, entry);
43
+ }
35
44
  if (g.nodeCount()) {
36
- for (var i = buckets.length - 2; i > 0; --i) {
45
+ for (let i = buckets.length - 2; i > 0; --i) {
37
46
  entry = buckets[i].dequeue();
38
47
  if (entry) {
39
48
  results = results.concat(removeNode(g, buckets, zeroIdx, entry, true));
@@ -42,68 +51,65 @@ function doGreedyFAS(g, buckets, zeroIdx) {
42
51
  }
43
52
  }
44
53
  }
45
-
46
54
  return results;
47
55
  }
48
-
49
56
  function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) {
50
- var results = collectPredecessors ? [] : undefined;
51
-
52
- g.inEdges(entry.v).forEach(function(edge) {
53
- var weight = g.edge(edge);
54
- var uEntry = g.node(edge.v);
55
-
57
+ let results = collectPredecessors ? [] : undefined;
58
+ g.inEdges(entry.v).forEach(edge => {
59
+ let weight = g.edge(edge);
60
+ let uEntry = g.node(edge.v);
56
61
  if (collectPredecessors) {
57
- results.push({ v: edge.v, w: edge.w });
62
+ results.push({
63
+ v: edge.v,
64
+ w: edge.w
65
+ });
58
66
  }
59
-
60
67
  uEntry.out -= weight;
61
68
  assignBucket(buckets, zeroIdx, uEntry);
62
69
  });
63
-
64
- g.outEdges(entry.v).forEach(function(edge) {
65
- var weight = g.edge(edge);
66
- var w = edge.w;
67
- var wEntry = g.node(w);
70
+ g.outEdges(entry.v).forEach(edge => {
71
+ let weight = g.edge(edge);
72
+ let w = edge.w;
73
+ let wEntry = g.node(w);
68
74
  wEntry["in"] -= weight;
69
75
  assignBucket(buckets, zeroIdx, wEntry);
70
76
  });
71
-
72
77
  g.removeNode(entry.v);
73
-
74
78
  return results;
75
79
  }
76
-
77
80
  function buildState(g, weightFn) {
78
- var fasGraph = new Graph();
79
- var maxIn = 0;
80
- var maxOut = 0;
81
-
82
- g.nodes().forEach(function(v) {
83
- fasGraph.setNode(v, { v: v, "in": 0, out: 0 });
81
+ let fasGraph = new _graphlib.Graph();
82
+ let maxIn = 0;
83
+ let maxOut = 0;
84
+ g.nodes().forEach(v => {
85
+ fasGraph.setNode(v, {
86
+ v: v,
87
+ "in": 0,
88
+ out: 0
89
+ });
84
90
  });
85
91
 
86
92
  // Aggregate weights on nodes, but also sum the weights across multi-edges
87
93
  // into a single edge for the fasGraph.
88
- g.edges().forEach(function(e) {
89
- var prevWeight = fasGraph.edge(e.v, e.w) || 0;
90
- var weight = weightFn(e);
91
- var edgeWeight = prevWeight + weight;
94
+ g.edges().forEach(e => {
95
+ let prevWeight = fasGraph.edge(e.v, e.w) || 0;
96
+ let weight = weightFn(e);
97
+ let edgeWeight = prevWeight + weight;
92
98
  fasGraph.setEdge(e.v, e.w, edgeWeight);
93
99
  maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight);
94
- maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight);
100
+ maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight);
95
101
  });
96
-
97
- var buckets = range(maxOut + maxIn + 3).map(() => new List());
98
- var zeroIdx = maxIn + 1;
99
-
100
- fasGraph.nodes().forEach(function(v) {
102
+ let buckets = range(maxOut + maxIn + 3).map(() => new _list.default());
103
+ let zeroIdx = maxIn + 1;
104
+ fasGraph.nodes().forEach(v => {
101
105
  assignBucket(buckets, zeroIdx, fasGraph.node(v));
102
106
  });
103
-
104
- return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx };
107
+ return {
108
+ graph: fasGraph,
109
+ buckets: buckets,
110
+ zeroIdx: zeroIdx
111
+ };
105
112
  }
106
-
107
113
  function assignBucket(buckets, zeroIdx, entry) {
108
114
  if (!entry.out) {
109
115
  buckets[0].enqueue(entry);
@@ -113,12 +119,11 @@ function assignBucket(buckets, zeroIdx, entry) {
113
119
  buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry);
114
120
  }
115
121
  }
116
-
117
122
  function range(limit) {
118
123
  const range = [];
119
124
  for (let i = 0; i < limit; i++) {
120
125
  range.push(i);
121
126
  }
122
-
123
127
  return range;
124
128
  }
129
+ module.exports = exports.default;
package/lib/index.js ADDED
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "debug", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _debug.default;
10
+ }
11
+ });
12
+ exports.graphlib = void 0;
13
+ Object.defineProperty(exports, "layout", {
14
+ enumerable: true,
15
+ get: function () {
16
+ return _layout.default;
17
+ }
18
+ });
19
+ exports.util = void 0;
20
+ Object.defineProperty(exports, "version", {
21
+ enumerable: true,
22
+ get: function () {
23
+ return _version.default;
24
+ }
25
+ });
26
+ var _graphlib = _interopRequireWildcard(require("@dagrejs/graphlib"));
27
+ exports.graphlib = _graphlib;
28
+ var _layout = _interopRequireDefault(require("./layout.js"));
29
+ var _debug = _interopRequireDefault(require("./debug.js"));
30
+ var _util = require("./util.js");
31
+ var _version = _interopRequireDefault(require("./version.js"));
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
34
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
35
+ const util = exports.util = {
36
+ time: _util.time,
37
+ notime: _util.notime
38
+ };