@ucdjs/pipelines-ui 0.0.1-beta.1

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.
Files changed (65) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +27 -0
  3. package/dist/components/detail/execution-result.d.mts +49 -0
  4. package/dist/components/detail/execution-result.mjs +366 -0
  5. package/dist/components/detail/version-selector.d.mts +21 -0
  6. package/dist/components/detail/version-selector.mjs +132 -0
  7. package/dist/components/graph/details.d.mts +14 -0
  8. package/dist/components/graph/details.mjs +369 -0
  9. package/dist/components/graph/filters.d.mts +14 -0
  10. package/dist/components/graph/filters.mjs +183 -0
  11. package/dist/components/graph/node-types.d.mts +10 -0
  12. package/dist/components/graph/node-types.mjs +13 -0
  13. package/dist/components/graph/nodes.d.mts +14 -0
  14. package/dist/components/graph/nodes.mjs +264 -0
  15. package/dist/components/graph/pipeline-graph.d.mts +15 -0
  16. package/dist/components/graph/pipeline-graph.mjs +241 -0
  17. package/dist/components/logs/execution-log-payload.d.mts +12 -0
  18. package/dist/components/logs/execution-log-payload.mjs +79 -0
  19. package/dist/components/logs/execution-log-table.d.mts +16 -0
  20. package/dist/components/logs/execution-log-table.mjs +121 -0
  21. package/dist/components/logs/execution-span-drawer.d.mts +16 -0
  22. package/dist/components/logs/execution-span-drawer.mjs +208 -0
  23. package/dist/components/logs/execution-waterfall.d.mts +18 -0
  24. package/dist/components/logs/execution-waterfall.mjs +354 -0
  25. package/dist/components/pipeline-sidebar.d.mts +6 -0
  26. package/dist/components/pipeline-sidebar.mjs +190 -0
  27. package/dist/components/status-badge.d.mts +11 -0
  28. package/dist/components/status-badge.mjs +50 -0
  29. package/dist/components/status-icon.d.mts +11 -0
  30. package/dist/components/status-icon.mjs +46 -0
  31. package/dist/hooks/index.d.mts +7 -0
  32. package/dist/hooks/index.mjs +8 -0
  33. package/dist/hooks/use-event-view.d.mts +19 -0
  34. package/dist/hooks/use-event-view.mjs +112 -0
  35. package/dist/hooks/use-execute.d.mts +20 -0
  36. package/dist/hooks/use-execute.mjs +68 -0
  37. package/dist/hooks/use-pipeline-file.d.mts +20 -0
  38. package/dist/hooks/use-pipeline-file.mjs +39 -0
  39. package/dist/hooks/use-pipeline-versions.d.mts +10 -0
  40. package/dist/hooks/use-pipeline-versions.mjs +137 -0
  41. package/dist/hooks/use-pipeline.d.mts +21 -0
  42. package/dist/hooks/use-pipeline.mjs +46 -0
  43. package/dist/hooks/use-pipelines.d.mts +26 -0
  44. package/dist/hooks/use-pipelines.mjs +38 -0
  45. package/dist/index.d.mts +31 -0
  46. package/dist/index.mjs +29 -0
  47. package/dist/lib/adapter.d.mts +26 -0
  48. package/dist/lib/adapter.mjs +74 -0
  49. package/dist/lib/colors.d.mts +7 -0
  50. package/dist/lib/colors.mjs +15 -0
  51. package/dist/lib/execution-logs.d.mts +19 -0
  52. package/dist/lib/execution-logs.mjs +74 -0
  53. package/dist/lib/format-time.d.mts +4 -0
  54. package/dist/lib/format-time.mjs +7 -0
  55. package/dist/lib/index.d.mts +5 -0
  56. package/dist/lib/index.mjs +6 -0
  57. package/dist/lib/layout.d.mts +8 -0
  58. package/dist/lib/layout.mjs +71 -0
  59. package/dist/lib/pipeline-utils.d.mts +9 -0
  60. package/dist/lib/pipeline-utils.mjs +49 -0
  61. package/dist/lib/utils.d.mts +6 -0
  62. package/dist/lib/utils.mjs +10 -0
  63. package/dist/styles/globals.css +3 -0
  64. package/dist/types.d.mts +143 -0
  65. package/package.json +95 -0
