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