@bian-womp/spark-graph 0.2.22 → 0.2.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 +39 -12
- package/lib/cjs/index.cjs.map +1 -1
- package/lib/cjs/src/builder/GraphBuilder.d.ts +2 -1
- package/lib/cjs/src/builder/GraphBuilder.d.ts.map +1 -1
- package/lib/cjs/src/builder/Registry.d.ts +3 -3
- package/lib/cjs/src/builder/Registry.d.ts.map +1 -1
- package/lib/cjs/src/core/types.d.ts +19 -45
- 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/misc/base.d.ts +1 -1
- package/lib/cjs/src/misc/base.d.ts.map +1 -1
- package/lib/cjs/src/runtime/GraphRuntime.d.ts +3 -2
- package/lib/cjs/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/lib/esm/index.js +39 -12
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/src/builder/GraphBuilder.d.ts +2 -1
- package/lib/esm/src/builder/GraphBuilder.d.ts.map +1 -1
- package/lib/esm/src/builder/Registry.d.ts +3 -3
- package/lib/esm/src/builder/Registry.d.ts.map +1 -1
- package/lib/esm/src/core/types.d.ts +19 -45
- 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/misc/base.d.ts +1 -1
- package/lib/esm/src/misc/base.d.ts.map +1 -1
- package/lib/esm/src/runtime/GraphRuntime.d.ts +3 -2
- package/lib/esm/src/runtime/GraphRuntime.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { GraphDefinition
|
|
1
|
+
import type { GraphDefinition } from "@bian-womp/spark-protocol";
|
|
2
|
+
import type { NodeTypeDescriptor } from "../core/types";
|
|
2
3
|
import { Registry } from "./Registry";
|
|
3
4
|
import { GraphRuntime } from "../runtime/GraphRuntime";
|
|
4
5
|
export interface ValidationIssueData {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builder/GraphBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphBuilder.d.ts","sourceRoot":"","sources":["../../../../src/builder/GraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ;IAEtC,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB;IAsRhD,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,YAAY;IAI9D,UAAU,CACR,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC3D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC7D,EACD,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;CAkC1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DataTypeId, InputHandleDescriptor } from "@bian-womp/spark-protocol";
|
|
2
|
-
import type { DataTypeDescriptor,
|
|
2
|
+
import type { DataTypeDescriptor, ExecutionContext, NodeTypeDescriptor } from "../core/types";
|
|
3
3
|
import type { NodeCategoryDescriptor } from "../core/categories";
|
|
4
4
|
export interface ResolvedCoercionSync {
|
|
5
5
|
kind: "sync";
|
|
@@ -18,7 +18,7 @@ export declare class CategoryRegistry {
|
|
|
18
18
|
}
|
|
19
19
|
export declare class Registry {
|
|
20
20
|
readonly types: Map<string, DataTypeDescriptor<any>>;
|
|
21
|
-
readonly nodes: Map<string, NodeTypeDescriptor<Record<string, InputHandleDescriptor>, Record<string, string | string[]>, unknown, (inputs: Record<string, unknown>, ctx:
|
|
21
|
+
readonly nodes: Map<string, NodeTypeDescriptor<Record<string, InputHandleDescriptor>, Record<string, string | string[]>, unknown, (inputs: Record<string, unknown>, ctx: ExecutionContext<unknown>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>>>;
|
|
22
22
|
readonly enums: Map<string, {
|
|
23
23
|
options: Array<{
|
|
24
24
|
value: number;
|
|
@@ -40,7 +40,7 @@ export declare class Registry {
|
|
|
40
40
|
arrayId?: string;
|
|
41
41
|
arrayPickFirstDefined?: boolean;
|
|
42
42
|
}): this;
|
|
43
|
-
registerNode<I extends Record<string, InputHandleDescriptor>, O extends Record<string, DataTypeId | DataTypeId[]> = Record<string, DataTypeId | DataTypeId[]>, State = unknown, Impl = (inputs: Record<string, unknown>, ctx:
|
|
43
|
+
registerNode<I extends Record<string, InputHandleDescriptor>, O extends Record<string, DataTypeId | DataTypeId[]> = Record<string, DataTypeId | DataTypeId[]>, State = unknown, Impl extends (inputs: any, ctx: ExecutionContext<any>) => any = (inputs: Record<string, unknown>, ctx: ExecutionContext<State>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>>(desc: NodeTypeDescriptor<I, O, State, Impl>): this;
|
|
44
44
|
registerSerializer(typeId: string, s: {
|
|
45
45
|
serialize: (value: unknown) => unknown;
|
|
46
46
|
deserialize: (data: unknown) => unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../../src/builder/Registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EACV,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../../../../src/builder/Registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DataTypeId, NodeTypeId, HandleId,
|
|
1
|
+
import type { DataTypeId, NodeTypeId, HandleId, InputHandleDescriptor, NodeCategoryId, ResolvedHandles, ExecutionPolicy } from "@bian-womp/spark-protocol";
|
|
2
2
|
export interface DataTypeDescriptor<T = unknown> {
|
|
3
3
|
id: DataTypeId;
|
|
4
4
|
displayName?: string;
|
|
@@ -24,6 +24,18 @@ export interface ExecutionContext<State> extends NodeContext<State> {
|
|
|
24
24
|
createAbortController: () => AbortController;
|
|
25
25
|
reportProgress?: (value: number) => void;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Extract State type from ExecutionContext<State>
|
|
29
|
+
*/
|
|
30
|
+
export type ExtractStateFromContext<T> = T extends ExecutionContext<infer S> ? S : never;
|
|
31
|
+
/**
|
|
32
|
+
* Extract State type from impl function signature
|
|
33
|
+
*/
|
|
34
|
+
export type ExtractStateFromImpl<Impl> = Impl extends (inputs: any, ctx: ExecutionContext<infer State>) => any ? State : never;
|
|
35
|
+
/**
|
|
36
|
+
* Extract Inputs type from impl function signature
|
|
37
|
+
*/
|
|
38
|
+
export type ExtractInputsFromImpl<Impl> = Impl extends (inputs: infer I, ctx: any) => any ? I : never;
|
|
27
39
|
export interface RuntimeNodeStats {
|
|
28
40
|
runs: number;
|
|
29
41
|
active: number;
|
|
@@ -53,18 +65,9 @@ export declare function getTypedOutputTypeId(v: unknown): DataTypeId | undefined
|
|
|
53
65
|
export declare function getTypedOutputValue(v: unknown): unknown;
|
|
54
66
|
export declare function getInputTypeId(inputs: Record<string, InputHandleDescriptor> | undefined, handle: HandleId): DataTypeId | undefined;
|
|
55
67
|
export declare function isInputPrivate(inputs: Record<string, InputHandleDescriptor> | undefined, handle: HandleId): boolean;
|
|
56
|
-
export
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
maxQueue: number;
|
|
60
|
-
debounceMs: number;
|
|
61
|
-
throttleMs: number;
|
|
62
|
-
retry: {
|
|
63
|
-
attempts: number;
|
|
64
|
-
backoffMs: (attemptIndex: number) => number;
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescriptor> = Record<string, InputHandleDescriptor>, O extends Record<string, DataTypeId | DataTypeId[]> = Record<string, DataTypeId | DataTypeId[]>, State = unknown, Impl = (inputs: Record<string, unknown>, ctx: NodeContext<State>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>> {
|
|
68
|
+
export type { ExecutionPolicy } from "@bian-womp/spark-protocol";
|
|
69
|
+
type InferState<Impl, State> = ExtractStateFromImpl<Impl> extends never ? State : ExtractStateFromImpl<Impl>;
|
|
70
|
+
export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescriptor> = Record<string, InputHandleDescriptor>, O extends Record<string, DataTypeId | DataTypeId[]> = Record<string, DataTypeId | DataTypeId[]>, State = unknown, Impl extends (inputs: any, ctx: ExecutionContext<any>) => any = (inputs: Record<string, unknown>, ctx: ExecutionContext<State>) => void | Record<string, unknown> | Promise<void | Record<string, unknown>>> {
|
|
68
71
|
id: NodeTypeId;
|
|
69
72
|
categoryId: NodeCategoryId;
|
|
70
73
|
displayName?: string;
|
|
@@ -76,40 +79,11 @@ export interface NodeTypeDescriptor<I extends Record<string, InputHandleDescript
|
|
|
76
79
|
environment: Record<string, unknown>;
|
|
77
80
|
params?: Record<string, unknown>;
|
|
78
81
|
inputs?: Record<string, unknown>;
|
|
79
|
-
}) =>
|
|
80
|
-
inputs?: Record<string, InputHandleDescriptor>;
|
|
81
|
-
outputs?: Record<string, DataTypeId | DataTypeId[]>;
|
|
82
|
-
inputDefaults?: Record<string, unknown>;
|
|
83
|
-
};
|
|
82
|
+
}) => Partial<ResolvedHandles> | Promise<Partial<ResolvedHandles>>;
|
|
84
83
|
inputDefaults?: Record<string, unknown>;
|
|
85
84
|
lifecycle?: {
|
|
86
|
-
init?: (initial: Record<string, unknown>, ctx: NodeContext<State
|
|
87
|
-
dispose?: (ctx: NodeContext<State
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
export interface GraphNodeDefinition {
|
|
91
|
-
nodeId: NodeInstanceId;
|
|
92
|
-
typeId: NodeTypeId;
|
|
93
|
-
params?: Record<string, unknown> & {
|
|
94
|
-
policy?: Partial<ExecutionPolicy>;
|
|
85
|
+
init?: (initial: Record<string, unknown>, ctx: NodeContext<InferState<Impl, State>>) => void | Promise<void>;
|
|
86
|
+
dispose?: (ctx: NodeContext<InferState<Impl, State>>) => void;
|
|
95
87
|
};
|
|
96
|
-
initialInputs?: Record<string, unknown>;
|
|
97
|
-
resolvedHandles?: Partial<ResolvedHandles>;
|
|
98
|
-
}
|
|
99
|
-
export interface GraphEdgeDefinition {
|
|
100
|
-
id: EdgeInstanceId;
|
|
101
|
-
source: {
|
|
102
|
-
nodeId: NodeInstanceId;
|
|
103
|
-
handle: HandleId;
|
|
104
|
-
};
|
|
105
|
-
target: {
|
|
106
|
-
nodeId: NodeInstanceId;
|
|
107
|
-
handle: HandleId;
|
|
108
|
-
};
|
|
109
|
-
typeId?: DataTypeId;
|
|
110
|
-
}
|
|
111
|
-
export interface GraphDefinition {
|
|
112
|
-
nodes: GraphNodeDefinition[];
|
|
113
|
-
edges: GraphEdgeDefinition[];
|
|
114
88
|
}
|
|
115
89
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/types.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/src/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { DataTypeDescriptor, InvalidateReason, NodeContext, ExecutionContext, NodeTypeDescriptor,
|
|
1
|
+
export type { DataTypeDescriptor, InvalidateReason, NodeContext, ExecutionContext, NodeTypeDescriptor, RuntimeNodeStats, RuntimeEdgeStats, TypedOutputValue, } from "./core/types";
|
|
2
2
|
export { typed, isTypedOutput, getTypedOutputTypeId, getTypedOutputValue, getInputTypeId, isInputPrivate, } from "./core/types";
|
|
3
3
|
export type { CategoryRuntime, NodeCategoryDescriptor, } from "./core/categories";
|
|
4
4
|
export { Registry } from "./builder/Registry";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,EACL,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,eAAe,EACf,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAChF,YAAY,EACV,MAAM,EACN,mBAAmB,EACnB,cAAc,EACd,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { GraphDefinition } from "@bian-womp/spark-protocol";
|
|
1
2
|
import { Registry } from "../builder/Registry";
|
|
2
|
-
import type { GraphDefinition } from "../core/types";
|
|
3
3
|
export declare function setupBasicGraphRegistry(): Registry;
|
|
4
4
|
export declare function registerDelayNode(registry: Registry): void;
|
|
5
5
|
export declare function registerProgressNodes(registry: Registry): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/misc/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/misc/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAgJ/C,wBAAgB,uBAAuB,IAAI,QAAQ,CAq8BlD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,QA+BnD;AAqBD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,QA6BvD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,6BAUrE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { RuntimeValue, RuntimeInvalidate, RuntimeError, RuntimeStats, ResolvedHandles } from "@bian-womp/spark-protocol";
|
|
2
|
-
import type {
|
|
1
|
+
import type { RuntimeValue, RuntimeInvalidate, RuntimeError, RuntimeStats, ResolvedHandles, GraphDefinition, ExecutionPolicy } from "@bian-womp/spark-protocol";
|
|
2
|
+
import type { RuntimeNodeStats } from "../core/types";
|
|
3
3
|
import { Registry } from "../builder/Registry";
|
|
4
4
|
export type RuntimeEventListener<K extends RuntimeEventName> = (e: RuntimeEventMap[K]) => void;
|
|
5
5
|
export type RuntimeEventName = "value" | "invalidate" | "error" | "stats";
|
|
@@ -16,6 +16,7 @@ export declare class GraphRuntime {
|
|
|
16
16
|
private resolvedByNode;
|
|
17
17
|
private listeners;
|
|
18
18
|
private environment;
|
|
19
|
+
private recomputeTokenByNode;
|
|
19
20
|
private paused;
|
|
20
21
|
private arrayInputBuckets;
|
|
21
22
|
private valuesEqual;
|
|
@@ -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,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,
|
|
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
|
@@ -400,6 +400,13 @@ class Registry {
|
|
|
400
400
|
}
|
|
401
401
|
}
|
|
402
402
|
|
|
403
|
+
// Helper: typed promise detection and unwrapping for T | Promise<T>
|
|
404
|
+
function isPromise(value) {
|
|
405
|
+
return !!value && typeof value.then === "function";
|
|
406
|
+
}
|
|
407
|
+
async function unwrapMaybePromise(value) {
|
|
408
|
+
return isPromise(value) ? await value : value;
|
|
409
|
+
}
|
|
403
410
|
class GraphRuntime {
|
|
404
411
|
constructor() {
|
|
405
412
|
this.nodes = new Map();
|
|
@@ -408,6 +415,8 @@ class GraphRuntime {
|
|
|
408
415
|
this.resolvedByNode = new Map();
|
|
409
416
|
this.listeners = new Map();
|
|
410
417
|
this.environment = {};
|
|
418
|
+
// Token to guard async resolveHandles recomputes per node
|
|
419
|
+
this.recomputeTokenByNode = new Map();
|
|
411
420
|
this.paused = false;
|
|
412
421
|
// For array-typed target inputs, keep per-edge contributions so successive runs
|
|
413
422
|
// from the same source replace their slice instead of accumulating forever.
|
|
@@ -435,7 +444,8 @@ class GraphRuntime {
|
|
|
435
444
|
gr.registry = registry;
|
|
436
445
|
gr.environment = opts?.environment ?? {};
|
|
437
446
|
// Precompute per-node resolved handles (use def-provided overrides; do not compute dynamically here)
|
|
438
|
-
|
|
447
|
+
const initial = GraphRuntime.computeResolvedHandleMap(def, registry, gr.environment);
|
|
448
|
+
gr.resolvedByNode = initial.map;
|
|
439
449
|
// Instantiate nodes
|
|
440
450
|
for (const n of def.nodes) {
|
|
441
451
|
const desc = registry.nodes.get(n.typeId);
|
|
@@ -508,6 +518,9 @@ class GraphRuntime {
|
|
|
508
518
|
: JSON.parse(JSON.stringify(value));
|
|
509
519
|
}
|
|
510
520
|
}
|
|
521
|
+
// Schedule async recompute only for nodes that indicated Promise-based resolveHandles
|
|
522
|
+
for (const nodeId of initial.pending)
|
|
523
|
+
gr.scheduleRecomputeHandles(nodeId);
|
|
511
524
|
return gr;
|
|
512
525
|
}
|
|
513
526
|
on(event, handler) {
|
|
@@ -914,6 +927,7 @@ class GraphRuntime {
|
|
|
914
927
|
// Helper: build map of resolved handles per node from def (prefer def.resolvedHandles, otherwise registry statics)
|
|
915
928
|
static computeResolvedHandleMap(def, registry, environment) {
|
|
916
929
|
const out = new Map();
|
|
930
|
+
const pending = new Set();
|
|
917
931
|
for (const n of def.nodes) {
|
|
918
932
|
const desc = registry.nodes.get(n.typeId);
|
|
919
933
|
if (!desc)
|
|
@@ -925,11 +939,19 @@ class GraphRuntime {
|
|
|
925
939
|
let dyn = {};
|
|
926
940
|
try {
|
|
927
941
|
if (typeof desc.resolveHandles === "function") {
|
|
928
|
-
|
|
942
|
+
const maybe = desc.resolveHandles({
|
|
929
943
|
environment: environment || {},
|
|
930
944
|
params: n.params,
|
|
931
945
|
inputs: undefined,
|
|
932
946
|
});
|
|
947
|
+
// Only use sync results here; async results are applied via recompute later
|
|
948
|
+
if (isPromise(maybe)) {
|
|
949
|
+
// mark node as pending async recompute
|
|
950
|
+
pending.add(n.nodeId);
|
|
951
|
+
}
|
|
952
|
+
else {
|
|
953
|
+
dyn = maybe || {};
|
|
954
|
+
}
|
|
933
955
|
}
|
|
934
956
|
}
|
|
935
957
|
catch {
|
|
@@ -953,7 +975,7 @@ class GraphRuntime {
|
|
|
953
975
|
};
|
|
954
976
|
out.set(n.nodeId, { inputs, outputs, inputDefaults });
|
|
955
977
|
}
|
|
956
|
-
return out;
|
|
978
|
+
return { map: out, pending };
|
|
957
979
|
}
|
|
958
980
|
// Helper: build runtime edges with coercions using resolved handles
|
|
959
981
|
static buildEdges(def, registry, resolvedByNode) {
|
|
@@ -1355,7 +1377,8 @@ class GraphRuntime {
|
|
|
1355
1377
|
prevOutTargets.set(e.source.nodeId, tmap);
|
|
1356
1378
|
}
|
|
1357
1379
|
// Precompute per-node resolved handles for updated graph (include dynamic)
|
|
1358
|
-
|
|
1380
|
+
const resolved = GraphRuntime.computeResolvedHandleMap(def, registry, this.environment);
|
|
1381
|
+
this.resolvedByNode = resolved.map;
|
|
1359
1382
|
// Rebuild edges mapping with coercions
|
|
1360
1383
|
this.edges = GraphRuntime.buildEdges(def, registry, this.resolvedByNode);
|
|
1361
1384
|
// Build new inbound map
|
|
@@ -1514,6 +1537,9 @@ class GraphRuntime {
|
|
|
1514
1537
|
if (byHandle.size === 0)
|
|
1515
1538
|
this.arrayInputBuckets.delete(nodeId);
|
|
1516
1539
|
}
|
|
1540
|
+
// Schedule async recompute for nodes that indicated Promise-based resolveHandles in this update
|
|
1541
|
+
for (const nodeId of resolved.pending)
|
|
1542
|
+
this.scheduleRecomputeHandles(nodeId);
|
|
1517
1543
|
}
|
|
1518
1544
|
// Schedule a recomputation of dynamic handles for a node (async to avoid mutating during propagation)
|
|
1519
1545
|
scheduleRecomputeHandles(nodeId) {
|
|
@@ -1524,16 +1550,11 @@ class GraphRuntime {
|
|
|
1524
1550
|
if (!node)
|
|
1525
1551
|
return;
|
|
1526
1552
|
setTimeout(() => {
|
|
1527
|
-
|
|
1528
|
-
this.recomputeHandlesForNode(nodeId);
|
|
1529
|
-
}
|
|
1530
|
-
catch {
|
|
1531
|
-
// ignore recompute errors
|
|
1532
|
-
}
|
|
1553
|
+
void this.recomputeHandlesForNode(nodeId);
|
|
1533
1554
|
}, 0);
|
|
1534
1555
|
}
|
|
1535
1556
|
// Recompute dynamic handles for a single node using current inputs/environment
|
|
1536
|
-
recomputeHandlesForNode(nodeId) {
|
|
1557
|
+
async recomputeHandlesForNode(nodeId) {
|
|
1537
1558
|
const registry = this.registry;
|
|
1538
1559
|
const node = this.nodes.get(nodeId);
|
|
1539
1560
|
if (!node)
|
|
@@ -1544,17 +1565,23 @@ class GraphRuntime {
|
|
|
1544
1565
|
const resolveHandles = desc.resolveHandles;
|
|
1545
1566
|
if (typeof resolveHandles !== "function")
|
|
1546
1567
|
return;
|
|
1568
|
+
const token = (this.recomputeTokenByNode.get(nodeId) ?? 0) + 1;
|
|
1569
|
+
this.recomputeTokenByNode.set(nodeId, token);
|
|
1547
1570
|
let r;
|
|
1548
1571
|
try {
|
|
1549
|
-
|
|
1572
|
+
const res = resolveHandles({
|
|
1550
1573
|
environment: this.environment || {},
|
|
1551
1574
|
params: node.params,
|
|
1552
1575
|
inputs: node.inputs || {},
|
|
1553
1576
|
});
|
|
1577
|
+
r = await unwrapMaybePromise(res);
|
|
1554
1578
|
}
|
|
1555
1579
|
catch {
|
|
1556
1580
|
return;
|
|
1557
1581
|
}
|
|
1582
|
+
// If a newer recompute was scheduled, drop this result
|
|
1583
|
+
if ((this.recomputeTokenByNode.get(nodeId) ?? 0) !== token)
|
|
1584
|
+
return;
|
|
1558
1585
|
const inputs = { ...desc.inputs, ...r?.inputs };
|
|
1559
1586
|
const outputs = { ...desc.outputs, ...r?.outputs };
|
|
1560
1587
|
const inputDefaults = { ...desc.inputDefaults, ...r?.inputDefaults };
|