@decaf-ts/ui-decorators 0.16.2 → 0.17.0

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.
@@ -26,6 +26,34 @@ function pickLabel(element, prop, fallback) {
26
26
  fallback ??
27
27
  "");
28
28
  }
29
+ function resolveNestedModelConstructor(model, property, validation) {
30
+ const directType = Metadata.type(model, property);
31
+ if (typeof directType === "function" && Model.isModel(directType)) {
32
+ return directType;
33
+ }
34
+ const designTypes = (Metadata.getPropDesignTypes?.(model, property)?.designTypes ||
35
+ []);
36
+ for (const candidate of designTypes) {
37
+ if (typeof candidate === "function" && Model.isModel(candidate)) {
38
+ return candidate;
39
+ }
40
+ }
41
+ const customTypes = validation?.[ValidationKeys.TYPE]?.customTypes || [];
42
+ for (const candidate of customTypes) {
43
+ if (typeof candidate === "function" && Model.isModel(candidate)) {
44
+ return candidate;
45
+ }
46
+ }
47
+ return undefined;
48
+ }
49
+ function prefixGraphPortPath(port, prefix) {
50
+ const path = [prefix, port.path ?? port.property].filter(Boolean).join(".");
51
+ return {
52
+ ...port,
53
+ path,
54
+ children: port.children?.map((child) => prefixGraphPortPath(child, path)),
55
+ };
56
+ }
29
57
  export function graphNodeMetadataOf(model) {
30
58
  const resolved = resolveModel(model);
31
59
  return Metadata.get(resolved, GraphKeys.NODE);
@@ -39,9 +67,10 @@ export function graphPortMetadataOf(model, property) {
39
67
  return Metadata.get(resolved, Metadata.key(GraphKeys.PORT, String(property)));
40
68
  }
41
69
  export function graphPortDefinitionOf(model, property) {
42
- const resolved = resolveModel(model);
43
- const propertyKey = String(property);
44
- const graph = graphPortMetadataOf(resolved, property);
70
+ return graphPortDefinitionOfInternal(resolveModel(model), String(property));
71
+ }
72
+ function graphPortDefinitionOfInternal(resolved, propertyKey, visited = new Set()) {
73
+ const graph = graphPortMetadataOf(resolved, propertyKey);
45
74
  if (!graph)
46
75
  return undefined;
47
76
  const element = (Model.uiElementOf(resolved, propertyKey) ||
@@ -53,8 +82,19 @@ export function graphPortDefinitionOf(model, property) {
53
82
  element?.props?.type ??
54
83
  uiProp?.type ??
55
84
  designType?.name);
85
+ const nestedModel = resolveNestedModelConstructor(resolved, propertyKey, validation);
86
+ const shouldExpand = !!graph.expand || (!!nestedModel && !visited.has(nestedModel));
87
+ const children = shouldExpand && nestedModel
88
+ ? (() => {
89
+ const nextVisited = new Set(visited);
90
+ nextVisited.add(resolved);
91
+ nextVisited.add(nestedModel);
92
+ return graphPortsOfInternal(nestedModel, nextVisited).map((child) => prefixGraphPortPath(child, propertyKey));
93
+ })()
94
+ : undefined;
56
95
  return {
57
96
  property: propertyKey,
97
+ path: propertyKey,
58
98
  direction: graph.direction,
59
99
  name: propertyKey,
60
100
  label: pickLabel(element, uiProp, propertyKey),
@@ -67,15 +107,29 @@ export function graphPortDefinitionOf(model, property) {
67
107
  validation,
68
108
  graph,
69
109
  connectionRules: graph.connectionRules,
110
+ composite: !!children?.length,
111
+ children,
112
+ model: nestedModel?.name,
70
113
  };
71
114
  }
72
115
  export function graphPortsOf(model) {
73
- const resolved = resolveModel(model);
116
+ return graphPortsOfInternal(resolveModel(model));
117
+ }
118
+ function graphPortsOfInternal(resolved, visited = new Set()) {
74
119
  const properties = Metadata.properties(resolved) || [];
75
120
  return properties
76
- .map((property) => graphPortDefinitionOf(resolved, property))
121
+ .map((property) => graphPortDefinitionOfInternal(resolved, String(property), visited))
77
122
  .filter((property) => !!property);
78
123
  }
124
+ export function graphLeafPortsOf(ports) {
125
+ return ports.flatMap((port) => port.children && port.children.length ? graphLeafPortsOf(port.children) : [port]);
126
+ }
127
+ export function graphWorkflowInputLeafPortsOf(model) {
128
+ return graphLeafPortsOf(graphWorkflowDefinitionOf(model).inputs);
129
+ }
130
+ export function graphWorkflowOutputLeafPortsOf(model) {
131
+ return graphLeafPortsOf(graphWorkflowDefinitionOf(model).outputs);
132
+ }
79
133
  export function graphDefinitionOf(model) {
80
134
  const resolved = resolveModel(model);
81
135
  const ui = Model.uiModelOf(resolved);
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/graph/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/graph/reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,278 @@
1
+ import { graphLeafPortsOf, graphWorkflowDefinitionOf } from "./reader.js";
2
+ export const GRAPH_WORKFLOW_SNAPSHOT_VERSION = 1;
3
+ function isPlainObject(value) {
4
+ return (!!value &&
5
+ typeof value === "object" &&
6
+ !Array.isArray(value) &&
7
+ !(value instanceof Date));
8
+ }
9
+ function cloneValue(value) {
10
+ if (Array.isArray(value)) {
11
+ return value.map((entry) => cloneValue(entry));
12
+ }
13
+ if (value instanceof Date) {
14
+ return new Date(value.getTime());
15
+ }
16
+ if (isPlainObject(value)) {
17
+ const cloned = {};
18
+ for (const [key, entry] of Object.entries(value)) {
19
+ cloned[key] = cloneValue(entry);
20
+ }
21
+ return cloned;
22
+ }
23
+ return value;
24
+ }
25
+ function asString(value) {
26
+ if (value === undefined || value === null)
27
+ return undefined;
28
+ return typeof value === "string" ? value : String(value);
29
+ }
30
+ function isWorkflowDefinitionLike(value) {
31
+ return (isPlainObject(value) &&
32
+ typeof value.name === "string" &&
33
+ typeof value.tag === "string" &&
34
+ typeof value.kind === "string" &&
35
+ Array.isArray(value.inputs) &&
36
+ Array.isArray(value.outputs) &&
37
+ Array.isArray(value.nodes) &&
38
+ Array.isArray(value.relations));
39
+ }
40
+ function snapshotNodeKey(node) {
41
+ return node.ref?.id ?? node.id ?? node.ref?.path ?? node.ref?.property;
42
+ }
43
+ function snapshotEdgeKey(edge) {
44
+ return (edge.id ??
45
+ [edge.sourceRef ?? edge.source, edge.sourcePort, edge.targetRef ?? edge.target, edge.targetPort]
46
+ .filter(Boolean)
47
+ .join("::"));
48
+ }
49
+ function normalizeValueEntries(entries, definitions) {
50
+ const byPath = new Map();
51
+ if (Array.isArray(entries)) {
52
+ for (const entry of entries) {
53
+ if (!entry?.path)
54
+ continue;
55
+ byPath.set(entry.path, cloneValue(entry));
56
+ }
57
+ }
58
+ else if (isPlainObject(entries)) {
59
+ for (const [path, value] of Object.entries(entries)) {
60
+ byPath.set(path, { path, value: cloneValue(value) });
61
+ }
62
+ }
63
+ const normalized = definitions.map((definition) => {
64
+ const path = definition.path ?? definition.property;
65
+ const current = byPath.get(path);
66
+ const entry = {
67
+ label: definition.label,
68
+ type: definition.type,
69
+ required: definition.required,
70
+ model: definition.model,
71
+ metadata: cloneValue(definition.graph?.metadata ??
72
+ definition.element?.props ??
73
+ definition.prop?.props ??
74
+ {}),
75
+ ...current,
76
+ path,
77
+ };
78
+ if (!Object.keys(entry.metadata || {}).length) {
79
+ delete entry.metadata;
80
+ }
81
+ return entry;
82
+ });
83
+ for (const entry of byPath.values()) {
84
+ if (normalized.some((current) => current.path === entry.path))
85
+ continue;
86
+ normalized.push(cloneValue(entry));
87
+ }
88
+ return normalized;
89
+ }
90
+ function normalizeNodes(nodes, definitions) {
91
+ const byKey = new Map();
92
+ const result = [];
93
+ for (const definition of definitions) {
94
+ const node = {
95
+ id: definition.id,
96
+ ref: {
97
+ id: definition.id,
98
+ kind: definition.kind,
99
+ },
100
+ label: definition.label,
101
+ kind: definition.kind,
102
+ data: definition.node !== undefined ? { node: cloneValue(definition.node) } : undefined,
103
+ metadata: cloneValue(definition.metadata),
104
+ };
105
+ result.push(node);
106
+ byKey.set(definition.id, node);
107
+ }
108
+ for (const entry of nodes || []) {
109
+ const key = snapshotNodeKey(entry);
110
+ const current = key ? byKey.get(key) : undefined;
111
+ if (current) {
112
+ const merged = {
113
+ ...current,
114
+ ...cloneValue(entry),
115
+ id: entry.id || current.id,
116
+ ref: {
117
+ ...current.ref,
118
+ ...entry.ref,
119
+ id: entry.ref?.id ?? current.ref?.id ?? current.id,
120
+ },
121
+ position: entry.position ? cloneValue(entry.position) : current.position,
122
+ size: entry.size ? cloneValue(entry.size) : current.size,
123
+ ports: {
124
+ ...(current.ports || {}),
125
+ ...(entry.ports || {}),
126
+ },
127
+ data: {
128
+ ...(current.data || {}),
129
+ ...(entry.data || {}),
130
+ },
131
+ metadata: {
132
+ ...(current.metadata || {}),
133
+ ...(entry.metadata || {}),
134
+ },
135
+ };
136
+ if (key)
137
+ byKey.set(key, merged);
138
+ const index = result.findIndex((value) => value.id === current.id);
139
+ if (index >= 0)
140
+ result[index] = merged;
141
+ continue;
142
+ }
143
+ const cloned = cloneValue(entry);
144
+ result.push(cloned);
145
+ if (key)
146
+ byKey.set(key, cloned);
147
+ }
148
+ return result;
149
+ }
150
+ function normalizeEdges(edges, relations) {
151
+ const byKey = new Map();
152
+ const result = [];
153
+ for (const [index, relation] of relations.entries()) {
154
+ const source = asString(relation.source) ?? `source-${index}`;
155
+ const target = asString(relation.target) ?? `target-${index}`;
156
+ const edge = {
157
+ id: relation.label || `${source}:${relation.sourcePort ?? "*"}->${target}:${relation.targetPort ?? "*"}`,
158
+ source,
159
+ sourceRef: source,
160
+ sourcePort: relation.sourcePort,
161
+ target,
162
+ targetRef: target,
163
+ targetPort: relation.targetPort,
164
+ label: relation.label,
165
+ metadata: cloneValue(relation.metadata),
166
+ };
167
+ result.push(edge);
168
+ byKey.set(edge.id, edge);
169
+ }
170
+ for (const entry of edges || []) {
171
+ const key = snapshotEdgeKey(entry);
172
+ const current = key ? byKey.get(key) : undefined;
173
+ if (current) {
174
+ const merged = {
175
+ ...current,
176
+ ...cloneValue(entry),
177
+ id: entry.id || current.id,
178
+ source: entry.source || current.source,
179
+ sourceRef: entry.sourceRef ?? current.sourceRef ?? entry.source ?? current.source,
180
+ target: entry.target || current.target,
181
+ targetRef: entry.targetRef ?? current.targetRef ?? entry.target ?? current.target,
182
+ metadata: {
183
+ ...(current.metadata || {}),
184
+ ...(entry.metadata || {}),
185
+ },
186
+ };
187
+ if (key)
188
+ byKey.set(key, merged);
189
+ const index = result.findIndex((value) => value.id === current.id);
190
+ if (index >= 0)
191
+ result[index] = merged;
192
+ continue;
193
+ }
194
+ const cloned = cloneValue(entry);
195
+ result.push(cloned);
196
+ if (key)
197
+ byKey.set(key, cloned);
198
+ }
199
+ return result;
200
+ }
201
+ function normalizeWorkflowDefinition(definition, overrides = {}) {
202
+ return {
203
+ name: overrides.name ?? definition.name,
204
+ tag: overrides.tag ?? definition.tag,
205
+ kind: overrides.kind ?? definition.kind,
206
+ category: overrides.category ?? definition.category,
207
+ color: overrides.color ?? definition.color,
208
+ group: overrides.group ?? definition.group,
209
+ height: overrides.height ?? definition.height,
210
+ icon: overrides.icon ?? definition.icon,
211
+ labels: cloneValue(overrides.labels ?? definition.labels ?? []),
212
+ maxChildren: overrides.maxChildren ?? definition.maxChildren,
213
+ minWidth: overrides.minWidth ?? definition.minWidth,
214
+ width: overrides.width ?? definition.width,
215
+ metadata: cloneValue(overrides.metadata ??
216
+ ("workflow" in definition ? definition.workflow : definition.metadata)),
217
+ inputs: cloneValue(overrides.inputs ?? definition.inputs ?? []),
218
+ outputs: cloneValue(overrides.outputs ?? definition.outputs ?? []),
219
+ nodes: cloneValue(overrides.nodes ?? definition.nodes ?? []),
220
+ relations: cloneValue(overrides.relations ?? definition.relations ?? []),
221
+ };
222
+ }
223
+ export function graphWorkflowSnapshotDefinitionOf(model) {
224
+ const definition = isWorkflowDefinitionLike(model)
225
+ ? model
226
+ : graphWorkflowDefinitionOf(model);
227
+ return normalizeWorkflowDefinition(definition);
228
+ }
229
+ export function graphWorkflowSnapshotOf(model, input) {
230
+ const normalizedDefinition = normalizeWorkflowDefinition(graphWorkflowSnapshotDefinitionOf(model), input?.definition);
231
+ const inputPorts = graphLeafPortsOf(normalizedDefinition.inputs);
232
+ const outputPorts = graphLeafPortsOf(normalizedDefinition.outputs);
233
+ return {
234
+ version: GRAPH_WORKFLOW_SNAPSHOT_VERSION,
235
+ definition: normalizedDefinition,
236
+ state: {
237
+ inputs: normalizeValueEntries(input?.inputs, inputPorts),
238
+ outputs: normalizeValueEntries(input?.outputs, outputPorts),
239
+ nodes: normalizeNodes(input?.nodes, normalizedDefinition.nodes),
240
+ edges: normalizeEdges(input?.edges, normalizedDefinition.relations),
241
+ ui: cloneValue(input?.ui || {}),
242
+ metadata: cloneValue(input?.metadata || {}),
243
+ },
244
+ };
245
+ }
246
+ export function graphWorkflowSnapshotRestore(snapshot, model) {
247
+ if (!("version" in snapshot)) {
248
+ return graphWorkflowSnapshotOf(model ??
249
+ snapshot.definition ??
250
+ {}, snapshot);
251
+ }
252
+ const fullSnapshot = snapshot;
253
+ const definition = model
254
+ ? graphWorkflowSnapshotDefinitionOf(model)
255
+ : fullSnapshot.definition;
256
+ return graphWorkflowSnapshotOf(definition, {
257
+ inputs: fullSnapshot.state.inputs,
258
+ outputs: fullSnapshot.state.outputs,
259
+ nodes: fullSnapshot.state.nodes,
260
+ edges: fullSnapshot.state.edges,
261
+ ui: fullSnapshot.state.ui,
262
+ metadata: fullSnapshot.state.metadata,
263
+ });
264
+ }
265
+ export function graphWorkflowSnapshotToJSON(snapshot, space) {
266
+ return JSON.stringify(snapshot, undefined, space);
267
+ }
268
+ export function graphWorkflowSnapshotFromJSON(input, model) {
269
+ const snapshot = typeof input === "string" ? JSON.parse(input) : input;
270
+ return graphWorkflowSnapshotRestore(snapshot, model);
271
+ }
272
+ export function graphWorkflowSnapshotInputValuesOf(snapshot) {
273
+ return Object.fromEntries(snapshot.state.inputs.map((entry) => [entry.path, cloneValue(entry.value)]));
274
+ }
275
+ export function graphWorkflowSnapshotOutputValuesOf(snapshot) {
276
+ return Object.fromEntries(snapshot.state.outputs.map((entry) => [entry.path, cloneValue(entry.value)]));
277
+ }
278
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/graph/snapshot.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,oBAAiB;AAIvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAU,CAAC;AA0G1D,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,CAAC,CAAC,KAAK;QACP,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrB,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAI,KAAQ;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAM,CAAC;IACtD,CAAC;IAED,IAAI,KAAK,YAAY,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAM,CAAC;IACxC,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,wBAAwB,CAC/B,KAAc;IAEd,OAAO,CACL,aAAa,CAAC,KAAK,CAAC;QACpB,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;QAC7B,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAwC;IAC/D,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;AACzE,CAAC;AAED,SAAS,eAAe,CAAC,IAAwC;IAC/D,OAAO,CACL,IAAI,CAAC,EAAE;QACP,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC;aAC7F,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,OAA2E,EAC3E,WAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsC,CAAC;IAE7D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE,IAAI;gBAAE,SAAS;YAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAiC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QAC9E,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAA+B;YACxC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,QAAQ,EAAE,UAAU,CAClB,UAAU,CAAC,KAAK,EAAE,QAAQ;gBACxB,UAAU,CAAC,OAAO,EAAE,KAAK;gBACzB,UAAU,CAAC,IAAI,EAAE,KAAK;gBACtB,EAAE,CACL;YACD,GAAG,OAAO;YACV,IAAI;SACL,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACxE,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,cAAc,CACrB,KAA8C,EAC9C,WAAwC;IAExC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC3D,MAAM,MAAM,GAAgC,EAAE,CAAC;IAE/C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAA8B;YACtC,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,GAAG,EAAE;gBACH,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,IAAI,EAAE,UAAU,CAAC,IAAI;aACtB;YACD,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YACvF,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC;SAC1C,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAA8B;gBACxC,GAAG,OAAO;gBACV,GAAG,UAAU,CAAC,KAAK,CAAC;gBACpB,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE;gBAC1B,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,GAAG,KAAK,CAAC,GAAG;oBACZ,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE;iBACnD;gBACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ;gBACxE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI;gBACxD,KAAK,EAAE;oBACL,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;oBACxB,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;iBACvB;gBACD,IAAI,EAAE;oBACJ,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;oBACvB,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;iBACtB;gBACD,QAAQ,EAAE;oBACR,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAC1B;aACF,CAAC;YACF,IAAI,GAAG;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACvC,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CACrB,KAA8C,EAC9C,SAA0C;IAE1C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAqC,CAAC;IAC3D,MAAM,MAAM,GAAgC,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC;QAC9D,MAAM,IAAI,GAA8B;YACtC,EAAE,EAAE,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,KAAK,MAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE;YACxG,MAAM;YACN,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,MAAM;YACN,SAAS,EAAE,MAAM;YACjB,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;SACxC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,MAAM,GAA8B;gBACxC,GAAG,OAAO;gBACV,GAAG,UAAU,CAAC,KAAK,CAAC;gBACpB,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE;gBAC1B,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;gBACtC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;gBACjF,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;gBACtC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;gBACjF,QAAQ,EAAE;oBACR,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;oBAC3B,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAC1B;aACF,CAAC;YACF,IAAI,GAAG;gBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,KAAK,IAAI,CAAC;gBAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACvC,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,GAAG;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAqE,EACrE,YAAsD,EAAE;IAExD,OAAO;QACL,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;QACvC,GAAG,EAAE,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,GAAG;QACpC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;QACvC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ;QACnD,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;QAC1C,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;QAC1C,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM;QAC7C,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;QACvC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/D,WAAW,EAAE,SAAS,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW;QAC5D,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ;QACnD,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;QAC1C,QAAQ,EAAE,UAAU,CAClB,SAAS,CAAC,QAAQ;YAChB,CAAC,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CACzE;QACD,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;QAC/D,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;QAClE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5D,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,IAAI,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iCAAiC,CAC/C,KAAoF;IAEpF,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC;QAChD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,yBAAyB,CAAC,KAA0B,CAAC,CAAC;IAC1D,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAoF,EACpF,KAAkC;IAElC,MAAM,oBAAoB,GAAG,2BAA2B,CACtD,iCAAiC,CAAC,KAAY,CAAC,EAC/C,KAAK,EAAE,UAAU,CAClB,CAAC;IACF,MAAM,UAAU,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAEnE,OAAO;QACL,OAAO,EAAE,+BAA+B;QACxC,UAAU,EAAE,oBAAoB;QAChC,KAAK,EAAE;YACL,MAAM,EAAE,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC;YACxD,OAAO,EAAE,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC;YAC3D,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC;YAC/D,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC;YACnE,EAAE,EAAE,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC;YAC/B,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,CAAC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,QAA4D,EAC5D,KAAqF;IAErF,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,uBAAuB,CAC5B,KAAK;YACF,QAAQ,CAAC,UAGI;YACb,EAA8B,EACjC,QAAQ,CACT,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAG,QAAiC,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK;QACtB,CAAC,CAAC,iCAAiC,CAAC,KAAK,CAAC;QAC1C,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC;IAE5B,OAAO,uBAAuB,CAAC,UAAU,EAAE;QACzC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM;QACjC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO;QACnC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;QAC/B,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;QAC/B,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE;QACzB,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,QAA+B,EAC/B,KAAc;IAEd,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,KAAqC,EACrC,KAAkF;IAElF,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAA2B,CAAC,CAAC,CAAC,KAAK,CAAC;IACnF,OAAO,4BAA4B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,QAA+B;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,QAA+B;IAE/B,OAAO,MAAM,CAAC,WAAW,CACvB,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC"}
package/lib/esm/index.js CHANGED
@@ -16,21 +16,21 @@ export * from "./ui/index.js";
16
16
  * @const VERSION
17
17
  * @memberOf module:ui-decorators
18
18
  */
19
- export const VERSION = "0.16.1";
19
+ export const VERSION = "0.16.2";
20
20
  /**
21
21
  * @description Represents the current commit hash of the module build.
22
22
  * @summary Stores the current git commit hash for the package. The build replaces
23
23
  * the placeholder with the actual commit hash at publish time.
24
24
  * @const COMMIT
25
25
  */
26
- export const COMMIT = "4889499";
26
+ export const COMMIT = "0f1d008";
27
27
  /**
28
28
  * @description Represents the full version string of the module.
29
29
  * @summary Stores the semver version and commit hash for the package.
30
30
  * The build replaces the placeholder with the actual `<version>-<commit>` value at publish time.
31
31
  * @const FULL_VERSION
32
32
  */
33
- export const FULL_VERSION = "0.16.1-4889499";
33
+ export const FULL_VERSION = "0.16.2-0f1d008";
34
34
  export const PACKAGE_NAME = "@decaf-ts/ui-decorators";
35
35
  Metadata.registerLibrary(PACKAGE_NAME, VERSION);
36
36
  //# sourceMappingURL=index.js.map
@@ -59,10 +59,12 @@ export type GraphPortMetadata = {
59
59
  connectionRules?: GraphConnectionRule;
60
60
  visible?: boolean;
61
61
  handle?: string;
62
+ expand?: boolean;
62
63
  metadata?: Record<string, unknown>;
63
64
  };
64
65
  export type GraphPortDefinition = {
65
66
  property: string;
67
+ path?: string;
66
68
  direction: PortDirection;
67
69
  name: string;
68
70
  label: string;
@@ -75,6 +77,9 @@ export type GraphPortDefinition = {
75
77
  validation?: Record<string, any>;
76
78
  graph?: GraphPortMetadata;
77
79
  connectionRules?: GraphConnectionRule;
80
+ composite?: boolean;
81
+ children?: GraphPortDefinition[];
82
+ model?: string;
78
83
  };
79
84
  export type GraphNodeDefinition = {
80
85
  name: string;
@@ -59,10 +59,12 @@ export type GraphPortMetadata = {
59
59
  connectionRules?: GraphConnectionRule;
60
60
  visible?: boolean;
61
61
  handle?: string;
62
+ expand?: boolean;
62
63
  metadata?: Record<string, unknown>;
63
64
  };
64
65
  export type GraphPortDefinition = {
65
66
  property: string;
67
+ path?: string;
66
68
  direction: PortDirection;
67
69
  name: string;
68
70
  label: string;
@@ -75,6 +77,9 @@ export type GraphPortDefinition = {
75
77
  validation?: Record<string, any>;
76
78
  graph?: GraphPortMetadata;
77
79
  connectionRules?: GraphConnectionRule;
80
+ composite?: boolean;
81
+ children?: GraphPortDefinition[];
82
+ model?: string;
78
83
  };
79
84
  export type GraphNodeDefinition = {
80
85
  name: string;
@@ -1,6 +1,7 @@
1
1
  import "./overrides";
2
2
  export * from "./constants.d.cts";
3
3
  export * from "./decorators.d.cts";
4
+ export * from "./snapshot.d.cts";
4
5
  export * from "./reader.d.cts";
5
6
  export * from "./types.d.cts";
6
7
  export * from "./overrides/index.d.cts";
@@ -1,6 +1,7 @@
1
1
  import "./overrides";
2
2
  export * from "./constants.d.mts";
3
3
  export * from "./decorators.d.mts";
4
+ export * from "./snapshot.d.mts";
4
5
  export * from "./reader.d.mts";
5
6
  export * from "./types.d.mts";
6
7
  export * from "./overrides/index.d.mts";
@@ -8,6 +8,9 @@ export declare function graphWorkflowMetadataOf<M extends Model>(model: GraphMod
8
8
  export declare function graphPortMetadataOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortMetadata | undefined;
9
9
  export declare function graphPortDefinitionOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortDefinition | undefined;
10
10
  export declare function graphPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
+ export declare function graphLeafPortsOf(ports: GraphPortDefinition[]): GraphPortDefinition[];
12
+ export declare function graphWorkflowInputLeafPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
13
+ export declare function graphWorkflowOutputLeafPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
14
  export declare function graphDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphNodeDefinition;
12
15
  export declare function graphWorkflowDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowDefinition;
13
16
  export {};
@@ -8,6 +8,9 @@ export declare function graphWorkflowMetadataOf<M extends Model>(model: GraphMod
8
8
  export declare function graphPortMetadataOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortMetadata | undefined;
9
9
  export declare function graphPortDefinitionOf<M extends Model>(model: GraphModelLike<M>, property: keyof M | string): GraphPortDefinition | undefined;
10
10
  export declare function graphPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
+ export declare function graphLeafPortsOf(ports: GraphPortDefinition[]): GraphPortDefinition[];
12
+ export declare function graphWorkflowInputLeafPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
13
+ export declare function graphWorkflowOutputLeafPortsOf<M extends Model>(model: GraphModelLike<M>): GraphPortDefinition[];
11
14
  export declare function graphDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphNodeDefinition;
12
15
  export declare function graphWorkflowDefinitionOf<M extends Model>(model: GraphModelLike<M>): GraphWorkflowDefinition;
13
16
  export {};
@@ -0,0 +1,106 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { GraphPortDefinition, GraphWorkflowDefinition, GraphWorkflowMetadata, GraphWorkflowNodeMetadata, GraphWorkflowRelationMetadata } from "./constants.d.cts";
4
+ type GraphModelLike<M extends Model = Model> = Constructor<M> | M;
5
+ export declare const GRAPH_WORKFLOW_SNAPSHOT_VERSION: 1;
6
+ export type GraphWorkflowSnapshotReference = {
7
+ id?: string;
8
+ kind?: string;
9
+ tag?: string;
10
+ path?: string;
11
+ property?: string;
12
+ };
13
+ export type GraphWorkflowSnapshotPosition = {
14
+ x: number;
15
+ y: number;
16
+ };
17
+ export type GraphWorkflowSnapshotSize = {
18
+ width?: number;
19
+ height?: number;
20
+ };
21
+ export type GraphWorkflowSnapshotPortState = {
22
+ expanded?: boolean;
23
+ value?: unknown;
24
+ metadata?: Record<string, unknown>;
25
+ };
26
+ export type GraphWorkflowSnapshotValue = {
27
+ path: string;
28
+ value?: unknown;
29
+ label?: string;
30
+ type?: string;
31
+ required?: boolean;
32
+ model?: string;
33
+ metadata?: Record<string, unknown>;
34
+ };
35
+ export type GraphWorkflowSnapshotNode = {
36
+ id: string;
37
+ ref?: GraphWorkflowSnapshotReference;
38
+ label?: string;
39
+ kind?: string;
40
+ position?: GraphWorkflowSnapshotPosition;
41
+ size?: GraphWorkflowSnapshotSize;
42
+ expanded?: boolean;
43
+ ports?: Record<string, GraphWorkflowSnapshotPortState>;
44
+ data?: Record<string, unknown>;
45
+ metadata?: Record<string, unknown>;
46
+ };
47
+ export type GraphWorkflowSnapshotEdge = {
48
+ id: string;
49
+ source: string;
50
+ sourceRef?: string;
51
+ sourcePort?: string;
52
+ target: string;
53
+ targetRef?: string;
54
+ targetPort?: string;
55
+ label?: string;
56
+ metadata?: Record<string, unknown>;
57
+ };
58
+ export type GraphWorkflowSnapshotDefinition = {
59
+ name: string;
60
+ tag: string;
61
+ kind: string;
62
+ category?: string;
63
+ color?: string;
64
+ group?: string;
65
+ height?: number;
66
+ icon?: string;
67
+ labels: string[];
68
+ maxChildren?: number;
69
+ minWidth?: number;
70
+ width?: number;
71
+ metadata?: GraphWorkflowMetadata;
72
+ inputs: GraphPortDefinition[];
73
+ outputs: GraphPortDefinition[];
74
+ nodes: GraphWorkflowNodeMetadata[];
75
+ relations: GraphWorkflowRelationMetadata[];
76
+ };
77
+ export type GraphWorkflowSnapshotState = {
78
+ inputs: GraphWorkflowSnapshotValue[];
79
+ outputs: GraphWorkflowSnapshotValue[];
80
+ nodes: GraphWorkflowSnapshotNode[];
81
+ edges: GraphWorkflowSnapshotEdge[];
82
+ ui: Record<string, unknown>;
83
+ metadata: Record<string, unknown>;
84
+ };
85
+ export type GraphWorkflowSnapshot = {
86
+ version: typeof GRAPH_WORKFLOW_SNAPSHOT_VERSION;
87
+ definition: GraphWorkflowSnapshotDefinition;
88
+ state: GraphWorkflowSnapshotState;
89
+ };
90
+ export type GraphWorkflowSnapshotInput = {
91
+ definition?: Partial<GraphWorkflowSnapshotDefinition>;
92
+ inputs?: GraphWorkflowSnapshotValue[] | Record<string, unknown>;
93
+ outputs?: GraphWorkflowSnapshotValue[] | Record<string, unknown>;
94
+ nodes?: GraphWorkflowSnapshotNode[];
95
+ edges?: GraphWorkflowSnapshotEdge[];
96
+ ui?: Record<string, unknown>;
97
+ metadata?: Record<string, unknown>;
98
+ };
99
+ export declare function graphWorkflowSnapshotDefinitionOf<M extends Model>(model: GraphModelLike<M> | GraphWorkflowDefinition | GraphWorkflowSnapshotDefinition): GraphWorkflowSnapshotDefinition;
100
+ export declare function graphWorkflowSnapshotOf<M extends Model>(model: GraphModelLike<M> | GraphWorkflowDefinition | GraphWorkflowSnapshotDefinition, input?: GraphWorkflowSnapshotInput): GraphWorkflowSnapshot;
101
+ export declare function graphWorkflowSnapshotRestore<M extends Model>(snapshot: GraphWorkflowSnapshot | GraphWorkflowSnapshotInput, model?: GraphModelLike<M> | GraphWorkflowDefinition | GraphWorkflowSnapshotDefinition): GraphWorkflowSnapshot;
102
+ export declare function graphWorkflowSnapshotToJSON(snapshot: GraphWorkflowSnapshot, space?: number): string;
103
+ export declare function graphWorkflowSnapshotFromJSON(input: string | GraphWorkflowSnapshot, model?: GraphModelLike | GraphWorkflowDefinition | GraphWorkflowSnapshotDefinition): GraphWorkflowSnapshot;
104
+ export declare function graphWorkflowSnapshotInputValuesOf(snapshot: GraphWorkflowSnapshot): Record<string, unknown>;
105
+ export declare function graphWorkflowSnapshotOutputValuesOf(snapshot: GraphWorkflowSnapshot): Record<string, unknown>;
106
+ export {};