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,77 @@
1
+
2
+
3
+ const fs = require('fs');
4
+ const Babel = require('./@babel/standalone@7.5.5/babel');
5
+
6
+ // const args = process.argv.slice(2);
7
+ // console.info(args);
8
+ // if (args.length === 0) {
9
+ // console.error("接受参数异常");
10
+ // return;
11
+ // }
12
+ // const filepath = args[0];
13
+
14
+ // // 读取code中的代码
15
+ // const code = fs.readFileSync(filepath);
16
+ // try {
17
+ // const transformObj = Babel.transform(code, {
18
+ // presets: ['es2015', 'react', ['stage-2', {decoratorsLegacy: true, loose: true}]],
19
+ // filename: filepath,
20
+ // plugins: ['proposal-object-rest-spread'],
21
+ // sourceMap: false,
22
+ // sourceType: 'module',
23
+ // wrapPluginVisitorMethod: undefined
24
+ // });
25
+ // console.info(transformObj.code);
26
+ // } catch (err) {
27
+ // console.error("编译异常;", err.message);
28
+ // }
29
+ // console.info(transformObj);
30
+ /*
31
+ const compileCode = transformObj.code;
32
+
33
+ fs.writeFileSync(path.resolve(__dirname, '../ecode-app/compile.js'), compileCode);
34
+
35
+ console.info("compile success size ["
36
+ + compileCode.length + "] at " + new Date());
37
+
38
+ */
39
+
40
+ module.exports = {
41
+ compileJs: (code, filepath) => {
42
+ try {
43
+ const transformObj = Babel.transform(code, {
44
+ presets: ['es2015', 'react', ['stage-2', {decoratorsLegacy: true, loose: true}]],
45
+ filename: filepath,
46
+ plugins: ['proposal-object-rest-spread'],
47
+ sourceMap: false,
48
+ sourceType: 'module',
49
+ wrapPluginVisitorMethod: undefined
50
+ });
51
+ // console.info(transformObj);
52
+ // console.info(transformObj.code);
53
+ return transformObj.code;
54
+ } catch (err) {
55
+ console.error("编译异常;", err.message);
56
+ return false;
57
+ }
58
+ },
59
+ compileJsE10: (code, filepath) => { // 针对E10的编译处理,主要增加了部分ts、可选链 语法支持
60
+ try {
61
+ const transformObj = Babel.transform(code, {
62
+ presets: ['es2015', 'react', ['stage-2', {decoratorsLegacy: true, loose: true}]],
63
+ filename: filepath,
64
+ plugins: ['proposal-object-rest-spread', 'proposal-optional-chaining'],
65
+ sourceMap: false,
66
+ sourceType: 'module',
67
+ wrapPluginVisitorMethod: undefined
68
+ });
69
+ // console.info(transformObj);
70
+ // console.info(transformObj.code);
71
+ return transformObj.code;
72
+ } catch (err) {
73
+ console.error("编译异常;", err.message);
74
+ return false;
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,154 @@
1
+
2
+
3
+ const { mkdirs } = require('./util/index');
4
+ const { calcFileMd5 } = require('./util/crypto-util');
5
+ const path = require('path');
6
+ const os = require('os');
7
+ const fs = require('fs');
8
+ const axios = require('axios');
9
+ const request = require('request')
10
+
11
+ const cacheJarDir = path.join(os.homedir(), '.ecode_ide_plugin/cache');
12
+
13
+ const download = (url, filepath) => {
14
+ return new Promise((resolve, reject) => {
15
+ const stream = fs.createWriteStream(filepath);
16
+ // 添加useragent
17
+ const pipe = request(url, { headers: { 'User-Agent': 'ecodecmd' } }).pipe(stream);
18
+ pipe.on('close', (err) => {
19
+ if (err) {
20
+ reject(err);
21
+ } else {
22
+ resolve('');
23
+ }
24
+ });
25
+ })
26
+ }
27
+
28
+ /**
29
+ * 拉取jar包
30
+ */
31
+ const handleJar = async (serviceUrl, jarInfo) => {
32
+
33
+ console.info(`拉取 jar包: ${jarInfo.jarName}`);
34
+ const targetPath = path.join(cacheJarDir, jarInfo.md5);
35
+ if (!fs.existsSync(targetPath)) mkdirs(targetPath);
36
+ else {
37
+ // 判断jar包是否已经存在
38
+ if (fs.existsSync(path.join(targetPath, jarInfo.jarName))) {
39
+ // 校验文件是否正常
40
+ const md5 = calcFileMd5(path.join(targetPath, jarInfo.jarName));
41
+ if (md5 != jarInfo.md5) {
42
+ console.info(`jar包: ${jarInfo.jarName} 发生变更`);
43
+ } else {
44
+ // console.info(`jar包: ${jarInfo.jarName} 已存在`);
45
+ return;
46
+ }
47
+ }
48
+ }
49
+ const url = `${serviceUrl}/papi/inner/ide/getJar?jarPath=${jarInfo.path}`;
50
+ console.info('load url => ', url);
51
+ // 拷贝文件到指定缓存目录下
52
+ await download(url, path.join(targetPath, jarInfo.jarName));
53
+ console.info(`============> jar包: ${jarInfo.jarName} 拉取成功,dir: ${targetPath}`);
54
+ }
55
+
56
+ const buildGradleStr = `
57
+ plugins {
58
+ id 'java'
59
+ }
60
+
61
+ group 'com.weaver.seconddev'
62
+ version '1.0.0'
63
+ description 'ecode 二开demo'
64
+
65
+ java.targetCompatibility = JavaVersion.VERSION_1_8
66
+
67
+ compileJava {
68
+ options.encoding = 'UTF-8'
69
+ }
70
+
71
+ jar {
72
+ manifest {
73
+ attributes 'weaver-ecode-seconddev-id': rootProject.group + '-' + rootProject.name,
74
+ 'Implementation-Version': version,
75
+ 'Implementation-Vendor-Id': rootProject.group,
76
+ 'Implementation-Title': rootProject.name
77
+ }
78
+ }
79
+
80
+ repositories {
81
+ maven { url 'https://maven.aliyun.com/repository/public/' }
82
+ mavenLocal()
83
+ mavenCentral()
84
+ }
85
+
86
+
87
+ dependencies {
88
+
89
+ implementation group: 'junit', name: 'junit', version: '4.12'
90
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.20'
91
+ annotationProcessor 'org.projectlombok:lombok:1.18.20'
92
+ implementation group: 'javax.servlet', name: 'javax.servlet-api', version: '4.0.1'
93
+
94
+ // 添加二开服务拉取的清单依赖
95
+ def includeType = ['**/*.jar', '**/*.class']
96
+ compile fileTree(dir: project.projectDir.getPath() + '/secDevLib', includes: includeType)
97
+ // 项目二开自定义依赖
98
+ // implementation fileTree(dir: project.projectDir.getPath() + "/devLib", includes: includeType)
99
+
100
+ }
101
+
102
+
103
+ `
104
+
105
+ const settingGradleStr = `
106
+ rootProject.name = 'seconddev-demo'
107
+ `
108
+
109
+ /**
110
+ * 生成项目依赖目录结构, 即 生成 secDevLib 目录,settings.gradle文件,build.gradle文件
111
+ * @param {*} projectPath 项目路径
112
+ * @param {*} jarData jarlist
113
+ */
114
+ const createProjectItem = async (projectPath, jarData) => {
115
+ // 处理依赖
116
+ const secDevLibDir = path.join(projectPath, 'secDevLib');
117
+ console.info('创建二开依赖目录 => ', secDevLibDir);
118
+ if (!fs.existsSync(secDevLibDir)) mkdirs(secDevLibDir);
119
+ for (let i = 0; i < jarData.length; i++) {
120
+ if (fs.existsSync(path.join(secDevLibDir, jarData[i].jarName))) {
121
+ fs.rmSync(path.join(secDevLibDir, jarData[i].jarName));
122
+ }
123
+ fs.symlinkSync(path.join(cacheJarDir, jarData[i].md5, jarData[i].jarName), path.join(secDevLibDir, jarData[i].jarName));
124
+ }
125
+ console.info('创建gradle项目信息');
126
+ // 处理gradle文件
127
+ fs.writeFileSync(path.join(projectPath, 'build.gradle'), buildGradleStr);
128
+ fs.writeFileSync(path.join(projectPath, 'settings.gradle'), settingGradleStr);
129
+ }
130
+
131
+ /**
132
+ * e10 依赖拉取
133
+ */
134
+ const loadJar = async (serviceUrl, projectPath) => {
135
+ const startTime = new Date().getTime();
136
+ console.info('============> 开始处理')
137
+ const listRes = await axios({url: `${serviceUrl}/papi/inner/ide/dependencyList`, method: 'get'})
138
+ if (listRes.status === 200 && listRes.data.code === 200) {
139
+ const { data = [] } = listRes.data;
140
+ for (let i = 0; i < data.length; i++) {
141
+ await handleJar(serviceUrl, data[i]);
142
+ }
143
+ createProjectItem(projectPath, data);
144
+ console.info(`============> 处理结束,jar包共计 ${data.length} 个, 耗时 ${new Date().getTime() - startTime} (ms)`);
145
+ } else {
146
+ console.info('dependencyList 接口异常:', listRes.status, listRes.data);
147
+ }
148
+ }
149
+
150
+ module.exports = function(serviceUrl, projectPath) {
151
+
152
+ return loadJar(serviceUrl, projectPath);
153
+
154
+ }
@@ -0,0 +1,58 @@
1
+
2
+
3
+ const archiver = require('archiver');
4
+ const fs = require('fs');
5
+ const { parseFileObj } = require('.');
6
+ const path = require('path');
7
+
8
+ function zip(source_path, target_path) {
9
+ return new Promise((resolve, reject) => {
10
+
11
+ const output = fs.createWriteStream(target_path);
12
+
13
+ //设置压缩格式为zip
14
+ const archive = archiver('zip', {
15
+ zlib: { level: 9 } // Sets the compression level.
16
+ });
17
+
18
+ output.on('close', function () {
19
+ resolve(archive.pointer()); // 返回字节数
20
+ });
21
+
22
+
23
+ archive.on('error', function (err) {
24
+ reject(err);
25
+ });
26
+
27
+ archive.pipe(output);
28
+ console.info(source_path, target_path);
29
+ archive.directory(source_path, false);
30
+
31
+ // // 添加压缩的实体
32
+ // const pathArr = [];
33
+ // pathArr.push(source_path);
34
+
35
+ // while (pathArr.length > 0) {
36
+ // const tmp_path = pathArr.pop();
37
+ // const fileObj = parseFileObj(source_path);
38
+ // if (fileObj.isFile) {
39
+ // archive.append()
40
+ // }
41
+ // }
42
+
43
+ archive.finalize();
44
+
45
+ });
46
+ }
47
+
48
+ /**
49
+ * 压缩相关工具类
50
+ */
51
+ module.exports = {
52
+ zip
53
+ }
54
+
55
+
56
+ // zip(path.join(__dirname, '../../ecode-apps/cs/.temp'), path.join(__dirname, '../../ecode-apps/cs/.target/1.zip')).then(res => {
57
+ // console.info(res);
58
+ // });
@@ -0,0 +1,19 @@
1
+
2
+
3
+
4
+ const crypto = require('crypto');
5
+ const fs = require('fs');
6
+
7
+ function calcFileMd5(filepath) {
8
+ const hash = crypto.createHash('md5');
9
+ const buffer = fs.readFileSync(filepath);
10
+ hash.update(buffer, 'utf8');
11
+ const md5 = hash.digest('hex');
12
+ return md5;
13
+ }
14
+
15
+
16
+ module.exports = {
17
+ calcFileMd5
18
+ }
19
+
@@ -0,0 +1,153 @@
1
+
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+ const readline = require('readline');
6
+ /**
7
+ * 将命令路径解析成绝对路径
8
+ * @param {*} path_name
9
+ */
10
+ const parsePath = (path_name) => {
11
+ if (path.isAbsolute(path_name)) {
12
+ return path_name;
13
+ } else {
14
+ return path.join(process.cwd(), path_name);
15
+ }
16
+ }
17
+
18
+ /**
19
+ * 检查是否为一个文件, 不存在或为目录均返回false
20
+ * @param {*} path_name
21
+ */
22
+ const checkIsFile = (path_name) => {
23
+ if (fs.existsSync(path_name)) {
24
+ if (fs.statSync(path_name).isFile()) {
25
+ return true;
26
+ }
27
+ }
28
+ return false;
29
+ }
30
+
31
+ /**
32
+ * 检查是否为一个目录, 不存在或为文件均返回false
33
+ * @param {*} path_name
34
+ */
35
+ const checkIsDir = (path_name) => {
36
+ if (fs.existsSync(path_name)) {
37
+ if (fs.statSync(path_name).isDirectory()) {
38
+ return true;
39
+ }
40
+ }
41
+ return false;
42
+ }
43
+
44
+ const mkdirs = (path_name, over_flag) => {
45
+ if (fs.existsSync(path_name)) {
46
+ if (over_flag) {
47
+ fs.removeSync(path_name);
48
+ fs.mkdirsSync(path_name);
49
+ return true;
50
+ } else {
51
+ console.error(`路径已经存在 ${path_name}`)
52
+ return false;
53
+ }
54
+ } else {
55
+ fs.mkdirsSync(path_name);
56
+ return true;
57
+ }
58
+ }
59
+
60
+ /**
61
+ * 解析路径到fileObj对象
62
+ * @param {*} file_path
63
+ */
64
+ const parseFileObj = (file_path) => {
65
+ const fileObj = {
66
+ path: file_path,
67
+ name: '',
68
+ filename: '',
69
+ content: '',
70
+ isFile: false,
71
+ exists: false,
72
+ isDir: false,
73
+ parentDir: '',
74
+ ext: ''
75
+ };
76
+
77
+ if (fs.existsSync(file_path)) {
78
+ fileObj.exists = true;
79
+ fileObj.isFile = checkIsFile(file_path);
80
+ fileObj.isDir = checkIsDir(file_path);
81
+ const parseObj = path.parse(file_path);
82
+ // 如果是文件夹则name 获取会过滤后缀
83
+ if (fileObj.isDir) {
84
+ fileObj.name = parseObj.name + parseObj.ext;
85
+ } else {
86
+ fileObj.name = parseObj.name;
87
+ }
88
+ fileObj.parentDir = parseObj.dir;
89
+ fileObj.ext = parseObj.ext;
90
+ fileObj.filename = fileObj.name + fileObj.ext;
91
+ if (fileObj.isFile) {
92
+ fileObj.content = fs.readFileSync(file_path);
93
+ }
94
+ }
95
+
96
+ return fileObj;
97
+ }
98
+
99
+ const uuid = () => { // 生成uuid
100
+ const s = [];
101
+ const hexDigits = "0123456789abcdef";
102
+ for (let i = 0; i < 36; i++) {
103
+ s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
104
+ }
105
+ s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
106
+ s[19] = hexDigits.substring((parseInt(s[19]) & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
107
+ s[8] = s[13] = s[18] = s[23] = "";
108
+
109
+ return s.join("");
110
+ }
111
+
112
+ const readLine = (title) => {
113
+ return new Promise((resolve) => {
114
+ const rl = readline.createInterface({
115
+ prompt: title,
116
+ output: process.stdout,
117
+ input: process.stdin
118
+ })
119
+ rl.prompt();
120
+ rl.on('line', str => {
121
+ resolve(str);
122
+ rl.close();
123
+ })
124
+ })
125
+ }
126
+
127
+
128
+ const delDir = (path) => {
129
+ let files = [];
130
+ if(fs.existsSync(path)){
131
+ files = fs.readdirSync(path);
132
+ files.forEach((file, index) => {
133
+ let curPath = path + "/" + file;
134
+ if(fs.statSync(curPath).isDirectory()){
135
+ delDir(curPath); //递归删除文件夹
136
+ } else {
137
+ fs.unlinkSync(curPath); //删除文件
138
+ }
139
+ });
140
+ fs.rmdirSync(path); // 删除文件夹自身
141
+ }
142
+ }
143
+
144
+ module.exports = {
145
+ parsePath,
146
+ checkIsFile,
147
+ checkIsDir,
148
+ mkdirs,
149
+ parseFileObj,
150
+ uuid,
151
+ readLine,
152
+ delDir
153
+ }
@@ -0,0 +1,144 @@
1
+
2
+ class Snowflake {
3
+ constructor(options) {
4
+ options = options || {};
5
+ this.seq = 0;
6
+ //机器id或任何随机数。如果您是在分布式系统中生成id,强烈建议您提供一个适合不同机器的mid。
7
+ this.mid = (options.mid || 1) % 1023;
8
+ //这是一个时间偏移量,它将从当前时间中减去以获得id的前42位。这将有助于生成更小的id。
9
+ this.offset = options.offset || (new Date().getFullYear() - 1970) * 31536000 * 1000;
10
+ this.lastTime = 0;
11
+ }
12
+
13
+ generate() {
14
+ const time = Date.now();
15
+ const bTime = (time - this.offset).toString(2);
16
+ // get the sequence number
17
+ if (this.lastTime == time) {
18
+ this.seq++;
19
+ if (this.seq > 4095) {
20
+ this.seq = 0;
21
+ // make system wait till time is been shifted by one millisecond
22
+ while (Date.now() <= time) {}
23
+ }
24
+ } else {
25
+ this.seq = 0;
26
+ }
27
+
28
+ this.lastTime = time;
29
+
30
+ let bSeq = this.seq.toString(2);
31
+ let bMid = this.mid.toString(2);
32
+
33
+ // create sequence binary bit
34
+ while (bSeq.length < 12) bSeq = '0' + bSeq;
35
+
36
+ while (bMid.length < 10) bMid = '0' + bMid;
37
+
38
+ const bid = bTime + bMid + bSeq;
39
+ let id = '';
40
+ for (let i = bid.length; i > 0; i -= 4) {
41
+ id = parseInt(bid.substring(i - 4, i), 2).toString(16) + id;
42
+ }
43
+ return this.hexToDec(id);
44
+ }
45
+
46
+ add(x, y, base) {
47
+ let z = [];
48
+ let n = Math.max(x.length, y.length);
49
+ let carry = 0;
50
+ let i = 0;
51
+ while (i < n || carry) {
52
+ let xi = i < x.length ? x[i] : 0;
53
+ let yi = i < y.length ? y[i] : 0;
54
+ let zi = carry + xi + yi;
55
+ z.push(zi % base);
56
+ carry = Math.floor(zi / base);
57
+ i++;
58
+ }
59
+ return z;
60
+ }
61
+
62
+ /**
63
+ * 乘以数字
64
+ * @param {*} num
65
+ * @param {*} x
66
+ * @param {*} base
67
+ */
68
+ multiplyByNumber(num, x, base) {
69
+ if (num < 0) return null;
70
+ if (num == 0) return [];
71
+
72
+ let result = [];
73
+ let power = x;
74
+ while (true) {
75
+ if (num & 1) {
76
+ result = this.add(result, power, base);
77
+ }
78
+ num = num >> 1;
79
+ if (num === 0) break;
80
+ power = this.add(power, power, base);
81
+ }
82
+
83
+ return result;
84
+ }
85
+
86
+ /**
87
+ * 解析为数组
88
+ * @param {*} str
89
+ * @param {*} base
90
+ */
91
+ parseToDigitsArray(str, base) {
92
+ let digits = str.split('');
93
+ let ary = [];
94
+ for (let i = digits.length - 1; i >= 0; i--) {
95
+ let n = parseInt(digits[i], base);
96
+ if (isNaN(n)) return null;
97
+ ary.push(n);
98
+ }
99
+ return ary;
100
+ }
101
+
102
+ /**
103
+ * 转换
104
+ * @param {*} str
105
+ * @param {*} fromBase
106
+ * @param {*} toBase
107
+ */
108
+ convertBase(str, fromBase, toBase, legnth) {
109
+ let digits = this.parseToDigitsArray(str, fromBase);
110
+ if (digits === null) return null;
111
+ let outArray = [];
112
+ let power = [1];
113
+ for (let i = 0; i < digits.length; i++) {
114
+ // inletiant: at this point, fromBase^i = power
115
+ if (digits[i]) {
116
+ outArray = this.add(
117
+ outArray,
118
+ this.multiplyByNumber(digits[i], power, toBase),
119
+ toBase
120
+ );
121
+ }
122
+ power = this.multiplyByNumber(fromBase, power, toBase);
123
+ }
124
+ let out = '';
125
+ //设置了这里-3会返回16位的字符,如果是设置为outArray.length - 1 会返回18位的字符
126
+ for (let i = outArray.length - 3; i >= 0; i--) {
127
+ out += outArray[i].toString(toBase);
128
+ }
129
+ return out;
130
+ }
131
+
132
+ /**
133
+ * 16进制=> 10进制
134
+ * @param {*} hexStr
135
+ */
136
+ hexToDec(hexStr) {
137
+ if (hexStr.substring(0, 2) === '0x') hexStr = hexStr.substring(2);
138
+ hexStr = hexStr.toLowerCase();
139
+ return this.convertBase(hexStr, 16, 10);
140
+ }
141
+ }
142
+
143
+ const obj = new Snowflake();
144
+ module.exports = obj;
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "weaver-e10-builder",
3
+ "version": "1.0.2-beta",
4
+ "description": "Eteams/Ebuilder CLI — 泛微 OA 命令行工具",
5
+ "type": "module",
6
+ "files": [
7
+ "dist",
8
+ "ecodecmd"
9
+ ],
10
+ "bin": {
11
+ "e10-cli": "./dist/index.js",
12
+ "ecodecmd": "./ecodecmd/src/index.js"
13
+ },
14
+ "scripts": {
15
+ "dev": "tsx src/index.ts",
16
+ "build": "tsc",
17
+ "pack:all": "node scripts/pack-editions.mjs",
18
+ "start": "node dist/index.js"
19
+ },
20
+ "dependencies": {
21
+ "@napi-rs/keyring": "^1.3.0",
22
+ "archiver": "^5.3.1",
23
+ "axios": "^1.3.4",
24
+ "chalk": "^5.0.1",
25
+ "chokidar": "^3.5.3",
26
+ "commander": "^13.0.0",
27
+ "debug": "^4.3.4",
28
+ "fs-extra": "^10.1.0",
29
+ "js-base64": "^3.7.2",
30
+ "mammoth": "^1.12.0",
31
+ "minimist": "^1.2.6",
32
+ "node-html-markdown": "^2.0.0",
33
+ "request": "^2.88.2",
34
+ "sql.js": "^1.11.0",
35
+ "tiny-pinyin": "^1.3.2"
36
+ },
37
+ "devDependencies": {
38
+ "@types/node": "^22.0.0",
39
+ "@types/sql.js": "^1.4.11",
40
+ "tsx": "^4.19.0",
41
+ "typescript": "^5.6.0"
42
+ }
43
+ }