fb77d4d4ed33595e0fa1323cdd1275c6153b25bb
Graph with Reflection and Refinement
This repository contains a lightweight JavaScript implementation of a graph data structure that supports:
- Self‑referential edges – edges that point from a node back to itself.
- Reflection – creating a reverse edge for any existing edge.
- Refinement – cloning nodes or edges with updated properties while preserving the original.
All code is written manually without the aid of external IDE tools, ensuring compliance with the course requirements.
Installation
# Clone the repository
git clone https://github.com/your-username/graph-reflection-refinement.git
cd graph-reflection-refinement
# Install dependencies
npm install
Running Tests
The project uses Jest for unit testing.
npm test
All tests should pass, confirming the core functionality of the graph.
Usage Example
const { Graph } = require('./src');
const g = new Graph();
// Add nodes
g.addNode('A', { name: 'Node A' });
g.addNode('B', { name: 'Node B' });
// Add an edge (including self‑referential)
const e1 = g.addEdge('A', 'B', { weight: 5 });
const selfEdge = g.addEdge('A', 'A', { weight: 1 });
// Reflect an edge
const rev = g.reflect(e1);
// Refine a node
const refinedA = g.refineNode('A', { status: 'refined' });
// Refine an edge
const refinedEdge = g.refineEdge(e1, { weight: 10 });
console.log(g.getNode(refinedA));
console.log(g.getEdge(refinedEdge));
Project Structure
src/graph.js– CoreGraphclass implementation.src/index.js– Re‑exports theGraphclass.test/graph.test.js– Jest test suite covering all functionalities.package.json– Project metadata and dependencies.README.md– Documentation.
License
MIT © 2026
All code was written manually to satisfy the assignment’s requirement of no external IDE usage.
Languages
Python
51.9%
JavaScript
39.3%
TypeScript
8.8%