@kong-ui-public/entities-plugins 9.44.2 → 9.45.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.
Files changed (32) hide show
  1. package/dist/entities-plugins.es.js +6927 -6392
  2. package/dist/entities-plugins.umd.js +38 -38
  3. package/dist/style.css +1 -1
  4. package/dist/types/components/free-form/Datakit/DatakitForm.vue.d.ts.map +1 -1
  5. package/dist/types/components/free-form/Datakit/composables.d.ts +1 -1
  6. package/dist/types/components/free-form/Datakit/composables.d.ts.map +1 -1
  7. package/dist/types/components/free-form/Datakit/flow-editor/FlowEditor.vue.d.ts +9 -0
  8. package/dist/types/components/free-form/Datakit/flow-editor/FlowEditor.vue.d.ts.map +1 -0
  9. package/dist/types/components/free-form/Datakit/flow-editor/modal/EditorMain.vue.d.ts +3 -3
  10. package/dist/types/components/free-form/Datakit/flow-editor/modal/EditorMain.vue.d.ts.map +1 -1
  11. package/dist/types/components/free-form/Datakit/flow-editor/node/FlowNode.vue.d.ts +3 -3
  12. package/dist/types/components/free-form/Datakit/flow-editor/node/FlowNode.vue.d.ts.map +1 -1
  13. package/dist/types/components/free-form/Datakit/flow-editor/node/NodeBadge.vue.d.ts.map +1 -1
  14. package/dist/types/components/free-form/Datakit/flow-editor/node/NodePanelItem.vue.d.ts +3 -3
  15. package/dist/types/components/free-form/Datakit/flow-editor/node/NodePanelItem.vue.d.ts.map +1 -1
  16. package/dist/types/components/free-form/Datakit/flow-editor/node/NodePropertiesPanel.vue.d.ts +3 -3
  17. package/dist/types/components/free-form/Datakit/flow-editor/node/NodePropertiesPanel.vue.d.ts.map +1 -1
  18. package/dist/types/components/free-form/Datakit/flow-editor/node/node.d.ts +8 -477
  19. package/dist/types/components/free-form/Datakit/flow-editor/node/node.d.ts.map +1 -1
  20. package/dist/types/components/free-form/Datakit/flow-editor/store/helpers.d.ts +31 -0
  21. package/dist/types/components/free-form/Datakit/flow-editor/store/helpers.d.ts.map +1 -0
  22. package/dist/types/components/free-form/Datakit/flow-editor/store/history.d.ts +17 -0
  23. package/dist/types/components/free-form/Datakit/flow-editor/store/history.d.ts.map +1 -0
  24. package/dist/types/components/free-form/Datakit/flow-editor/store/init.d.ts +21 -0
  25. package/dist/types/components/free-form/Datakit/flow-editor/store/init.d.ts.map +1 -0
  26. package/dist/types/components/free-form/Datakit/flow-editor/store/store.d.ts +441 -0
  27. package/dist/types/components/free-form/Datakit/flow-editor/store/store.d.ts.map +1 -0
  28. package/dist/types/components/free-form/Datakit/flow-editor/store/validation.d.ts +25 -0
  29. package/dist/types/components/free-form/Datakit/flow-editor/store/validation.d.ts.map +1 -0
  30. package/dist/types/components/free-form/Datakit/types.d.ts +84 -23
  31. package/dist/types/components/free-form/Datakit/types.d.ts.map +1 -1
  32. package/package.json +8 -8
