@bian-womp/spark-graph 0.2.43 → 0.2.45
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../../../src/runtime/GraphRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,EAIhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAIV,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAQvB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,gBAAgB,IAAI,CAC7D,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,KAClB,IAAI,CAAC;AAUV,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;CACrB;AA+BD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,KAAK,CAAqB;IAElC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAE5B,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,SAAS,CAGb;IACJ,OAAO,CAAC,WAAW,CAA+B;IAElD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,MAAM,CAAS;IAIvB,OAAO,CAAC,iBAAiB,CAGrB;IAGJ,OAAO,CAAC,WAAW;IAanB,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAC/C,YAAY;IA6Df,EAAE,CAAC,CAAC,SAAS,gBAAgB,EAC3B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAC/B,MAAM,IAAI;IAOb,OAAO,CAAC,IAAI;IAQZ,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiEhE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAuFlC,OAAO,CAAC,qBAAqB;IA2J7B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../../../src/runtime/GraphRuntime.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
|
@@ -844,10 +844,7 @@ class GraphRuntime {
|
|
|
844
844
|
if (dynamicHandles.has(handle))
|
|
845
845
|
continue; // Skip defaults for dynamic handles
|
|
846
846
|
// Clone to avoid shared references
|
|
847
|
-
effective[handle] =
|
|
848
|
-
typeof structuredClone === "function"
|
|
849
|
-
? structuredClone(defaultValue)
|
|
850
|
-
: JSON.parse(JSON.stringify(defaultValue));
|
|
847
|
+
effective[handle] = structuredClone(defaultValue);
|
|
851
848
|
}
|
|
852
849
|
return effective;
|
|
853
850
|
}
|
|
@@ -1264,10 +1261,7 @@ class GraphRuntime {
|
|
|
1264
1261
|
const hasInbound = this.edges.some((e) => e.target.nodeId === n.nodeId && e.target.handle === handle);
|
|
1265
1262
|
if (!hasInbound && value !== undefined) {
|
|
1266
1263
|
// Clone to avoid shared references
|
|
1267
|
-
initialInputs[handle] =
|
|
1268
|
-
typeof structuredClone === "function"
|
|
1269
|
-
? structuredClone(value)
|
|
1270
|
-
: JSON.parse(JSON.stringify(value));
|
|
1264
|
+
initialInputs[handle] = structuredClone(value);
|
|
1271
1265
|
}
|
|
1272
1266
|
}
|
|
1273
1267
|
return {
|
|
@@ -1326,30 +1320,12 @@ class GraphRuntime {
|
|
|
1326
1320
|
this.paused = true;
|
|
1327
1321
|
try {
|
|
1328
1322
|
const ins = payload?.inputs || {};
|
|
1329
|
-
const outsPayload = payload?.outputs || {};
|
|
1330
1323
|
for (const [nodeId, map] of Object.entries(ins)) {
|
|
1331
1324
|
const node = this.nodes.get(nodeId);
|
|
1332
1325
|
if (!node)
|
|
1333
1326
|
continue;
|
|
1334
1327
|
for (const [h, v] of Object.entries(map || {})) {
|
|
1335
|
-
|
|
1336
|
-
// Fallback: if not all upstream output values are present in the snapshot, hydrate the saved input
|
|
1337
|
-
// so the initial view matches last saved state (important for array inputs with multiple edges).
|
|
1338
|
-
const inboundEdges = this.edges.filter((e) => e.target.nodeId === nodeId && e.target.handle === h);
|
|
1339
|
-
if (inboundEdges.length > 0) {
|
|
1340
|
-
// Check if ALL upstream outputs exist in snapshot (required for correct array input restoration)
|
|
1341
|
-
const allUpstreamOutputsExist = inboundEdges.every((e) => {
|
|
1342
|
-
const srcMap = outsPayload[e.source.nodeId] || {};
|
|
1343
|
-
return Object.prototype.hasOwnProperty.call(srcMap, e.source.handle);
|
|
1344
|
-
});
|
|
1345
|
-
// Only skip input hydration if all upstream outputs are present (re-emit will populate correctly)
|
|
1346
|
-
if (allUpstreamOutputsExist)
|
|
1347
|
-
continue;
|
|
1348
|
-
}
|
|
1349
|
-
node.inputs[h] =
|
|
1350
|
-
typeof structuredClone === "function"
|
|
1351
|
-
? structuredClone(v)
|
|
1352
|
-
: JSON.parse(JSON.stringify(v));
|
|
1328
|
+
node.inputs[h] = structuredClone(v);
|
|
1353
1329
|
// emit input value event
|
|
1354
1330
|
this.emit("value", {
|
|
1355
1331
|
nodeId,
|
|
@@ -1366,10 +1342,7 @@ class GraphRuntime {
|
|
|
1366
1342
|
if (!node)
|
|
1367
1343
|
continue;
|
|
1368
1344
|
for (const [h, v] of Object.entries(map || {})) {
|
|
1369
|
-
node.outputs[h] =
|
|
1370
|
-
typeof structuredClone === "function"
|
|
1371
|
-
? structuredClone(v)
|
|
1372
|
-
: JSON.parse(JSON.stringify(v));
|
|
1345
|
+
node.outputs[h] = structuredClone(v);
|
|
1373
1346
|
// emit output value event
|
|
1374
1347
|
this.emit("value", {
|
|
1375
1348
|
nodeId,
|
|
@@ -1504,6 +1477,15 @@ class GraphRuntime {
|
|
|
1504
1477
|
}
|
|
1505
1478
|
// Precompute per-node resolved handles for updated graph (include dynamic)
|
|
1506
1479
|
const resolved = GraphRuntime.computeResolvedHandleMap(def, registry, this.environment);
|
|
1480
|
+
// Check which handles changed and emit events for those
|
|
1481
|
+
const changedHandles = {};
|
|
1482
|
+
for (const [nodeId, newHandles] of resolved.map) {
|
|
1483
|
+
const oldHandles = this.resolvedByNode.get(nodeId);
|
|
1484
|
+
if (!oldHandles ||
|
|
1485
|
+
JSON.stringify(oldHandles) !== JSON.stringify(newHandles)) {
|
|
1486
|
+
changedHandles[nodeId] = newHandles;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1507
1489
|
this.resolvedByNode = resolved.map;
|
|
1508
1490
|
// Rebuild edges mapping with coercions
|
|
1509
1491
|
this.edges = GraphRuntime.buildEdges(def, registry, this.resolvedByNode);
|
|
@@ -1611,8 +1593,16 @@ class GraphRuntime {
|
|
|
1611
1593
|
this.arrayInputBuckets.delete(nodeId);
|
|
1612
1594
|
}
|
|
1613
1595
|
// Schedule async recompute for nodes that indicated Promise-based resolveHandles in this update
|
|
1614
|
-
for
|
|
1596
|
+
// Emit event for changed handles (if any)
|
|
1597
|
+
if (Object.keys(changedHandles).length > 0) {
|
|
1598
|
+
this.emit("invalidate", {
|
|
1599
|
+
reason: "graph-updated",
|
|
1600
|
+
resolvedHandles: changedHandles,
|
|
1601
|
+
});
|
|
1602
|
+
}
|
|
1603
|
+
for (const nodeId of resolved.pending) {
|
|
1615
1604
|
this.scheduleRecomputeHandles(nodeId);
|
|
1605
|
+
}
|
|
1616
1606
|
}
|
|
1617
1607
|
// Schedule a recomputation of dynamic handles for a node (async to avoid mutating during propagation)
|
|
1618
1608
|
scheduleRecomputeHandles(nodeId) {
|
|
@@ -1665,8 +1655,11 @@ class GraphRuntime {
|
|
|
1665
1655
|
return;
|
|
1666
1656
|
this.resolvedByNode.set(nodeId, next);
|
|
1667
1657
|
this.updateNodeHandles(nodeId, next, registry);
|
|
1668
|
-
// Notify graph updated
|
|
1669
|
-
this.emit("invalidate", {
|
|
1658
|
+
// Notify graph updated with the changed handles
|
|
1659
|
+
this.emit("invalidate", {
|
|
1660
|
+
reason: "graph-updated",
|
|
1661
|
+
resolvedHandles: { [nodeId]: next },
|
|
1662
|
+
});
|
|
1670
1663
|
}
|
|
1671
1664
|
}
|
|
1672
1665
|
|