@yh-ui/flow 1.0.25 → 1.0.30
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/package.json +13 -11
- package/LICENSE +0 -21
- package/dist/__tests__/ai-workflow.ssr.test.cjs +0 -352
- package/dist/__tests__/ai-workflow.ssr.test.d.ts +0 -1
- package/dist/__tests__/ai-workflow.ssr.test.mjs +0 -283
- package/dist/__tests__/ai-workflow.test.cjs +0 -109
- package/dist/__tests__/ai-workflow.test.d.ts +0 -1
- package/dist/__tests__/ai-workflow.test.mjs +0 -112
- package/dist/__tests__/bpmn-engine.test.cjs +0 -357
- package/dist/__tests__/bpmn-engine.test.d.ts +0 -1
- package/dist/__tests__/bpmn-engine.test.mjs +0 -406
- package/dist/__tests__/bpmn-utils.test.cjs +0 -268
- package/dist/__tests__/bpmn-utils.test.d.ts +0 -1
- package/dist/__tests__/bpmn-utils.test.mjs +0 -227
- package/dist/__tests__/bpmn-xml.test.cjs +0 -150
- package/dist/__tests__/bpmn-xml.test.d.ts +0 -1
- package/dist/__tests__/bpmn-xml.test.mjs +0 -112
- package/dist/__tests__/bpmn.ssr.test.cjs +0 -278
- package/dist/__tests__/bpmn.ssr.test.d.ts +0 -1
- package/dist/__tests__/bpmn.ssr.test.mjs +0 -237
- package/dist/__tests__/bpmn.test.cjs +0 -103
- package/dist/__tests__/bpmn.test.d.ts +0 -1
- package/dist/__tests__/bpmn.test.mjs +0 -106
- package/dist/__tests__/collaboration.test.cjs +0 -487
- package/dist/__tests__/collaboration.test.d.ts +0 -1
- package/dist/__tests__/collaboration.test.mjs +0 -424
- package/dist/__tests__/custom-types.test.cjs +0 -300
- package/dist/__tests__/custom-types.test.d.ts +0 -1
- package/dist/__tests__/custom-types.test.mjs +0 -248
- package/dist/__tests__/edge-types.test.cjs +0 -275
- package/dist/__tests__/edge-types.test.d.ts +0 -1
- package/dist/__tests__/edge-types.test.mjs +0 -234
- package/dist/__tests__/edge-utils.test.cjs +0 -375
- package/dist/__tests__/edge-utils.test.d.ts +0 -1
- package/dist/__tests__/edge-utils.test.mjs +0 -376
- package/dist/__tests__/edge.test.cjs +0 -56
- package/dist/__tests__/edge.test.d.ts +0 -1
- package/dist/__tests__/edge.test.mjs +0 -69
- package/dist/__tests__/event-bus.test.cjs +0 -80
- package/dist/__tests__/event-bus.test.d.ts +0 -1
- package/dist/__tests__/event-bus.test.mjs +0 -51
- package/dist/__tests__/events-types.test.cjs +0 -184
- package/dist/__tests__/events-types.test.d.ts +0 -1
- package/dist/__tests__/events-types.test.mjs +0 -184
- package/dist/__tests__/export-image-plugin.test.cjs +0 -142
- package/dist/__tests__/export-image-plugin.test.d.ts +0 -1
- package/dist/__tests__/export-image-plugin.test.mjs +0 -118
- package/dist/__tests__/export.test.cjs +0 -237
- package/dist/__tests__/export.test.d.ts +0 -1
- package/dist/__tests__/export.test.mjs +0 -171
- package/dist/__tests__/flow-context.test.cjs +0 -16
- package/dist/__tests__/flow-context.test.d.ts +0 -1
- package/dist/__tests__/flow-context.test.mjs +0 -16
- package/dist/__tests__/flow-props.test.cjs +0 -94
- package/dist/__tests__/flow-props.test.d.ts +0 -1
- package/dist/__tests__/flow-props.test.mjs +0 -92
- package/dist/__tests__/flow.ssr.test.cjs +0 -156
- package/dist/__tests__/flow.ssr.test.d.ts +0 -1
- package/dist/__tests__/flow.ssr.test.mjs +0 -112
- package/dist/__tests__/geometry.test.cjs +0 -191
- package/dist/__tests__/geometry.test.d.ts +0 -1
- package/dist/__tests__/geometry.test.mjs +0 -105
- package/dist/__tests__/graph.test.cjs +0 -115
- package/dist/__tests__/graph.test.d.ts +0 -1
- package/dist/__tests__/graph.test.mjs +0 -85
- package/dist/__tests__/history-plugin.test.cjs +0 -191
- package/dist/__tests__/history-plugin.test.d.ts +0 -1
- package/dist/__tests__/history-plugin.test.mjs +0 -161
- package/dist/__tests__/history.test.cjs +0 -81
- package/dist/__tests__/history.test.d.ts +0 -1
- package/dist/__tests__/history.test.mjs +0 -43
- package/dist/__tests__/layout-plugin.test.cjs +0 -233
- package/dist/__tests__/layout-plugin.test.d.ts +0 -1
- package/dist/__tests__/layout-plugin.test.mjs +0 -215
- package/dist/__tests__/layout.test.cjs +0 -213
- package/dist/__tests__/layout.test.d.ts +0 -1
- package/dist/__tests__/layout.test.mjs +0 -170
- package/dist/__tests__/node-edit-panel.ssr.test.cjs +0 -168
- package/dist/__tests__/node-edit-panel.ssr.test.d.ts +0 -1
- package/dist/__tests__/node-edit-panel.ssr.test.mjs +0 -118
- package/dist/__tests__/node-group-plugin.test.cjs +0 -235
- package/dist/__tests__/node-group-plugin.test.d.ts +0 -1
- package/dist/__tests__/node-group-plugin.test.mjs +0 -187
- package/dist/__tests__/node-handles.test.cjs +0 -340
- package/dist/__tests__/node-handles.test.d.ts +0 -1
- package/dist/__tests__/node-handles.test.mjs +0 -230
- package/dist/__tests__/node-types.test.cjs +0 -368
- package/dist/__tests__/node-types.test.d.ts +0 -1
- package/dist/__tests__/node-types.test.mjs +0 -292
- package/dist/__tests__/performance.test.cjs +0 -313
- package/dist/__tests__/performance.test.d.ts +0 -1
- package/dist/__tests__/performance.test.mjs +0 -218
- package/dist/__tests__/plugin-advanced.test.cjs +0 -301
- package/dist/__tests__/plugin-advanced.test.d.ts +0 -1
- package/dist/__tests__/plugin-advanced.test.mjs +0 -225
- package/dist/__tests__/plugin.test.cjs +0 -151
- package/dist/__tests__/plugin.test.d.ts +0 -1
- package/dist/__tests__/plugin.test.mjs +0 -116
- package/dist/__tests__/plugins.test.cjs +0 -412
- package/dist/__tests__/plugins.test.d.ts +0 -1
- package/dist/__tests__/plugins.test.mjs +0 -402
- package/dist/__tests__/screenshot-capture.test.cjs +0 -183
- package/dist/__tests__/screenshot-capture.test.d.ts +0 -1
- package/dist/__tests__/screenshot-capture.test.mjs +0 -124
- package/dist/__tests__/screenshot.test.cjs +0 -74
- package/dist/__tests__/screenshot.test.d.ts +0 -1
- package/dist/__tests__/screenshot.test.mjs +0 -69
- package/dist/__tests__/theme.test.cjs +0 -185
- package/dist/__tests__/theme.test.d.ts +0 -1
- package/dist/__tests__/theme.test.mjs +0 -191
- package/dist/__tests__/transform.test.cjs +0 -384
- package/dist/__tests__/transform.test.d.ts +0 -1
- package/dist/__tests__/transform.test.mjs +0 -239
- package/dist/__tests__/useAlignment.test.cjs +0 -128
- package/dist/__tests__/useAlignment.test.d.ts +0 -1
- package/dist/__tests__/useAlignment.test.mjs +0 -72
- package/dist/__tests__/useEdges.test.cjs +0 -117
- package/dist/__tests__/useEdges.test.d.ts +0 -1
- package/dist/__tests__/useEdges.test.mjs +0 -80
- package/dist/__tests__/useKeyboard.test.cjs +0 -88
- package/dist/__tests__/useKeyboard.test.d.ts +0 -1
- package/dist/__tests__/useKeyboard.test.mjs +0 -56
- package/dist/__tests__/useNodeDistribution.test.cjs +0 -643
- package/dist/__tests__/useNodeDistribution.test.d.ts +0 -1
- package/dist/__tests__/useNodeDistribution.test.mjs +0 -297
- package/dist/__tests__/useNodes.test.cjs +0 -150
- package/dist/__tests__/useNodes.test.d.ts +0 -1
- package/dist/__tests__/useNodes.test.mjs +0 -80
- package/dist/__tests__/useSelection.test.cjs +0 -112
- package/dist/__tests__/useSelection.test.d.ts +0 -1
- package/dist/__tests__/useSelection.test.mjs +0 -76
- package/dist/__tests__/useViewport.test.cjs +0 -171
- package/dist/__tests__/useViewport.test.d.ts +0 -1
- package/dist/__tests__/useViewport.test.mjs +0 -82
- package/dist/__tests__/utils/ssr.cjs +0 -124
- package/dist/__tests__/utils/ssr.d.ts +0 -33
- package/dist/__tests__/utils/ssr.mjs +0 -129
- package/dist/__tests__/validation.test.cjs +0 -95
- package/dist/__tests__/validation.test.d.ts +0 -1
- package/dist/__tests__/validation.test.mjs +0 -36
- package/dist/__tests__/viewport-types.test.cjs +0 -324
- package/dist/__tests__/viewport-types.test.d.ts +0 -1
- package/dist/__tests__/viewport-types.test.mjs +0 -207
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yh-ui/flow",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.30",
|
|
4
4
|
"description": "YH-UI High-performance Flow Chart Component",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -23,9 +23,17 @@
|
|
|
23
23
|
"files": [
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "unbuild && rimraf dist/__tests__",
|
|
28
|
+
"dev": "unbuild --stub",
|
|
29
|
+
"prepack": "node ../../scripts/prepare-package-manifest.mjs prepare",
|
|
30
|
+
"postpack": "node ../../scripts/prepare-package-manifest.mjs restore",
|
|
31
|
+
"typecheck": "vue-tsc --noEmit",
|
|
32
|
+
"lint": "eslint ."
|
|
33
|
+
},
|
|
26
34
|
"dependencies": {
|
|
27
|
-
"@yh-ui/utils": "^1.0.
|
|
28
|
-
"@yh-ui/hooks": "^1.0.
|
|
35
|
+
"@yh-ui/utils": "^1.0.30",
|
|
36
|
+
"@yh-ui/hooks": "^1.0.30"
|
|
29
37
|
},
|
|
30
38
|
"devDependencies": {
|
|
31
39
|
"vue": "^3.5.27",
|
|
@@ -53,11 +61,5 @@
|
|
|
53
61
|
],
|
|
54
62
|
"homepage": "https://1079161148.github.io/yh-ui/",
|
|
55
63
|
"author": "YH-UI Team",
|
|
56
|
-
"license": "MIT"
|
|
57
|
-
|
|
58
|
-
"build": "unbuild",
|
|
59
|
-
"dev": "unbuild --stub",
|
|
60
|
-
"typecheck": "vue-tsc --noEmit",
|
|
61
|
-
"lint": "eslint ."
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
+
"license": "MIT"
|
|
65
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 YH-UI Team
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _vitest = require("vitest");
|
|
4
|
-
var _AiLlmNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiLlmNode.vue"));
|
|
5
|
-
var _AiPromptNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiPromptNode.vue"));
|
|
6
|
-
var _AiAgentNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiAgentNode.vue"));
|
|
7
|
-
var _AiToolNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiToolNode.vue"));
|
|
8
|
-
var _AiConditionNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiConditionNode.vue"));
|
|
9
|
-
var _AiStartNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiStartNode.vue"));
|
|
10
|
-
var _AiEndNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiEndNode.vue"));
|
|
11
|
-
var _AiMemoryNode = _interopRequireDefault(require("../components/nodes/ai-workflow/AiMemoryNode.vue"));
|
|
12
|
-
var _ssr = require("./utils/ssr.cjs");
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
(0, _vitest.describe)("AI Workflow Nodes SSR", () => {
|
|
15
|
-
(0, _vitest.describe)("AiLlmNode", () => {
|
|
16
|
-
(0, _vitest.it)("should render LLM node in SSR", async () => {
|
|
17
|
-
const html = await (0, _ssr.renderSSR)(_AiLlmNode.default, {
|
|
18
|
-
id: "llm-1",
|
|
19
|
-
type: "ai-llm",
|
|
20
|
-
data: {
|
|
21
|
-
label: "GPT-4",
|
|
22
|
-
model: "gpt-4"
|
|
23
|
-
},
|
|
24
|
-
selected: false,
|
|
25
|
-
dragging: false,
|
|
26
|
-
connectable: true
|
|
27
|
-
});
|
|
28
|
-
(0, _ssr.expectSSRContains)(html, "gpt-4");
|
|
29
|
-
});
|
|
30
|
-
(0, _vitest.it)("should render with model info in SSR", async () => {
|
|
31
|
-
const html = await (0, _ssr.renderSSR)(_AiLlmNode.default, {
|
|
32
|
-
id: "llm-1",
|
|
33
|
-
type: "ai-llm",
|
|
34
|
-
data: {
|
|
35
|
-
label: "LLM",
|
|
36
|
-
model: "gpt-4",
|
|
37
|
-
temperature: 0.7
|
|
38
|
-
},
|
|
39
|
-
selected: false,
|
|
40
|
-
dragging: false,
|
|
41
|
-
connectable: true
|
|
42
|
-
});
|
|
43
|
-
(0, _ssr.expectSSRContains)(html, "gpt-4");
|
|
44
|
-
});
|
|
45
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
46
|
-
const result = await (0, _ssr.testHydration)(_AiLlmNode.default, {
|
|
47
|
-
id: "llm-1",
|
|
48
|
-
type: "ai-llm",
|
|
49
|
-
data: {
|
|
50
|
-
label: "GPT-4",
|
|
51
|
-
model: "gpt-4"
|
|
52
|
-
},
|
|
53
|
-
selected: false,
|
|
54
|
-
dragging: false,
|
|
55
|
-
connectable: true
|
|
56
|
-
});
|
|
57
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
(0, _vitest.describe)("AiPromptNode", () => {
|
|
61
|
-
(0, _vitest.it)("should render prompt node in SSR", async () => {
|
|
62
|
-
const html = await (0, _ssr.renderSSR)(_AiPromptNode.default, {
|
|
63
|
-
id: "prompt-1",
|
|
64
|
-
type: "ai-prompt",
|
|
65
|
-
data: {
|
|
66
|
-
label: "Prompt",
|
|
67
|
-
prompt: "Hello world"
|
|
68
|
-
},
|
|
69
|
-
selected: false,
|
|
70
|
-
dragging: false,
|
|
71
|
-
connectable: true
|
|
72
|
-
});
|
|
73
|
-
(0, _ssr.expectSSRContains)(html, "\u63D0\u793A\u8BCD");
|
|
74
|
-
});
|
|
75
|
-
(0, _vitest.it)("should render with prompt content in SSR", async () => {
|
|
76
|
-
const html = await (0, _ssr.renderSSR)(_AiPromptNode.default, {
|
|
77
|
-
id: "prompt-1",
|
|
78
|
-
type: "ai-prompt",
|
|
79
|
-
data: {
|
|
80
|
-
label: "Prompt",
|
|
81
|
-
prompt: "Summarize this text"
|
|
82
|
-
},
|
|
83
|
-
selected: false,
|
|
84
|
-
dragging: false,
|
|
85
|
-
connectable: true
|
|
86
|
-
});
|
|
87
|
-
(0, _ssr.expectSSRContains)(html, "Summarize");
|
|
88
|
-
});
|
|
89
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
90
|
-
const result = await (0, _ssr.testHydration)(_AiPromptNode.default, {
|
|
91
|
-
id: "prompt-1",
|
|
92
|
-
type: "ai-prompt",
|
|
93
|
-
data: {
|
|
94
|
-
label: "Prompt",
|
|
95
|
-
prompt: "Test prompt"
|
|
96
|
-
},
|
|
97
|
-
selected: false,
|
|
98
|
-
dragging: false,
|
|
99
|
-
connectable: true
|
|
100
|
-
});
|
|
101
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
(0, _vitest.describe)("AiAgentNode", () => {
|
|
105
|
-
(0, _vitest.it)("should render agent node in SSR", async () => {
|
|
106
|
-
const html = await (0, _ssr.renderSSR)(_AiAgentNode.default, {
|
|
107
|
-
id: "agent-1",
|
|
108
|
-
type: "ai-agent",
|
|
109
|
-
data: {
|
|
110
|
-
label: "Agent",
|
|
111
|
-
tools: ["tool1", "tool2"]
|
|
112
|
-
},
|
|
113
|
-
selected: false,
|
|
114
|
-
dragging: false,
|
|
115
|
-
connectable: true
|
|
116
|
-
});
|
|
117
|
-
(0, _ssr.expectSSRContains)(html, "Agent");
|
|
118
|
-
});
|
|
119
|
-
(0, _vitest.it)("should render tools count in SSR", async () => {
|
|
120
|
-
const html = await (0, _ssr.renderSSR)(_AiAgentNode.default, {
|
|
121
|
-
id: "agent-1",
|
|
122
|
-
type: "ai-agent",
|
|
123
|
-
data: {
|
|
124
|
-
label: "Agent",
|
|
125
|
-
tools: ["search", "calculator"]
|
|
126
|
-
},
|
|
127
|
-
selected: false,
|
|
128
|
-
dragging: false,
|
|
129
|
-
connectable: true
|
|
130
|
-
});
|
|
131
|
-
(0, _ssr.expectSSRContains)(html, "2");
|
|
132
|
-
});
|
|
133
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
134
|
-
const result = await (0, _ssr.testHydration)(_AiAgentNode.default, {
|
|
135
|
-
id: "agent-1",
|
|
136
|
-
type: "ai-agent",
|
|
137
|
-
data: {
|
|
138
|
-
label: "Agent",
|
|
139
|
-
tools: ["tool1"]
|
|
140
|
-
},
|
|
141
|
-
selected: false,
|
|
142
|
-
dragging: false,
|
|
143
|
-
connectable: true
|
|
144
|
-
});
|
|
145
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
146
|
-
});
|
|
147
|
-
});
|
|
148
|
-
(0, _vitest.describe)("AiToolNode", () => {
|
|
149
|
-
(0, _vitest.it)("should render tool node in SSR", async () => {
|
|
150
|
-
const html = await (0, _ssr.renderSSR)(_AiToolNode.default, {
|
|
151
|
-
id: "tool-1",
|
|
152
|
-
type: "ai-tool",
|
|
153
|
-
data: {
|
|
154
|
-
label: "Search Tool",
|
|
155
|
-
toolName: "search"
|
|
156
|
-
},
|
|
157
|
-
selected: false,
|
|
158
|
-
dragging: false,
|
|
159
|
-
connectable: true
|
|
160
|
-
});
|
|
161
|
-
(0, _ssr.expectSSRContains)(html, "\u5DE5\u5177");
|
|
162
|
-
(0, _ssr.expectSSRContains)(html, "search");
|
|
163
|
-
});
|
|
164
|
-
(0, _vitest.it)("should render with tool name in SSR", async () => {
|
|
165
|
-
const html = await (0, _ssr.renderSSR)(_AiToolNode.default, {
|
|
166
|
-
id: "tool-1",
|
|
167
|
-
type: "ai-tool",
|
|
168
|
-
data: {
|
|
169
|
-
label: "Tool",
|
|
170
|
-
toolName: "calculator"
|
|
171
|
-
},
|
|
172
|
-
selected: false,
|
|
173
|
-
dragging: false,
|
|
174
|
-
connectable: true
|
|
175
|
-
});
|
|
176
|
-
(0, _ssr.expectSSRContains)(html, "calculator");
|
|
177
|
-
});
|
|
178
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
179
|
-
const result = await (0, _ssr.testHydration)(_AiToolNode.default, {
|
|
180
|
-
id: "tool-1",
|
|
181
|
-
type: "ai-tool",
|
|
182
|
-
data: {
|
|
183
|
-
label: "Search",
|
|
184
|
-
toolName: "search"
|
|
185
|
-
},
|
|
186
|
-
selected: false,
|
|
187
|
-
dragging: false,
|
|
188
|
-
connectable: true
|
|
189
|
-
});
|
|
190
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
191
|
-
});
|
|
192
|
-
});
|
|
193
|
-
(0, _vitest.describe)("AiConditionNode", () => {
|
|
194
|
-
(0, _vitest.it)("should render condition node in SSR", async () => {
|
|
195
|
-
const html = await (0, _ssr.renderSSR)(_AiConditionNode.default, {
|
|
196
|
-
id: "cond-1",
|
|
197
|
-
type: "ai-condition",
|
|
198
|
-
data: {
|
|
199
|
-
label: "Condition",
|
|
200
|
-
condition: "if"
|
|
201
|
-
},
|
|
202
|
-
selected: false,
|
|
203
|
-
dragging: false,
|
|
204
|
-
connectable: true
|
|
205
|
-
});
|
|
206
|
-
(0, _ssr.expectSSRContains)(html, "\u6761\u4EF6\u5206\u652F");
|
|
207
|
-
});
|
|
208
|
-
(0, _vitest.it)("should render with condition text in SSR", async () => {
|
|
209
|
-
const html = await (0, _ssr.renderSSR)(_AiConditionNode.default, {
|
|
210
|
-
id: "cond-1",
|
|
211
|
-
type: "ai-condition",
|
|
212
|
-
data: {
|
|
213
|
-
label: "Check",
|
|
214
|
-
condition: "score > 60"
|
|
215
|
-
},
|
|
216
|
-
selected: false,
|
|
217
|
-
dragging: false,
|
|
218
|
-
connectable: true
|
|
219
|
-
});
|
|
220
|
-
(0, _ssr.expectSSRContains)(html, "score");
|
|
221
|
-
});
|
|
222
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
223
|
-
const result = await (0, _ssr.testHydration)(_AiConditionNode.default, {
|
|
224
|
-
id: "cond-1",
|
|
225
|
-
type: "ai-condition",
|
|
226
|
-
data: {
|
|
227
|
-
label: "Condition",
|
|
228
|
-
condition: "if"
|
|
229
|
-
},
|
|
230
|
-
selected: false,
|
|
231
|
-
dragging: false,
|
|
232
|
-
connectable: true
|
|
233
|
-
});
|
|
234
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
(0, _vitest.describe)("AiStartNode", () => {
|
|
238
|
-
(0, _vitest.it)("should render start node in SSR", async () => {
|
|
239
|
-
const html = await (0, _ssr.renderSSR)(_AiStartNode.default, {
|
|
240
|
-
id: "start-1",
|
|
241
|
-
type: "ai-start",
|
|
242
|
-
data: {
|
|
243
|
-
label: "Start"
|
|
244
|
-
},
|
|
245
|
-
selected: false,
|
|
246
|
-
dragging: false,
|
|
247
|
-
connectable: true
|
|
248
|
-
});
|
|
249
|
-
(0, _ssr.expectSSRContains)(html, "\u25B6");
|
|
250
|
-
});
|
|
251
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
252
|
-
const result = await (0, _ssr.testHydration)(_AiStartNode.default, {
|
|
253
|
-
id: "start-1",
|
|
254
|
-
type: "ai-start",
|
|
255
|
-
data: {
|
|
256
|
-
label: "Start"
|
|
257
|
-
},
|
|
258
|
-
selected: false,
|
|
259
|
-
dragging: false,
|
|
260
|
-
connectable: true
|
|
261
|
-
});
|
|
262
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
263
|
-
});
|
|
264
|
-
});
|
|
265
|
-
(0, _vitest.describe)("AiEndNode", () => {
|
|
266
|
-
(0, _vitest.it)("should render end node in SSR", async () => {
|
|
267
|
-
const html = await (0, _ssr.renderSSR)(_AiEndNode.default, {
|
|
268
|
-
id: "end-1",
|
|
269
|
-
type: "ai-end",
|
|
270
|
-
data: {
|
|
271
|
-
label: "End"
|
|
272
|
-
},
|
|
273
|
-
selected: false,
|
|
274
|
-
dragging: false,
|
|
275
|
-
connectable: true
|
|
276
|
-
});
|
|
277
|
-
(0, _ssr.expectSSRContains)(html, "\u25A0");
|
|
278
|
-
});
|
|
279
|
-
(0, _vitest.it)("should render with status in SSR", async () => {
|
|
280
|
-
const html = await (0, _ssr.renderSSR)(_AiEndNode.default, {
|
|
281
|
-
id: "end-1",
|
|
282
|
-
type: "ai-end",
|
|
283
|
-
data: {
|
|
284
|
-
label: "End",
|
|
285
|
-
status: "success"
|
|
286
|
-
},
|
|
287
|
-
selected: false,
|
|
288
|
-
dragging: false,
|
|
289
|
-
connectable: true
|
|
290
|
-
});
|
|
291
|
-
(0, _ssr.expectSSRContains)(html, "\u25A0");
|
|
292
|
-
});
|
|
293
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
294
|
-
const result = await (0, _ssr.testHydration)(_AiEndNode.default, {
|
|
295
|
-
id: "end-1",
|
|
296
|
-
type: "ai-end",
|
|
297
|
-
data: {
|
|
298
|
-
label: "End"
|
|
299
|
-
},
|
|
300
|
-
selected: false,
|
|
301
|
-
dragging: false,
|
|
302
|
-
connectable: true
|
|
303
|
-
});
|
|
304
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
305
|
-
});
|
|
306
|
-
});
|
|
307
|
-
(0, _vitest.describe)("AiMemoryNode", () => {
|
|
308
|
-
(0, _vitest.it)("should render memory node in SSR", async () => {
|
|
309
|
-
const html = await (0, _ssr.renderSSR)(_AiMemoryNode.default, {
|
|
310
|
-
id: "mem-1",
|
|
311
|
-
type: "ai-memory",
|
|
312
|
-
data: {
|
|
313
|
-
label: "Memory",
|
|
314
|
-
memoryType: "buffer"
|
|
315
|
-
},
|
|
316
|
-
selected: false,
|
|
317
|
-
dragging: false,
|
|
318
|
-
connectable: true
|
|
319
|
-
});
|
|
320
|
-
(0, _ssr.expectSSRContains)(html, "\u8BB0\u5FC6");
|
|
321
|
-
(0, _ssr.expectSSRContains)(html, "buffer");
|
|
322
|
-
});
|
|
323
|
-
(0, _vitest.it)("should render with memory type in SSR", async () => {
|
|
324
|
-
const html = await (0, _ssr.renderSSR)(_AiMemoryNode.default, {
|
|
325
|
-
id: "mem-1",
|
|
326
|
-
type: "ai-memory",
|
|
327
|
-
data: {
|
|
328
|
-
label: "Memory",
|
|
329
|
-
memoryType: "vector"
|
|
330
|
-
},
|
|
331
|
-
selected: false,
|
|
332
|
-
dragging: false,
|
|
333
|
-
connectable: true
|
|
334
|
-
});
|
|
335
|
-
(0, _ssr.expectSSRContains)(html, "vector");
|
|
336
|
-
});
|
|
337
|
-
(0, _vitest.it)("should hydrate without mismatch", async () => {
|
|
338
|
-
const result = await (0, _ssr.testHydration)(_AiMemoryNode.default, {
|
|
339
|
-
id: "mem-1",
|
|
340
|
-
type: "ai-memory",
|
|
341
|
-
data: {
|
|
342
|
-
label: "Memory",
|
|
343
|
-
memoryType: "buffer"
|
|
344
|
-
},
|
|
345
|
-
selected: false,
|
|
346
|
-
dragging: false,
|
|
347
|
-
connectable: true
|
|
348
|
-
});
|
|
349
|
-
(0, _vitest.expect)(result.isMatch).toBe(true);
|
|
350
|
-
});
|
|
351
|
-
});
|
|
352
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import AiLlmNode from "../components/nodes/ai-workflow/AiLlmNode.vue";
|
|
3
|
-
import AiPromptNode from "../components/nodes/ai-workflow/AiPromptNode.vue";
|
|
4
|
-
import AiAgentNode from "../components/nodes/ai-workflow/AiAgentNode.vue";
|
|
5
|
-
import AiToolNode from "../components/nodes/ai-workflow/AiToolNode.vue";
|
|
6
|
-
import AiConditionNode from "../components/nodes/ai-workflow/AiConditionNode.vue";
|
|
7
|
-
import AiStartNode from "../components/nodes/ai-workflow/AiStartNode.vue";
|
|
8
|
-
import AiEndNode from "../components/nodes/ai-workflow/AiEndNode.vue";
|
|
9
|
-
import AiMemoryNode from "../components/nodes/ai-workflow/AiMemoryNode.vue";
|
|
10
|
-
import { renderSSR, expectSSRContains, testHydration } from "./utils/ssr.mjs";
|
|
11
|
-
describe("AI Workflow Nodes SSR", () => {
|
|
12
|
-
describe("AiLlmNode", () => {
|
|
13
|
-
it("should render LLM node in SSR", async () => {
|
|
14
|
-
const html = await renderSSR(AiLlmNode, {
|
|
15
|
-
id: "llm-1",
|
|
16
|
-
type: "ai-llm",
|
|
17
|
-
data: { label: "GPT-4", model: "gpt-4" },
|
|
18
|
-
selected: false,
|
|
19
|
-
dragging: false,
|
|
20
|
-
connectable: true
|
|
21
|
-
});
|
|
22
|
-
expectSSRContains(html, "gpt-4");
|
|
23
|
-
});
|
|
24
|
-
it("should render with model info in SSR", async () => {
|
|
25
|
-
const html = await renderSSR(AiLlmNode, {
|
|
26
|
-
id: "llm-1",
|
|
27
|
-
type: "ai-llm",
|
|
28
|
-
data: { label: "LLM", model: "gpt-4", temperature: 0.7 },
|
|
29
|
-
selected: false,
|
|
30
|
-
dragging: false,
|
|
31
|
-
connectable: true
|
|
32
|
-
});
|
|
33
|
-
expectSSRContains(html, "gpt-4");
|
|
34
|
-
});
|
|
35
|
-
it("should hydrate without mismatch", async () => {
|
|
36
|
-
const result = await testHydration(AiLlmNode, {
|
|
37
|
-
id: "llm-1",
|
|
38
|
-
type: "ai-llm",
|
|
39
|
-
data: { label: "GPT-4", model: "gpt-4" },
|
|
40
|
-
selected: false,
|
|
41
|
-
dragging: false,
|
|
42
|
-
connectable: true
|
|
43
|
-
});
|
|
44
|
-
expect(result.isMatch).toBe(true);
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
describe("AiPromptNode", () => {
|
|
48
|
-
it("should render prompt node in SSR", async () => {
|
|
49
|
-
const html = await renderSSR(AiPromptNode, {
|
|
50
|
-
id: "prompt-1",
|
|
51
|
-
type: "ai-prompt",
|
|
52
|
-
data: { label: "Prompt", prompt: "Hello world" },
|
|
53
|
-
selected: false,
|
|
54
|
-
dragging: false,
|
|
55
|
-
connectable: true
|
|
56
|
-
});
|
|
57
|
-
expectSSRContains(html, "\u63D0\u793A\u8BCD");
|
|
58
|
-
});
|
|
59
|
-
it("should render with prompt content in SSR", async () => {
|
|
60
|
-
const html = await renderSSR(AiPromptNode, {
|
|
61
|
-
id: "prompt-1",
|
|
62
|
-
type: "ai-prompt",
|
|
63
|
-
data: { label: "Prompt", prompt: "Summarize this text" },
|
|
64
|
-
selected: false,
|
|
65
|
-
dragging: false,
|
|
66
|
-
connectable: true
|
|
67
|
-
});
|
|
68
|
-
expectSSRContains(html, "Summarize");
|
|
69
|
-
});
|
|
70
|
-
it("should hydrate without mismatch", async () => {
|
|
71
|
-
const result = await testHydration(AiPromptNode, {
|
|
72
|
-
id: "prompt-1",
|
|
73
|
-
type: "ai-prompt",
|
|
74
|
-
data: { label: "Prompt", prompt: "Test prompt" },
|
|
75
|
-
selected: false,
|
|
76
|
-
dragging: false,
|
|
77
|
-
connectable: true
|
|
78
|
-
});
|
|
79
|
-
expect(result.isMatch).toBe(true);
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
describe("AiAgentNode", () => {
|
|
83
|
-
it("should render agent node in SSR", async () => {
|
|
84
|
-
const html = await renderSSR(AiAgentNode, {
|
|
85
|
-
id: "agent-1",
|
|
86
|
-
type: "ai-agent",
|
|
87
|
-
data: { label: "Agent", tools: ["tool1", "tool2"] },
|
|
88
|
-
selected: false,
|
|
89
|
-
dragging: false,
|
|
90
|
-
connectable: true
|
|
91
|
-
});
|
|
92
|
-
expectSSRContains(html, "Agent");
|
|
93
|
-
});
|
|
94
|
-
it("should render tools count in SSR", async () => {
|
|
95
|
-
const html = await renderSSR(AiAgentNode, {
|
|
96
|
-
id: "agent-1",
|
|
97
|
-
type: "ai-agent",
|
|
98
|
-
data: { label: "Agent", tools: ["search", "calculator"] },
|
|
99
|
-
selected: false,
|
|
100
|
-
dragging: false,
|
|
101
|
-
connectable: true
|
|
102
|
-
});
|
|
103
|
-
expectSSRContains(html, "2");
|
|
104
|
-
});
|
|
105
|
-
it("should hydrate without mismatch", async () => {
|
|
106
|
-
const result = await testHydration(AiAgentNode, {
|
|
107
|
-
id: "agent-1",
|
|
108
|
-
type: "ai-agent",
|
|
109
|
-
data: { label: "Agent", tools: ["tool1"] },
|
|
110
|
-
selected: false,
|
|
111
|
-
dragging: false,
|
|
112
|
-
connectable: true
|
|
113
|
-
});
|
|
114
|
-
expect(result.isMatch).toBe(true);
|
|
115
|
-
});
|
|
116
|
-
});
|
|
117
|
-
describe("AiToolNode", () => {
|
|
118
|
-
it("should render tool node in SSR", async () => {
|
|
119
|
-
const html = await renderSSR(AiToolNode, {
|
|
120
|
-
id: "tool-1",
|
|
121
|
-
type: "ai-tool",
|
|
122
|
-
data: { label: "Search Tool", toolName: "search" },
|
|
123
|
-
selected: false,
|
|
124
|
-
dragging: false,
|
|
125
|
-
connectable: true
|
|
126
|
-
});
|
|
127
|
-
expectSSRContains(html, "\u5DE5\u5177");
|
|
128
|
-
expectSSRContains(html, "search");
|
|
129
|
-
});
|
|
130
|
-
it("should render with tool name in SSR", async () => {
|
|
131
|
-
const html = await renderSSR(AiToolNode, {
|
|
132
|
-
id: "tool-1",
|
|
133
|
-
type: "ai-tool",
|
|
134
|
-
data: { label: "Tool", toolName: "calculator" },
|
|
135
|
-
selected: false,
|
|
136
|
-
dragging: false,
|
|
137
|
-
connectable: true
|
|
138
|
-
});
|
|
139
|
-
expectSSRContains(html, "calculator");
|
|
140
|
-
});
|
|
141
|
-
it("should hydrate without mismatch", async () => {
|
|
142
|
-
const result = await testHydration(AiToolNode, {
|
|
143
|
-
id: "tool-1",
|
|
144
|
-
type: "ai-tool",
|
|
145
|
-
data: { label: "Search", toolName: "search" },
|
|
146
|
-
selected: false,
|
|
147
|
-
dragging: false,
|
|
148
|
-
connectable: true
|
|
149
|
-
});
|
|
150
|
-
expect(result.isMatch).toBe(true);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
describe("AiConditionNode", () => {
|
|
154
|
-
it("should render condition node in SSR", async () => {
|
|
155
|
-
const html = await renderSSR(AiConditionNode, {
|
|
156
|
-
id: "cond-1",
|
|
157
|
-
type: "ai-condition",
|
|
158
|
-
data: { label: "Condition", condition: "if" },
|
|
159
|
-
selected: false,
|
|
160
|
-
dragging: false,
|
|
161
|
-
connectable: true
|
|
162
|
-
});
|
|
163
|
-
expectSSRContains(html, "\u6761\u4EF6\u5206\u652F");
|
|
164
|
-
});
|
|
165
|
-
it("should render with condition text in SSR", async () => {
|
|
166
|
-
const html = await renderSSR(AiConditionNode, {
|
|
167
|
-
id: "cond-1",
|
|
168
|
-
type: "ai-condition",
|
|
169
|
-
data: { label: "Check", condition: "score > 60" },
|
|
170
|
-
selected: false,
|
|
171
|
-
dragging: false,
|
|
172
|
-
connectable: true
|
|
173
|
-
});
|
|
174
|
-
expectSSRContains(html, "score");
|
|
175
|
-
});
|
|
176
|
-
it("should hydrate without mismatch", async () => {
|
|
177
|
-
const result = await testHydration(AiConditionNode, {
|
|
178
|
-
id: "cond-1",
|
|
179
|
-
type: "ai-condition",
|
|
180
|
-
data: { label: "Condition", condition: "if" },
|
|
181
|
-
selected: false,
|
|
182
|
-
dragging: false,
|
|
183
|
-
connectable: true
|
|
184
|
-
});
|
|
185
|
-
expect(result.isMatch).toBe(true);
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
describe("AiStartNode", () => {
|
|
189
|
-
it("should render start node in SSR", async () => {
|
|
190
|
-
const html = await renderSSR(AiStartNode, {
|
|
191
|
-
id: "start-1",
|
|
192
|
-
type: "ai-start",
|
|
193
|
-
data: { label: "Start" },
|
|
194
|
-
selected: false,
|
|
195
|
-
dragging: false,
|
|
196
|
-
connectable: true
|
|
197
|
-
});
|
|
198
|
-
expectSSRContains(html, "\u25B6");
|
|
199
|
-
});
|
|
200
|
-
it("should hydrate without mismatch", async () => {
|
|
201
|
-
const result = await testHydration(AiStartNode, {
|
|
202
|
-
id: "start-1",
|
|
203
|
-
type: "ai-start",
|
|
204
|
-
data: { label: "Start" },
|
|
205
|
-
selected: false,
|
|
206
|
-
dragging: false,
|
|
207
|
-
connectable: true
|
|
208
|
-
});
|
|
209
|
-
expect(result.isMatch).toBe(true);
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
describe("AiEndNode", () => {
|
|
213
|
-
it("should render end node in SSR", async () => {
|
|
214
|
-
const html = await renderSSR(AiEndNode, {
|
|
215
|
-
id: "end-1",
|
|
216
|
-
type: "ai-end",
|
|
217
|
-
data: { label: "End" },
|
|
218
|
-
selected: false,
|
|
219
|
-
dragging: false,
|
|
220
|
-
connectable: true
|
|
221
|
-
});
|
|
222
|
-
expectSSRContains(html, "\u25A0");
|
|
223
|
-
});
|
|
224
|
-
it("should render with status in SSR", async () => {
|
|
225
|
-
const html = await renderSSR(AiEndNode, {
|
|
226
|
-
id: "end-1",
|
|
227
|
-
type: "ai-end",
|
|
228
|
-
data: { label: "End", status: "success" },
|
|
229
|
-
selected: false,
|
|
230
|
-
dragging: false,
|
|
231
|
-
connectable: true
|
|
232
|
-
});
|
|
233
|
-
expectSSRContains(html, "\u25A0");
|
|
234
|
-
});
|
|
235
|
-
it("should hydrate without mismatch", async () => {
|
|
236
|
-
const result = await testHydration(AiEndNode, {
|
|
237
|
-
id: "end-1",
|
|
238
|
-
type: "ai-end",
|
|
239
|
-
data: { label: "End" },
|
|
240
|
-
selected: false,
|
|
241
|
-
dragging: false,
|
|
242
|
-
connectable: true
|
|
243
|
-
});
|
|
244
|
-
expect(result.isMatch).toBe(true);
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
describe("AiMemoryNode", () => {
|
|
248
|
-
it("should render memory node in SSR", async () => {
|
|
249
|
-
const html = await renderSSR(AiMemoryNode, {
|
|
250
|
-
id: "mem-1",
|
|
251
|
-
type: "ai-memory",
|
|
252
|
-
data: { label: "Memory", memoryType: "buffer" },
|
|
253
|
-
selected: false,
|
|
254
|
-
dragging: false,
|
|
255
|
-
connectable: true
|
|
256
|
-
});
|
|
257
|
-
expectSSRContains(html, "\u8BB0\u5FC6");
|
|
258
|
-
expectSSRContains(html, "buffer");
|
|
259
|
-
});
|
|
260
|
-
it("should render with memory type in SSR", async () => {
|
|
261
|
-
const html = await renderSSR(AiMemoryNode, {
|
|
262
|
-
id: "mem-1",
|
|
263
|
-
type: "ai-memory",
|
|
264
|
-
data: { label: "Memory", memoryType: "vector" },
|
|
265
|
-
selected: false,
|
|
266
|
-
dragging: false,
|
|
267
|
-
connectable: true
|
|
268
|
-
});
|
|
269
|
-
expectSSRContains(html, "vector");
|
|
270
|
-
});
|
|
271
|
-
it("should hydrate without mismatch", async () => {
|
|
272
|
-
const result = await testHydration(AiMemoryNode, {
|
|
273
|
-
id: "mem-1",
|
|
274
|
-
type: "ai-memory",
|
|
275
|
-
data: { label: "Memory", memoryType: "buffer" },
|
|
276
|
-
selected: false,
|
|
277
|
-
dragging: false,
|
|
278
|
-
connectable: true
|
|
279
|
-
});
|
|
280
|
-
expect(result.isMatch).toBe(true);
|
|
281
|
-
});
|
|
282
|
-
});
|
|
283
|
-
});
|