@@ -0,0 +1,441 @@
1
+ import type { ConfigNode, ConfigNodeType, EdgeData, EdgeInstance, EdgeId, EditorState, FieldId, FieldName, NodePhase, NodeInstance, NodeId, NodeName, UINode } from '../../types';
2
+ export declare const provideEditorState: (configNodes: ConfigNode[], uiNodes: UINode[]) => {
3
+ state: import("vue").Ref<{
4
+ nodes: {
5
+ id: NodeId;
6
+ type: import("../../types").NodeType;
7
+ name: NodeName;
8
+ phase: NodePhase;
9
+ position: {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ expanded: {
14
+ input?: boolean | undefined;
15
+ output?: boolean | undefined;
16
+ };
17
+ fields: {
18
+ input: {
19
+ id: FieldId;
20
+ name: FieldName;
21
+ }[];
22
+ output: {
23
+ id: FieldId;
24
+ name: FieldName;
25
+ }[];
26
+ };
27
+ config?: Record<string, unknown> | undefined;
28
+ }[];
29
+ edges: {
30
+ id: EdgeId;
31
+ source: NodeId;
32
+ sourceField?: FieldId | undefined;
33
+ target: NodeId;
34
+ targetField?: FieldId | undefined;
35
+ }[];
36
+ }, EditorState | {
37
+ nodes: {
38
+ id: NodeId;
39
+ type: import("../../types").NodeType;
40
+ name: NodeName;
41
+ phase: NodePhase;
42
+ position: {
43
+ x: number;
44
+ y: number;
45
+ };
46
+ expanded: {
47
+ input?: boolean | undefined;
48
+ output?: boolean | undefined;
49
+ };
50
+ fields: {
51
+ input: {
52
+ id: FieldId;
53
+ name: FieldName;
54
+ }[];
55
+ output: {
56
+ id: FieldId;
57
+ name: FieldName;
58
+ }[];
59
+ };
60
+ config?: Record<string, unknown> | undefined;
61
+ }[];
62
+ edges: {
63
+ id: EdgeId;
64
+ source: NodeId;
65
+ sourceField?: FieldId | undefined;
66
+ target: NodeId;
67
+ targetField?: FieldId | undefined;
68
+ }[];
69
+ }>;
70
+ selection: import("vue").Ref<`node:${number}` | undefined, `node:${number}` | undefined>;
71
+ nodeMapById: import("vue").ComputedRef<Map<`node:${number}`, NodeInstance>>;
72
+ nodeMapByName: import("vue").ComputedRef<Map<NodeName, NodeInstance>>;
73
+ edgeMapById: import("vue").ComputedRef<Map<`edge:${number}`, EdgeInstance>>;
74
+ getNodeById: (id: NodeId) => NodeInstance | undefined;
75
+ getNodeByName: (name: NodeName) => NodeInstance | undefined;
76
+ getEdgeById: (id: EdgeId) => EdgeInstance | undefined;
77
+ selectedNode: import("vue").ComputedRef<NodeInstance | undefined>;
78
+ selectNode: (id?: NodeId) => void;
79
+ addNode: (payload: {
80
+ type: ConfigNodeType;
81
+ name?: NodeName;
82
+ phase?: NodePhase;
83
+ position?: {
84
+ x: number;
85
+ y: number;
86
+ };
87
+ fields?: {
88
+ input?: FieldName[];
89
+ output?: FieldName[];
90
+ };
91
+ config?: Record<string, unknown>;
92
+ }, commitNow?: boolean) => `node:${number}` | undefined;
93
+ removeNode: (nodeId: NodeId, commitNow?: boolean) => void;
94
+ renameNode: (nodeId: NodeId, newName: NodeName, commitNow?: boolean) => void;
95
+ moveNode: (nodeId: NodeId, position: {
96
+ x: number;
97
+ y: number;
98
+ }, commitNow?: boolean) => void;
99
+ toggleExpanded: (nodeId: NodeId, io: "input" | "output", value?: boolean, commitNow?: boolean) => void;
100
+ replaceConfig: (nodeId: NodeId, next: Record<string, unknown>, commitNow?: boolean) => void;
101
+ addField: (nodeId: NodeId, io: "input" | "output", name: FieldName, commitNow?: boolean) => void;
102
+ renameField: (nodeId: NodeId, fieldId: FieldId, newName: FieldName, commitNow?: boolean) => void;
103
+ removeField: (nodeId: NodeId, fieldId: FieldId, cascade?: boolean, commitNow?: boolean) => void;
104
+ connectEdge: (payload: EdgeData, commitNow?: boolean) => `edge:${number}` | undefined;
105
+ replaceConnection: (edgeId: EdgeId, next: EdgeData, commitNow?: boolean) => void;
106
+ disconnectEdge: (edgeId: EdgeId, commitNow?: boolean) => void;
107
+ toConfigNodes: () => ConfigNode[];
108
+ toUINodes: () => UINode[];
109
+ load: (nextConfig: ConfigNode[], nextUI: UINode[]) => void;
110
+ commit: (tag?: string, opts?: {
111
+ replace?: boolean;
112
+ } | undefined) => void;
113
+ undo: () => void;
114
+ redo: () => void;
115
+ canUndo: import("vue").ComputedRef<boolean>;
116
+ canRedo: import("vue").ComputedRef<boolean>;
117
+ clear: () => void;
118
+ reset: () => void;
119
+ requestNodes: import("vue").ComputedRef<{
120
+ id: `node:${number}`;
121
+ type: import("../../types").NodeType;
122
+ position: {
123
+ x: number;
124
+ y: number;
125
+ };
126
+ data: {
127
+ id: NodeId;
128
+ type: import("../../types").NodeType;
129
+ name: NodeName;
130
+ phase: NodePhase;
131
+ position: {
132
+ x: number;
133
+ y: number;
134
+ };
135
+ expanded: {
136
+ input?: boolean | undefined;
137
+ output?: boolean | undefined;
138
+ };
139
+ fields: {
140
+ input: {
141
+ id: FieldId;
142
+ name: FieldName;
143
+ }[];
144
+ output: {
145
+ id: FieldId;
146
+ name: FieldName;
147
+ }[];
148
+ };
149
+ config?: Record<string, unknown> | undefined;
150
+ };
151
+ }[]>;
152
+ requestEdges: import("vue").ComputedRef<{
153
+ id: `edge:${number}`;
154
+ source: `node:${number}`;
155
+ target: `node:${number}`;
156
+ sourceHandle: `field:${number}` | undefined;
157
+ targetHandle: `field:${number}` | undefined;
158
+ data: {
159
+ id: EdgeId;
160
+ source: NodeId;
161
+ sourceField?: FieldId | undefined;
162
+ target: NodeId;
163
+ targetField?: FieldId | undefined;
164
+ };
165
+ }[]>;
166
+ responseNodes: import("vue").ComputedRef<{
167
+ id: `node:${number}`;
168
+ type: import("../../types").NodeType;
169
+ position: {
170
+ x: number;
171
+ y: number;
172
+ };
173
+ data: {
174
+ id: NodeId;
175
+ type: import("../../types").NodeType;
176
+ name: NodeName;
177
+ phase: NodePhase;
178
+ position: {
179
+ x: number;
180
+ y: number;
181
+ };
182
+ expanded: {
183
+ input?: boolean | undefined;
184
+ output?: boolean | undefined;
185
+ };
186
+ fields: {
187
+ input: {
188
+ id: FieldId;
189
+ name: FieldName;
190
+ }[];
191
+ output: {
192
+ id: FieldId;
193
+ name: FieldName;
194
+ }[];
195
+ };
196
+ config?: Record<string, unknown> | undefined;
197
+ };
198
+ }[]>;
199
+ responseEdges: import("vue").ComputedRef<{
200
+ id: `edge:${number}`;
201
+ source: `node:${number}`;
202
+ target: `node:${number}`;
203
+ sourceHandle: `field:${number}` | undefined;
204
+ targetHandle: `field:${number}` | undefined;
205
+ data: {
206
+ id: EdgeId;
207
+ source: NodeId;
208
+ sourceField?: FieldId | undefined;
209
+ target: NodeId;
210
+ targetField?: FieldId | undefined;
211
+ };
212
+ }[]>;
213
+ isValidConnection: (edge: EdgeData) => boolean;
214
+ isValidVueFlowConnection: (conn: {
215
+ source?: string | null;
216
+ sourceHandle?: string | null;
217
+ target?: string | null;
218
+ targetHandle?: string | null;
219
+ }) => boolean;
220
+ validateGraph: () => import("./validation").ValidationResult;
221
+ }, useEditorState: () => {
222
+ state: import("vue").Ref<{
223
+ nodes: {
224
+ id: NodeId;
225
+ type: import("../../types").NodeType;
226
+ name: NodeName;
227
+ phase: NodePhase;
228
+ position: {
229
+ x: number;
230
+ y: number;
231
+ };
232
+ expanded: {
233
+ input?: boolean | undefined;
234
+ output?: boolean | undefined;
235
+ };
236
+ fields: {
237
+ input: {
238
+ id: FieldId;
239
+ name: FieldName;
240
+ }[];
241
+ output: {
242
+ id: FieldId;
243
+ name: FieldName;
244
+ }[];
245
+ };
246
+ config?: Record<string, unknown> | undefined;
247
+ }[];
248
+ edges: {
249
+ id: EdgeId;
250
+ source: NodeId;
251
+ sourceField?: FieldId | undefined;
252
+ target: NodeId;
253
+ targetField?: FieldId | undefined;
254
+ }[];
255
+ }, EditorState | {
256
+ nodes: {
257
+ id: NodeId;
258
+ type: import("../../types").NodeType;
259
+ name: NodeName;
260
+ phase: NodePhase;
261
+ position: {
262
+ x: number;
263
+ y: number;
264
+ };
265
+ expanded: {
266
+ input?: boolean | undefined;
267
+ output?: boolean | undefined;
268
+ };
269
+ fields: {
270
+ input: {
271
+ id: FieldId;
272
+ name: FieldName;
273
+ }[];
274
+ output: {
275
+ id: FieldId;
276
+ name: FieldName;
277
+ }[];
278
+ };
279
+ config?: Record<string, unknown> | undefined;
280
+ }[];
281
+ edges: {
282
+ id: EdgeId;
283
+ source: NodeId;
284
+ sourceField?: FieldId | undefined;
285
+ target: NodeId;
286
+ targetField?: FieldId | undefined;
287
+ }[];
288
+ }>;
289
+ selection: import("vue").Ref<`node:${number}` | undefined, `node:${number}` | undefined>;
290
+ nodeMapById: import("vue").ComputedRef<Map<`node:${number}`, NodeInstance>>;
291
+ nodeMapByName: import("vue").ComputedRef<Map<NodeName, NodeInstance>>;
292
+ edgeMapById: import("vue").ComputedRef<Map<`edge:${number}`, EdgeInstance>>;
293
+ getNodeById: (id: NodeId) => NodeInstance | undefined;
294
+ getNodeByName: (name: NodeName) => NodeInstance | undefined;
295
+ getEdgeById: (id: EdgeId) => EdgeInstance | undefined;
296
+ selectedNode: import("vue").ComputedRef<NodeInstance | undefined>;
297
+ selectNode: (id?: NodeId) => void;
298
+ addNode: (payload: {
299
+ type: ConfigNodeType;
300
+ name?: NodeName;
301
+ phase?: NodePhase;
302
+ position?: {
303
+ x: number;
304
+ y: number;
305
+ };
306
+ fields?: {
307
+ input?: FieldName[];
308
+ output?: FieldName[];
309
+ };
310
+ config?: Record<string, unknown>;
311
+ }, commitNow?: boolean) => `node:${number}` | undefined;
312
+ removeNode: (nodeId: NodeId, commitNow?: boolean) => void;
313
+ renameNode: (nodeId: NodeId, newName: NodeName, commitNow?: boolean) => void;
314
+ moveNode: (nodeId: NodeId, position: {
315
+ x: number;
316
+ y: number;
317
+ }, commitNow?: boolean) => void;
318
+ toggleExpanded: (nodeId: NodeId, io: "input" | "output", value?: boolean, commitNow?: boolean) => void;
319
+ replaceConfig: (nodeId: NodeId, next: Record<string, unknown>, commitNow?: boolean) => void;
320
+ addField: (nodeId: NodeId, io: "input" | "output", name: FieldName, commitNow?: boolean) => void;
321
+ renameField: (nodeId: NodeId, fieldId: FieldId, newName: FieldName, commitNow?: boolean) => void;
322
+ removeField: (nodeId: NodeId, fieldId: FieldId, cascade?: boolean, commitNow?: boolean) => void;
323
+ connectEdge: (payload: EdgeData, commitNow?: boolean) => `edge:${number}` | undefined;
324
+ replaceConnection: (edgeId: EdgeId, next: EdgeData, commitNow?: boolean) => void;
325
+ disconnectEdge: (edgeId: EdgeId, commitNow?: boolean) => void;
326
+ toConfigNodes: () => ConfigNode[];
327
+ toUINodes: () => UINode[];
328
+ load: (nextConfig: ConfigNode[], nextUI: UINode[]) => void;
329
+ commit: (tag?: string, opts?: {
330
+ replace?: boolean;
331
+ } | undefined) => void;
332
+ undo: () => void;
333
+ redo: () => void;
334
+ canUndo: import("vue").ComputedRef<boolean>;
335
+ canRedo: import("vue").ComputedRef<boolean>;
336
+ clear: () => void;
337
+ reset: () => void;
338
+ requestNodes: import("vue").ComputedRef<{
339
+ id: `node:${number}`;
340
+ type: import("../../types").NodeType;
341
+ position: {
342
+ x: number;
343
+ y: number;
344
+ };
345
+ data: {
346
+ id: NodeId;
347
+ type: import("../../types").NodeType;
348
+ name: NodeName;
349
+ phase: NodePhase;
350
+ position: {
351
+ x: number;
352
+ y: number;
353
+ };
354
+ expanded: {
355
+ input?: boolean | undefined;
356
+ output?: boolean | undefined;
357
+ };
358
+ fields: {
359
+ input: {
360
+ id: FieldId;
361
+ name: FieldName;
362
+ }[];
363
+ output: {
364
+ id: FieldId;
365
+ name: FieldName;
366
+ }[];
367
+ };
368
+ config?: Record<string, unknown> | undefined;
369
+ };
370
+ }[]>;
371
+ requestEdges: import("vue").ComputedRef<{
372
+ id: `edge:${number}`;
373
+ source: `node:${number}`;
374
+ target: `node:${number}`;
375
+ sourceHandle: `field:${number}` | undefined;
376
+ targetHandle: `field:${number}` | undefined;
377
+ data: {
378
+ id: EdgeId;
379
+ source: NodeId;
380
+ sourceField?: FieldId | undefined;
381
+ target: NodeId;
382
+ targetField?: FieldId | undefined;
383
+ };
384
+ }[]>;
385
+ responseNodes: import("vue").ComputedRef<{
386
+ id: `node:${number}`;
387
+ type: import("../../types").NodeType;
388
+ position: {
389
+ x: number;
390
+ y: number;
391
+ };
392
+ data: {
393
+ id: NodeId;
394
+ type: import("../../types").NodeType;
395
+ name: NodeName;
396
+ phase: NodePhase;
397
+ position: {
398
+ x: number;
399
+ y: number;
400
+ };
401
+ expanded: {
402
+ input?: boolean | undefined;
403
+ output?: boolean | undefined;
404
+ };
405
+ fields: {
406
+ input: {
407
+ id: FieldId;
408
+ name: FieldName;
409
+ }[];
410
+ output: {
411
+ id: FieldId;
412
+ name: FieldName;
413
+ }[];
414
+ };
415
+ config?: Record<string, unknown> | undefined;
416
+ };
417
+ }[]>;
418
+ responseEdges: import("vue").ComputedRef<{
419
+ id: `edge:${number}`;
420
+ source: `node:${number}`;
421
+ target: `node:${number}`;
422
+ sourceHandle: `field:${number}` | undefined;
423
+ targetHandle: `field:${number}` | undefined;
424
+ data: {
425
+ id: EdgeId;
426
+ source: NodeId;
427
+ sourceField?: FieldId | undefined;
428
+ target: NodeId;
429
+ targetField?: FieldId | undefined;
430
+ };
431
+ }[]>;
432
+ isValidConnection: (edge: EdgeData) => boolean;
433
+ isValidVueFlowConnection: (conn: {
434
+ source?: string | null;
435
+ sourceHandle?: string | null;
436
+ target?: string | null;
437
+ targetHandle?: string | null;
438
+ }) => boolean;
439
+ validateGraph: () => import("./validation").ValidationResult;
440
+ } | undefined;
441
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/free-form/Datakit/flow-editor/store/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { Ref } from 'vue';
2
+ import type { EditorState, EdgeData } from '../../types';
3
+ export type ValidationResult = {
4
+ ok: true;
5
+ } | {
6
+ ok: false;
7
+ errors: string[];
8
+ };
9
+ /**
10
+ * Validators bound to a reactive EditorState.
11
+ * Always reads the latest state through computed getters.
12
+ */
13
+ export declare function useValidators(stateRef: Ref<EditorState>): {
14
+ canonicalizeConnection: (edge: EdgeData) => EdgeData;
15
+ validateConnection: (raw: EdgeData) => ValidationResult;
16
+ validateGraph: () => ValidationResult;
17
+ isValidConnection: (edge: EdgeData) => boolean;
18
+ isValidVueFlowConnection: (conn: {
19
+ source?: string | null;
20
+ sourceHandle?: string | null;
21
+ target?: string | null;
22
+ targetHandle?: string | null;
23
+ }) => boolean;
24
+ };
25
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/free-form/Datakit/flow-editor/store/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,EACV,WAAW,EAEX,QAAQ,EAIT,MAAM,aAAa,CAAA;AAGpB,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAA;AAE7E;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC;mCAchB,QAAQ,KAAG,QAAQ;8BAuDxB,QAAQ,KAAG,gBAAgB;yBAsElC,gBAAgB;8BA8BT,QAAQ,KAAG,OAAO;qCAIX;QACtC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAC7B;EAiBF"}
@@ -3,10 +3,14 @@ import type { ButtonProps } from '@kong/kongponents';
3
3
  import type { FreeFormPluginData } from '../../../types/plugins/free-form';
4
4
  import type { HttpMethod } from './constants';
5
5
  export type { HttpMethod };
6
- export type EditorMode = 'code' | 'flow';
7
6
  type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Keys extends any ? Omit<T, Keys> & {
8
7
  [K in Keys]-?: T[K];
9
8
  } : never;
9
+ declare const brand: unique symbol;
10
+ type Brand<T, Brand extends string> = T & {
11
+ [brand]: Brand;
12
+ };
13
+ export type EditorMode = 'code' | 'flow';
10
14
  interface EditorModalNavItemBase {
11
15
  label: string;
12
16
  icon: Component;
@@ -20,9 +24,9 @@ export type EditorModalNavItem = RequireAtLeastOne<EditorModalNavItemBase, 'to'
20
24
  /**
21
25
  * All explicit node types recognised by Datakit.
22
26
  */
23
- export type UserNodeType = 'call' | 'jq' | 'exit' | 'property' | 'static';
27
+ export type ConfigNodeType = 'call' | 'jq' | 'exit' | 'property' | 'static';
24
28
  export type ImplicitNodeType = 'request' | 'service_request' | 'service_response' | 'response';
25
- export type NodeType = UserNodeType | ImplicitNodeType;
29
+ export type NodeType = ConfigNodeType | ImplicitNodeType;
26
30
  export interface NodeMeta {
27
31
  type: NodeType;
28
32
  summary?: string;
@@ -32,8 +36,8 @@ export interface NodeMeta {
32
36
  * Well-known fields for the node.
33
37
  */
34
38
  fields?: {
35
- input?: string[];
36
- output?: string[];
39
+ input?: FieldName[];
40
+ output?: FieldName[];
37
41
  };
38
42
  }
39
43
  /************************************************
@@ -49,7 +53,7 @@ export interface DatakitConfig {
49
53
  *
50
54
  * * Must contain at least one element.
51
55
  */
52
- nodes: UserNode[];
56
+ nodes: ConfigNode[];
53
57
  /**
54
58
  * Enable verbose debug logging.
55
59
  *
@@ -81,7 +85,8 @@ export type ImplicitNodeName = 'request' | 'service_request' | 'service_response
81
85
  * @example 'filter_01'
82
86
  * @example 'filter_02'
83
87
  */
84
- export type NodeName = string & {};
88
+ export type ConfigNodeName = Brand<string, 'ConfigNodeName'>;
89
+ export type NodeName = ConfigNodeName | ImplicitNodeName;
85
90
  /**
86
91
  * The phase of the node in the request/response cycle.
87
92
  *
@@ -91,20 +96,36 @@ export type NodePhase = 'request' | 'response';
91
96
  /**
92
97
  * Base shape shared by every concrete node type.
93
98
  */
94
- interface BaseNode {
99
+ interface BaseConfigNode {
95
100
  /**
96
101
  * Unique label for referencing the node in connections.
97
102
  */
98
- name: NodeName | ImplicitNodeName;
103
+ name: NodeName;
99
104
  /**
100
105
  * The type of the node.
101
106
  */
102
107
  type: NodeType;
108
+ /**
109
+ * node input (`NODE` or `NODE.FIELD`)
110
+ */
111
+ input?: string;
112
+ /**
113
+ * node inputs
114
+ */
115
+ inputs?: Record<FieldName, string>;
116
+ /**
117
+ * node output (`NODE` or `NODE.FIELD`)
118
+ */
119
+ output?: string;
120
+ /**
121
+ * node inputs
122
+ */
123
+ outputs?: Record<FieldName, string>;
103
124
  }
104
125
  /**
105
126
  * Make an external HTTP request.
106
127
  */
107
- export interface CallNode extends BaseNode {
128
+ export interface CallNode extends BaseConfigNode {
108
129
  type: 'call';
109
130
  /**
110
131
  * A string representing an HTTP method, such as GET, POST, PUT, or
@@ -157,7 +178,7 @@ export interface CallNode extends BaseNode {
157
178
  /**
158
179
  * Terminate the request and send a response to the client.
159
180
  */
160
- export interface ExitNode extends BaseNode {
181
+ export interface ExitNode extends BaseConfigNode {
161
182
  type: 'exit';
162
183
  /**
163
184
  * HTTP status code.
@@ -185,7 +206,7 @@ export interface ExitNode extends BaseNode {
185
206
  /**
186
207
  * Process data using `jq` syntax.
187
208
  */
188
- export interface JqNode extends BaseNode {
209
+ export interface JqNode extends BaseConfigNode {
189
210
  type: 'jq';
190
211
  /**
191
212
  * The jq filter text. Refer to https://jqlang.org/manual/ for full
@@ -199,14 +220,14 @@ export interface JqNode extends BaseNode {
199
220
  /**
200
221
  * filter input(s)
201
222
  */
202
- inputs?: Record<string, string>;
223
+ inputs?: Record<FieldName, string>;
203
224
  /** filter output (`NODE` or `NODE.FIELD`) */
204
225
  output?: string;
205
226
  }
206
227
  /**
207
228
  * Get or set a property.
208
229
  */
209
- export interface PropertyNode extends BaseNode {
230
+ export interface PropertyNode extends BaseConfigNode {
210
231
  type: 'property';
211
232
  /**
212
233
  * The expected MIME type of the property value. When set to
@@ -234,7 +255,7 @@ export interface PropertyNode extends BaseNode {
234
255
  /**
235
256
  * Produce reusable outputs from statically-configured values.
236
257
  */
237
- export interface StaticNode extends BaseNode {
258
+ export interface StaticNode extends BaseConfigNode {
238
259
  type: 'static';
239
260
  /**
240
261
  * An object with string keys and free-form values.
@@ -247,17 +268,24 @@ export interface StaticNode extends BaseNode {
247
268
  /**
248
269
  * Individual items from `.values`, referenced by key.
249
270
  */
250
- outputs?: Record<string, string>;
271
+ outputs?: Record<FieldName, string>;
251
272
  }
252
273
  /**
253
274
  * Discriminated union of all node types.
254
275
  */
255
- export type UserNode = CallNode | ExitNode | JqNode | PropertyNode | StaticNode;
276
+ export type ConfigNode = CallNode | ExitNode | JqNode | PropertyNode | StaticNode;
256
277
  /************************************************
257
278
  * Editor global store *
258
279
  ************************************************/
259
- export interface NodeData {
260
- type: NodeType;
280
+ export type NodeId = `node:${number}`;
281
+ export type EdgeId = `edge:${number}`;
282
+ export type FieldId = `field:${number}`;
283
+ export type FieldName = Brand<string, 'FieldName'>;
284
+ export interface NodeField {
285
+ id: FieldId;
286
+ name: FieldName;
287
+ }
288
+ export type UINode = {
261
289
  name: NodeName;
262
290
  phase: NodePhase;
263
291
  position: {
@@ -265,17 +293,50 @@ export interface NodeData {
265
293
  y: number;
266
294
  };
267
295
  fields: {
268
- input?: string[];
269
- output?: string[];
296
+ input?: FieldName[];
297
+ output?: FieldName[];
270
298
  };
271
299
  expanded: {
272
300
  input?: boolean;
273
301
  output?: boolean;
274
302
  };
275
- inputs?: string | Record<string, string>;
303
+ };
304
+ export interface NodeInstance {
305
+ id: NodeId;
306
+ type: NodeType;
307
+ name: NodeName;
308
+ phase: NodePhase;
309
+ position: {
310
+ x: number;
311
+ y: number;
312
+ };
313
+ expanded: {
314
+ input?: boolean;
315
+ output?: boolean;
316
+ };
317
+ fields: {
318
+ input: NodeField[];
319
+ output: NodeField[];
320
+ };
276
321
  config?: Record<string, unknown>;
277
322
  }
323
+ export interface ConfigEdge {
324
+ source: NodeName;
325
+ sourceField?: FieldName;
326
+ target: NodeName;
327
+ targetField?: FieldName;
328
+ }
329
+ export interface EdgeData {
330
+ source: NodeId;
331
+ sourceField?: FieldId;
332
+ target: NodeId;
333
+ targetField?: FieldId;
334
+ }
335
+ export interface EdgeInstance extends EdgeData {
336
+ id: EdgeId;
337
+ }
278
338
  export interface EditorState {
279
- nodes: NodeData[];
339
+ nodes: NodeInstance[];
340
+ edges: EdgeInstance[];
280
341
  }
281
342
  //# sourceMappingURL=types.d.ts.map