@bian-womp/spark-graph 0.2.63 → 0.2.64
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
|
@@ -3757,7 +3757,7 @@ function mergeGraphDefinitions(target, source, converter) {
|
|
|
3757
3757
|
? transformedNode.resolvedHandles.inputs[handleId]
|
|
3758
3758
|
: transformedNode.resolvedHandles.inputs[handleId]?.typeId
|
|
3759
3759
|
: undefined;
|
|
3760
|
-
|
|
3760
|
+
const convertedValue = converter({
|
|
3761
3761
|
nodeId: newId,
|
|
3762
3762
|
handleId,
|
|
3763
3763
|
value,
|
|
@@ -3765,11 +3765,23 @@ function mergeGraphDefinitions(target, source, converter) {
|
|
|
3765
3765
|
nodeTypeId,
|
|
3766
3766
|
handleDataType,
|
|
3767
3767
|
});
|
|
3768
|
+
// If converter returns null, skip this input default (delete it)
|
|
3769
|
+
if (convertedValue !== null) {
|
|
3770
|
+
transformedInputDefaults[handleId] = convertedValue;
|
|
3771
|
+
}
|
|
3772
|
+
}
|
|
3773
|
+
// Only set inputDefaults if there are any remaining after conversion
|
|
3774
|
+
if (Object.keys(transformedInputDefaults).length > 0) {
|
|
3775
|
+
transformedNode.resolvedHandles = {
|
|
3776
|
+
...transformedNode.resolvedHandles,
|
|
3777
|
+
inputDefaults: transformedInputDefaults,
|
|
3778
|
+
};
|
|
3779
|
+
}
|
|
3780
|
+
else if (transformedNode.resolvedHandles) {
|
|
3781
|
+
// Remove inputDefaults if all were deleted
|
|
3782
|
+
const { inputDefaults, ...restHandles } = transformedNode.resolvedHandles;
|
|
3783
|
+
transformedNode.resolvedHandles = restHandles;
|
|
3768
3784
|
}
|
|
3769
|
-
transformedNode.resolvedHandles = {
|
|
3770
|
-
...transformedNode.resolvedHandles,
|
|
3771
|
-
inputDefaults: transformedInputDefaults,
|
|
3772
|
-
};
|
|
3773
3785
|
}
|
|
3774
3786
|
}
|
|
3775
3787
|
return transformedNode;
|
|
@@ -3852,16 +3864,28 @@ function offsetImportedPositions(targetPositions, sourcePositions, sourceDef, no
|
|
|
3852
3864
|
* Source values override target when merging.
|
|
3853
3865
|
*/
|
|
3854
3866
|
function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOutputs, nodeIdMap, converter, nodeTypeMap, handleTypeMap) {
|
|
3855
|
-
|
|
3856
|
-
const
|
|
3867
|
+
// Deep copy target inputs/outputs to avoid mutating the original
|
|
3868
|
+
const mergedInputs = {};
|
|
3869
|
+
const mergedOutputs = {};
|
|
3870
|
+
// Copy target inputs/outputs
|
|
3871
|
+
for (const [nodeId, inputs] of Object.entries(targetInputs)) {
|
|
3872
|
+
mergedInputs[nodeId] = { ...inputs };
|
|
3873
|
+
}
|
|
3874
|
+
for (const [nodeId, outputs] of Object.entries(targetOutputs)) {
|
|
3875
|
+
mergedOutputs[nodeId] = { ...outputs };
|
|
3876
|
+
}
|
|
3857
3877
|
for (const [oldId, inputs] of Object.entries(sourceInputs)) {
|
|
3858
3878
|
const newId = nodeIdMap[oldId];
|
|
3859
3879
|
if (newId) {
|
|
3860
3880
|
const transformedInputs = {};
|
|
3861
3881
|
const nodeTypeId = nodeTypeMap?.get(oldId);
|
|
3882
|
+
// Ensure mergedInputs[newId] exists
|
|
3883
|
+
if (!mergedInputs[newId]) {
|
|
3884
|
+
mergedInputs[newId] = {};
|
|
3885
|
+
}
|
|
3862
3886
|
for (const [handleId, value] of Object.entries(inputs)) {
|
|
3863
3887
|
const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
|
|
3864
|
-
|
|
3888
|
+
const convertedValue = converter
|
|
3865
3889
|
? converter({
|
|
3866
3890
|
nodeId: newId,
|
|
3867
3891
|
handleId,
|
|
@@ -3871,10 +3895,23 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
|
|
|
3871
3895
|
handleDataType,
|
|
3872
3896
|
})
|
|
3873
3897
|
: value;
|
|
3898
|
+
// If converter returns null, delete this input
|
|
3899
|
+
if (convertedValue === null) {
|
|
3900
|
+
delete mergedInputs[newId][handleId];
|
|
3901
|
+
}
|
|
3902
|
+
else {
|
|
3903
|
+
// Otherwise, set the converted value
|
|
3904
|
+
transformedInputs[handleId] = convertedValue;
|
|
3905
|
+
}
|
|
3906
|
+
}
|
|
3907
|
+
// Merge transformed inputs
|
|
3908
|
+
if (Object.keys(transformedInputs).length > 0) {
|
|
3909
|
+
mergedInputs[newId] = { ...mergedInputs[newId], ...transformedInputs };
|
|
3910
|
+
}
|
|
3911
|
+
// Clean up empty node input objects
|
|
3912
|
+
if (Object.keys(mergedInputs[newId]).length === 0) {
|
|
3913
|
+
delete mergedInputs[newId];
|
|
3874
3914
|
}
|
|
3875
|
-
mergedInputs[newId] = mergedInputs[newId]
|
|
3876
|
-
? { ...mergedInputs[newId], ...transformedInputs }
|
|
3877
|
-
: transformedInputs;
|
|
3878
3915
|
}
|
|
3879
3916
|
}
|
|
3880
3917
|
for (const [oldId, outputs] of Object.entries(sourceOutputs)) {
|
|
@@ -3882,12 +3919,16 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
|
|
|
3882
3919
|
if (newId) {
|
|
3883
3920
|
const transformedOutputs = {};
|
|
3884
3921
|
const nodeTypeId = nodeTypeMap?.get(oldId);
|
|
3922
|
+
// Ensure mergedOutputs[newId] exists
|
|
3923
|
+
if (!mergedOutputs[newId]) {
|
|
3924
|
+
mergedOutputs[newId] = {};
|
|
3925
|
+
}
|
|
3885
3926
|
for (const [handleId, value] of Object.entries(outputs)) {
|
|
3886
3927
|
const handleDataType = handleTypeMap?.get(oldId)?.get(handleId);
|
|
3887
3928
|
const runtimeTypeId = isTypedOutput(value)
|
|
3888
3929
|
? getTypedOutputTypeId(value)
|
|
3889
3930
|
: undefined;
|
|
3890
|
-
|
|
3931
|
+
const convertedValue = converter
|
|
3891
3932
|
? converter({
|
|
3892
3933
|
nodeId: newId,
|
|
3893
3934
|
handleId,
|
|
@@ -3898,10 +3939,26 @@ function mergeInputsOutputs(targetInputs, targetOutputs, sourceInputs, sourceOut
|
|
|
3898
3939
|
runtimeTypeId,
|
|
3899
3940
|
})
|
|
3900
3941
|
: value;
|
|
3942
|
+
// If converter returns null, delete this output
|
|
3943
|
+
if (convertedValue === null) {
|
|
3944
|
+
delete mergedOutputs[newId][handleId];
|
|
3945
|
+
}
|
|
3946
|
+
else {
|
|
3947
|
+
// Otherwise, set the converted value
|
|
3948
|
+
transformedOutputs[handleId] = convertedValue;
|
|
3949
|
+
}
|
|
3950
|
+
}
|
|
3951
|
+
// Merge transformed outputs
|
|
3952
|
+
if (Object.keys(transformedOutputs).length > 0) {
|
|
3953
|
+
mergedOutputs[newId] = {
|
|
3954
|
+
...mergedOutputs[newId],
|
|
3955
|
+
...transformedOutputs,
|
|
3956
|
+
};
|
|
3957
|
+
}
|
|
3958
|
+
// Clean up empty node output objects
|
|
3959
|
+
if (Object.keys(mergedOutputs[newId]).length === 0) {
|
|
3960
|
+
delete mergedOutputs[newId];
|
|
3901
3961
|
}
|
|
3902
|
-
mergedOutputs[newId] = mergedOutputs[newId]
|
|
3903
|
-
? { ...mergedOutputs[newId], ...transformedOutputs }
|
|
3904
|
-
: transformedOutputs;
|
|
3905
3962
|
}
|
|
3906
3963
|
}
|
|
3907
3964
|
return { mergedInputs, mergedOutputs };
|
|
@@ -4020,10 +4077,14 @@ function buildValueConverter(config) {
|
|
|
4020
4077
|
}
|
|
4021
4078
|
}
|
|
4022
4079
|
if (changed && newValue !== matchValue) {
|
|
4080
|
+
// If mapped to null, set null at the path (which may delete nested property)
|
|
4023
4081
|
setValueAtPath(transformedInner, match.path, newValue);
|
|
4024
4082
|
}
|
|
4025
4083
|
}
|
|
4026
4084
|
}
|
|
4085
|
+
// If the entire typed output should be deleted (all paths mapped to null),
|
|
4086
|
+
// we'd need to check if the whole inner value is null/empty, but for now
|
|
4087
|
+
// we'll return the transformed value or original
|
|
4027
4088
|
return changed ? typed(typedTypeId, transformedInner) : value;
|
|
4028
4089
|
}
|
|
4029
4090
|
}
|
|
@@ -4033,6 +4094,10 @@ function buildValueConverter(config) {
|
|
|
4033
4094
|
if (mapping.valueMap instanceof Map) {
|
|
4034
4095
|
if (mapping.valueMap.has(innerValue)) {
|
|
4035
4096
|
newValue = mapping.valueMap.get(innerValue);
|
|
4097
|
+
// If mapped to null, return null to delete the output
|
|
4098
|
+
if (newValue === null) {
|
|
4099
|
+
return null;
|
|
4100
|
+
}
|
|
4036
4101
|
return typed(typedTypeId, newValue);
|
|
4037
4102
|
}
|
|
4038
4103
|
}
|
|
@@ -4041,6 +4106,10 @@ function buildValueConverter(config) {
|
|
|
4041
4106
|
typeof innerValue === "number") {
|
|
4042
4107
|
if (innerValue in mapping.valueMap) {
|
|
4043
4108
|
newValue = mapping.valueMap[innerValue];
|
|
4109
|
+
// If mapped to null, return null to delete the output
|
|
4110
|
+
if (newValue === null) {
|
|
4111
|
+
return null;
|
|
4112
|
+
}
|
|
4044
4113
|
return typed(typedTypeId, newValue);
|
|
4045
4114
|
}
|
|
4046
4115
|
}
|