@bian-womp/spark-graph 0.3.19 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/esm/index.js CHANGED
@@ -2764,6 +2764,7 @@ class GraphRuntime {
2764
2764
  this.environment = {};
2765
2765
  this.runMode = null;
2766
2766
  this.pauseRefCount = 0;
2767
+ this.persistentPauseToken = null;
2767
2768
  // Initialize components
2768
2769
  this.graph = new Graph();
2769
2770
  this.eventEmitter = new EventEmitter();
@@ -2914,7 +2915,7 @@ class GraphRuntime {
2914
2915
  const node = this.graph.getNode(nodeId);
2915
2916
  return node?.outputs[output];
2916
2917
  }
2917
- launch(invalidate = false) {
2918
+ launch(invalidate = false, startPaused = false) {
2918
2919
  this.graph.forEachNode((node) => {
2919
2920
  const effectiveInputs = this.nodeExecutor.getEffectiveInputs(node.nodeId);
2920
2921
  const ctrl = new AbortController();
@@ -2932,6 +2933,9 @@ class GraphRuntime {
2932
2933
  this.execute(nodeId);
2933
2934
  }
2934
2935
  }
2936
+ if (startPaused) {
2937
+ this.pause();
2938
+ }
2935
2939
  }
2936
2940
  triggerExternal(nodeId, event) {
2937
2941
  const node = this.graph.getNode(nodeId);
@@ -3074,6 +3078,17 @@ class GraphRuntime {
3074
3078
  isPaused() {
3075
3079
  return this.pauseRefCount > 0;
3076
3080
  }
3081
+ pause() {
3082
+ if (!this.persistentPauseToken) {
3083
+ this.persistentPauseToken = this.requestPause();
3084
+ }
3085
+ }
3086
+ resume() {
3087
+ if (this.persistentPauseToken) {
3088
+ this.persistentPauseToken();
3089
+ this.persistentPauseToken = null;
3090
+ }
3091
+ }
3077
3092
  copyOutputs(fromNodeId, toNodeId, options) {
3078
3093
  const fromNode = this.getNodeData(fromNodeId);
3079
3094
  if (!fromNode?.outputs)
@@ -3730,10 +3745,10 @@ class LocalEngine {
3730
3745
  dispose() {
3731
3746
  // this.graphRuntime.dispose();
3732
3747
  }
3733
- launch(invalidate, runMode) {
3748
+ launch(invalidate, runMode, startPaused) {
3734
3749
  if (runMode)
3735
3750
  this.setRunMode(runMode);
3736
- this.graphRuntime.launch(invalidate);
3751
+ this.graphRuntime.launch(invalidate, startPaused);
3737
3752
  }
3738
3753
  /**
3739
3754
  * Run only this node, no downstream propagation.
@@ -5421,62 +5436,42 @@ function findMatchingPaths(obj, pathSegments, currentPath = []) {
5421
5436
  return results;
5422
5437
  }
5423
5438
 
5424
- function mergeGraphDefinitions(target, source, converter) {
5439
+ function mergeGraphDefinitions(target, source) {
5425
5440
  const existingNodeIds = new Set(target.nodes.map((n) => n.nodeId));
5426
5441
  const existingEdgeIds = new Set(target.edges.map((e) => e.id));
5427
5442
  const nodeIdMap = {};
5443
+ const targetInputDefaults = {};
5444
+ const sourceInputDefaults = {};
5445
+ for (const node of target.nodes) {
5446
+ if (node.resolvedHandles?.inputDefaults) {
5447
+ targetInputDefaults[node.nodeId] = {
5448
+ ...node.resolvedHandles.inputDefaults,
5449
+ };
5450
+ }
5451
+ }
5428
5452
  const importedNodes = source.nodes.map((n) => {
5429
5453
  let newId = n.nodeId;
5430
- if (existingNodeIds.has(newId)) {
5454
+ const isExistingNode = existingNodeIds.has(newId);
5455
+ if (isExistingNode) {
5431
5456
  newId = generateId("n", existingNodeIds);
5432
5457
  }
5433
5458
  else {
5434
5459
  existingNodeIds.add(newId);
5435
5460
  }
5436
5461
  nodeIdMap[n.nodeId] = newId;
5437
- const transformedNode = {
5462
+ if (n.resolvedHandles?.inputDefaults) {
5463
+ sourceInputDefaults[n.nodeId] = { ...n.resolvedHandles.inputDefaults };
5464
+ }
5465
+ return {
5438
5466
  ...n,
5439
5467
  nodeId: newId,
5440
- };
5441
- if (converter) {
5442
- const nodeTypeId = transformedNode.typeId;
5443
- if (transformedNode.resolvedHandles?.inputDefaults) {
5444
- const transformedInputDefaults = {};
5445
- for (const [handleId, value] of Object.entries(transformedNode.resolvedHandles.inputDefaults)) {
5446
- const handleDataType = transformedNode.resolvedHandles?.inputs?.[handleId]
5447
- ? typeof transformedNode.resolvedHandles.inputs[handleId] ===
5448
- "string"
5449
- ? transformedNode.resolvedHandles.inputs[handleId]
5450
- : transformedNode.resolvedHandles.inputs[handleId]?.typeId
5451
- : undefined;
5452
- const convertedValue = converter({
5453
- nodeId: newId,
5454
- handleId,
5455
- value,
5456
- type: "inputDefault",
5457
- nodeTypeId,
5458
- handleDataType,
5459
- });
5460
- // If converter returns null, skip this input default (delete it)
5461
- if (convertedValue !== null) {
5462
- transformedInputDefaults[handleId] = convertedValue;
5463
- }
5464
- }
5465
- // Only set inputDefaults if there are any remaining after conversion
5466
- if (Object.keys(transformedInputDefaults).length > 0) {
5467
- transformedNode.resolvedHandles = {
5468
- ...transformedNode.resolvedHandles,
5469
- inputDefaults: transformedInputDefaults,
5470
- };
5471
- }
5472
- else if (transformedNode.resolvedHandles) {
5473
- // Remove inputDefaults if all were deleted
5474
- const { inputDefaults, ...restHandles } = transformedNode.resolvedHandles;
5475
- transformedNode.resolvedHandles = restHandles;
5468
+ resolvedHandles: n.resolvedHandles
5469
+ ? {
5470
+ ...n.resolvedHandles,
5471
+ inputDefaults: undefined,
5476
5472
  }
5477
- }
5478
- }
5479
- return transformedNode;
5473
+ : undefined,
5474
+ };
5480
5475
  });
5481
5476
  const importedEdges = source.edges.map((e) => {
5482
5477
  let newEdgeId = e.id;
@@ -5507,6 +5502,8 @@ function mergeGraphDefinitions(target, source, converter) {
5507
5502
  edges: [...target.edges, ...importedEdges],
5508
5503
  },
5509
5504
  nodeIdMap,
5505
+ targetInputDefaults,
5506
+ sourceInputDefaults,
5510
5507
  };
5511
5508
  }
5512
5509
  /**
@@ -5551,149 +5548,251 @@ function offsetImportedPositions(targetPositions, sourcePositions, sourceDef, no
5551
5548
  }
5552
5549
  return newPositions;
5553
5550
  }
5554
- /**
5555
- * Merge inputs and outputs from source into target, remapping node IDs.
5556
- * Source values override target when merging.
5557
- */
5558
- function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOutputs, nodeIdMap, converter, nodeTypeMap, handleTypeMap) {
5559
- // Deep copy target inputs/outputs to avoid mutating the original
5560
- const mergedInputs = {};
5561
- const mergedOutputs = {};
5562
- // Copy target inputs/outputs
5563
- for (const [nodeId, inputs] of Object.entries(targetInputs)) {
5564
- mergedInputs[nodeId] = { ...inputs };
5551
+ function buildTypeMaps(def) {
5552
+ const nodeTypeMap = new Map();
5553
+ const handleTypeMap = new Map();
5554
+ for (const node of def.nodes) {
5555
+ nodeTypeMap.set(node.nodeId, node.typeId);
5556
+ const nodeHandleTypes = new Map();
5557
+ if (node.resolvedHandles?.inputs) {
5558
+ for (const [handleId, handleDesc] of Object.entries(node.resolvedHandles.inputs)) {
5559
+ const typeId = typeof handleDesc === "string"
5560
+ ? handleDesc
5561
+ : handleDesc?.typeId;
5562
+ if (typeId)
5563
+ nodeHandleTypes.set(handleId, typeId);
5564
+ }
5565
+ }
5566
+ if (node.resolvedHandles?.outputs) {
5567
+ for (const [handleId, handleDesc] of Object.entries(node.resolvedHandles.outputs)) {
5568
+ const typeId = typeof handleDesc === "string"
5569
+ ? handleDesc
5570
+ : Array.isArray(handleDesc)
5571
+ ? handleDesc[0]
5572
+ : undefined;
5573
+ if (typeId)
5574
+ nodeHandleTypes.set(handleId, typeId);
5575
+ }
5576
+ }
5577
+ if (nodeHandleTypes.size > 0) {
5578
+ handleTypeMap.set(node.nodeId, nodeHandleTypes);
5579
+ }
5580
+ }
5581
+ return { nodeTypeMap, handleTypeMap };
5582
+ }
5583
+ function applyConversion(items, values, converter, type) {
5584
+ for (const item of items) {
5585
+ const convertedValue = converter({
5586
+ nodeId: item.nodeId,
5587
+ handleId: item.handleId,
5588
+ value: item.value,
5589
+ type,
5590
+ nodeTypeId: item.nodeTypeId,
5591
+ handleDataType: item.handleDataType,
5592
+ runtimeTypeId: item.runtimeTypeId,
5593
+ });
5594
+ if (convertedValue === null) {
5595
+ delete values[item.nodeId]?.[item.handleId];
5596
+ if (values[item.nodeId] &&
5597
+ Object.keys(values[item.nodeId]).length === 0) {
5598
+ delete values[item.nodeId];
5599
+ }
5600
+ }
5601
+ else {
5602
+ if (!values[item.nodeId]) {
5603
+ values[item.nodeId] = {};
5604
+ }
5605
+ values[item.nodeId][item.handleId] = convertedValue;
5606
+ }
5565
5607
  }
5566
- for (const [nodeId, outputs] of Object.entries(targetOutputs)) {
5567
- mergedOutputs[nodeId] = { ...outputs };
5608
+ }
5609
+ function collectValuesToConvert(values, nodeTypeMap, handleTypeMap, originalNodeIdMap) {
5610
+ const converted = {};
5611
+ const toConvert = [];
5612
+ for (const [nodeId, nodeValues] of Object.entries(values)) {
5613
+ converted[nodeId] = { ...nodeValues };
5614
+ const originalNodeId = nodeId;
5615
+ const nodeTypeId = nodeTypeMap.get(originalNodeId);
5616
+ for (const [handleId, value] of Object.entries(nodeValues)) {
5617
+ const handleDataType = handleTypeMap.get(originalNodeId)?.get(handleId);
5618
+ const runtimeTypeId = isTypedOutput(value)
5619
+ ? getTypedOutputTypeId(value)
5620
+ : undefined;
5621
+ toConvert.push({
5622
+ nodeId,
5623
+ originalNodeId,
5624
+ handleId,
5625
+ value,
5626
+ nodeTypeId,
5627
+ handleDataType,
5628
+ runtimeTypeId,
5629
+ });
5630
+ }
5568
5631
  }
5632
+ return { converted, toConvert };
5633
+ }
5634
+ function convertSnapshot(snapshot, converter) {
5635
+ const def = snapshot.def ?? { nodes: [], edges: [] };
5636
+ const { nodeTypeMap, handleTypeMap } = buildTypeMaps(def);
5637
+ const inputDefaults = {};
5638
+ for (const node of def.nodes) {
5639
+ if (node.resolvedHandles?.inputDefaults) {
5640
+ inputDefaults[node.nodeId] = { ...node.resolvedHandles.inputDefaults };
5641
+ }
5642
+ }
5643
+ const { converted: convertedInputs, toConvert: inputsToConvert } = collectValuesToConvert(snapshot.inputs ?? {}, nodeTypeMap, handleTypeMap);
5644
+ const { converted: convertedOutputs, toConvert: outputsToConvert } = collectValuesToConvert(snapshot.outputs ?? {}, nodeTypeMap, handleTypeMap);
5645
+ const { converted: convertedInputDefaults, toConvert: inputDefaultsToConvert, } = collectValuesToConvert(inputDefaults, nodeTypeMap, handleTypeMap);
5646
+ applyConversion(inputsToConvert, convertedInputs, converter, "input");
5647
+ applyConversion(outputsToConvert, convertedOutputs, converter, "output");
5648
+ applyConversion(inputDefaultsToConvert, convertedInputDefaults, converter, "inputDefault");
5649
+ const updatedNodes = def.nodes.map((node) => {
5650
+ const defaults = convertedInputDefaults[node.nodeId];
5651
+ if (!defaults || Object.keys(defaults).length === 0) {
5652
+ if (node.resolvedHandles?.inputDefaults) {
5653
+ const { inputDefaults, ...restHandles } = node.resolvedHandles;
5654
+ return {
5655
+ ...node,
5656
+ resolvedHandles: Object.keys(restHandles).length > 0 ? restHandles : undefined,
5657
+ };
5658
+ }
5659
+ return node;
5660
+ }
5661
+ return {
5662
+ ...node,
5663
+ resolvedHandles: {
5664
+ ...node.resolvedHandles,
5665
+ inputDefaults: defaults,
5666
+ },
5667
+ };
5668
+ });
5669
+ return {
5670
+ ...snapshot,
5671
+ def: { ...def, nodes: updatedNodes },
5672
+ inputs: convertedInputs,
5673
+ outputs: convertedOutputs,
5674
+ };
5675
+ }
5676
+ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOutputs, targetInputDefaults, sourceInputDefaults, nodeIdMap, nodeTypeMap, handleTypeMap) {
5677
+ const mergedInputs = { ...targetInputs };
5678
+ const mergedOutputs = { ...targetOutputs };
5679
+ const mergedInputDefaults = { ...targetInputDefaults };
5680
+ const inputsToConvert = [];
5681
+ const outputsToConvert = [];
5682
+ const inputDefaultsToConvert = [];
5569
5683
  for (const [oldId, inputs] of Object.entries(sourceInputs)) {
5570
5684
  const newId = nodeIdMap[oldId];
5571
5685
  if (newId) {
5572
- const transformedInputs = {};
5573
- const nodeTypeId = nodeTypeMap?.get(oldId);
5574
- // Ensure mergedInputs[newId] exists
5575
5686
  if (!mergedInputs[newId]) {
5576
5687
  mergedInputs[newId] = {};
5577
5688
  }
5689
+ const nodeTypeId = nodeTypeMap?.get(oldId);
5578
5690
  for (const [handleId, value] of Object.entries(inputs)) {
5579
5691
  const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5580
- const convertedValue = converter
5581
- ? converter({
5582
- nodeId: newId,
5583
- handleId,
5584
- value,
5585
- type: "input",
5586
- nodeTypeId,
5587
- handleDataType,
5588
- })
5589
- : value;
5590
- // If converter returns null, delete this input
5591
- if (convertedValue === null) {
5592
- delete mergedInputs[newId][handleId];
5593
- }
5594
- else {
5595
- // Otherwise, set the converted value
5596
- transformedInputs[handleId] = convertedValue;
5597
- }
5598
- }
5599
- // Merge transformed inputs
5600
- if (Object.keys(transformedInputs).length > 0) {
5601
- mergedInputs[newId] = { ...mergedInputs[newId], ...transformedInputs };
5602
- }
5603
- // Clean up empty node input objects
5604
- if (Object.keys(mergedInputs[newId]).length === 0) {
5605
- delete mergedInputs[newId];
5692
+ inputsToConvert.push({
5693
+ nodeId: newId,
5694
+ originalNodeId: oldId,
5695
+ handleId,
5696
+ value,
5697
+ nodeTypeId,
5698
+ handleDataType,
5699
+ });
5700
+ mergedInputs[newId][handleId] = value;
5606
5701
  }
5607
5702
  }
5608
5703
  }
5609
5704
  for (const [oldId, outputs] of Object.entries(sourceOutputs)) {
5610
5705
  const newId = nodeIdMap[oldId];
5611
5706
  if (newId) {
5612
- const transformedOutputs = {};
5613
- const nodeTypeId = nodeTypeMap?.get(oldId);
5614
- // Ensure mergedOutputs[newId] exists
5615
5707
  if (!mergedOutputs[newId]) {
5616
5708
  mergedOutputs[newId] = {};
5617
5709
  }
5710
+ const nodeTypeId = nodeTypeMap?.get(oldId);
5618
5711
  for (const [handleId, value] of Object.entries(outputs)) {
5619
5712
  const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5620
5713
  const runtimeTypeId = isTypedOutput(value)
5621
5714
  ? getTypedOutputTypeId(value)
5622
5715
  : undefined;
5623
- const convertedValue = converter
5624
- ? converter({
5625
- nodeId: newId,
5626
- handleId,
5627
- value,
5628
- type: "output",
5629
- nodeTypeId,
5630
- handleDataType,
5631
- runtimeTypeId,
5632
- })
5633
- : value;
5634
- // If converter returns null, delete this output
5635
- if (convertedValue === null) {
5636
- delete mergedOutputs[newId][handleId];
5637
- }
5638
- else {
5639
- // Otherwise, set the converted value
5640
- transformedOutputs[handleId] = convertedValue;
5641
- }
5642
- }
5643
- // Merge transformed outputs
5644
- if (Object.keys(transformedOutputs).length > 0) {
5645
- mergedOutputs[newId] = {
5646
- ...mergedOutputs[newId],
5647
- ...transformedOutputs,
5648
- };
5649
- }
5650
- // Clean up empty node output objects
5651
- if (Object.keys(mergedOutputs[newId]).length === 0) {
5652
- delete mergedOutputs[newId];
5716
+ outputsToConvert.push({
5717
+ nodeId: newId,
5718
+ originalNodeId: oldId,
5719
+ handleId,
5720
+ value,
5721
+ nodeTypeId,
5722
+ handleDataType,
5723
+ runtimeTypeId,
5724
+ });
5725
+ mergedOutputs[newId][handleId] = value;
5653
5726
  }
5654
5727
  }
5655
5728
  }
5656
- return { mergedInputs, mergedOutputs };
5657
- }
5658
- /**
5659
- * Merge snapshot data (inputs, outputs) from source into target.
5660
- * Graph definition merging should be done separately using mergeGraphDefinitions.
5661
- * UI positions are handled separately by mergeUIState.
5662
- */
5663
- function mergeSnapshotData(targetSnapshot, sourceSnapshot, sourceDef, nodeIdMap, converter) {
5664
- const nodeTypeMap = new Map();
5665
- const handleTypeMap = new Map();
5666
- for (const node of sourceDef.nodes) {
5667
- nodeTypeMap.set(node.nodeId, node.typeId);
5668
- const nodeHandleTypes = new Map();
5669
- if (node.resolvedHandles?.inputs) {
5670
- for (const [handleId, handleDesc] of Object.entries(node.resolvedHandles.inputs)) {
5671
- const typeId = typeof handleDesc === "string"
5672
- ? handleDesc
5673
- : handleDesc?.typeId;
5674
- if (typeId)
5675
- nodeHandleTypes.set(handleId, typeId);
5729
+ for (const [oldId, defaults] of Object.entries(sourceInputDefaults)) {
5730
+ const newId = nodeIdMap[oldId];
5731
+ if (newId) {
5732
+ if (!mergedInputDefaults[newId]) {
5733
+ mergedInputDefaults[newId] = {};
5676
5734
  }
5677
- }
5678
- if (node.resolvedHandles?.outputs) {
5679
- for (const [handleId, handleDesc] of Object.entries(node.resolvedHandles.outputs)) {
5680
- const typeId = typeof handleDesc === "string"
5681
- ? handleDesc
5682
- : Array.isArray(handleDesc)
5683
- ? handleDesc[0]
5684
- : undefined;
5685
- if (typeId)
5686
- nodeHandleTypes.set(handleId, typeId);
5735
+ const nodeTypeId = nodeTypeMap?.get(oldId);
5736
+ for (const [handleId, value] of Object.entries(defaults)) {
5737
+ const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5738
+ inputDefaultsToConvert.push({
5739
+ nodeId: newId,
5740
+ originalNodeId: oldId,
5741
+ handleId,
5742
+ value,
5743
+ nodeTypeId,
5744
+ handleDataType,
5745
+ });
5746
+ mergedInputDefaults[newId][handleId] = value;
5687
5747
  }
5688
5748
  }
5689
- if (nodeHandleTypes.size > 0) {
5690
- handleTypeMap.set(node.nodeId, nodeHandleTypes);
5691
- }
5692
5749
  }
5693
- const { mergedInputs, mergedOutputs } = mergeInputsOutputs(targetSnapshot.inputs ?? {}, targetSnapshot.outputs ?? {}, sourceSnapshot.inputs ?? {}, sourceSnapshot.outputs ?? {}, nodeIdMap, converter, nodeTypeMap, handleTypeMap);
5694
5750
  return {
5695
5751
  mergedInputs,
5696
5752
  mergedOutputs,
5753
+ mergedInputDefaults,
5754
+ inputsToConvert,
5755
+ outputsToConvert,
5756
+ inputDefaultsToConvert,
5757
+ };
5758
+ }
5759
+ function mergeSnapshotData(targetSnapshot, sourceSnapshot, targetInputDefaults, sourceInputDefaults, nodeIdMap) {
5760
+ const sourceDef = sourceSnapshot.def ?? { nodes: []};
5761
+ const { nodeTypeMap, handleTypeMap } = buildTypeMaps(sourceDef);
5762
+ return mergeInputsOutputs(targetSnapshot.inputs ?? {}, targetSnapshot.outputs ?? {}, sourceSnapshot.inputs ?? {}, sourceSnapshot.outputs ?? {}, targetInputDefaults, sourceInputDefaults, nodeIdMap, nodeTypeMap, handleTypeMap);
5763
+ }
5764
+ function mergeSnapshots(targetSnapshot, sourceSnapshot, converter) {
5765
+ const targetDef = targetSnapshot.def ?? { nodes: [], edges: [] };
5766
+ const sourceDef = sourceSnapshot.def ?? { nodes: [], edges: [] };
5767
+ const { merged, nodeIdMap, targetInputDefaults, sourceInputDefaults } = mergeGraphDefinitions(targetDef, sourceDef);
5768
+ const { mergedInputs, mergedOutputs, mergedInputDefaults, inputsToConvert, outputsToConvert, inputDefaultsToConvert, } = mergeSnapshotData(targetSnapshot, sourceSnapshot, targetInputDefaults, sourceInputDefaults, nodeIdMap);
5769
+ if (converter) {
5770
+ applyConversion(inputDefaultsToConvert, mergedInputDefaults, converter, "inputDefault");
5771
+ applyConversion(inputsToConvert, mergedInputs, converter, "input");
5772
+ applyConversion(outputsToConvert, mergedOutputs, converter, "output");
5773
+ }
5774
+ const nodeMap = new Map(merged.nodes.map((n) => [n.nodeId, n]));
5775
+ for (const nodeId in mergedInputDefaults) {
5776
+ const node = nodeMap.get(nodeId);
5777
+ if (node && Object.keys(mergedInputDefaults[nodeId]).length > 0) {
5778
+ if (!node.resolvedHandles) {
5779
+ node.resolvedHandles = {};
5780
+ }
5781
+ node.resolvedHandles.inputDefaults = mergedInputDefaults[nodeId];
5782
+ }
5783
+ }
5784
+ return {
5785
+ merged: {
5786
+ def: merged,
5787
+ inputs: mergedInputs,
5788
+ outputs: mergedOutputs,
5789
+ environment: {
5790
+ ...targetSnapshot.environment,
5791
+ ...sourceSnapshot.environment,
5792
+ },
5793
+ extData: { ...targetSnapshot.extData, ...sourceSnapshot.extData },
5794
+ },
5795
+ nodeIdMap,
5697
5796
  };
5698
5797
  }
5699
5798
  /**
@@ -5738,6 +5837,8 @@ function buildValueConverter(config) {
5738
5837
  const { nodeId, handleId, value, type, nodeTypeId, handleDataType, runtimeTypeId, } = converterConfig;
5739
5838
  const isTyped = isTypedOutput(value);
5740
5839
  for (const mapping of config.mappings) {
5840
+ if (mapping.type !== type)
5841
+ continue;
5741
5842
  if (!matchesPattern(handleId, mapping.handleId))
5742
5843
  continue;
5743
5844
  if (!matchesPattern(nodeId, mapping.nodeId))
@@ -5895,5 +5996,5 @@ function buildValueConverter(config) {
5895
5996
  };
5896
5997
  }
5897
5998
 
5898
- export { BaseCompareOperation, BaseLogicOperation, BaseMathOperation, CompositeCategory, ComputeCategory, GraphBuilder, GraphRuntime, LevelLogger, LocalEngine, Registry, buildValueConverter, computeGraphCenter, createAsyncGraphDef, createAsyncGraphRegistry, createProgressGraphDef, createProgressGraphRegistry, createSimpleGraphDef, createSimpleGraphRegistry, createValidationGraphDef, createValidationGraphRegistry, findMatchingPaths, generateId, getInputHandleMetadata, getInputTypeId, getTypedOutputTypeId, getTypedOutputValue, getValueAtPath, installLogging, isInputPrivate, isTypedOutput, mergeGraphDefinitions, mergeInputHandleDescriptors, mergeInputsOutputs, mergeRuntimeState, mergeSnapshotData, offsetImportedPositions, parseJsonPath, registerDelayNode, registerProgressNodes, setValueAtPath, setValueAtPathWithCreation, typed };
5999
+ export { BaseCompareOperation, BaseLogicOperation, BaseMathOperation, CompositeCategory, ComputeCategory, GraphBuilder, GraphRuntime, LevelLogger, LocalEngine, Registry, buildValueConverter, computeGraphCenter, convertSnapshot, createAsyncGraphDef, createAsyncGraphRegistry, createProgressGraphDef, createProgressGraphRegistry, createSimpleGraphDef, createSimpleGraphRegistry, createValidationGraphDef, createValidationGraphRegistry, findMatchingPaths, generateId, getInputHandleMetadata, getInputTypeId, getTypedOutputTypeId, getTypedOutputValue, getValueAtPath, installLogging, isInputPrivate, isTypedOutput, mergeInputHandleDescriptors, mergeRuntimeState, mergeSnapshots, offsetImportedPositions, parseJsonPath, registerDelayNode, registerProgressNodes, setValueAtPath, setValueAtPathWithCreation, typed };
5899
6000
  //# sourceMappingURL=index.js.map