@huanban/rulego-editor-core 1.0.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 (102) hide show
  1. package/README.md +211 -0
  2. package/dist/api/RuleChainAPI.d.ts +163 -0
  3. package/dist/api/RuleChainAPI.d.ts.map +1 -0
  4. package/dist/api/index.d.ts +15 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/types.d.ts +244 -0
  7. package/dist/api/types.d.ts.map +1 -0
  8. package/dist/core/ComponentRegistry.d.ts +141 -0
  9. package/dist/core/ComponentRegistry.d.ts.map +1 -0
  10. package/dist/core/DataAdapter.d.ts +129 -0
  11. package/dist/core/DataAdapter.d.ts.map +1 -0
  12. package/dist/core/EditorCore.d.ts +251 -0
  13. package/dist/core/EditorCore.d.ts.map +1 -0
  14. package/dist/core/EventBus.d.ts +101 -0
  15. package/dist/core/EventBus.d.ts.map +1 -0
  16. package/dist/core/HistoryManager.d.ts +166 -0
  17. package/dist/core/HistoryManager.d.ts.map +1 -0
  18. package/dist/core/I18nManager.d.ts +130 -0
  19. package/dist/core/I18nManager.d.ts.map +1 -0
  20. package/dist/core/StateStore.d.ts +160 -0
  21. package/dist/core/StateStore.d.ts.map +1 -0
  22. package/dist/core/ThemeManager.d.ts +175 -0
  23. package/dist/core/ThemeManager.d.ts.map +1 -0
  24. package/dist/core/ValidationEngine.d.ts +139 -0
  25. package/dist/core/ValidationEngine.d.ts.map +1 -0
  26. package/dist/core/index.d.ts +30 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/defaults/components.d.ts +30 -0
  29. package/dist/defaults/components.d.ts.map +1 -0
  30. package/dist/defaults/index.d.ts +18 -0
  31. package/dist/defaults/index.d.ts.map +1 -0
  32. package/dist/defaults/locale-en-US.d.ts +26 -0
  33. package/dist/defaults/locale-en-US.d.ts.map +1 -0
  34. package/dist/defaults/locale-zh-CN.d.ts +41 -0
  35. package/dist/defaults/locale-zh-CN.d.ts.map +1 -0
  36. package/dist/iconRegistry.d.ts +17 -0
  37. package/dist/iconRegistry.d.ts.map +1 -0
  38. package/dist/index.cjs.js +2490 -0
  39. package/dist/index.cjs.js.map +1 -0
  40. package/dist/index.d.ts +49 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.esm.js +59608 -0
  43. package/dist/index.esm.js.map +1 -0
  44. package/dist/index.umd.js +2490 -0
  45. package/dist/index.umd.js.map +1 -0
  46. package/dist/standalone/HuanbanRulegoEditor.d.ts +392 -0
  47. package/dist/standalone/HuanbanRulegoEditor.d.ts.map +1 -0
  48. package/dist/standalone/code-editor.d.ts +95 -0
  49. package/dist/standalone/code-editor.d.ts.map +1 -0
  50. package/dist/standalone/custom-nodes.d.ts +26 -0
  51. package/dist/standalone/custom-nodes.d.ts.map +1 -0
  52. package/dist/standalone/editor-chain-info.d.ts +46 -0
  53. package/dist/standalone/editor-chain-info.d.ts.map +1 -0
  54. package/dist/standalone/editor-context-menu.d.ts +21 -0
  55. package/dist/standalone/editor-context-menu.d.ts.map +1 -0
  56. package/dist/standalone/editor-debug-ws.d.ts +170 -0
  57. package/dist/standalone/editor-debug-ws.d.ts.map +1 -0
  58. package/dist/standalone/editor-dialogs.d.ts +73 -0
  59. package/dist/standalone/editor-dialogs.d.ts.map +1 -0
  60. package/dist/standalone/editor-events.d.ts +28 -0
  61. package/dist/standalone/editor-events.d.ts.map +1 -0
  62. package/dist/standalone/editor-property-drawers.d.ts +78 -0
  63. package/dist/standalone/editor-property-drawers.d.ts.map +1 -0
  64. package/dist/standalone/editor-route-settings.d.ts +49 -0
  65. package/dist/standalone/editor-route-settings.d.ts.map +1 -0
  66. package/dist/standalone/editor-sidebar.d.ts +19 -0
  67. package/dist/standalone/editor-sidebar.d.ts.map +1 -0
  68. package/dist/standalone/editor-styles.d.ts +12 -0
  69. package/dist/standalone/editor-styles.d.ts.map +1 -0
  70. package/dist/standalone/editor-toolbar.d.ts +89 -0
  71. package/dist/standalone/editor-toolbar.d.ts.map +1 -0
  72. package/dist/standalone/group-node.d.ts +52 -0
  73. package/dist/standalone/group-node.d.ts.map +1 -0
  74. package/dist/standalone/icon-utils.d.ts +19 -0
  75. package/dist/standalone/icon-utils.d.ts.map +1 -0
  76. package/dist/standalone/index.d.ts +9 -0
  77. package/dist/standalone/index.d.ts.map +1 -0
  78. package/dist/standalone/logger.d.ts +35 -0
  79. package/dist/standalone/logger.d.ts.map +1 -0
  80. package/dist/standalone/node-definitions.d.ts +74 -0
  81. package/dist/standalone/node-definitions.d.ts.map +1 -0
  82. package/dist/standalone/node-views-data.d.ts +21 -0
  83. package/dist/standalone/node-views-data.d.ts.map +1 -0
  84. package/dist/standalone/themes.d.ts +54 -0
  85. package/dist/standalone/themes.d.ts.map +1 -0
  86. package/dist/types/component.d.ts +120 -0
  87. package/dist/types/component.d.ts.map +1 -0
  88. package/dist/types/editor.d.ts +246 -0
  89. package/dist/types/editor.d.ts.map +1 -0
  90. package/dist/types/events.d.ts +199 -0
  91. package/dist/types/events.d.ts.map +1 -0
  92. package/dist/types/index.d.ts +12 -0
  93. package/dist/types/index.d.ts.map +1 -0
  94. package/dist/types/rule-chain.d.ts +141 -0
  95. package/dist/types/rule-chain.d.ts.map +1 -0
  96. package/dist/utils/helpers.d.ts +100 -0
  97. package/dist/utils/helpers.d.ts.map +1 -0
  98. package/dist/utils/index.d.ts +6 -0
  99. package/dist/utils/index.d.ts.map +1 -0
  100. package/dist/utils/pinyin-search.d.ts +60 -0
  101. package/dist/utils/pinyin-search.d.ts.map +1 -0
  102. package/package.json +70 -0
