@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 +257 -157
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/index.d.ts +2 -2
- package/lib/cjs/src/index.d.ts.map +1 -1
- package/lib/cjs/src/misc/utils/json.d.ts +1 -2
- package/lib/cjs/src/misc/utils/json.d.ts.map +1 -1
- package/lib/cjs/src/misc/utils/merge.d.ts +5 -51
- package/lib/cjs/src/misc/utils/merge.d.ts.map +1 -1
- package/lib/cjs/src/runtime/GraphLifecycleApi.d.ts +6 -1
- package/lib/cjs/src/runtime/GraphLifecycleApi.d.ts.map +1 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts +4 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/cjs/src/runtime/LocalEngine.d.ts +1 -1
- package/lib/cjs/src/runtime/LocalEngine.d.ts.map +1 -1
- package/lib/esm/index.js +256 -155
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/index.d.ts +2 -2
- package/lib/esm/src/index.d.ts.map +1 -1
- package/lib/esm/src/misc/utils/json.d.ts +1 -2
- package/lib/esm/src/misc/utils/json.d.ts.map +1 -1
- package/lib/esm/src/misc/utils/merge.d.ts +5 -51
- package/lib/esm/src/misc/utils/merge.d.ts.map +1 -1
- package/lib/esm/src/runtime/GraphLifecycleApi.d.ts +6 -1
- package/lib/esm/src/runtime/GraphLifecycleApi.d.ts.map +1 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts +4 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/esm/src/runtime/LocalEngine.d.ts +1 -1
- package/lib/esm/src/runtime/LocalEngine.d.ts.map +1 -1
- package/package.json +2 -2
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
|
|
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
|
-
|
|
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
|
-
|
|
5462
|
+
if (n.resolvedHandles?.inputDefaults) {
|
|
5463
|
+
sourceInputDefaults[n.nodeId] = { ...n.resolvedHandles.inputDefaults };
|
|
5464
|
+
}
|
|
5465
|
+
return {
|
|
5438
5466
|
...n,
|
|
5439
5467
|
nodeId: newId,
|
|
5440
|
-
|
|
5441
|
-
|
|
5442
|
-
|
|
5443
|
-
|
|
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
|
-
|
|
5556
|
-
|
|
5557
|
-
|
|
5558
|
-
|
|
5559
|
-
|
|
5560
|
-
|
|
5561
|
-
|
|
5562
|
-
|
|
5563
|
-
|
|
5564
|
-
|
|
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
|
-
|
|
5567
|
-
|
|
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
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
5583
|
-
|
|
5584
|
-
|
|
5585
|
-
|
|
5586
|
-
|
|
5587
|
-
|
|
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
|
-
|
|
5624
|
-
|
|
5625
|
-
|
|
5626
|
-
|
|
5627
|
-
|
|
5628
|
-
|
|
5629
|
-
|
|
5630
|
-
|
|
5631
|
-
|
|
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
|
-
|
|
5657
|
-
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
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
|
-
|
|
5679
|
-
|
|
5680
|
-
|
|
5681
|
-
|
|
5682
|
-
:
|
|
5683
|
-
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
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,
|
|
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
|