MCPcopy Create free account
hub / github.com/Effect-TS/effect / removeEdgeInternal

Function removeEdgeInternal

packages/effect/src/Graph.ts:2445–2497  ·  view source on GitHub ↗
(
  mutable: GraphImpl<N, E, T>,
  edgeIndex: EdgeIndex
)

Source from the content-addressed store, hash-verified

2443
2444/** @internal */
2445const removeEdgeInternal = <N, E, T extends Kind = "directed">(
2446 mutable: GraphImpl<N, E, T>,
2447 edgeIndex: EdgeIndex
2448): boolean => {
2449 // Get edge data
2450 const edge = mutable.edges.get(edgeIndex)
2451 if (edge === undefined) {
2452 return false // Edge doesn't exist, no mutation occurred
2453 }
2454
2455 const { source, target } = edge
2456
2457 // Remove from adjacency lists
2458 const sourceAdjacency = mutable.adjacency.get(source)
2459 if (sourceAdjacency !== undefined) {
2460 const index = sourceAdjacency.indexOf(edgeIndex)
2461 if (index !== -1) {
2462 sourceAdjacency.splice(index, 1)
2463 }
2464 }
2465
2466 const targetReverseAdjacency = mutable.reverseAdjacency.get(target)
2467 if (targetReverseAdjacency !== undefined) {
2468 const index = targetReverseAdjacency.indexOf(edgeIndex)
2469 if (index !== -1) {
2470 targetReverseAdjacency.splice(index, 1)
2471 }
2472 }
2473
2474 // For undirected graphs, remove reverse connections
2475 if (mutable.type === "undirected") {
2476 const targetAdjacency = mutable.adjacency.get(target)
2477 if (targetAdjacency !== undefined) {
2478 const index = targetAdjacency.indexOf(edgeIndex)
2479 if (index !== -1) {
2480 targetAdjacency.splice(index, 1)
2481 }
2482 }
2483
2484 const sourceReverseAdjacency = mutable.reverseAdjacency.get(source)
2485 if (sourceReverseAdjacency !== undefined) {
2486 const index = sourceReverseAdjacency.indexOf(edgeIndex)
2487 if (index !== -1) {
2488 sourceReverseAdjacency.splice(index, 1)
2489 }
2490 }
2491 }
2492
2493 // Remove edge data
2494 mutable.edges.delete(edgeIndex)
2495
2496 return true // Edge was successfully removed
2497}
2498
2499// =============================================================================
2500// Edge Query Operations

Callers 2

removeNodeFunction · 0.85
removeEdgeFunction · 0.85

Calls 1

getMethod · 0.65

Tested by

no test coverage detected