fix: use Map lookup for subgraph output disconnect

- Replace deprecated indexed link access with Map#get in SubgraphOutput.disconnect

- Add behavior-focused regression coverage for idempotent output disconnect

Amp-Thread-ID: https://ampcode.com/threads/T-019ca639-cde7-744d-b426-6ea21b2159e6
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
Alexander Brown
2026-02-28 14:29:59 -08:00
parent 0a940d62b9
commit d6e05bd11a
2 changed files with 24 additions and 1 deletions

View File

@@ -565,6 +565,29 @@ describe('SubgraphIO - Output Slot Dual-Nature Behavior', () => {
expect(internalNode.outputs[0].links).toEqual([])
}
)
subgraphTest(
'disconnect is idempotent and keeps output endpoints detached',
({ subgraphWithNode }) => {
const { subgraph } = subgraphWithNode
const internalNode = new LGraphNode('Internal Source')
internalNode.addOutput('out', '*')
subgraph.add(internalNode)
const subgraphOutput = subgraph.outputNode.slots[0]
const link = subgraphOutput.connect(internalNode.outputs[0], internalNode)
if (!link) throw new Error('Expected link')
subgraphOutput.disconnect()
subgraphOutput.disconnect()
expect(subgraph.getLink(link.id)).toBeUndefined()
expect(subgraphOutput.getLinks()).toEqual([])
expect(subgraphOutput.linkIds).toEqual([])
expect(internalNode.outputs[0].links).toEqual([])
}
)
})
describe('SubgraphIO - Boundary Connection Management', () => {

View File

@@ -136,7 +136,7 @@ export class SubgraphOutput extends SubgraphSlot {
//should never have more than one connection
for (const linkId of [...this.linkIds]) {
const link = subgraph.links[linkId]
const link = subgraph.links.get(linkId)
if (!link) continue
const { outputNode } = link.resolve(subgraph)