weaver-e10-builder 1.0.2-beta

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 (301) hide show
  1. package/README.md +200 -0
  2. package/dist/commands/app.d.ts +3 -0
  3. package/dist/commands/app.d.ts.map +1 -0
  4. package/dist/commands/app.js +305 -0
  5. package/dist/commands/app.js.map +1 -0
  6. package/dist/commands/auth.d.ts +3 -0
  7. package/dist/commands/auth.d.ts.map +1 -0
  8. package/dist/commands/auth.js +386 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/check.d.ts +3 -0
  11. package/dist/commands/check.d.ts.map +1 -0
  12. package/dist/commands/check.js +106 -0
  13. package/dist/commands/check.js.map +1 -0
  14. package/dist/commands/compile.d.ts +3 -0
  15. package/dist/commands/compile.d.ts.map +1 -0
  16. package/dist/commands/compile.js +134 -0
  17. package/dist/commands/compile.js.map +1 -0
  18. package/dist/commands/docx.d.ts +3 -0
  19. package/dist/commands/docx.d.ts.map +1 -0
  20. package/dist/commands/docx.js +54 -0
  21. package/dist/commands/docx.js.map +1 -0
  22. package/dist/commands/form-button.d.ts +3 -0
  23. package/dist/commands/form-button.d.ts.map +1 -0
  24. package/dist/commands/form-button.js +441 -0
  25. package/dist/commands/form-button.js.map +1 -0
  26. package/dist/commands/form-data.d.ts +3 -0
  27. package/dist/commands/form-data.d.ts.map +1 -0
  28. package/dist/commands/form-data.js +197 -0
  29. package/dist/commands/form-data.js.map +1 -0
  30. package/dist/commands/form-ebuilder-columns.d.ts +3 -0
  31. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -0
  32. package/dist/commands/form-ebuilder-columns.js +118 -0
  33. package/dist/commands/form-ebuilder-columns.js.map +1 -0
  34. package/dist/commands/form-ebuilder-filter.d.ts +3 -0
  35. package/dist/commands/form-ebuilder-filter.d.ts.map +1 -0
  36. package/dist/commands/form-ebuilder-filter.js +135 -0
  37. package/dist/commands/form-ebuilder-filter.js.map +1 -0
  38. package/dist/commands/form-ebuilder-scope.d.ts +3 -0
  39. package/dist/commands/form-ebuilder-scope.d.ts.map +1 -0
  40. package/dist/commands/form-ebuilder-scope.js +321 -0
  41. package/dist/commands/form-ebuilder-scope.js.map +1 -0
  42. package/dist/commands/form-ebuilder-search.d.ts +3 -0
  43. package/dist/commands/form-ebuilder-search.d.ts.map +1 -0
  44. package/dist/commands/form-ebuilder-search.js +252 -0
  45. package/dist/commands/form-ebuilder-search.js.map +1 -0
  46. package/dist/commands/form-formula.d.ts +12 -0
  47. package/dist/commands/form-formula.d.ts.map +1 -0
  48. package/dist/commands/form-formula.js +252 -0
  49. package/dist/commands/form-formula.js.map +1 -0
  50. package/dist/commands/form-layout-init.d.ts +15 -0
  51. package/dist/commands/form-layout-init.d.ts.map +1 -0
  52. package/dist/commands/form-layout-init.js +162 -0
  53. package/dist/commands/form-layout-init.js.map +1 -0
  54. package/dist/commands/form-layout.d.ts +3 -0
  55. package/dist/commands/form-layout.d.ts.map +1 -0
  56. package/dist/commands/form-layout.js +236 -0
  57. package/dist/commands/form-layout.js.map +1 -0
  58. package/dist/commands/form-list-click.d.ts +3 -0
  59. package/dist/commands/form-list-click.d.ts.map +1 -0
  60. package/dist/commands/form-list-click.js +154 -0
  61. package/dist/commands/form-list-click.js.map +1 -0
  62. package/dist/commands/form-list-event.d.ts +3 -0
  63. package/dist/commands/form-list-event.d.ts.map +1 -0
  64. package/dist/commands/form-list-event.js +203 -0
  65. package/dist/commands/form-list-event.js.map +1 -0
  66. package/dist/commands/form-list-filter.d.ts +9 -0
  67. package/dist/commands/form-list-filter.d.ts.map +1 -0
  68. package/dist/commands/form-list-filter.js +107 -0
  69. package/dist/commands/form-list-filter.js.map +1 -0
  70. package/dist/commands/form-list-group.d.ts +11 -0
  71. package/dist/commands/form-list-group.d.ts.map +1 -0
  72. package/dist/commands/form-list-group.js +100 -0
  73. package/dist/commands/form-list-group.js.map +1 -0
  74. package/dist/commands/form-list-permission.d.ts +3 -0
  75. package/dist/commands/form-list-permission.d.ts.map +1 -0
  76. package/dist/commands/form-list-permission.js +127 -0
  77. package/dist/commands/form-list-permission.js.map +1 -0
  78. package/dist/commands/form-list-search-group.d.ts +3 -0
  79. package/dist/commands/form-list-search-group.d.ts.map +1 -0
  80. package/dist/commands/form-list-search-group.js +132 -0
  81. package/dist/commands/form-list-search-group.js.map +1 -0
  82. package/dist/commands/form-list-stats.d.ts +11 -0
  83. package/dist/commands/form-list-stats.d.ts.map +1 -0
  84. package/dist/commands/form-list-stats.js +139 -0
  85. package/dist/commands/form-list-stats.js.map +1 -0
  86. package/dist/commands/form-list-unit.d.ts +3 -0
  87. package/dist/commands/form-list-unit.d.ts.map +1 -0
  88. package/dist/commands/form-list-unit.js +95 -0
  89. package/dist/commands/form-list-unit.js.map +1 -0
  90. package/dist/commands/form-list-utils.d.ts +32 -0
  91. package/dist/commands/form-list-utils.d.ts.map +1 -0
  92. package/dist/commands/form-list-utils.js +76 -0
  93. package/dist/commands/form-list-utils.js.map +1 -0
  94. package/dist/commands/form-list.d.ts +3 -0
  95. package/dist/commands/form-list.d.ts.map +1 -0
  96. package/dist/commands/form-list.js +624 -0
  97. package/dist/commands/form-list.js.map +1 -0
  98. package/dist/commands/form-permission.d.ts +3 -0
  99. package/dist/commands/form-permission.d.ts.map +1 -0
  100. package/dist/commands/form-permission.js +193 -0
  101. package/dist/commands/form-permission.js.map +1 -0
  102. package/dist/commands/form-relate.d.ts +14 -0
  103. package/dist/commands/form-relate.d.ts.map +1 -0
  104. package/dist/commands/form-relate.js +140 -0
  105. package/dist/commands/form-relate.js.map +1 -0
  106. package/dist/commands/form-serial-mark.d.ts +18 -0
  107. package/dist/commands/form-serial-mark.d.ts.map +1 -0
  108. package/dist/commands/form-serial-mark.js +167 -0
  109. package/dist/commands/form-serial-mark.js.map +1 -0
  110. package/dist/commands/form-table-view.d.ts +3 -0
  111. package/dist/commands/form-table-view.d.ts.map +1 -0
  112. package/dist/commands/form-table-view.js +217 -0
  113. package/dist/commands/form-table-view.js.map +1 -0
  114. package/dist/commands/form-validate.d.ts +3 -0
  115. package/dist/commands/form-validate.d.ts.map +1 -0
  116. package/dist/commands/form-validate.js +122 -0
  117. package/dist/commands/form-validate.js.map +1 -0
  118. package/dist/commands/form-view-permission.d.ts +3 -0
  119. package/dist/commands/form-view-permission.d.ts.map +1 -0
  120. package/dist/commands/form-view-permission.js +86 -0
  121. package/dist/commands/form-view-permission.js.map +1 -0
  122. package/dist/commands/form-view.d.ts +3 -0
  123. package/dist/commands/form-view.d.ts.map +1 -0
  124. package/dist/commands/form-view.js +145 -0
  125. package/dist/commands/form-view.js.map +1 -0
  126. package/dist/commands/form.d.ts +3 -0
  127. package/dist/commands/form.d.ts.map +1 -0
  128. package/dist/commands/form.js +2467 -0
  129. package/dist/commands/form.js.map +1 -0
  130. package/dist/commands/icon.d.ts +3 -0
  131. package/dist/commands/icon.d.ts.map +1 -0
  132. package/dist/commands/icon.js +82 -0
  133. package/dist/commands/icon.js.map +1 -0
  134. package/dist/commands/matrix.d.ts +3 -0
  135. package/dist/commands/matrix.d.ts.map +1 -0
  136. package/dist/commands/matrix.js +587 -0
  137. package/dist/commands/matrix.js.map +1 -0
  138. package/dist/commands/menu-permission.d.ts +3 -0
  139. package/dist/commands/menu-permission.d.ts.map +1 -0
  140. package/dist/commands/menu-permission.js +188 -0
  141. package/dist/commands/menu-permission.js.map +1 -0
  142. package/dist/commands/menu.d.ts +16 -0
  143. package/dist/commands/menu.d.ts.map +1 -0
  144. package/dist/commands/menu.js +269 -0
  145. package/dist/commands/menu.js.map +1 -0
  146. package/dist/commands/project.d.ts +3 -0
  147. package/dist/commands/project.d.ts.map +1 -0
  148. package/dist/commands/project.js +345 -0
  149. package/dist/commands/project.js.map +1 -0
  150. package/dist/commands/role.d.ts +3 -0
  151. package/dist/commands/role.d.ts.map +1 -0
  152. package/dist/commands/role.js +224 -0
  153. package/dist/commands/role.js.map +1 -0
  154. package/dist/commands/user.d.ts +3 -0
  155. package/dist/commands/user.d.ts.map +1 -0
  156. package/dist/commands/user.js +49 -0
  157. package/dist/commands/user.js.map +1 -0
  158. package/dist/commands/workflow-action.d.ts +3 -0
  159. package/dist/commands/workflow-action.d.ts.map +1 -0
  160. package/dist/commands/workflow-action.js +1821 -0
  161. package/dist/commands/workflow-action.js.map +1 -0
  162. package/dist/commands/workflow-advanced.d.ts +3 -0
  163. package/dist/commands/workflow-advanced.d.ts.map +1 -0
  164. package/dist/commands/workflow-advanced.js +290 -0
  165. package/dist/commands/workflow-advanced.js.map +1 -0
  166. package/dist/commands/workflow-condition.d.ts +7 -0
  167. package/dist/commands/workflow-condition.d.ts.map +1 -0
  168. package/dist/commands/workflow-condition.js +562 -0
  169. package/dist/commands/workflow-condition.js.map +1 -0
  170. package/dist/commands/workflow-message.d.ts +3 -0
  171. package/dist/commands/workflow-message.d.ts.map +1 -0
  172. package/dist/commands/workflow-message.js +399 -0
  173. package/dist/commands/workflow-message.js.map +1 -0
  174. package/dist/commands/workflow-node-overtime.d.ts +3 -0
  175. package/dist/commands/workflow-node-overtime.d.ts.map +1 -0
  176. package/dist/commands/workflow-node-overtime.js +150 -0
  177. package/dist/commands/workflow-node-overtime.js.map +1 -0
  178. package/dist/commands/workflow-node-reject.d.ts +3 -0
  179. package/dist/commands/workflow-node-reject.d.ts.map +1 -0
  180. package/dist/commands/workflow-node-reject.js +115 -0
  181. package/dist/commands/workflow-node-reject.js.map +1 -0
  182. package/dist/commands/workflow-node-sign.d.ts +15 -0
  183. package/dist/commands/workflow-node-sign.d.ts.map +1 -0
  184. package/dist/commands/workflow-node-sign.js +100 -0
  185. package/dist/commands/workflow-node-sign.js.map +1 -0
  186. package/dist/commands/workflow-node-validate.d.ts +16 -0
  187. package/dist/commands/workflow-node-validate.d.ts.map +1 -0
  188. package/dist/commands/workflow-node-validate.js +169 -0
  189. package/dist/commands/workflow-node-validate.js.map +1 -0
  190. package/dist/commands/workflow-node.d.ts +3 -0
  191. package/dist/commands/workflow-node.d.ts.map +1 -0
  192. package/dist/commands/workflow-node.js +347 -0
  193. package/dist/commands/workflow-node.js.map +1 -0
  194. package/dist/commands/workflow-numbering.d.ts +17 -0
  195. package/dist/commands/workflow-numbering.d.ts.map +1 -0
  196. package/dist/commands/workflow-numbering.js +191 -0
  197. package/dist/commands/workflow-numbering.js.map +1 -0
  198. package/dist/commands/workflow-plan-range.d.ts +3 -0
  199. package/dist/commands/workflow-plan-range.d.ts.map +1 -0
  200. package/dist/commands/workflow-plan-range.js +116 -0
  201. package/dist/commands/workflow-plan-range.js.map +1 -0
  202. package/dist/commands/workflow-setting.d.ts +3 -0
  203. package/dist/commands/workflow-setting.d.ts.map +1 -0
  204. package/dist/commands/workflow-setting.js +440 -0
  205. package/dist/commands/workflow-setting.js.map +1 -0
  206. package/dist/commands/workflow-title.d.ts +14 -0
  207. package/dist/commands/workflow-title.d.ts.map +1 -0
  208. package/dist/commands/workflow-title.js +106 -0
  209. package/dist/commands/workflow-title.js.map +1 -0
  210. package/dist/commands/workflow.d.ts +26 -0
  211. package/dist/commands/workflow.d.ts.map +1 -0
  212. package/dist/commands/workflow.js +2359 -0
  213. package/dist/commands/workflow.js.map +1 -0
  214. package/dist/core/auth.d.ts +36 -0
  215. package/dist/core/auth.d.ts.map +1 -0
  216. package/dist/core/auth.js +351 -0
  217. package/dist/core/auth.js.map +1 -0
  218. package/dist/core/client.d.ts +27 -0
  219. package/dist/core/client.d.ts.map +1 -0
  220. package/dist/core/client.js +100 -0
  221. package/dist/core/client.js.map +1 -0
  222. package/dist/core/crypto.d.ts +11 -0
  223. package/dist/core/crypto.d.ts.map +1 -0
  224. package/dist/core/crypto.js +102 -0
  225. package/dist/core/crypto.js.map +1 -0
  226. package/dist/core/edition.d.ts +4 -0
  227. package/dist/core/edition.d.ts.map +1 -0
  228. package/dist/core/edition.js +19 -0
  229. package/dist/core/edition.js.map +1 -0
  230. package/dist/index.d.ts +3 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +118 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/services/action-detail.d.ts +112 -0
  235. package/dist/services/action-detail.d.ts.map +1 -0
  236. package/dist/services/action-detail.js +443 -0
  237. package/dist/services/action-detail.js.map +1 -0
  238. package/dist/services/condition-rules.d.ts +45 -0
  239. package/dist/services/condition-rules.d.ts.map +1 -0
  240. package/dist/services/condition-rules.js +207 -0
  241. package/dist/services/condition-rules.js.map +1 -0
  242. package/dist/services/form-create.d.ts +102 -0
  243. package/dist/services/form-create.d.ts.map +1 -0
  244. package/dist/services/form-create.js +835 -0
  245. package/dist/services/form-create.js.map +1 -0
  246. package/dist/services/form-ebuilder-filter.d.ts +60 -0
  247. package/dist/services/form-ebuilder-filter.d.ts.map +1 -0
  248. package/dist/services/form-ebuilder-filter.js +562 -0
  249. package/dist/services/form-ebuilder-filter.js.map +1 -0
  250. package/dist/services/form-table-view.d.ts +117 -0
  251. package/dist/services/form-table-view.d.ts.map +1 -0
  252. package/dist/services/form-table-view.js +882 -0
  253. package/dist/services/form-table-view.js.map +1 -0
  254. package/dist/services/form-view-permission.d.ts +30 -0
  255. package/dist/services/form-view-permission.d.ts.map +1 -0
  256. package/dist/services/form-view-permission.js +208 -0
  257. package/dist/services/form-view-permission.js.map +1 -0
  258. package/dist/services/form-view.d.ts +41 -0
  259. package/dist/services/form-view.d.ts.map +1 -0
  260. package/dist/services/form-view.js +334 -0
  261. package/dist/services/form-view.js.map +1 -0
  262. package/dist/services/formula-detail.d.ts +31 -0
  263. package/dist/services/formula-detail.d.ts.map +1 -0
  264. package/dist/services/formula-detail.js +66 -0
  265. package/dist/services/formula-detail.js.map +1 -0
  266. package/dist/services/rich-types.d.ts +35 -0
  267. package/dist/services/rich-types.d.ts.map +1 -0
  268. package/dist/services/rich-types.js +105 -0
  269. package/dist/services/rich-types.js.map +1 -0
  270. package/dist/services/workflow-layout.d.ts +118 -0
  271. package/dist/services/workflow-layout.d.ts.map +1 -0
  272. package/dist/services/workflow-layout.js +279 -0
  273. package/dist/services/workflow-layout.js.map +1 -0
  274. package/dist/services/workflow-operator.d.ts +36 -0
  275. package/dist/services/workflow-operator.d.ts.map +1 -0
  276. package/dist/services/workflow-operator.js +65 -0
  277. package/dist/services/workflow-operator.js.map +1 -0
  278. package/dist/types.d.ts +53 -0
  279. package/dist/types.d.ts.map +1 -0
  280. package/dist/types.js +2 -0
  281. package/dist/types.js.map +1 -0
  282. package/dist/utils/column-name.d.ts +13 -0
  283. package/dist/utils/column-name.d.ts.map +1 -0
  284. package/dist/utils/column-name.js +45 -0
  285. package/dist/utils/column-name.js.map +1 -0
  286. package/ecodecmd/package.json +27 -0
  287. package/ecodecmd/src/build.js +709 -0
  288. package/ecodecmd/src/compile.js +81 -0
  289. package/ecodecmd/src/index.js +48 -0
  290. package/ecodecmd/src/init.js +73 -0
  291. package/ecodecmd/src/lib/@babel/plugin-proposal-object-rest-spread@7.5.5/index.js +1795 -0
  292. package/ecodecmd/src/lib/@babel/plugin-proposal-optional-chaining@7.6.0/index.js +135 -0
  293. package/ecodecmd/src/lib/@babel/preset-env-standalone@7.5.5/babel-preset-env.js +76043 -0
  294. package/ecodecmd/src/lib/@babel/standalone@7.5.5/babel.js +90802 -0
  295. package/ecodecmd/src/lib/exec.js +77 -0
  296. package/ecodecmd/src/loaddep.js +154 -0
  297. package/ecodecmd/src/util/compress.js +58 -0
  298. package/ecodecmd/src/util/crypto-util.js +19 -0
  299. package/ecodecmd/src/util/index.js +153 -0
  300. package/ecodecmd/src/util/snowflake.js +144 -0
  301. package/package.json +43 -0
