@daniele.fedeli/graphy

Small graph library for node.js

Usage no npm install needed!

<script type="module">
  import danieleFedeliGraphy from 'https://cdn.skypack.dev/@daniele.fedeli/graphy';
</script>

README

Graphy

CI workflow

Small library for node.js used to represent a Graph in memory.

Install

npm i @daniele.fedeli/graphy

Usage

Require\Import graphy and start using its instances/functions

import { promisify } from "util";
import { Graph, GraphNode, BFS } from "@daniele.fedeli/graphy";

const sleep = promisify(setTimeout);
const graph = new Graph();

const nodes = Array.from({ length: 10 }, (_, i) => new GraphNode(i));
nodes.forEach(node => graph.insertNode(node));

// Create a random graph
for (let i = 0; i < nodes.length; i++) {
    const node = nodes[i];
    const neighbours = nodes.slice(0, Math.floor(Math.random() * nodes.length));
    neighbours.forEach(neighbour => {
        if (neighbour.id !== node.id) node.addNeighbour(neighbour);
    });
}

BFS(nodes[0], async (err, node, weight, controller) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log(`Found a node with data: ${node.data}`);
    if (node.data === 5) {
        controller.pause();
        console.log("Pausing BFS...");
        await sleep(6000);
        console.log("Resuming BFS...");
        controller.resume();
    }
});


License

Licensed under MIT.