@bian-womp/spark-graph 0.3.22 → 0.3.24

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
@@ -5552,17 +5552,19 @@ function offsetImportedPositions(targetPositions, sourcePositions, sourceDef, no
5552
5552
  }
5553
5553
  function buildTypeMaps(def) {
5554
5554
  const nodeTypeMap = new Map();
5555
- const handleTypeMap = new Map();
5555
+ const inputHandleTypeMap = new Map();
5556
+ const outputHandleTypeMap = new Map();
5556
5557
  for (const node of def.nodes) {
5557
5558
  nodeTypeMap.set(node.nodeId, node.typeId);
5558
- const nodeHandleTypes = new Map();
5559
+ const nodeInputTypes = new Map();
5560
+ const nodeOutputTypes = new Map();
5559
5561
  if (node.resolvedHandles?.inputs) {
5560
5562
  for (const [handleId, handleDesc] of Object.entries(node.resolvedHandles.inputs)) {
5561
5563
  const typeId = typeof handleDesc === "string"
5562
5564
  ? handleDesc
5563
5565
  : handleDesc?.typeId;
5564
5566
  if (typeId)
5565
- nodeHandleTypes.set(handleId, typeId);
5567
+ nodeInputTypes.set(handleId, typeId);
5566
5568
  }
5567
5569
  }
5568
5570
  if (node.resolvedHandles?.outputs) {
@@ -5573,14 +5575,33 @@ function buildTypeMaps(def) {
5573
5575
  ? handleDesc[0]
5574
5576
  : undefined;
5575
5577
  if (typeId)
5576
- nodeHandleTypes.set(handleId, typeId);
5578
+ nodeOutputTypes.set(handleId, typeId);
5577
5579
  }
5578
5580
  }
5579
- if (nodeHandleTypes.size > 0) {
5580
- handleTypeMap.set(node.nodeId, nodeHandleTypes);
5581
+ // Also include handles from inputDefaults - they share handle IDs with inputs
5582
+ if (node.resolvedHandles?.inputDefaults) {
5583
+ for (const handleId of Object.keys(node.resolvedHandles.inputDefaults)) {
5584
+ // If not already in map, try to get type from input handles
5585
+ if (!nodeInputTypes.has(handleId) && node.resolvedHandles?.inputs) {
5586
+ const inputDesc = node.resolvedHandles.inputs[handleId];
5587
+ if (inputDesc) {
5588
+ const typeId = typeof inputDesc === "string"
5589
+ ? inputDesc
5590
+ : inputDesc?.typeId;
5591
+ if (typeId)
5592
+ nodeInputTypes.set(handleId, typeId);
5593
+ }
5594
+ }
5595
+ }
5596
+ }
5597
+ if (nodeInputTypes.size > 0) {
5598
+ inputHandleTypeMap.set(node.nodeId, nodeInputTypes);
5599
+ }
5600
+ if (nodeOutputTypes.size > 0) {
5601
+ outputHandleTypeMap.set(node.nodeId, nodeOutputTypes);
5581
5602
  }
5582
5603
  }
5583
- return { nodeTypeMap, handleTypeMap };
5604
+ return { nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap };
5584
5605
  }
5585
5606
  function applyConversion(items, values, converter, type) {
5586
5607
  for (const item of items) {
@@ -5608,21 +5629,21 @@ function applyConversion(items, values, converter, type) {
5608
5629
  }
5609
5630
  }
5610
5631
  }
5611
- function collectValuesToConvert(values, nodeTypeMap, handleTypeMap, originalNodeIdMap) {
5632
+ function collectValuesToConvert(values, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap, type) {
5612
5633
  const converted = {};
5613
5634
  const toConvert = [];
5635
+ const handleTypeMap = type === "output" ? outputHandleTypeMap : inputHandleTypeMap;
5614
5636
  for (const [nodeId, nodeValues] of Object.entries(values)) {
5615
5637
  converted[nodeId] = { ...nodeValues };
5616
- const originalNodeId = nodeId;
5617
- const nodeTypeId = nodeTypeMap.get(originalNodeId);
5638
+ const nodeTypeId = nodeTypeMap.get(nodeId);
5618
5639
  for (const [handleId, value] of Object.entries(nodeValues)) {
5619
- const handleDataType = handleTypeMap.get(originalNodeId)?.get(handleId);
5640
+ const handleDataType = handleTypeMap.get(nodeId)?.get(handleId);
5620
5641
  const runtimeTypeId = isTypedOutput(value)
5621
5642
  ? getTypedOutputTypeId(value)
5622
5643
  : undefined;
5623
5644
  toConvert.push({
5624
5645
  nodeId,
5625
- originalNodeId,
5646
+ originalNodeId: nodeId,
5626
5647
  handleId,
5627
5648
  value,
5628
5649
  nodeTypeId,
@@ -5635,16 +5656,16 @@ function collectValuesToConvert(values, nodeTypeMap, handleTypeMap, originalNode
5635
5656
  }
5636
5657
  function convertSnapshot(snapshot, converter) {
5637
5658
  const def = snapshot.def ?? { nodes: [], edges: [] };
5638
- const { nodeTypeMap, handleTypeMap } = buildTypeMaps(def);
5659
+ const { nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap } = buildTypeMaps(def);
5639
5660
  const inputDefaults = {};
5640
5661
  for (const node of def.nodes) {
5641
5662
  if (node.resolvedHandles?.inputDefaults) {
5642
5663
  inputDefaults[node.nodeId] = { ...node.resolvedHandles.inputDefaults };
5643
5664
  }
5644
5665
  }
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);
5666
+ const { converted: convertedInputs, toConvert: inputsToConvert } = collectValuesToConvert(snapshot.inputs ?? {}, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap, "input");
5667
+ const { converted: convertedOutputs, toConvert: outputsToConvert } = collectValuesToConvert(snapshot.outputs ?? {}, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap, "output");
5668
+ const { converted: convertedInputDefaults, toConvert: inputDefaultsToConvert, } = collectValuesToConvert(inputDefaults, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap, "inputDefault");
5648
5669
  applyConversion(inputsToConvert, convertedInputs, converter, "input");
5649
5670
  applyConversion(outputsToConvert, convertedOutputs, converter, "output");
5650
5671
  applyConversion(inputDefaultsToConvert, convertedInputDefaults, converter, "inputDefault");
@@ -5675,7 +5696,7 @@ function convertSnapshot(snapshot, converter) {
5675
5696
  outputs: convertedOutputs,
5676
5697
  };
5677
5698
  }
5678
- function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOutputs, targetInputDefaults, sourceInputDefaults, nodeIdMap, nodeTypeMap, handleTypeMap) {
5699
+ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOutputs, targetInputDefaults, sourceInputDefaults, nodeIdMap, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap) {
5679
5700
  const mergedInputs = { ...targetInputs };
5680
5701
  const mergedOutputs = { ...targetOutputs };
5681
5702
  const mergedInputDefaults = { ...targetInputDefaults };
@@ -5690,7 +5711,7 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
5690
5711
  }
5691
5712
  const nodeTypeId = nodeTypeMap?.get(oldId);
5692
5713
  for (const [handleId, value] of Object.entries(inputs)) {
5693
- const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5714
+ const handleDataType = inputHandleTypeMap?.get(oldId)?.get(handleId);
5694
5715
  inputsToConvert.push({
5695
5716
  nodeId: newId,
5696
5717
  originalNodeId: oldId,
@@ -5711,7 +5732,7 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
5711
5732
  }
5712
5733
  const nodeTypeId = nodeTypeMap?.get(oldId);
5713
5734
  for (const [handleId, value] of Object.entries(outputs)) {
5714
- const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5735
+ const handleDataType = outputHandleTypeMap?.get(oldId)?.get(handleId);
5715
5736
  const runtimeTypeId = isTypedOutput(value)
5716
5737
  ? getTypedOutputTypeId(value)
5717
5738
  : undefined;
@@ -5736,7 +5757,7 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
5736
5757
  }
5737
5758
  const nodeTypeId = nodeTypeMap?.get(oldId);
5738
5759
  for (const [handleId, value] of Object.entries(defaults)) {
5739
- const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
5760
+ const handleDataType = inputHandleTypeMap?.get(oldId)?.get(handleId);
5740
5761
  inputDefaultsToConvert.push({
5741
5762
  nodeId: newId,
5742
5763
  originalNodeId: oldId,
@@ -5760,8 +5781,8 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
5760
5781
  }
5761
5782
  function mergeSnapshotData(targetSnapshot, sourceSnapshot, targetInputDefaults, sourceInputDefaults, nodeIdMap) {
5762
5783
  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);
5784
+ const { nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap } = buildTypeMaps(sourceDef);
5785
+ return mergeInputsOutputs(targetSnapshot.inputs ?? {}, targetSnapshot.outputs ?? {}, sourceSnapshot.inputs ?? {}, sourceSnapshot.outputs ?? {}, targetInputDefaults, sourceInputDefaults, nodeIdMap, nodeTypeMap, inputHandleTypeMap, outputHandleTypeMap);
5765
5786
  }
5766
5787
  function mergeSnapshots(targetSnapshot, sourceSnapshot, converter) {
5767
5788
  const targetDef = targetSnapshot.def ?? { nodes: [], edges: [] };
@@ -5839,11 +5860,11 @@ function buildValueConverter(config) {
5839
5860
  const { nodeId, handleId, value, type, nodeTypeId, handleDataType, runtimeTypeId, } = converterConfig;
5840
5861
  const isTyped = isTypedOutput(value);
5841
5862
  for (const mapping of config.mappings) {
5842
- if (mapping.type !== type)
5863
+ if (mapping.type && mapping.type !== type)
5843
5864
  continue;
5844
- if (!matchesPattern(handleId, mapping.handleId))
5865
+ if (mapping.handleId && !matchesPattern(handleId, mapping.handleId))
5845
5866
  continue;
5846
- if (!matchesPattern(nodeId, mapping.nodeId))
5867
+ if (mapping.nodeId && !matchesPattern(nodeId, mapping.nodeId))
5847
5868
  continue;
5848
5869
  if (mapping.nodeTypeId && nodeTypeId) {
5849
5870
  if (!matchesPattern(nodeTypeId, mapping.nodeTypeId))