@bian-womp/spark-graph 0.3.8 → 0.3.9
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 +88 -6
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/core/type-utils.d.ts +18 -0
- package/lib/cjs/src/core/type-utils.d.ts.map +1 -0
- package/lib/cjs/src/core/types.d.ts +0 -6
- package/lib/cjs/src/core/types.d.ts.map +1 -1
- package/lib/cjs/src/index.d.ts +1 -1
- package/lib/cjs/src/index.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/HandleResolver.d.ts.map +1 -1
- package/lib/cjs/src/runtime/components/graph-utils.d.ts.map +1 -1
- package/lib/esm/index.js +87 -7
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/core/type-utils.d.ts +18 -0
- package/lib/esm/src/core/type-utils.d.ts.map +1 -0
- package/lib/esm/src/core/types.d.ts +0 -6
- package/lib/esm/src/core/types.d.ts.map +1 -1
- package/lib/esm/src/index.d.ts +1 -1
- package/lib/esm/src/index.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/HandleResolver.d.ts.map +1 -1
- package/lib/esm/src/runtime/components/graph-utils.d.ts.map +1 -1
- package/package.json +2 -2
package/lib/cjs/index.cjs
CHANGED
|
@@ -28,6 +28,46 @@ function isInputPrivate(inputs, handle) {
|
|
|
28
28
|
const v = inputs ? inputs[handle] : undefined;
|
|
29
29
|
return !!(v && typeof v === "object" && v.private);
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Merge two InputHandleDescriptor values, with dynamic taking precedence.
|
|
33
|
+
* If both have metadata, merge the metadata objects (dynamic overrides static).
|
|
34
|
+
*/
|
|
35
|
+
function mergeInputHandleDescriptors(staticDesc, dynamicDesc) {
|
|
36
|
+
// If only one exists, return it
|
|
37
|
+
if (!staticDesc)
|
|
38
|
+
return dynamicDesc;
|
|
39
|
+
if (!dynamicDesc)
|
|
40
|
+
return staticDesc;
|
|
41
|
+
// If both are strings, dynamic wins
|
|
42
|
+
if (typeof staticDesc === "string" && typeof dynamicDesc === "string") {
|
|
43
|
+
return dynamicDesc;
|
|
44
|
+
}
|
|
45
|
+
const staticObj = typeof staticDesc === "string" ? { typeId: staticDesc } : staticDesc;
|
|
46
|
+
const dynamicObj = typeof dynamicDesc === "string" ? { typeId: dynamicDesc } : dynamicDesc;
|
|
47
|
+
// Merge: dynamic takes precedence, but merge metadata objects
|
|
48
|
+
const merged = {
|
|
49
|
+
typeId: dynamicObj.typeId ?? staticObj.typeId,
|
|
50
|
+
private: dynamicObj.private ?? staticObj.private,
|
|
51
|
+
};
|
|
52
|
+
// Merge metadata if either has it
|
|
53
|
+
if (staticObj.metadata || dynamicObj.metadata) {
|
|
54
|
+
merged.metadata = {
|
|
55
|
+
...staticObj.metadata,
|
|
56
|
+
...dynamicObj.metadata, // Dynamic metadata overrides static
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
// Return as InputHandleDescriptor (which accepts object form)
|
|
60
|
+
return merged;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Extract metadata from an InputHandleDescriptor
|
|
64
|
+
*/
|
|
65
|
+
function getInputHandleMetadata(inputs, handle) {
|
|
66
|
+
const v = inputs ? inputs[handle] : undefined;
|
|
67
|
+
if (!v || typeof v === "string")
|
|
68
|
+
return undefined;
|
|
69
|
+
return v.metadata;
|
|
70
|
+
}
|
|
31
71
|
|
|
32
72
|
class CategoryRegistry {
|
|
33
73
|
constructor() {
|
|
@@ -752,11 +792,34 @@ function tryHandleResolving(def, registry, environment) {
|
|
|
752
792
|
// ignore dynamic resolution errors at this stage
|
|
753
793
|
}
|
|
754
794
|
// Merge base with dynamic and overrides (allow partial resolvedHandles)
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
795
|
+
// Merge inputs properly, handling metadata
|
|
796
|
+
const inputs = {};
|
|
797
|
+
// First, add all static handles
|
|
798
|
+
if (desc.inputs) {
|
|
799
|
+
for (const [handle, staticDesc] of Object.entries(desc.inputs)) {
|
|
800
|
+
inputs[handle] = staticDesc;
|
|
801
|
+
}
|
|
802
|
+
}
|
|
803
|
+
// Then, merge dynamic handles
|
|
804
|
+
if (dyn.inputs) {
|
|
805
|
+
for (const [handle, dynamicDesc] of Object.entries(dyn.inputs)) {
|
|
806
|
+
const staticDesc = desc.inputs?.[handle];
|
|
807
|
+
const merged = mergeInputHandleDescriptors(staticDesc, dynamicDesc);
|
|
808
|
+
if (merged) {
|
|
809
|
+
inputs[handle] = merged;
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
// Finally, merge overrides
|
|
814
|
+
if (overrideInputs) {
|
|
815
|
+
for (const [handle, overrideDesc] of Object.entries(overrideInputs)) {
|
|
816
|
+
const existingDesc = inputs[handle];
|
|
817
|
+
const merged = mergeInputHandleDescriptors(existingDesc, overrideDesc);
|
|
818
|
+
if (merged) {
|
|
819
|
+
inputs[handle] = merged;
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
}
|
|
760
823
|
const outputs = {
|
|
761
824
|
...desc.outputs,
|
|
762
825
|
...dyn.outputs,
|
|
@@ -1022,7 +1085,24 @@ class HandleResolver {
|
|
|
1022
1085
|
const nodeDesc = this.registry.nodes.get(node.typeId);
|
|
1023
1086
|
if (!nodeDesc)
|
|
1024
1087
|
return;
|
|
1025
|
-
|
|
1088
|
+
// Merge inputs properly, handling metadata
|
|
1089
|
+
const inputs = {};
|
|
1090
|
+
// First, add all static handles
|
|
1091
|
+
if (nodeDesc.inputs) {
|
|
1092
|
+
for (const [handle, staticDesc] of Object.entries(nodeDesc.inputs)) {
|
|
1093
|
+
inputs[handle] = staticDesc;
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
// Then, merge dynamic handles
|
|
1097
|
+
if (resolved?.inputs) {
|
|
1098
|
+
for (const [handle, dynamicDesc] of Object.entries(resolved.inputs)) {
|
|
1099
|
+
const staticDesc = nodeDesc.inputs?.[handle];
|
|
1100
|
+
const merged = mergeInputHandleDescriptors(staticDesc, dynamicDesc);
|
|
1101
|
+
if (merged) {
|
|
1102
|
+
inputs[handle] = merged;
|
|
1103
|
+
}
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1026
1106
|
const outputs = { ...nodeDesc.outputs, ...resolved?.outputs };
|
|
1027
1107
|
const inputDefaults = {
|
|
1028
1108
|
...nodeDesc.inputDefaults,
|
|
@@ -5087,6 +5167,7 @@ exports.createValidationGraphDef = createValidationGraphDef;
|
|
|
5087
5167
|
exports.createValidationGraphRegistry = createValidationGraphRegistry;
|
|
5088
5168
|
exports.findMatchingPaths = findMatchingPaths;
|
|
5089
5169
|
exports.generateId = generateId;
|
|
5170
|
+
exports.getInputHandleMetadata = getInputHandleMetadata;
|
|
5090
5171
|
exports.getInputTypeId = getInputTypeId;
|
|
5091
5172
|
exports.getTypedOutputTypeId = getTypedOutputTypeId;
|
|
5092
5173
|
exports.getTypedOutputValue = getTypedOutputValue;
|
|
@@ -5095,6 +5176,7 @@ exports.installLogging = installLogging;
|
|
|
5095
5176
|
exports.isInputPrivate = isInputPrivate;
|
|
5096
5177
|
exports.isTypedOutput = isTypedOutput;
|
|
5097
5178
|
exports.mergeGraphDefinitions = mergeGraphDefinitions;
|
|
5179
|
+
exports.mergeInputHandleDescriptors = mergeInputHandleDescriptors;
|
|
5098
5180
|
exports.mergeInputsOutputs = mergeInputsOutputs;
|
|
5099
5181
|
exports.mergeRuntimeState = mergeRuntimeState;
|
|
5100
5182
|
exports.mergeSnapshotData = mergeSnapshotData;
|