package/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # @huanban/editor-core
2
+
3
+ > RuleGo 规则链编辑器核心库 — 框架无关的 Headless 编辑器引擎 + API 抽象层
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@huanban/editor-core.svg)](https://www.npmjs.com/package/@huanban/editor-core)
6
+ [![license](https://img.shields.io/npm/l/@huanban/editor-core.svg)](https://github.com/openclaw/rulego-editor/blob/main/LICENSE)
7
+
8
+ ## ✨ 特性
9
+
10
+ - **框架无关** — 纯 TypeScript 实现,不依赖任何前端框架(React / Vue / Angular 均可)
11
+ - **Headless 架构** — 核心逻辑与 UI 完全解耦,可自由定制界面
12
+ - **API 抽象层** — 提供 `WorkflowFetcher` 接口 + `RuleChainAPI` 默认实现
13
+ - **路径可配置** — 所有 API 端点均通过 `RuleChainRoutes` 自定义
14
+ - **基于 LogicFlow** — 底层使用 LogicFlow 流程图引擎,提供强大的节点编排能力
15
+ - **完整事件系统** — EventBus 事件总线,支持节点/边/编辑器事件监听
16
+ - **状态管理** — 内置 StateStore 响应式状态管理
17
+ - **6 套主题** — 经典(Classic) / 暗夜(Dark) / 自然(Nature) / 优雅(Elegant) / 科技(Tech) / 现代(Modern)
18
+ - **国际化** — 中/英文双语支持,一键切换
19
+ - **撤销/重做** — 内置 undo/redo 操作历史
20
+ - **调试日志** — 内置调试开关,默认关闭,可按需开启
21
+ - **节点分组** — DynamicGroup 容器节点,支持拖入/折叠/调整大小
22
+
23
+ ## 📦 安装
24
+
25
+ ```bash
26
+ npm install @huanban/editor-core
27
+ # 或
28
+ pnpm add @huanban/editor-core
29
+ ```
30
+
31
+ ## 🚀 快速开始
32
+
33
+ ### 独立编辑器(推荐)
34
+
35
+ ```html
36
+ <script src="dist/index.umd.js"></script>
37
+ <script>
38
+ const editor = new RuleGoEditorCore.HuanbanRulegoEditor('#editor', {
39
+ apiBase: 'http://127.0.0.1:9090/api/v1',
40
+ onReady: ({ lf, core }) => console.log('就绪'),
41
+ onNodeClick: (node) => console.log('点击节点', node),
42
+ })
43
+ </script>
44
+ ```
45
+
46
+ ### ESM 模块化用法
47
+
48
+ ```typescript
49
+ import { HuanbanRulegoEditor } from '@huanban/editor-core'
50
+
51
+ const editor = new HuanbanRulegoEditor('#editor', {
52
+ apiBase: 'http://127.0.0.1:9090/api/v1',
53
+ lang: 'zh-CN',
54
+ theme: 'modern',
55
+ })
56
+ ```
57
+
58
+ ### API 客户端
59
+
60
+ ```typescript
61
+ import { RuleChainAPI } from '@huanban/editor-core'
62
+
63
+ const api = new RuleChainAPI({
64
+ apiBase: 'http://127.0.0.1:9090/api/v1',
65
+ })
66
+
67
+ // 获取列表
68
+ const list = await api.list(1, 10)
69
+
70
+ // 获取内容
71
+ const content = await api.getContent('chain-001')
72
+ ```
73
+
74
+ ## 🔧 调试日志
75
+
76
+ 调试日志**默认关闭**,可通过以下方式开启:
77
+
78
+ ```javascript
79
+ // 方式1: 静态方法(推荐)
80
+ HuanbanRulegoEditor.setDebug(true)
81
+
82
+ // 方式2: URL 参数
83
+ // 浏览器地址栏加 ?debug=1
84
+
85
+ // 方式3: localStorage 持久化
86
+ localStorage.setItem('huanban_debug', '1')
87
+
88
+ // 方式4: ESM 直接导入
89
+ import { setDebug } from '@huanban/editor-core'
90
+ setDebug(true)
91
+ ```
92
+
93
+ ## 📁 包结构
94
+
95
+ ```
96
+ src/
97
+ ├── index.ts # 包入口(统一导出)
98
+ ├── iconRegistry.ts # 90 个 SVG 图标内联注册
99
+ ├── core/ # 核心引擎模块
100
+ │ ├── EditorCore.ts # 编辑器主引擎
101
+ │ ├── EventBus.ts # 类型安全事件总线
102
+ │ ├── StateStore.ts # 响应式状态容器
103
+ │ ├── DataAdapter.ts # RuleGo ↔ LogicFlow 数据转换
104
+ │ ├── ComponentRegistry.ts # 组件注册表
105
+ │ ├── HistoryManager.ts # 撤销/重做管理
106
+ │ ├── ThemeManager.ts # 6 套主题管理
107
+ │ ├── I18nManager.ts # 国际化管理
108
+ │ └── ValidationEngine.ts # 图验证引擎
109
+ ├── standalone/ # 独立编辑器(全功能 UMD 打包)
110
+ │ ├── HuanbanRulegoEditor.ts # 主类入口
111
+ │ ├── editor-events.ts # 事件桥接
112
+ │ ├── editor-toolbar.ts # 工具栏逻辑
113
+ │ ├── editor-sidebar.ts # 侧边栏渲染
114
+ │ ├── editor-dialogs.ts # 弹窗/面板
115
+ │ ├── editor-property-drawers.ts # 属性 Drawer
116
+ │ ├── editor-chain-info.ts # 链信息面板
117
+ │ ├── editor-context-menu.ts # 右键菜单
118
+ │ ├── editor-debug-ws.ts # WebSocket 调试
119
+ │ ├── editor-styles.ts # CSS 动态注入
120
+ │ ├── custom-nodes.ts # 自定义节点注册
121
+ │ ├── group-node.ts # 分组容器节点
122
+ │ ├── themes.ts # 主题定义(6 套)
123
+ │ ├── node-definitions.ts # 节点分类配置
124
+ │ ├── node-views-data.ts # 节点视觉数据
125
+ │ ├── code-editor.ts # CodeMirror 集成
126
+ │ ├── icon-utils.ts # 图标工具
127
+ │ └── logger.ts # 调试日志工具
128
+ ├── api/ # API 客户端
129
+ │ ├── RuleChainAPI.ts # 默认 HTTP 客户端
130
+ │ └── types.ts # WorkflowFetcher 接口
131
+ ├── types/ # TypeScript 类型定义
132
+ │ ├── editor.ts # 编辑器配置/状态类型
133
+ │ ├── rule-chain.ts # 规则链数据类型
134
+ │ ├── component.ts # 组件定义类型
135
+ │ └── events.ts # 事件映射类型
136
+ ├── defaults/ # 默认数据
137
+ │ ├── components.ts # 内置组件定义
138
+ │ ├── locale-zh-CN.ts # 中文语言包
139
+ │ └── locale-en-US.ts # 英文语言包
140
+ ├── utils/ # 工具函数
141
+ │ ├── helpers.ts # 通用辅助函数
142
+ │ └── pinyin-search.ts # 拼音搜索
143
+ ├── styles/ # CSS 样式文件
144
+ │ ├── editor.css # 编辑器主样式
145
+ │ ├── info-panel.css # 信息面板样式
146
+ │ └── list.css # 列表组件样式
147
+ └── icons/ # 90 个 SVG 图标源文件
148
+ ```
149
+
150
+ ## 📖 核心模块
151
+
152
+ | 模块 | 说明 |
153
+ |------|------|
154
+ | `EditorCore` | 编辑器主类,管理生命周期和数据流 |
155
+ | `HuanbanRulegoEditor` | 独立编辑器主类,全功能即开即用 |
156
+ | `RuleChainAPI` | 默认 API 客户端,实现 `WorkflowFetcher` 接口 |
157
+ | `DEFAULT_ROUTES` | 默认 API 路径映射 (RuleGo 标准路径) |
158
+ | `EventBus` | 事件总线,支持 on / off / emit 模式 |
159
+ | `StateStore` | 响应式状态容器,支持 subscribe |
160
+ | `ThemeManager` | 主题管理器,6 套主题自由切换 |
161
+ | `I18nManager` | 国际化管理器,中英文切换 |
162
+ | `ValidationEngine` | 规则链验证引擎 |
163
+ | `setDebug` / `isDebug` | 调试日志开关 |
164
+
165
+ ## 📋 导出类型
166
+
167
+ ```typescript
168
+ // 数据类型
169
+ WorkflowItem // 工作流列表项
170
+ PagedResponse<T> // 分页响应
171
+ ApiResult // 操作结果
172
+
173
+ // 请求抽象
174
+ WorkflowFetcher // 请求适配器接口(8 个方法)
175
+ RuleChainAPIOptions // API 客户端配置
176
+ RuleChainRoutes // 路径映射(支持函数式路由)
177
+
178
+ // UI 自定义
179
+ WorkflowListIcons // 列表组件图标映射
180
+ WorkflowInfoIcons // 信息面板图标映射
181
+ WorkflowTheme // 主题类型
182
+
183
+ // 编辑器类型
184
+ EditorOptions, RuleChainData, RuleChainConfig
185
+ RuleNodeConfig, RuleConnectionConfig, RuleEndpointConfig
186
+ ComponentDefinition, ComponentGroup, ComponentField
187
+ EditorEventMap, EditorEventName
188
+ HuanbanRulegoEditorOptions
189
+ ```
190
+
191
+ ## 🏗️ 构建产物
192
+
193
+ | 格式 | 文件 | 说明 |
194
+ |------|------|------|
195
+ | ESM | `dist/index.esm.js` | 现代打包工具 (Vite/Webpack) |
196
+ | CJS | `dist/index.cjs.js` | Node.js / 旧项目 |
197
+ | UMD | `dist/index.umd.js` | `<script>` 标签直接引入,暴露 `window.RuleGoEditorCore` |
198
+
199
+ > 所有格式均全量打包 LogicFlow + CodeMirror,无需额外安装。
200
+ > CSS 通过 `editor-styles.ts` 动态注入,无需单独引入样式文件。
201
+
202
+ ## 🔗 相关包
203
+
204
+ | 包 | 说明 |
205
+ |---|---|
206
+ | [`@huanban/editor-react`](../editor-react) | React 适配层 (Hooks + 组件) |
207
+ | [`@huanban/editor-vue`](../editor-vue) | Vue 3 适配层 |
208
+
209
+ ## 📄 协议
210
+
211
+ Apache-2.0
@@ -0,0 +1,163 @@
1
+ /**
2
+ * @file api/RuleChainAPI.ts
3
+ * @description 规则链 API 客户端 — 框架无关,纯 fetch 实现
4
+ *
5
+ * 功能:
6
+ * - 列表查询(分页 + 搜索)
7
+ * - CRUD(创建/读取/更新/删除)
8
+ * - 上线/下线操作
9
+ * - 变量/秘钥管理
10
+ * - 复制规则链
11
+ *
12
+ * 该类实现了 WorkflowFetcher 接口,可直接作为默认请求层使用。
13
+ * 消费者也可以传入自定义 fetcher 来替换整个请求层。
14
+ *
15
+ * 所有方法均为实例方法,使用原生 fetch + AbortController 超时。
16
+ *
17
+ * 使用方式:
18
+ * ```ts
19
+ * import { RuleChainAPI } from '@huanban/rulego-editor-core'
20
+ *
21
+ * // 方式1: 直接用 RuleChainAPI
22
+ * const api = new RuleChainAPI({ apiBase: 'http://127.0.0.1:9090/api/v1' })
23
+ * const data = await api.list(1, 20, 'test')
24
+ *
25
+ * // 方式2: 作为 fetcher 传给组件
26
+ * <WorkflowList fetcher={new RuleChainAPI({ apiBase: '...' })} />
27
+ * ```
28
+ *
29
+ * @module @huanban/rulego-editor-core/api
30
+ */
31
+ import type { WorkflowItem, PagedResponse, ApiResult, WorkflowFetcher, RuleChainAPIOptions } from './types';
32
+ /**
33
+ * 规则链 API 客户端
34
+ *
35
+ * @description 封装所有规则链相关的 REST API 调用,
36
+ * 实现 WorkflowFetcher 接口,可整体替换。
37
+ * 使用原生 fetch,不依赖任何框架。
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * const api = new RuleChainAPI({ apiBase: 'http://localhost:9090/api/v1' })
42
+ *
43
+ * // 作为 WorkflowFetcher 使用
44
+ * const list = await api.list(1, 20, '')
45
+ * const chain = await api.getContent('chain-123')
46
+ *
47
+ * // 直接传给组件
48
+ * <WorkflowList fetcher={api} />
49
+ * ```
50
+ */
51
+ export declare class RuleChainAPI implements WorkflowFetcher {
52
+ /** API 基础地址 */
53
+ private apiBase;
54
+ /** 请求超时(毫秒) */
55
+ private timeout;
56
+ /** 自定义请求头 */
57
+ private headers;
58
+ /** 路由映射(支持自定义 API 路径) */
59
+ private routes;
60
+ /**
61
+ * 创建 API 客户端实例
62
+ *
63
+ * @param options - 配置项
64
+ * @param options.apiBase - API 基础地址(如 'http://127.0.0.1:9090/api/v1')
65
+ * @param options.timeout - 请求超时毫秒数,默认 8000
66
+ * @param options.headers - 自定义请求头
67
+ * @param options.authToken - Bearer Token
68
+ */
69
+ constructor(options: RuleChainAPIOptions);
70
+ /**
71
+ * 发起 fetch 请求(带超时控制)
72
+ *
73
+ * @param path - API 路径(相对 apiBase)
74
+ * @param init - fetch 配置
75
+ * @returns 解析后的 JSON
76
+ */
77
+ private request;
78
+ /**
79
+ * 将后端 RuleChain DSL 对象转为前端扁平化 WorkflowItem
80
+ *
81
+ * @description 后端返回 { ruleChain: { id, name, root, disabled, additionalInfo }, metadata: {...} }
82
+ * 前端通过此方法转换为扁平化结构。
83
+ *
84
+ * @param raw - 后端原始对象
85
+ * @returns 扁平化的 WorkflowItem
86
+ */
87
+ static parseRuleChain(raw: unknown): WorkflowItem;
88
+ /**
89
+ * 生成随机规则链 ID(12 位字母数字)
90
+ * @returns 生成的 ID
91
+ */
92
+ static generateChainId(): string;
93
+ /**
94
+ * 查询规则链列表(分页 + 搜索)
95
+ *
96
+ * @param page - 页码(从 1 开始)
97
+ * @param size - 每页条数
98
+ * @param keywords - 搜索关键词
99
+ * @returns 分页结果
100
+ */
101
+ list(page?: number, size?: number, keywords?: string): Promise<PagedResponse<WorkflowItem>>;
102
+ /**
103
+ * 创建规则链
104
+ *
105
+ * @param data - 规则链 DSL 数据
106
+ * @returns 操作结果
107
+ */
108
+ create(data: Record<string, unknown>): Promise<ApiResult>;
109
+ /**
110
+ * 删除规则链
111
+ *
112
+ * @param id - 规则链 ID
113
+ * @returns 操作结果
114
+ */
115
+ remove(id: string): Promise<ApiResult>;
116
+ /**
117
+ * 上线/下线规则链
118
+ *
119
+ * @param id - 规则链 ID
120
+ * @param type - 'start'(上线)| 'stop'(下线)
121
+ * @returns 操作结果
122
+ */
123
+ operate(id: string, type: 'start' | 'stop'): Promise<ApiResult>;
124
+ /**
125
+ * 复制规则链
126
+ *
127
+ * @description 获取完整内容 → 修改名称和 ID → 创建新的
128
+ * @param id - 原始规则链 ID
129
+ * @param newName - 新名称(不传则自动加 _副本)
130
+ * @returns 操作结果
131
+ */
132
+ copy(id: string, newName?: string): Promise<ApiResult>;
133
+ /**
134
+ * 获取规则链完整内容(包含 metadata)
135
+ *
136
+ * @param id - 规则链 ID
137
+ * @returns 完整的 RuleChain DSL
138
+ */
139
+ getContent(id: string): Promise<Record<string, unknown>>;
140
+ /**
141
+ * 保存/更新规则链基础信息
142
+ *
143
+ * @param id - 规则链 ID
144
+ * @param info - 基础信息字段(name/description 等)
145
+ * @returns 操作结果
146
+ */
147
+ saveBaseInfo(id: string, info: Record<string, unknown>): Promise<ApiResult>;
148
+ /**
149
+ * 保存规则链配置(变量或秘钥)
150
+ *
151
+ * @param id - 规则链 ID
152
+ * @param configType - 'vars'(变量)| 'secrets'(秘钥)
153
+ * @param data - key-value 配置数据
154
+ * @returns 操作结果
155
+ */
156
+ saveConfig(id: string, configType: 'vars' | 'secrets', data: Record<string, string>): Promise<ApiResult>;
157
+ /**
158
+ * 获取当前 API 基础地址
159
+ * @returns apiBase
160
+ */
161
+ getApiBase(): string;
162
+ }
163
+ //# sourceMappingURL=RuleChainAPI.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuleChainAPI.d.ts","sourceRoot":"","sources":["../../src/api/RuleChainAPI.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,mBAAmB,EAEpB,MAAM,SAAS,CAAA;AAOhB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,YAAa,YAAW,eAAe;IAClD,eAAe;IACf,OAAO,CAAC,OAAO,CAAQ;IACvB,eAAe;IACf,OAAO,CAAC,OAAO,CAAQ;IACvB,aAAa;IACb,OAAO,CAAC,OAAO,CAAwB;IACvC,yBAAyB;IACzB,OAAO,CAAC,MAAM,CAAiB;IAE/B;;;;;;;;OAQG;gBACS,OAAO,EAAE,mBAAmB;IAkBxC;;;;;;OAMG;YACW,OAAO;IA2BrB;;;;;;;;OAQG;IACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY;IAkBjD;;;OAGG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM;IAahC;;;;;;;OAOG;IACG,IAAI,CAAC,IAAI,SAAI,EAAE,IAAI,SAAK,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IA8BpF;;;;;OAKG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAY/D;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAS5C;;;;;;OAMG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IASrE;;;;;;;OAOG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmB5D;;;;;OAKG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAI9D;;;;;;OAMG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAYjF;;;;;;;OAOG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;IAgB9G;;;OAGG;IACH,UAAU,IAAI,MAAM;CAGrB"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file api/index.ts
3
+ * @description API 模块 barrel 导出
4
+ *
5
+ * 导出内容:
6
+ * - RuleChainAPI: 内置请求实现(纯 fetch)
7
+ * - WorkflowFetcher: 请求适配器接口(用于替换请求层)
8
+ * - RuleChainRoutes / DEFAULT_ROUTES: 路由映射(用于替换 API 路径)
9
+ * - WorkflowListIcons / WorkflowInfoIcons: 图标映射接口
10
+ * - 数据类型: WorkflowItem / PagedResponse / ApiResult
11
+ */
12
+ export { RuleChainAPI } from './RuleChainAPI';
13
+ export { DEFAULT_ROUTES } from './types';
14
+ export type { WorkflowItem, PagedResponse, ApiResult, WorkflowFetcher, RuleChainAPIOptions, RuleChainRoutes, WorkflowListIcons, WorkflowInfoIcons, WorkflowTheme, } from './types';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,SAAS,EACT,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,GACd,MAAM,SAAS,CAAA"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * @file api/types.ts
3
+ * @description 规则链 API 通用类型定义 — 框架无关
4
+ *
5
+ * 这些类型在 editor-core / editor-react / editor-vue 三个包之间共享。
6
+ * 消费者通过实现 WorkflowFetcher 接口来替换默认的请求实现。
7
+ *
8
+ * @module @huanban/rulego-editor-core/api
9
+ */
10
+ /**
11
+ * 工作流列表项(前端扁平化结构)
12
+ *
13
+ * @description 后端返回嵌套 { ruleChain: {...}, metadata: {...} },
14
+ * 经过 parseRuleChain() 转换为此扁平结构供 UI 消费。
15
+ */
16
+ export interface WorkflowItem {
17
+ /** 规则链 ID */
18
+ id: string;
19
+ /** 规则链名称 */
20
+ name: string;
21
+ /** 是否为根规则链 */
22
+ root: boolean;
23
+ /** 是否禁用 */
24
+ disabled: boolean;
25
+ /** 是否开启调试模式 */
26
+ debugMode: boolean;
27
+ /** 描述 */
28
+ description: string;
29
+ /** 附加信息(保留原始字段) */
30
+ additionalInfo: Record<string, unknown>;
31
+ /** 创建时间 */
32
+ createTime: string;
33
+ /** 更新时间 */
34
+ updateTime: string;
35
+ /** 是否已部署 (disabled=false → deployed=true) */
36
+ deployed: boolean;
37
+ }
38
+ /**
39
+ * 分页响应
40
+ */
41
+ export interface PagedResponse<T> {
42
+ /** 数据列表 */
43
+ items: T[];
44
+ /** 总记录数 */
45
+ total: number;
46
+ /** 当前页码 */
47
+ page: number;
48
+ /** 每页条数 */
49
+ pageSize: number;
50
+ }
51
+ /**
52
+ * API 操作结果
53
+ */
54
+ export interface ApiResult {
55
+ /** 是否成功 */
56
+ success: boolean;
57
+ /** 消息 */
58
+ msg?: string;
59
+ /** 可选数据 */
60
+ data?: unknown;
61
+ }
62
+ /**
63
+ * 工作流请求适配器接口
64
+ *
65
+ * @description 消费者可实现此接口来替换包的默认请求方式。
66
+ * 不传 fetcher 时,包会用内置的 RuleChainAPI (纯 fetch) 实现。
67
+ * 传了 fetcher 后,apiBase 参数不再生效。
68
+ *
69
+ * @example 使用 axios 替换:
70
+ * ```ts
71
+ * const myFetcher: WorkflowFetcher = {
72
+ * list: async (page, size, kw) => {
73
+ * const res = await axios.get('/api/v1/rules', { params: { page, size, keywords: kw } })
74
+ * return res.data
75
+ * },
76
+ * create: async (data) => {
77
+ * await axios.post('/api/v1/rules', data)
78
+ * return { success: true }
79
+ * },
80
+ * // ...
81
+ * }
82
+ * ```
83
+ *
84
+ * @example 使用 systemGateway (HuanbanClaw):
85
+ * ```ts
86
+ * const myFetcher: WorkflowFetcher = {
87
+ * list: (p, s, kw) => systemGateway.getRuleChains(p, s, kw),
88
+ * create: (data) => systemGateway.createRuleChain(data),
89
+ * remove: (id) => systemGateway.deleteRuleChain(id),
90
+ * operate: (id, type) => systemGateway.operateRuleChain(id, type),
91
+ * copy: (id) => systemGateway.copyRuleChain(id),
92
+ * getContent: (id) => systemGateway.getRuleChainContent(id),
93
+ * saveBaseInfo: (id, data) => systemGateway.saveRuleChainBaseInfo(id, data),
94
+ * saveConfig: (id, type, data) => systemGateway.saveRuleChainConfig(id, type, data),
95
+ * }
96
+ * ```
97
+ */
98
+ export interface WorkflowFetcher {
99
+ /** 查询列表(分页 + 搜索) */
100
+ list: (page: number, size: number, keywords: string) => Promise<PagedResponse<WorkflowItem>>;
101
+ /** 创建规则链 */
102
+ create: (data: Record<string, unknown>) => Promise<ApiResult>;
103
+ /** 删除规则链 */
104
+ remove: (id: string) => Promise<ApiResult>;
105
+ /** 上线/下线 */
106
+ operate: (id: string, type: 'start' | 'stop') => Promise<ApiResult>;
107
+ /** 复制规则链 */
108
+ copy: (id: string, newName?: string) => Promise<ApiResult>;
109
+ /** 获取完整内容 */
110
+ getContent: (id: string) => Promise<Record<string, unknown>>;
111
+ /** 保存基础信息 */
112
+ saveBaseInfo: (id: string, info: Record<string, unknown>) => Promise<ApiResult>;
113
+ /** 保存配置(变量或秘钥) */
114
+ saveConfig: (id: string, configType: 'vars' | 'secrets', data: Record<string, string>) => Promise<ApiResult>;
115
+ }
116
+ /**
117
+ * 工作流列表图标映射
118
+ *
119
+ * @description 消费者可传入自定义图标(React/Vue 节点或字符串)。
120
+ * 不传时使用包内置的 emoji 图标(零依赖)。
121
+ *
122
+ * 在 原生 JS 中传 HTML 字符串:
123
+ * ```js
124
+ * icons: { design: '<svg>...</svg>', delete: '🗑' }
125
+ * ```
126
+ *
127
+ * 在 React 中传 JSX:
128
+ * ```tsx
129
+ * icons={{ design: <EditOutlined />, delete: <DeleteOutlined /> }}
130
+ * ```
131
+ */
132
+ export interface WorkflowListIcons {
133
+ /** 设计按钮图标 */
134
+ design?: unknown;
135
+ /** 信息按钮图标 */
136
+ info?: unknown;
137
+ /** 上线按钮图标 */
138
+ start?: unknown;
139
+ /** 下线按钮图标 */
140
+ stop?: unknown;
141
+ /** 复制按钮图标 */
142
+ copy?: unknown;
143
+ /** 删除按钮图标 */
144
+ delete?: unknown;
145
+ /** 搜索图标 */
146
+ search?: unknown;
147
+ /** 刷新图标 */
148
+ refresh?: unknown;
149
+ /** 添加图标 */
150
+ add?: unknown;
151
+ /** 工作流图标 */
152
+ workflow?: unknown;
153
+ /** 记录图标 */
154
+ logs?: unknown;
155
+ }
156
+ /**
157
+ * 工作流信息面板图标映射
158
+ */
159
+ export interface WorkflowInfoIcons {
160
+ /** 变量图标 */
161
+ variable?: unknown;
162
+ /** 秘钥图标 */
163
+ secret?: unknown;
164
+ /** API 集成图标 */
165
+ api?: unknown;
166
+ /** MCP 集成图标 */
167
+ mcp?: unknown;
168
+ /** 复制图标 */
169
+ copy?: unknown;
170
+ /** 删除图标 */
171
+ delete?: unknown;
172
+ /** 添加图标 */
173
+ add?: unknown;
174
+ /** 保存图标 */
175
+ save?: unknown;
176
+ }
177
+ /**
178
+ * 支持的主题类型
179
+ */
180
+ export type WorkflowTheme = 'light' | 'dark' | string;
181
+ /**
182
+ * API 路由映射
183
+ *
184
+ * @description 消费者可逐个覆盖 API 路径。
185
+ * 支持字符串模板或函数两种形式,函数接收动态参数返回完整路径。
186
+ *
187
+ * @example 自定义路由:
188
+ * ```ts
189
+ * const routes: Partial<RuleChainRoutes> = {
190
+ * list: '/my-api/chains', // 字符串
191
+ * getContent: (id) => `/my-api/chains/${id}`, // 函数
192
+ * operate: (id, type) => `/my-api/chains/${id}/action/${type}`,
193
+ * saveBaseInfo: (id) => `/custom/${id}/info`,
194
+ * }
195
+ * ```
196
+ */
197
+ export interface RuleChainRoutes {
198
+ /** 列表路径,默认 '/rules' */
199
+ list: string;
200
+ /** 创建路径,默认 '/rules' */
201
+ create: string;
202
+ /** 删除路径,接收 (id) => string,默认 '/rules/:id' */
203
+ remove: (id: string) => string;
204
+ /** 上线/下线路径,接收 (id, type) => string,默认 '/rules/:id/:type' */
205
+ operate: (id: string, type: string) => string;
206
+ /** 获取内容路径,接收 (id) => string,默认 '/rules/:id' */
207
+ getContent: (id: string) => string;
208
+ /** 保存基础信息路径,接收 (id) => string,默认 '/rules/:id/base' */
209
+ saveBaseInfo: (id: string) => string;
210
+ /** 保存配置路径,接收 (id, configType) => string,默认 '/rules/:id/config/:configType' */
211
+ saveConfig: (id: string, configType: string) => string;
212
+ }
213
+ /**
214
+ * 默认路由映射
215
+ *
216
+ * @description 对应 RuleGo 原生 API 路径
217
+ */
218
+ export declare const DEFAULT_ROUTES: RuleChainRoutes;
219
+ /**
220
+ * 内置 API 客户端配置
221
+ */
222
+ export interface RuleChainAPIOptions {
223
+ /** API 基础地址(如 'http://127.0.0.1:9090/api/v1') */
224
+ apiBase: string;
225
+ /** 请求超时毫秒数,默认 8000 */
226
+ timeout?: number;
227
+ /** 自定义请求头 */
228
+ headers?: Record<string, string>;
229
+ /** 认证 Token */
230
+ authToken?: string;
231
+ /**
232
+ * 自定义路由映射(可部分覆盖)
233
+ *
234
+ * @example
235
+ * ```ts
236
+ * routes: {
237
+ * list: '/my-custom/chains',
238
+ * remove: (id) => `/my-custom/chains/${id}`,
239
+ * }
240
+ * ```
241
+ */
242
+ routes?: Partial<RuleChainRoutes>;
243
+ }
244
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}