@@ -0,0 +1,345 @@
1
+ import { readFileSync, existsSync } from 'fs';
2
+ import { basename } from 'path';
3
+ import { AuthSession } from '../core/auth.js';
4
+ import { ApiClient } from '../core/client.js';
5
+ export function registerProjectCommands(program) {
6
+ const proj = program.command('project').description('Ecode 项目管理');
7
+ proj.command('create')
8
+ .description('新建 Ecode 项目')
9
+ .argument('<name>', '项目名称')
10
+ .argument('[desc]', '项目描述', '')
11
+ .option('--department-id <id>', '部门 ID(默认自动获取)', '')
12
+ .action(async (name, desc, cmdOpts) => {
13
+ const opts = program.opts();
14
+ const auth = await AuthSession.fromOptions(opts);
15
+ if (!auth)
16
+ process.exit(1);
17
+ const client = new ApiClient(auth);
18
+ const baseUrl = auth.getBaseUrl();
19
+ // Auto-detect departmentId if not provided
20
+ let departmentId = cmdOpts.departmentId || '';
21
+ if (!departmentId) {
22
+ try {
23
+ // Try teamsCheck first (returns currentUser.department)
24
+ const tcResp = await fetch(`${baseUrl}/api/baseserver/layout/teamsCheck?clientType=not_xinchuang&client=WEB&domainName=${encodeURIComponent(baseUrl)}`, {
25
+ method: 'POST',
26
+ headers: { 'accept': 'application/json', 'content-type': 'application/json', 'cookie': `ETEAMSID=${auth.eteamsId}` },
27
+ });
28
+ const tcData = await tcResp.json().catch(() => ({}));
29
+ departmentId = tcData?.currentUser?.department?.id || '';
30
+ }
31
+ catch { }
32
+ if (!departmentId) {
33
+ try {
34
+ const orgRes = await client.post(`${baseUrl}/api/hrm/common/browser/associate/organization`, {});
35
+ const orgData = orgRes?.data?.data || orgRes?.data || [];
36
+ if (Array.isArray(orgData) && orgData.length > 0) {
37
+ departmentId = orgData[0].id || '';
38
+ }
39
+ }
40
+ catch { }
41
+ }
42
+ }
43
+ const ts = new Date().toISOString().slice(2, 17).replace(/[-:]/g, '').replace('T', '_');
44
+ const fullName = `${name}_${ts}`;
45
+ const params = new URLSearchParams();
46
+ params.set('projectName', fullName);
47
+ params.set('description', desc);
48
+ if (departmentId)
49
+ params.set('departmentId', departmentId);
50
+ const data = await client.postForm(`${baseUrl}/api/ecode/project`, params.toString());
51
+ if (data?.code === 200 && data?.status) {
52
+ const projectId = data?.data?.id || '';
53
+ console.log(opts.json ? JSON.stringify({ id: projectId, name: fullName }) : `项目已创建,ID: ${projectId}`);
54
+ }
55
+ else {
56
+ console.error(`创建失败: ${data?.msg || '未知错误'}`);
57
+ process.exit(1);
58
+ }
59
+ });
60
+ proj.command('tree')
61
+ .description('查看目录结构')
62
+ .argument('<parentId>', '父目录 ID')
63
+ .action(async (parentId) => {
64
+ const opts = program.opts();
65
+ const auth = await AuthSession.fromOptions(opts);
66
+ if (!auth)
67
+ process.exit(1);
68
+ const client = new ApiClient(auth);
69
+ const data = await client.get(`${auth.getBaseUrl()}/api/ecode/tree/list?parentId=${parentId}`);
70
+ if (data?.code !== 200 || !data?.status) {
71
+ console.error(`获取失败: ${data?.msg || '未知错误'}`);
72
+ process.exit(1);
73
+ }
74
+ const folders = data?.data?.folders || [];
75
+ const codes = data?.data?.codes || [];
76
+ const entries = [
77
+ ...folders.map((f) => ({ id: f.id, name: f.name, type: 'folder' })),
78
+ ...codes.map((c) => ({ id: c.id, name: c.name, type: 'file', sourceId: c.sourceId })),
79
+ ];
80
+ if (opts.json) {
81
+ console.log(JSON.stringify(entries, null, 2));
82
+ }
83
+ else {
84
+ for (const e of entries) {
85
+ if (e.type === 'folder')
86
+ console.log(` [DIR] [${e.id}] ${e.name}`);
87
+ else
88
+ console.log(` [FILE] [${e.id}] ${e.name} sourceId=${e.sourceId}`);
89
+ }
90
+ }
91
+ });
92
+ proj.command('read')
93
+ .description('读取代码文件内容')
94
+ .argument('<fileId>', '文件 ID')
95
+ .action(async (fileId) => {
96
+ const opts = program.opts();
97
+ const auth = await AuthSession.fromOptions(opts);
98
+ if (!auth)
99
+ process.exit(1);
100
+ const client = new ApiClient(auth);
101
+ const data = await client.get(`${auth.getBaseUrl()}/api/ecode/code/getById/${fileId}`);
102
+ if (data?.code !== 200 || !data?.status) {
103
+ console.error(`读取失败: ${data?.msg || '未知错误'}`);
104
+ process.exit(1);
105
+ }
106
+ const content = data?.data?.content || '';
107
+ if (content) {
108
+ const decoded = Buffer.from(content, 'base64').toString('utf-8');
109
+ console.log(decoded);
110
+ }
111
+ });
112
+ proj.command('update')
113
+ .description('更新代码文件')
114
+ .argument('<fileId>', '文件 ID')
115
+ .argument('<content>', '新内容(或文件路径,以 @ 开头)')
116
+ .action(async (fileId, contentArg) => {
117
+ const opts = program.opts();
118
+ const auth = await AuthSession.fromOptions(opts);
119
+ if (!auth)
120
+ process.exit(1);
121
+ let content = contentArg;
122
+ if (content.startsWith('@')) {
123
+ const filePath = content.slice(1);
124
+ if (!existsSync(filePath)) {
125
+ console.error(`文件不存在: ${filePath}`);
126
+ process.exit(1);
127
+ }
128
+ content = readFileSync(filePath, 'utf-8');
129
+ }
130
+ const encoded = Buffer.from(content, 'utf-8').toString('base64');
131
+ const client = new ApiClient(auth);
132
+ const baseUrl = auth.getBaseUrl();
133
+ // Get sourceId first
134
+ const info = await client.get(`${baseUrl}/api/ecode/code/getById/${fileId}`);
135
+ const sourceId = info?.data?.sourceId || '';
136
+ const params = new URLSearchParams();
137
+ params.set('id', fileId);
138
+ params.set('content', encoded);
139
+ params.set('compileContent', '');
140
+ params.set('sourceId', sourceId);
141
+ const data = await client.postForm(`${baseUrl}/api/ecode/code/update/${fileId}`, params.toString());
142
+ if (data?.code === 200 && data?.status) {
143
+ console.log(opts.json ? JSON.stringify({ success: true, fileId }) : `文件已更新: ${info?.data?.name || fileId}`);
144
+ }
145
+ else {
146
+ console.error(`更新失败: ${data?.msg || '未知错误'}`);
147
+ process.exit(1);
148
+ }
149
+ });
150
+ proj.command('create-file')
151
+ .description('新建代码文件')
152
+ .argument('<name>', '文件名')
153
+ .argument('<parentId>', '父目录 ID')
154
+ .argument('[type]', '文件类型 (js/css/html)', 'js')
155
+ .action(async (name, parentId, fileType) => {
156
+ const opts = program.opts();
157
+ const auth = await AuthSession.fromOptions(opts);
158
+ if (!auth)
159
+ process.exit(1);
160
+ const client = new ApiClient(auth);
161
+ const params = new URLSearchParams();
162
+ params.set('name', name);
163
+ params.set('type', fileType);
164
+ params.set('parentId', parentId);
165
+ const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/code/add`, params.toString());
166
+ if (data?.code === 200 && data?.status) {
167
+ const fileId = data?.data?.id || '';
168
+ console.log(opts.json ? JSON.stringify({ id: fileId, name }) : `文件已创建: [${fileId}] ${name}.${fileType}`);
169
+ }
170
+ else {
171
+ const msg = data?.msg || '未知错误';
172
+ if (/不存在|无.*目录|目录.*空/.test(msg)) {
173
+ console.error(`创建失败: 父目录 ${parentId} 不存在。新项目默认无目录结构,请先 \`project import <projectId> <zip>\` 导入代码,或在平台页面初始化目录后再建文件`);
174
+ }
175
+ else {
176
+ console.error(`创建失败: ${msg}`);
177
+ }
178
+ process.exit(1);
179
+ }
180
+ });
181
+ proj.command('create-folder')
182
+ .description('新建文件夹')
183
+ .argument('<name>', '文件夹名')
184
+ .argument('<parentId>', '父目录 ID')
185
+ .action(async (name, parentId) => {
186
+ const opts = program.opts();
187
+ const auth = await AuthSession.fromOptions(opts);
188
+ if (!auth)
189
+ process.exit(1);
190
+ const client = new ApiClient(auth);
191
+ const params = new URLSearchParams();
192
+ params.set('name', name);
193
+ params.set('parentId', parentId);
194
+ const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/folder/add`, params.toString());
195
+ if (data?.code === 200 && data?.status) {
196
+ const folderId = data?.data?.id || '';
197
+ console.log(opts.json ? JSON.stringify({ id: folderId, name }) : `文件夹已创建: [${folderId}] ${name}`);
198
+ }
199
+ else {
200
+ const msg = data?.msg || '未知错误';
201
+ if (/不存在|无.*目录|目录.*空/.test(msg)) {
202
+ console.error(`创建失败: 父目录 ${parentId} 不存在。新项目默认无目录结构,请先 \`project import <projectId> <zip>\` 导入代码,或在平台页面初始化目录后再建文件夹`);
203
+ }
204
+ else {
205
+ console.error(`创建失败: ${msg}`);
206
+ }
207
+ process.exit(1);
208
+ }
209
+ });
210
+ proj.command('delete-folder')
211
+ .description('删除文件夹及应用')
212
+ .argument('<folderId>', '文件夹 ID')
213
+ .action(async (folderId) => {
214
+ const opts = program.opts();
215
+ const auth = await AuthSession.fromOptions(opts);
216
+ if (!auth)
217
+ process.exit(1);
218
+ const client = new ApiClient(auth);
219
+ const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/folder/delete/${folderId}`, '');
220
+ if (data?.code === 200 && data?.status) {
221
+ console.log(opts.json ? JSON.stringify({ success: true, folderId }) : `已删除 folderId=${folderId}`);
222
+ }
223
+ else {
224
+ console.error(`删除失败: ${data?.msg || '未知错误'}`);
225
+ process.exit(1);
226
+ }
227
+ });
228
+ proj.command('delete-file')
229
+ .description('删除代码文件')
230
+ .argument('<fileId>', '文件 ID')
231
+ .action(async (fileId) => {
232
+ const opts = program.opts();
233
+ const auth = await AuthSession.fromOptions(opts);
234
+ if (!auth)
235
+ process.exit(1);
236
+ const client = new ApiClient(auth);
237
+ const data = await client.postForm(`${auth.getBaseUrl()}/api/ecode/code/delete/${fileId}`, '');
238
+ if (data?.code === 200 && data?.status) {
239
+ console.log(opts.json ? JSON.stringify({ success: true, fileId }) : `文件已删除 fileId=${fileId}`);
240
+ }
241
+ else {
242
+ console.error(`删除失败: ${data?.msg || '未知错误'}`);
243
+ process.exit(1);
244
+ }
245
+ });
246
+ proj.command('import')
247
+ .description('导入 zip 包到项目')
248
+ .argument('<projectId>', '项目 ID')
249
+ .argument('<zipPath>', 'zip 文件路径')
250
+ .requiredOption('--main-url <url>', '应用主页 URL(如 /sp/custom/ecode/table-demo)')
251
+ .action(async (projectId, zipPath, cmdOpts) => {
252
+ // Fix MSYS path mangling: /sp/... → D:/Program Files/Git/sp/...
253
+ let mainUrl = cmdOpts.mainUrl;
254
+ const msysMatch = mainUrl.match(/^[A-Za-z]:[/\\].+?(\/sp\/.+)$/);
255
+ if (msysMatch)
256
+ mainUrl = msysMatch[1];
257
+ // Ensure leading slash
258
+ if (!mainUrl.startsWith('/'))
259
+ mainUrl = '/' + mainUrl;
260
+ const opts = program.opts();
261
+ const auth = await AuthSession.fromOptions(opts);
262
+ if (!auth)
263
+ process.exit(1);
264
+ if (!existsSync(zipPath)) {
265
+ console.error(`文件不存在: ${zipPath}`);
266
+ process.exit(1);
267
+ }
268
+ const baseUrl = auth.getBaseUrl();
269
+ const fileName = basename(zipPath);
270
+ const fileBuffer = readFileSync(zipPath);
271
+ // Step 1: Upload zip via multipart
272
+ const form = new FormData();
273
+ form.append('file', new Blob([fileBuffer], { type: 'application/x-zip-compressed' }), fileName);
274
+ form.append('projectId', projectId);
275
+ console.error(`上传 zip: ${fileName}`);
276
+ const uploadResp = await fetch(`${baseUrl}/api/ecode/folder/importCheck`, {
277
+ method: 'POST',
278
+ headers: {
279
+ Accept: 'application/json',
280
+ eteamsid: auth.eteamsId,
281
+ },
282
+ body: form,
283
+ });
284
+ const uploadData = await uploadResp.json();
285
+ if (uploadData?.code !== 200 || !uploadData?.status) {
286
+ console.error(`上传失败: ${uploadData?.msg || '未知错误'}`);
287
+ process.exit(1);
288
+ }
289
+ const fileId = uploadData?.data?.fileId || '';
290
+ const dirName = uploadData?.data?.dir || '';
291
+ const rootFolders = uploadData?.data?.rootFolders || [];
292
+ const root = rootFolders[0] || {};
293
+ console.error(` fileId: ${fileId}, dir: ${dirName}`);
294
+ // Step 2: Confirm import
295
+ const impParams = JSON.stringify([{
296
+ id: root.id || '',
297
+ autoPublish: true,
298
+ impType: 'cover',
299
+ coverConfig: false,
300
+ keepIdToken: false,
301
+ pcOrMobile: root.attribute || 'P',
302
+ }]);
303
+ const params = new URLSearchParams();
304
+ params.set('relevanceConfig', '{}');
305
+ params.set('projectId', projectId);
306
+ params.set('fileId', fileId);
307
+ params.set('dirName', dirName);
308
+ params.set('impParams', impParams);
309
+ console.error('确认导入...');
310
+ const importResp = await fetch(`${baseUrl}/api/ecode/folder/importEcode`, {
311
+ method: 'POST',
312
+ headers: {
313
+ 'content-type': 'application/x-www-form-urlencoded',
314
+ Accept: 'application/json',
315
+ eteamsid: auth.eteamsId,
316
+ },
317
+ body: params.toString(),
318
+ });
319
+ const importData = await importResp.json();
320
+ if (importData?.code !== 200 || !importData?.status) {
321
+ console.error(`导入失败: ${importData?.msg || '未知错误'}`);
322
+ process.exit(1);
323
+ }
324
+ console.error('导入成功!');
325
+ // Step 3: Show tree
326
+ const treeData = await fetch(`${baseUrl}/api/ecode/tree/list?parentId=${projectId}`, {
327
+ headers: { Accept: 'application/json', eteamsid: auth.eteamsId },
328
+ }).then(r => r.json());
329
+ const folders = treeData?.data?.folders || [];
330
+ const codes = treeData?.data?.codes || [];
331
+ console.error(` 项目 [${projectId}] 目录结构:`);
332
+ for (const f of folders)
333
+ console.error(` [DIR] [${f.id}] ${f.name}`);
334
+ for (const c of codes)
335
+ console.error(` [FILE] [${c.id}] ${c.name}`);
336
+ if (opts.json) {
337
+ console.log(JSON.stringify({ projectId, mainUrl, fileId, dirName }));
338
+ }
339
+ else {
340
+ console.log(`项目 [${projectId}] 导入完成`);
341
+ console.log(` mainUrl: ${mainUrl}`);
342
+ }
343
+ });
344
+ }
345
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerRoleCommands(program: Command): void;
3
+ //# sourceMappingURL=role.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsN3D"}
@@ -0,0 +1,224 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ function flattenTree(nodes, depth = 0) {
4
+ const result = [];
5
+ for (const node of nodes) {
6
+ result.push({ ...node, depth });
7
+ if (node.children && node.children.length > 0) {
8
+ result.push(...flattenTree(node.children, depth + 1));
9
+ }
10
+ }
11
+ return result;
12
+ }
13
+ function findRoleInTree(nodes, id) {
14
+ for (const node of nodes) {
15
+ if (node.id === id)
16
+ return node;
17
+ if (node.children && node.children.length > 0) {
18
+ const found = findRoleInTree(node.children, id);
19
+ if (found)
20
+ return found;
21
+ }
22
+ }
23
+ return null;
24
+ }
25
+ export function registerRoleCommands(program) {
26
+ const role = program.command('role').description('角色管理');
27
+ role.command('list')
28
+ .description('列出所有角色(树形结构)')
29
+ .action(async () => {
30
+ const opts = program.opts();
31
+ const auth = await AuthSession.fromOptions(opts);
32
+ if (!auth)
33
+ process.exit(1);
34
+ const client = new ApiClient(auth);
35
+ const baseUrl = auth.getBaseUrl();
36
+ const data = await client.get(`${baseUrl}/api/bs/auth/role/tree?menuCode=roleSettings`);
37
+ if (data?.code !== 200) {
38
+ console.error(`查询失败: ${data?.msg || '未知错误'}`);
39
+ process.exit(1);
40
+ }
41
+ const roles = data?.data?.data || [];
42
+ if (opts.json) {
43
+ console.log(JSON.stringify(roles, null, 2));
44
+ }
45
+ else {
46
+ const flat = flattenTree(roles);
47
+ console.log(`共 ${flat.length} 个角色:`);
48
+ for (const r of flat) {
49
+ const indent = ' '.repeat(r.depth);
50
+ const canAdd = r.customParameters?.add ? '+' : '';
51
+ const canDel = r.customParameters?.del ? '-' : '';
52
+ const ops = [canAdd, canDel].filter(Boolean).join('');
53
+ const opStr = ops ? ` [${ops}]` : '';
54
+ console.log(`${indent}${r.id.padEnd(22)} ${r.content}${opStr}`);
55
+ }
56
+ }
57
+ });
58
+ role.command('create')
59
+ .description('创建角色')
60
+ .argument('<name>', '角色名称')
61
+ .option('--parent <id>', '父角色 ID(不指定则创建顶级角色)')
62
+ .option('--code <code>', '角色编码')
63
+ .option('--remark <text>', '备注说明')
64
+ .action(async (name, cmdOpts) => {
65
+ const opts = program.opts();
66
+ const auth = await AuthSession.fromOptions(opts);
67
+ if (!auth)
68
+ process.exit(1);
69
+ const client = new ApiClient(auth);
70
+ const baseUrl = auth.getBaseUrl();
71
+ // Generate a unique 19-digit ID
72
+ const roleId = String(Date.now()) + String(Math.floor(Math.random() * 900000 + 100000));
73
+ const roleCode = cmdOpts.code || String(Math.floor(Math.random() * 9000 + 1000));
74
+ // Resolve parent role info
75
+ let parentId = '';
76
+ let parentRole = [];
77
+ if (cmdOpts.parent) {
78
+ parentId = cmdOpts.parent;
79
+ // Look up parent role info from the role tree
80
+ const treeData = await client.get(`${baseUrl}/api/bs/auth/role/tree?menuCode=roleSettings`);
81
+ if (treeData?.code === 200) {
82
+ const parent = findRoleInTree(treeData.data.data || [], parentId);
83
+ if (parent) {
84
+ parentRole = [{
85
+ id: parent.id,
86
+ name: parent.content,
87
+ _entityType: 'role',
88
+ icon: parent.icon || 'Icon-role',
89
+ tenantKey: auth.tenantKey,
90
+ delete: false,
91
+ }];
92
+ }
93
+ else {
94
+ console.error(`警告: 未找到父角色 ${parentId},将创建顶级角色`);
95
+ }
96
+ }
97
+ }
98
+ const payload = [{
99
+ parentRole,
100
+ id: roleId,
101
+ parentId,
102
+ roleCode,
103
+ roleName: name,
104
+ remark: cmdOpts.remark || '',
105
+ applicationIdList: [],
106
+ }];
107
+ const data = await client.post(`${baseUrl}/api/bs/auth/role/saveOrUpdate`, payload);
108
+ if (data?.code === 200 && data?.status) {
109
+ const created = data?.data?.[0] || {};
110
+ if (opts.json) {
111
+ console.log(JSON.stringify(created, null, 2));
112
+ }
113
+ else {
114
+ const pInfo = parentId ? ` (父角色: ${parentId})` : '';
115
+ console.log(`角色已创建: ${created.roleName || name} id=${created.id}${pInfo}`);
116
+ }
117
+ }
118
+ else {
119
+ console.error(`创建失败: ${data?.msg || '未知错误'}`);
120
+ process.exit(1);
121
+ }
122
+ });
123
+ role.command('delete')
124
+ .description('删除角色')
125
+ .argument('<ids...>', '角色 ID(可多个)')
126
+ .action(async (ids) => {
127
+ const opts = program.opts();
128
+ const auth = await AuthSession.fromOptions(opts);
129
+ if (!auth)
130
+ process.exit(1);
131
+ const client = new ApiClient(auth);
132
+ const baseUrl = auth.getBaseUrl();
133
+ const data = await client.post(`${baseUrl}/api/bs/auth/role/del`, {
134
+ roleIds: ids,
135
+ });
136
+ if (data?.code === 200 && data?.status) {
137
+ const msg = opts.json
138
+ ? JSON.stringify({ success: true, deleted: ids })
139
+ : `已删除 ${ids.length} 个角色: ${ids.join(', ')}`;
140
+ console.log(msg);
141
+ }
142
+ else {
143
+ console.error(`删除失败: ${data?.msg || '未知错误'}`);
144
+ process.exit(1);
145
+ }
146
+ });
147
+ role.command('add-member')
148
+ .description('添加成员到角色')
149
+ .argument('<roleId>', '角色 ID')
150
+ .argument('<keyword>', '人员搜索关键词')
151
+ .action(async (roleId, keyword) => {
152
+ const opts = program.opts();
153
+ const auth = await AuthSession.fromOptions(opts);
154
+ if (!auth)
155
+ process.exit(1);
156
+ const client = new ApiClient(auth);
157
+ const baseUrl = auth.getBaseUrl();
158
+ // Search for user
159
+ const userData = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, {
160
+ keyword,
161
+ searchType: 1,
162
+ searchCount: 1,
163
+ appDetachModule: 'EM',
164
+ disableAppDetach: 0,
165
+ pageNo: 1,
166
+ pageSize: 1,
167
+ });
168
+ if (userData?.code !== 200 || !userData?.data?.userList?.length) {
169
+ console.error(`未找到人员: ${keyword}`);
170
+ process.exit(1);
171
+ }
172
+ const emp = userData.data.userList[0];
173
+ const payload = {
174
+ objType: 'resource',
175
+ obj_level: '1',
176
+ seclevel: { max: 100, min: 0 },
177
+ org_permission: 'ALL_SCOPE',
178
+ position_level: '1',
179
+ isOpenSubcompany: false,
180
+ isSeclevel: false,
181
+ includeFlag: false,
182
+ isAll: false,
183
+ appDetach: false,
184
+ objectTypeFilter: ['resource', 'department', 'channel', 'position', 'all', 'external', 'allExternal'],
185
+ isRoleMaintainer: false,
186
+ expireType: 'UNLIMITED',
187
+ detach: true,
188
+ obj_resource: [{
189
+ id: emp.id || '',
190
+ cid: emp.cid || emp.companyId || '',
191
+ userid: emp.userid || emp.userId || emp.id || '',
192
+ name: emp.name || '',
193
+ statusCode: emp.statusCode || 'normal',
194
+ content: emp.name || '',
195
+ title: `${emp.name || ''}|${emp.department || ''}`,
196
+ contentDesc: emp.name || '',
197
+ department: emp.department || '',
198
+ avatar: emp.avatar || { previewPath: '', appPreviewPath: '', name: emp.name || '', userId: emp.id || '' },
199
+ indexType: 'R',
200
+ isLeaf: true,
201
+ templateType: 'default',
202
+ originTargetType: 'user',
203
+ pid: '',
204
+ richContent: emp.name || '',
205
+ departmentId: emp.departmentId || emp.departmentid || '',
206
+ mainId: emp.mainId || emp.id || '',
207
+ stopDepartment: false,
208
+ leaf: true,
209
+ }],
210
+ };
211
+ const data = await client.post(`${baseUrl}/api/bs/auth/role/${roleId}/member/save-or-update`, payload);
212
+ if (data?.code === 200 && data?.status) {
213
+ const msg = opts.json
214
+ ? JSON.stringify({ success: true, roleId, member: emp.name })
215
+ : `已添加成员: ${emp.name} (${emp.id}) → 角色 ${roleId}`;
216
+ console.log(msg);
217
+ }
218
+ else {
219
+ console.error(`添加失败: ${data?.msg || '未知错误'}`);
220
+ process.exit(1);
221
+ }
222
+ });
223
+ }
224
+ //# sourceMappingURL=role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/commands/role.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerUserCommands(program: Command): void;
3
+ //# sourceMappingURL=user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/commands/user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgD3D"}