-
Notifications
You must be signed in to change notification settings - Fork 233
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #189 from grupopikul/master
Update to support ESM
- Loading branch information
Showing
62 changed files
with
9,536 additions
and
3,774 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"plugins": ["@babel/plugin-transform-export-namespace-from", "@babel/plugin-transform-modules-commonjs", "add-module-exports"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,27 @@ | ||
module.exports = components; | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = components; | ||
function components(g) { | ||
var visited = {}; | ||
var cmpts = []; | ||
var cmpt; | ||
|
||
function dfs(v) { | ||
if (visited.hasOwnProperty(v)) return; | ||
visited[v] = true; | ||
cmpt.push(v); | ||
g.successors(v).forEach(dfs); | ||
g.predecessors(v).forEach(dfs); | ||
} | ||
|
||
g.nodes().forEach(function(v) { | ||
g.nodes().forEach(function (v) { | ||
cmpt = []; | ||
dfs(v); | ||
if (cmpt.length) { | ||
cmpts.push(cmpt); | ||
} | ||
}); | ||
|
||
return cmpts; | ||
} | ||
module.exports = exports.default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,15 @@ | ||
var dijkstra = require("./dijkstra"); | ||
|
||
module.exports = dijkstraAll; | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = dijkstraAll; | ||
var _dijkstra = _interopRequireDefault(require("./dijkstra.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function dijkstraAll(g, weightFunc, edgeFunc) { | ||
return g.nodes().reduce(function(acc, v) { | ||
acc[v] = dijkstra(g, v, weightFunc, edgeFunc); | ||
return g.nodes().reduce(function (acc, v) { | ||
acc[v] = (0, _dijkstra.default)(g, v, weightFunc, edgeFunc); | ||
return acc; | ||
}, {}); | ||
} | ||
module.exports = exports.default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,53 +1,50 @@ | ||
var PriorityQueue = require("../data/priority-queue"); | ||
|
||
module.exports = dijkstra; | ||
|
||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = dijkstra; | ||
var _priorityQueue = _interopRequireDefault(require("../data/priority-queue.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var DEFAULT_WEIGHT_FUNC = () => 1; | ||
|
||
function dijkstra(g, source, weightFn, edgeFn) { | ||
return runDijkstra(g, String(source), | ||
weightFn || DEFAULT_WEIGHT_FUNC, | ||
edgeFn || function(v) { return g.outEdges(v); }); | ||
return runDijkstra(g, String(source), weightFn || DEFAULT_WEIGHT_FUNC, edgeFn || function (v) { | ||
return g.outEdges(v); | ||
}); | ||
} | ||
|
||
function runDijkstra(g, source, weightFn, edgeFn) { | ||
var results = {}; | ||
var pq = new PriorityQueue(); | ||
var pq = new _priorityQueue.default(); | ||
var v, vEntry; | ||
|
||
var updateNeighbors = function(edge) { | ||
var updateNeighbors = function (edge) { | ||
var w = edge.v !== v ? edge.v : edge.w; | ||
var wEntry = results[w]; | ||
var weight = weightFn(edge); | ||
var distance = vEntry.distance + weight; | ||
|
||
if (weight < 0) { | ||
throw new Error("dijkstra does not allow negative edge weights. " + | ||
"Bad edge: " + edge + " Weight: " + weight); | ||
throw new Error("dijkstra does not allow negative edge weights. " + "Bad edge: " + edge + " Weight: " + weight); | ||
} | ||
|
||
if (distance < wEntry.distance) { | ||
wEntry.distance = distance; | ||
wEntry.predecessor = v; | ||
pq.decrease(w, distance); | ||
} | ||
}; | ||
|
||
g.nodes().forEach(function(v) { | ||
g.nodes().forEach(function (v) { | ||
var distance = v === source ? 0 : Number.POSITIVE_INFINITY; | ||
results[v] = { distance: distance }; | ||
results[v] = { | ||
distance: distance | ||
}; | ||
pq.add(v, distance); | ||
}); | ||
|
||
while (pq.size() > 0) { | ||
v = pq.removeMin(); | ||
vEntry = results[v]; | ||
if (vEntry.distance === Number.POSITIVE_INFINITY) { | ||
break; | ||
} | ||
|
||
edgeFn(v).forEach(updateNeighbors); | ||
} | ||
|
||
return results; | ||
} | ||
module.exports = exports.default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,14 @@ | ||
var tarjan = require("./tarjan"); | ||
|
||
module.exports = findCycles; | ||
"use strict"; | ||
|
||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = findCycles; | ||
var _tarjan = _interopRequireDefault(require("./tarjan.js")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function findCycles(g) { | ||
return tarjan(g).filter(function(cmpt) { | ||
return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); | ||
return (0, _tarjan.default)(g).filter(function (cmpt) { | ||
return cmpt.length > 1 || cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0]); | ||
}); | ||
} | ||
module.exports = exports.default; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.