@@ -0,0 +1,369 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
+
4
+ //#region src/components/graph/details.tsx
5
+ const containerStyle = {
6
+ width: "280px",
7
+ backgroundColor: "#ffffff",
8
+ borderLeft: "1px solid #e5e7eb",
9
+ display: "flex",
10
+ flexDirection: "column",
11
+ height: "100%",
12
+ boxShadow: "-2px 0 8px rgba(0,0,0,0.05)",
13
+ fontFamily: "system-ui, -apple-system, sans-serif"
14
+ };
15
+ const headerStyle = {
16
+ display: "flex",
17
+ alignItems: "center",
18
+ justifyContent: "space-between",
19
+ padding: "12px",
20
+ borderBottom: "1px solid #e5e7eb"
21
+ };
22
+ const closeButtonStyle = {
23
+ padding: "4px",
24
+ color: "#9ca3af",
25
+ background: "none",
26
+ border: "none",
27
+ borderRadius: "4px",
28
+ cursor: "pointer",
29
+ display: "flex",
30
+ alignItems: "center",
31
+ justifyContent: "center"
32
+ };
33
+ const contentStyle = {
34
+ flex: 1,
35
+ padding: "12px",
36
+ overflowY: "auto"
37
+ };
38
+ const detailsContainerStyle = {
39
+ display: "flex",
40
+ flexDirection: "column",
41
+ gap: "12px"
42
+ };
43
+ const detailRowStyle = {
44
+ display: "flex",
45
+ flexDirection: "column",
46
+ gap: "2px"
47
+ };
48
+ const detailLabelStyle = {
49
+ fontSize: "11px",
50
+ fontWeight: 500,
51
+ color: "#6b7280",
52
+ textTransform: "uppercase",
53
+ letterSpacing: "0.025em"
54
+ };
55
+ const detailValueStyle = {
56
+ fontSize: "13px",
57
+ color: "#111827",
58
+ fontFamily: "ui-monospace, monospace",
59
+ wordBreak: "break-all"
60
+ };
61
+ const badgeStyleCache = /* @__PURE__ */ new Map();
62
+ function getBadgeStyle(type) {
63
+ let cached = badgeStyleCache.get(type);
64
+ if (!cached) {
65
+ const c = {
66
+ source: {
67
+ bg: "#eef2ff",
68
+ color: "#4f46e5"
69
+ },
70
+ file: {
71
+ bg: "#ecfdf5",
72
+ color: "#059669"
73
+ },
74
+ route: {
75
+ bg: "#fffbeb",
76
+ color: "#d97706"
77
+ },
78
+ artifact: {
79
+ bg: "#f5f3ff",
80
+ color: "#7c3aed"
81
+ },
82
+ output: {
83
+ bg: "#f0f9ff",
84
+ color: "#0284c7"
85
+ }
86
+ }[type] ?? {
87
+ bg: "#f3f4f6",
88
+ color: "#6b7280"
89
+ };
90
+ cached = {
91
+ padding: "2px 8px",
92
+ fontSize: "11px",
93
+ fontWeight: 600,
94
+ borderRadius: "4px",
95
+ textTransform: "uppercase",
96
+ letterSpacing: "0.025em",
97
+ backgroundColor: c.bg,
98
+ color: c.color
99
+ };
100
+ badgeStyleCache.set(type, cached);
101
+ }
102
+ return cached;
103
+ }
104
+ function DetailRow(t0) {
105
+ const $ = c(7);
106
+ const { label, value } = t0;
107
+ let t1;
108
+ if ($[0] !== label) {
109
+ t1 = /* @__PURE__ */ jsx("span", {
110
+ style: detailLabelStyle,
111
+ children: label
112
+ });
113
+ $[0] = label;
114
+ $[1] = t1;
115
+ } else t1 = $[1];
116
+ let t2;
117
+ if ($[2] !== value) {
118
+ t2 = /* @__PURE__ */ jsx("span", {
119
+ style: detailValueStyle,
120
+ children: value
121
+ });
122
+ $[2] = value;
123
+ $[3] = t2;
124
+ } else t2 = $[3];
125
+ let t3;
126
+ if ($[4] !== t1 || $[5] !== t2) {
127
+ t3 = /* @__PURE__ */ jsxs("div", {
128
+ style: detailRowStyle,
129
+ children: [t1, t2]
130
+ });
131
+ $[4] = t1;
132
+ $[5] = t2;
133
+ $[6] = t3;
134
+ } else t3 = $[6];
135
+ return t3;
136
+ }
137
+ function NodeDetails(t0) {
138
+ const $ = c(29);
139
+ const { node } = t0;
140
+ switch (node.type) {
141
+ case "source": {
142
+ let t1;
143
+ if ($[0] !== node.version) {
144
+ t1 = /* @__PURE__ */ jsx(DetailRow, {
145
+ label: "Version",
146
+ value: node.version
147
+ });
148
+ $[0] = node.version;
149
+ $[1] = t1;
150
+ } else t1 = $[1];
151
+ return t1;
152
+ }
153
+ case "file": {
154
+ let t1;
155
+ if ($[2] !== node.file.name) {
156
+ t1 = /* @__PURE__ */ jsx(DetailRow, {
157
+ label: "Name",
158
+ value: node.file.name
159
+ });
160
+ $[2] = node.file.name;
161
+ $[3] = t1;
162
+ } else t1 = $[3];
163
+ let t2;
164
+ if ($[4] !== node.file.path) {
165
+ t2 = /* @__PURE__ */ jsx(DetailRow, {
166
+ label: "Path",
167
+ value: node.file.path
168
+ });
169
+ $[4] = node.file.path;
170
+ $[5] = t2;
171
+ } else t2 = $[5];
172
+ let t3;
173
+ if ($[6] !== node.file.dir) {
174
+ t3 = /* @__PURE__ */ jsx(DetailRow, {
175
+ label: "Directory",
176
+ value: node.file.dir
177
+ });
178
+ $[6] = node.file.dir;
179
+ $[7] = t3;
180
+ } else t3 = $[7];
181
+ let t4;
182
+ if ($[8] !== node.file.ext) {
183
+ t4 = /* @__PURE__ */ jsx(DetailRow, {
184
+ label: "Extension",
185
+ value: node.file.ext
186
+ });
187
+ $[8] = node.file.ext;
188
+ $[9] = t4;
189
+ } else t4 = $[9];
190
+ let t5;
191
+ if ($[10] !== node.file.version) {
192
+ t5 = /* @__PURE__ */ jsx(DetailRow, {
193
+ label: "Version",
194
+ value: node.file.version
195
+ });
196
+ $[10] = node.file.version;
197
+ $[11] = t5;
198
+ } else t5 = $[11];
199
+ let t6;
200
+ if ($[12] !== t1 || $[13] !== t2 || $[14] !== t3 || $[15] !== t4 || $[16] !== t5) {
201
+ t6 = /* @__PURE__ */ jsxs(Fragment, { children: [
202
+ t1,
203
+ t2,
204
+ t3,
205
+ t4,
206
+ t5
207
+ ] });
208
+ $[12] = t1;
209
+ $[13] = t2;
210
+ $[14] = t3;
211
+ $[15] = t4;
212
+ $[16] = t5;
213
+ $[17] = t6;
214
+ } else t6 = $[17];
215
+ return t6;
216
+ }
217
+ case "route": {
218
+ let t1;
219
+ if ($[18] !== node.routeId) {
220
+ t1 = /* @__PURE__ */ jsx(DetailRow, {
221
+ label: "Route ID",
222
+ value: node.routeId
223
+ });
224
+ $[18] = node.routeId;
225
+ $[19] = t1;
226
+ } else t1 = $[19];
227
+ return t1;
228
+ }
229
+ case "artifact": {
230
+ let t1;
231
+ if ($[20] !== node.artifactId) {
232
+ t1 = /* @__PURE__ */ jsx(DetailRow, {
233
+ label: "Artifact ID",
234
+ value: node.artifactId
235
+ });
236
+ $[20] = node.artifactId;
237
+ $[21] = t1;
238
+ } else t1 = $[21];
239
+ return t1;
240
+ }
241
+ case "output": {
242
+ const t1 = String(node.outputIndex);
243
+ let t2;
244
+ if ($[22] !== t1) {
245
+ t2 = /* @__PURE__ */ jsx(DetailRow, {
246
+ label: "Output Index",
247
+ value: t1
248
+ });
249
+ $[22] = t1;
250
+ $[23] = t2;
251
+ } else t2 = $[23];
252
+ let t3;
253
+ if ($[24] !== node.property) {
254
+ t3 = node.property && /* @__PURE__ */ jsx(DetailRow, {
255
+ label: "Property",
256
+ value: node.property
257
+ });
258
+ $[24] = node.property;
259
+ $[25] = t3;
260
+ } else t3 = $[25];
261
+ let t4;
262
+ if ($[26] !== t2 || $[27] !== t3) {
263
+ t4 = /* @__PURE__ */ jsxs(Fragment, { children: [t2, t3] });
264
+ $[26] = t2;
265
+ $[27] = t3;
266
+ $[28] = t4;
267
+ } else t4 = $[28];
268
+ return t4;
269
+ }
270
+ }
271
+ }
272
+ const closeIcon = /* @__PURE__ */ jsx("svg", {
273
+ width: "16",
274
+ height: "16",
275
+ fill: "none",
276
+ viewBox: "0 0 24 24",
277
+ stroke: "currentColor",
278
+ children: /* @__PURE__ */ jsx("path", {
279
+ strokeLinecap: "round",
280
+ strokeLinejoin: "round",
281
+ strokeWidth: 2,
282
+ d: "M6 18L18 6M6 6l12 12"
283
+ })
284
+ });
285
+ function PipelineGraphDetails(t0) {
286
+ const $ = c(20);
287
+ const { node, onClose } = t0;
288
+ if (!node) return null;
289
+ let t1;
290
+ if ($[0] !== node.type) {
291
+ t1 = getBadgeStyle(node.type);
292
+ $[0] = node.type;
293
+ $[1] = t1;
294
+ } else t1 = $[1];
295
+ let t2;
296
+ if ($[2] !== node.type || $[3] !== t1) {
297
+ t2 = /* @__PURE__ */ jsx("span", {
298
+ style: t1,
299
+ children: node.type
300
+ });
301
+ $[2] = node.type;
302
+ $[3] = t1;
303
+ $[4] = t2;
304
+ } else t2 = $[4];
305
+ let t3;
306
+ if ($[5] !== onClose) {
307
+ t3 = /* @__PURE__ */ jsx("button", {
308
+ type: "button",
309
+ onClick: onClose,
310
+ style: closeButtonStyle,
311
+ "aria-label": "Close details",
312
+ children: closeIcon
313
+ });
314
+ $[5] = onClose;
315
+ $[6] = t3;
316
+ } else t3 = $[6];
317
+ let t4;
318
+ if ($[7] !== t2 || $[8] !== t3) {
319
+ t4 = /* @__PURE__ */ jsxs("div", {
320
+ style: headerStyle,
321
+ children: [t2, t3]
322
+ });
323
+ $[7] = t2;
324
+ $[8] = t3;
325
+ $[9] = t4;
326
+ } else t4 = $[9];
327
+ let t5;
328
+ if ($[10] !== node.id) {
329
+ t5 = /* @__PURE__ */ jsx(DetailRow, {
330
+ label: "Node ID",
331
+ value: node.id
332
+ });
333
+ $[10] = node.id;
334
+ $[11] = t5;
335
+ } else t5 = $[11];
336
+ let t6;
337
+ if ($[12] !== node) {
338
+ t6 = /* @__PURE__ */ jsx(NodeDetails, { node });
339
+ $[12] = node;
340
+ $[13] = t6;
341
+ } else t6 = $[13];
342
+ let t7;
343
+ if ($[14] !== t5 || $[15] !== t6) {
344
+ t7 = /* @__PURE__ */ jsx("div", {
345
+ style: contentStyle,
346
+ children: /* @__PURE__ */ jsxs("div", {
347
+ style: detailsContainerStyle,
348
+ children: [t5, t6]
349
+ })
350
+ });
351
+ $[14] = t5;
352
+ $[15] = t6;
353
+ $[16] = t7;
354
+ } else t7 = $[16];
355
+ let t8;
356
+ if ($[17] !== t4 || $[18] !== t7) {
357
+ t8 = /* @__PURE__ */ jsxs("div", {
358
+ style: containerStyle,
359
+ children: [t4, t7]
360
+ });
361
+ $[17] = t4;
362
+ $[18] = t7;
363
+ $[19] = t8;
364
+ } else t8 = $[19];
365
+ return t8;
366
+ }
367
+
368
+ //#endregion
369
+ export { PipelineGraphDetails };
@@ -0,0 +1,14 @@
1
+ import * as react from "react";
2
+ import { PipelineGraphNodeType } from "@ucdjs/pipelines-core";
3
+
4
+ //#region src/components/graph/filters.d.ts
5
+ interface PipelineGraphFiltersProps {
6
+ visibleTypes: Set<PipelineGraphNodeType>;
7
+ onToggleType: (type: PipelineGraphNodeType) => void;
8
+ }
9
+ declare function PipelineGraphFilters({
10
+ visibleTypes,
11
+ onToggleType
12
+ }: PipelineGraphFiltersProps): react.JSX.Element;
13
+ //#endregion
14
+ export { PipelineGraphFilters, PipelineGraphFiltersProps };
@@ -0,0 +1,183 @@
1
+ import { c } from "react/compiler-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { memo } from "react";
4
+
5
+ //#region src/components/graph/filters.tsx
6
+ const nodeTypeLabels = {
7
+ source: {
8
+ label: "Source",
9
+ color: "#6366f1"
10
+ },
11
+ file: {
12
+ label: "File",
13
+ color: "#10b981"
14
+ },
15
+ route: {
16
+ label: "Route",
17
+ color: "#f59e0b"
18
+ },
19
+ artifact: {
20
+ label: "Artifact",
21
+ color: "#8b5cf6"
22
+ },
23
+ output: {
24
+ label: "Output",
25
+ color: "#0ea5e9"
26
+ }
27
+ };
28
+ const allNodeTypes = [
29
+ "source",
30
+ "file",
31
+ "route",
32
+ "artifact",
33
+ "output"
34
+ ];
35
+ const containerStyle = {
36
+ display: "flex",
37
+ alignItems: "center",
38
+ gap: "6px",
39
+ padding: "8px 12px",
40
+ backgroundColor: "#ffffff",
41
+ borderRadius: "10px",
42
+ boxShadow: "0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06)",
43
+ fontFamily: "system-ui, -apple-system, sans-serif",
44
+ border: "1px solid #e5e7eb"
45
+ };
46
+ const labelStyle = {
47
+ fontSize: "11px",
48
+ fontWeight: 500,
49
+ color: "#6b7280",
50
+ marginRight: "4px",
51
+ textTransform: "uppercase",
52
+ letterSpacing: "0.05em"
53
+ };
54
+ const buttonStyleCache = /* @__PURE__ */ new Map();
55
+ const dotStyleCache = /* @__PURE__ */ new Map();
56
+ function getButtonStyle(color, isVisible) {
57
+ const key = `${color}-${isVisible}`;
58
+ let cached = buttonStyleCache.get(key);
59
+ if (!cached) {
60
+ cached = {
61
+ display: "flex",
62
+ alignItems: "center",
63
+ gap: "6px",
64
+ padding: "4px 10px",
65
+ fontSize: "12px",
66
+ fontWeight: 500,
67
+ borderRadius: "6px",
68
+ border: "none",
69
+ cursor: "pointer",
70
+ transition: "all 0.15s ease",
71
+ backgroundColor: isVisible ? `${color}15` : "#f3f4f6",
72
+ color: isVisible ? color : "#9ca3af",
73
+ opacity: isVisible ? 1 : .6
74
+ };
75
+ buttonStyleCache.set(key, cached);
76
+ }
77
+ return cached;
78
+ }
79
+ function getDotStyle(color, isVisible) {
80
+ const key = `${color}-${isVisible}`;
81
+ let cached = dotStyleCache.get(key);
82
+ if (!cached) {
83
+ cached = {
84
+ width: "8px",
85
+ height: "8px",
86
+ borderRadius: "50%",
87
+ backgroundColor: color,
88
+ opacity: isVisible ? 1 : .3,
89
+ transition: "opacity 0.15s ease"
90
+ };
91
+ dotStyleCache.set(key, cached);
92
+ }
93
+ return cached;
94
+ }
95
+ const FilterButton = memo((t0) => {
96
+ const $ = c(17);
97
+ const { type, config, isVisible, onToggle } = t0;
98
+ let t1;
99
+ if ($[0] !== onToggle || $[1] !== type) {
100
+ t1 = () => {
101
+ onToggle(type);
102
+ };
103
+ $[0] = onToggle;
104
+ $[1] = type;
105
+ $[2] = t1;
106
+ } else t1 = $[2];
107
+ const handleClick = t1;
108
+ let t2;
109
+ if ($[3] !== config.color || $[4] !== isVisible) {
110
+ t2 = getButtonStyle(config.color, isVisible);
111
+ $[3] = config.color;
112
+ $[4] = isVisible;
113
+ $[5] = t2;
114
+ } else t2 = $[5];
115
+ const t3 = isVisible ? `Hide ${config.label} nodes` : `Show ${config.label} nodes`;
116
+ let t4;
117
+ if ($[6] !== config.color || $[7] !== isVisible) {
118
+ t4 = getDotStyle(config.color, isVisible);
119
+ $[6] = config.color;
120
+ $[7] = isVisible;
121
+ $[8] = t4;
122
+ } else t4 = $[8];
123
+ let t5;
124
+ if ($[9] !== t4) {
125
+ t5 = /* @__PURE__ */ jsx("span", { style: t4 });
126
+ $[9] = t4;
127
+ $[10] = t5;
128
+ } else t5 = $[10];
129
+ let t6;
130
+ if ($[11] !== config.label || $[12] !== handleClick || $[13] !== t2 || $[14] !== t3 || $[15] !== t5) {
131
+ t6 = /* @__PURE__ */ jsxs("button", {
132
+ type: "button",
133
+ onClick: handleClick,
134
+ style: t2,
135
+ title: t3,
136
+ children: [t5, config.label]
137
+ });
138
+ $[11] = config.label;
139
+ $[12] = handleClick;
140
+ $[13] = t2;
141
+ $[14] = t3;
142
+ $[15] = t5;
143
+ $[16] = t6;
144
+ } else t6 = $[16];
145
+ return t6;
146
+ });
147
+ function PipelineGraphFilters(t0) {
148
+ const $ = c(6);
149
+ const { visibleTypes, onToggleType } = t0;
150
+ let t1;
151
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
152
+ t1 = /* @__PURE__ */ jsx("span", {
153
+ style: labelStyle,
154
+ children: "Show:"
155
+ });
156
+ $[0] = t1;
157
+ } else t1 = $[0];
158
+ let t2;
159
+ if ($[1] !== onToggleType || $[2] !== visibleTypes) {
160
+ t2 = allNodeTypes.map((type) => /* @__PURE__ */ jsx(FilterButton, {
161
+ type,
162
+ config: nodeTypeLabels[type],
163
+ isVisible: visibleTypes.has(type),
164
+ onToggle: onToggleType
165
+ }, type));
166
+ $[1] = onToggleType;
167
+ $[2] = visibleTypes;
168
+ $[3] = t2;
169
+ } else t2 = $[3];
170
+ let t3;
171
+ if ($[4] !== t2) {
172
+ t3 = /* @__PURE__ */ jsxs("div", {
173
+ style: containerStyle,
174
+ children: [t1, t2]
175
+ });
176
+ $[4] = t2;
177
+ $[5] = t3;
178
+ } else t3 = $[5];
179
+ return t3;
180
+ }
181
+
182
+ //#endregion
183
+ export { PipelineGraphFilters };
@@ -0,0 +1,10 @@
1
+ //#region src/components/graph/node-types.d.ts
2
+ declare const nodeTypes: {
3
+ readonly source: any;
4
+ readonly file: any;
5
+ readonly route: any;
6
+ readonly artifact: any;
7
+ readonly output: any;
8
+ };
9
+ //#endregion
10
+ export { nodeTypes };
@@ -0,0 +1,13 @@
1
+ import { ArtifactNode, FileNode, OutputNode, RouteNode, SourceNode } from "./nodes.mjs";
2
+
3
+ //#region src/components/graph/node-types.ts
4
+ const nodeTypes = {
5
+ source: SourceNode,
6
+ file: FileNode,
7
+ route: RouteNode,
8
+ artifact: ArtifactNode,
9
+ output: OutputNode
10
+ };
11
+
12
+ //#endregion
13
+ export { nodeTypes };
@@ -0,0 +1,14 @@
1
+ import { PipelineGraphNode } from "@ucdjs/pipelines-core";
2
+
3
+ //#region src/components/graph/nodes.d.ts
4
+ interface PipelineNodeData {
5
+ pipelineNode: PipelineGraphNode;
6
+ label: string;
7
+ }
8
+ declare const SourceNode: any;
9
+ declare const FileNode: any;
10
+ declare const RouteNode: any;
11
+ declare const ArtifactNode: any;
12
+ declare const OutputNode: any;
13
+ //#endregion
14
+ export { ArtifactNode, FileNode, OutputNode, PipelineNodeData, RouteNode, SourceNode };