@lcap/nasl 1.0.0-alpha.13 → 1.0.0-alpha.16

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 (324) hide show
  1. package/out/automate/engine/index.d.ts +1 -1
  2. package/out/automate/engine/index.js +73 -25
  3. package/out/automate/engine/index.js.map +1 -1
  4. package/out/automate/engine/utils.js +7 -6
  5. package/out/automate/engine/utils.js.map +1 -1
  6. package/out/common/BaseNode.d.ts +5 -4
  7. package/out/common/BaseNode.js +48 -41
  8. package/out/common/BaseNode.js.map +1 -1
  9. package/out/concepts/App__.d.ts +18 -1
  10. package/out/concepts/App__.js +64 -24
  11. package/out/concepts/App__.js.map +1 -1
  12. package/out/concepts/Argument__.js +2 -2
  13. package/out/concepts/Argument__.js.map +1 -1
  14. package/out/concepts/Assignee__.d.ts +190 -0
  15. package/out/concepts/Assignee__.js +264 -0
  16. package/out/concepts/Assignee__.js.map +1 -0
  17. package/out/concepts/BinaryExpression__.js +6 -6
  18. package/out/concepts/BinaryExpression__.js.map +1 -1
  19. package/out/concepts/BindAttribute__.d.ts +19 -0
  20. package/out/concepts/BindAttribute__.js +36 -2
  21. package/out/concepts/BindAttribute__.js.map +1 -1
  22. package/out/concepts/BindDirective__.js +21 -1
  23. package/out/concepts/BindDirective__.js.map +1 -1
  24. package/out/concepts/BindEvent__.d.ts +1 -0
  25. package/out/concepts/BindEvent__.js +38 -14
  26. package/out/concepts/BindEvent__.js.map +1 -1
  27. package/out/concepts/CallFunction__.js +20 -7
  28. package/out/concepts/CallFunction__.js.map +1 -1
  29. package/out/concepts/CallInterface__.d.ts +11 -8
  30. package/out/concepts/CallInterface__.js +160 -23
  31. package/out/concepts/CallInterface__.js.map +1 -1
  32. package/out/concepts/CallLogic__.d.ts +1 -0
  33. package/out/concepts/CallLogic__.js +17 -7
  34. package/out/concepts/CallLogic__.js.map +1 -1
  35. package/out/concepts/CallQueryComponent__.d.ts +5 -1
  36. package/out/concepts/CallQueryComponent__.js +15 -11
  37. package/out/concepts/CallQueryComponent__.js.map +1 -1
  38. package/out/concepts/Comment__.js +6 -2
  39. package/out/concepts/Comment__.js.map +1 -1
  40. package/out/concepts/ConfigGroup__.js +1 -1
  41. package/out/concepts/ConfigGroup__.js.map +1 -1
  42. package/out/concepts/ConfigProperty__.js +1 -1
  43. package/out/concepts/ConfigProperty__.js.map +1 -1
  44. package/out/concepts/Configuration__.js +1 -1
  45. package/out/concepts/Configuration__.js.map +1 -1
  46. package/out/concepts/Destination__.d.ts +11 -0
  47. package/out/concepts/Destination__.js +59 -19
  48. package/out/concepts/Destination__.js.map +1 -1
  49. package/out/concepts/End__.js +10 -2
  50. package/out/concepts/End__.js.map +1 -1
  51. package/out/concepts/EntityProperty__.d.ts +7 -0
  52. package/out/concepts/EntityProperty__.js +60 -3
  53. package/out/concepts/EntityProperty__.js.map +1 -1
  54. package/out/concepts/Entity__.d.ts +4 -1
  55. package/out/concepts/Entity__.js +29 -12
  56. package/out/concepts/Entity__.js.map +1 -1
  57. package/out/concepts/Enum__.d.ts +4 -0
  58. package/out/concepts/Enum__.js +9 -6
  59. package/out/concepts/Enum__.js.map +1 -1
  60. package/out/concepts/Event__.js +1 -1
  61. package/out/concepts/Event__.js.map +1 -1
  62. package/out/concepts/ForEachStatement__.js +8 -12
  63. package/out/concepts/ForEachStatement__.js.map +1 -1
  64. package/out/concepts/Function__.js +5 -5
  65. package/out/concepts/Function__.js.map +1 -1
  66. package/out/concepts/Identifier__.js +26 -24
  67. package/out/concepts/Identifier__.js.map +1 -1
  68. package/out/concepts/IfStatement__.js +2 -2
  69. package/out/concepts/IfStatement__.js.map +1 -1
  70. package/out/concepts/InterfaceParam__.d.ts +2 -0
  71. package/out/concepts/InterfaceParam__.js +41 -21
  72. package/out/concepts/InterfaceParam__.js.map +1 -1
  73. package/out/concepts/Interface__.d.ts +3 -0
  74. package/out/concepts/Interface__.js +105 -9
  75. package/out/concepts/Interface__.js.map +1 -1
  76. package/out/concepts/LogicItem__.d.ts +2 -1
  77. package/out/concepts/LogicItem__.js +14 -0
  78. package/out/concepts/LogicItem__.js.map +1 -1
  79. package/out/concepts/Logic__.d.ts +3 -0
  80. package/out/concepts/Logic__.js +57 -16
  81. package/out/concepts/Logic__.js.map +1 -1
  82. package/out/concepts/MemberExpression__.js +13 -6
  83. package/out/concepts/MemberExpression__.js.map +1 -1
  84. package/out/concepts/Module__.d.ts +6 -0
  85. package/out/concepts/Module__.js +18 -8
  86. package/out/concepts/Module__.js.map +1 -1
  87. package/out/concepts/Namespace__.d.ts +4 -0
  88. package/out/concepts/Namespace__.js +23 -12
  89. package/out/concepts/Namespace__.js.map +1 -1
  90. package/out/concepts/Param__.d.ts +2 -1
  91. package/out/concepts/Param__.js +35 -22
  92. package/out/concepts/Param__.js.map +1 -1
  93. package/out/concepts/ProcessComponent__.js +2 -2
  94. package/out/concepts/ProcessComponent__.js.map +1 -1
  95. package/out/concepts/ProcessElement__.js +20 -18
  96. package/out/concepts/ProcessElement__.js.map +1 -1
  97. package/out/concepts/ProcessOutcome__.js +1 -1
  98. package/out/concepts/ProcessOutcome__.js.map +1 -1
  99. package/out/concepts/Process__.d.ts +6 -1
  100. package/out/concepts/Process__.js +18 -14
  101. package/out/concepts/Process__.js.map +1 -1
  102. package/out/concepts/QueryAggregateExpression__.js +1 -1
  103. package/out/concepts/QueryAggregateExpression__.js.map +1 -1
  104. package/out/concepts/QueryFromExpression__.js +1 -1
  105. package/out/concepts/QueryFromExpression__.js.map +1 -1
  106. package/out/concepts/QueryJoinExpression__.js +2 -2
  107. package/out/concepts/QueryJoinExpression__.js.map +1 -1
  108. package/out/concepts/QuerySelectExpression__.js +1 -1
  109. package/out/concepts/QuerySelectExpression__.js.map +1 -1
  110. package/out/concepts/Return__.d.ts +1 -0
  111. package/out/concepts/Return__.js +38 -25
  112. package/out/concepts/Return__.js.map +1 -1
  113. package/out/concepts/SqlQueryComponent__.js +1 -1
  114. package/out/concepts/SqlQueryComponent__.js.map +1 -1
  115. package/out/concepts/StringLiteral__.d.ts +1 -1
  116. package/out/concepts/StringLiteral__.js +2 -2
  117. package/out/concepts/StringLiteral__.js.map +1 -1
  118. package/out/concepts/StructureProperty__.d.ts +5 -4
  119. package/out/concepts/StructureProperty__.js +54 -31
  120. package/out/concepts/StructureProperty__.js.map +1 -1
  121. package/out/concepts/Structure__.d.ts +1 -0
  122. package/out/concepts/Structure__.js +18 -5
  123. package/out/concepts/Structure__.js.map +1 -1
  124. package/out/concepts/SwitchCase__.js +3 -3
  125. package/out/concepts/SwitchCase__.js.map +1 -1
  126. package/out/concepts/SwitchStatement__.js +1 -1
  127. package/out/concepts/SwitchStatement__.js.map +1 -1
  128. package/out/concepts/TypeAnnotation__.d.ts +3 -5
  129. package/out/concepts/TypeAnnotation__.js +36 -14
  130. package/out/concepts/TypeAnnotation__.js.map +1 -1
  131. package/out/concepts/UnaryExpression__.js +4 -2
  132. package/out/concepts/UnaryExpression__.js.map +1 -1
  133. package/out/concepts/ValidationRule__.d.ts +1 -0
  134. package/out/concepts/ValidationRule__.js +27 -1
  135. package/out/concepts/ValidationRule__.js.map +1 -1
  136. package/out/concepts/Variable__.d.ts +1 -0
  137. package/out/concepts/Variable__.js +38 -25
  138. package/out/concepts/Variable__.js.map +1 -1
  139. package/out/concepts/ViewComponent__.js +5 -5
  140. package/out/concepts/ViewComponent__.js.map +1 -1
  141. package/out/concepts/ViewElement__.d.ts +7 -1
  142. package/out/concepts/ViewElement__.js +154 -117
  143. package/out/concepts/ViewElement__.js.map +1 -1
  144. package/out/concepts/View__.d.ts +4 -0
  145. package/out/concepts/View__.js +38 -25
  146. package/out/concepts/View__.js.map +1 -1
  147. package/out/concepts/WhileStatement__.js +1 -1
  148. package/out/concepts/WhileStatement__.js.map +1 -1
  149. package/out/concepts/basics/stdlib/index.js +3 -1
  150. package/out/concepts/basics/stdlib/index.js.map +1 -1
  151. package/out/concepts/basics/stdlib/nasl.auth.d.ts +3 -0
  152. package/out/concepts/basics/stdlib/nasl.auth.js +30 -0
  153. package/out/concepts/basics/stdlib/nasl.auth.js.map +1 -0
  154. package/out/concepts/basics/stdlib/nasl.browser copy.d.ts +3 -0
  155. package/out/concepts/basics/stdlib/nasl.browser copy.js +70 -0
  156. package/out/concepts/basics/stdlib/nasl.browser copy.js.map +1 -0
  157. package/out/concepts/basics/stdlib/nasl.browser.js +6 -35
  158. package/out/concepts/basics/stdlib/nasl.browser.js.map +1 -1
  159. package/out/concepts/basics/stdlib/nasl.configuration.d.ts +3 -0
  160. package/out/concepts/basics/stdlib/nasl.configuration.js +25 -0
  161. package/out/concepts/basics/stdlib/nasl.configuration.js.map +1 -0
  162. package/out/concepts/basics/stdlib/nasl.util.js +49 -41
  163. package/out/concepts/basics/stdlib/nasl.util.js.map +1 -1
  164. package/out/concepts/basics/stdlib/nasl.validation.js +26 -20
  165. package/out/concepts/basics/stdlib/nasl.validation.js.map +1 -1
  166. package/out/concepts/basics/types/coreTypeList.js +11 -11
  167. package/out/concepts/basics/types/coreTypeList.js.map +1 -1
  168. package/out/concepts/index__.d.ts +1 -0
  169. package/out/concepts/index__.js +1 -0
  170. package/out/concepts/index__.js.map +1 -1
  171. package/out/enums/KEYWORDS.js +1 -1
  172. package/out/enums/KEYWORDS.js.map +1 -1
  173. package/out/generator/genBundleFiles.d.ts +1 -0
  174. package/out/generator/genBundleFiles.js +122 -93
  175. package/out/generator/genBundleFiles.js.map +1 -1
  176. package/out/manager/diagnostic.d.ts +1 -1
  177. package/out/server/createUiTs.d.ts +1 -0
  178. package/out/server/createUiTs.js +19 -2
  179. package/out/server/createUiTs.js.map +1 -1
  180. package/out/server/entity2LogicNamespace.js +24 -9
  181. package/out/server/entity2LogicNamespace.js.map +1 -1
  182. package/out/server/getExtensionModules.js +2 -0
  183. package/out/server/getExtensionModules.js.map +1 -1
  184. package/out/server/getLogics.js +40 -56
  185. package/out/server/getLogics.js.map +1 -1
  186. package/out/server/getMemberIdentifier.d.ts +4 -0
  187. package/out/server/getMemberIdentifier.js +90 -48
  188. package/out/server/getMemberIdentifier.js.map +1 -1
  189. package/out/server/getProcesses.d.ts +2 -2
  190. package/out/server/getProcesses.js +34 -11
  191. package/out/server/getProcesses.js.map +1 -1
  192. package/out/server/index.js +4 -0
  193. package/out/server/index.js.map +1 -1
  194. package/out/server/naslServer.d.ts +11 -30
  195. package/out/server/naslServer.js +410 -199
  196. package/out/server/naslServer.js.map +1 -1
  197. package/out/server/process2LogicNamespace.d.ts +10 -0
  198. package/out/server/process2LogicNamespace.js +16 -0
  199. package/out/server/process2LogicNamespace.js.map +1 -1
  200. package/out/server/translator.d.ts +22 -3
  201. package/out/server/translator.js +336 -130
  202. package/out/server/translator.js.map +1 -1
  203. package/out/service/storage/init.js +29 -15
  204. package/out/service/storage/init.js.map +1 -1
  205. package/out/templator/genCreateBlock.js +5 -5
  206. package/out/templator/genCreateBlock.js.map +1 -1
  207. package/out/templator/genCurdEditMultipleKeyBlock.js +9 -13
  208. package/out/templator/genCurdEditMultipleKeyBlock.js.map +1 -1
  209. package/out/templator/genCurdMultipleKeyBlock.js +7 -7
  210. package/out/templator/genCurdMultipleKeyBlock.js.map +1 -1
  211. package/out/templator/genEditTableBlock.js +2 -2
  212. package/out/templator/genEditTableBlock.js.map +1 -1
  213. package/out/templator/genGetBlock.js +4 -2
  214. package/out/templator/genGetBlock.js.map +1 -1
  215. package/out/templator/genGridViewBlock.d.ts +1 -1
  216. package/out/templator/genGridViewBlock.js +3 -3
  217. package/out/templator/genGridViewBlock.js.map +1 -1
  218. package/out/templator/genQueryComponent.d.ts +2 -0
  219. package/out/templator/genQueryComponent.js +1 -0
  220. package/out/templator/genQueryComponent.js.map +1 -1
  221. package/out/templator/genTableBlock.d.ts +1 -1
  222. package/out/templator/genTableBlock.js +3 -3
  223. package/out/templator/genTableBlock.js.map +1 -1
  224. package/out/templator/genUpdateBlock.js +7 -7
  225. package/out/templator/genUpdateBlock.js.map +1 -1
  226. package/out/templator/utils.d.ts +3 -1
  227. package/out/templator/utils.js +2 -1
  228. package/out/templator/utils.js.map +1 -1
  229. package/out/utils/index.d.ts +6 -0
  230. package/out/utils/index.js +20 -1
  231. package/out/utils/index.js.map +1 -1
  232. package/package.json +2 -1
  233. package/src/automate/engine/index.js +73 -25
  234. package/src/automate/engine/utils.js +7 -6
  235. package/src/common/BaseNode.ts +51 -42
  236. package/src/concepts/App__.ts +104 -26
  237. package/src/concepts/Argument__.ts +3 -2
  238. package/src/concepts/Assignee__.ts +437 -0
  239. package/src/concepts/BinaryExpression__.ts +7 -6
  240. package/src/concepts/BindAttribute__.ts +51 -2
  241. package/src/concepts/BindDirective__.ts +20 -1
  242. package/src/concepts/BindEvent__.ts +39 -16
  243. package/src/concepts/CallFunction__.ts +21 -8
  244. package/src/concepts/CallInterface__.ts +161 -42
  245. package/src/concepts/CallLogic__.ts +21 -9
  246. package/src/concepts/CallQueryComponent__.ts +15 -13
  247. package/src/concepts/Comment__.ts +6 -2
  248. package/src/concepts/ConfigGroup__.ts +1 -1
  249. package/src/concepts/ConfigProperty__.ts +1 -1
  250. package/src/concepts/Configuration__.ts +1 -1
  251. package/src/concepts/Destination__.ts +57 -19
  252. package/src/concepts/End__.ts +9 -11
  253. package/src/concepts/EntityProperty__.ts +56 -3
  254. package/src/concepts/Entity__.ts +33 -20
  255. package/src/concepts/Enum__.ts +8 -7
  256. package/src/concepts/Event__.ts +1 -1
  257. package/src/concepts/ForEachStatement__.ts +8 -13
  258. package/src/concepts/Function__.ts +5 -5
  259. package/src/concepts/Identifier__.ts +31 -26
  260. package/src/concepts/IfStatement__.ts +2 -2
  261. package/src/concepts/InterfaceParam__.ts +39 -20
  262. package/src/concepts/Interface__.ts +103 -9
  263. package/src/concepts/LogicItem__.ts +16 -1
  264. package/src/concepts/Logic__.ts +60 -18
  265. package/src/concepts/MemberExpression__.ts +18 -6
  266. package/src/concepts/Module__.ts +19 -8
  267. package/src/concepts/Namespace__.ts +24 -12
  268. package/src/concepts/Param__.ts +34 -23
  269. package/src/concepts/ProcessComponent__.ts +2 -2
  270. package/src/concepts/ProcessElement__.ts +51 -50
  271. package/src/concepts/ProcessOutcome__.ts +1 -1
  272. package/src/concepts/Process__.ts +32 -28
  273. package/src/concepts/QueryAggregateExpression__.ts +1 -1
  274. package/src/concepts/QueryFromExpression__.ts +1 -1
  275. package/src/concepts/QueryJoinExpression__.ts +2 -2
  276. package/src/concepts/QuerySelectExpression__.ts +1 -1
  277. package/src/concepts/Return__.ts +35 -25
  278. package/src/concepts/SqlQueryComponent__.ts +1 -1
  279. package/src/concepts/StringLiteral__.ts +2 -2
  280. package/src/concepts/StructureProperty__.ts +49 -29
  281. package/src/concepts/Structure__.ts +17 -5
  282. package/src/concepts/SwitchCase__.ts +3 -3
  283. package/src/concepts/SwitchStatement__.ts +1 -1
  284. package/src/concepts/TypeAnnotation__.ts +34 -12
  285. package/src/concepts/UnaryExpression__.ts +4 -2
  286. package/src/concepts/ValidationRule__.ts +24 -1
  287. package/src/concepts/Variable__.ts +35 -24
  288. package/src/concepts/ViewComponent__.ts +5 -5
  289. package/src/concepts/ViewElement__.ts +168 -113
  290. package/src/concepts/View__.ts +44 -25
  291. package/src/concepts/WhileStatement__.ts +1 -1
  292. package/src/concepts/basics/stdlib/index.ts +3 -1
  293. package/src/concepts/basics/stdlib/nasl.auth.ts +26 -0
  294. package/src/concepts/basics/stdlib/nasl.browser.ts +7 -41
  295. package/src/concepts/basics/stdlib/nasl.configuration.ts +21 -0
  296. package/src/concepts/basics/stdlib/nasl.util.ts +49 -41
  297. package/src/concepts/basics/stdlib/nasl.validation.ts +17 -11
  298. package/src/concepts/basics/types/coreTypeList.ts +11 -11
  299. package/src/concepts/index__.ts +1 -0
  300. package/src/enums/KEYWORDS.ts +1 -1
  301. package/src/generator/genBundleFiles.ts +131 -112
  302. package/src/manager/diagnostic.ts +1 -1
  303. package/src/server/createUiTs.ts +22 -4
  304. package/src/server/entity2LogicNamespace.ts +25 -9
  305. package/src/server/getExtensionModules.ts +2 -0
  306. package/src/server/getLogics.ts +42 -58
  307. package/src/server/getMemberIdentifier.ts +88 -46
  308. package/src/server/getProcesses.ts +32 -9
  309. package/src/server/index.ts +12 -1
  310. package/src/server/naslServer.ts +422 -215
  311. package/src/server/process2LogicNamespace.ts +17 -1
  312. package/src/server/translator.ts +392 -134
  313. package/src/service/storage/init.ts +27 -16
  314. package/src/templator/genCreateBlock.ts +5 -5
  315. package/src/templator/genCurdEditMultipleKeyBlock.ts +25 -26
  316. package/src/templator/genCurdMultipleKeyBlock.ts +7 -7
  317. package/src/templator/genEditTableBlock.ts +2 -2
  318. package/src/templator/genGetBlock.ts +5 -7
  319. package/src/templator/genGridViewBlock.ts +4 -7
  320. package/src/templator/genQueryComponent.ts +1 -0
  321. package/src/templator/genTableBlock.ts +4 -7
  322. package/src/templator/genUpdateBlock.ts +7 -8
  323. package/src/templator/utils.ts +2 -1
  324. package/src/utils/index.ts +19 -0
@@ -0,0 +1,437 @@
1
+ //================================================================================
2
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
3
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
4
+ //================================================================================
5
+ import { EventPayload, Params } from '../common/EventEmitter';
6
+ import { concept, excludedInJSON, property } from '../decorators';
7
+
8
+ import * as utils from '../utils';
9
+ import { v4 as uuidv4 } from 'uuid';
10
+ import BaseNode from '../common/BaseNode';
11
+ import classMap from '../common/classMap';
12
+ import LogicItem from './LogicItem__';
13
+
14
+ /**
15
+ * 经办人
16
+ */
17
+ @concept('经办人')
18
+ export class Assignee extends LogicItem {
19
+ /**
20
+ * 产品概念
21
+ */
22
+ @property()
23
+ concept: 'Assignee' = 'Assignee';
24
+
25
+ /**
26
+ * 绑定用户
27
+ */
28
+ @property()
29
+ users: Array<string> = [];
30
+
31
+ /**
32
+ * 动态用户
33
+ */
34
+ @property('LogicItem')
35
+ dynamicUsers: Array<LogicItem> = [];
36
+
37
+ /**
38
+ * 绑定角色
39
+ */
40
+ @property()
41
+ roles: Array<string> = [];
42
+
43
+ /**
44
+ * 动态角色
45
+ */
46
+ @property('LogicItem')
47
+ dynamicRoles: Array<LogicItem> = [];
48
+
49
+
50
+
51
+ /**
52
+ * @param source 需要合并的部分参数
53
+ */
54
+ constructor(source?: Partial<Assignee>) {
55
+ source = Object.assign({}, Assignee.getDefaultOptions(), source);
56
+ super(source);
57
+ super.subConstructor(source);
58
+ }
59
+
60
+ static from(source: any, parentNode?: any, parentKey?: string): Assignee {
61
+ return super.from(source, parentNode, parentKey) as Assignee;
62
+ }
63
+
64
+
65
+
66
+
67
+
68
+
69
+ getLogicItemExistingNames(excludedList: Array<LogicItem> = []) {
70
+ const excludedSet = new Set(excludedList);
71
+ return (this.dynamicUsers || []).filter((item) => !excludedSet.has(item)).map((item) => item.name);
72
+ }
73
+ getLogicItemUniqueName(name = 'logicItem1') {
74
+ return utils.unique(name, this.getLogicItemExistingNames());
75
+ }
76
+
77
+ /**
78
+ * 插入逻辑项
79
+ * @internal
80
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
81
+ */
82
+ _insertLogicItemInDynamicUsersAt(name: string, index: number): LogicItem;
83
+
84
+ /**
85
+ * 插入逻辑项
86
+ * @internal
87
+ * @param logicItemOptions 逻辑项参数
88
+ */
89
+ _insertLogicItemInDynamicUsersAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
90
+
91
+ /**
92
+ * 插入逻辑项
93
+ * @internal
94
+ * @param logicItem 已有的逻辑项实例
95
+ */
96
+ _insertLogicItemInDynamicUsersAt(logicItem: LogicItem, index: number): LogicItem;
97
+
98
+ _insertLogicItemInDynamicUsersAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
99
+ const logicItemOptions: any = {};
100
+ const relationOptions = { parentNode: this, parentKey: 'dynamicUsers' };
101
+ let logicItem: LogicItem;
102
+ if (!options) {
103
+ logicItem = LogicItem.from({
104
+ ...logicItemOptions,
105
+ name: this.getLogicItemUniqueName(),
106
+ }, this, 'dynamicUsers');
107
+ } else if (typeof options === 'string') {
108
+ logicItem = LogicItem.from({
109
+ ...logicItemOptions,
110
+ name: options,
111
+ }, this, 'dynamicUsers');
112
+ } else if (options instanceof LogicItem) {
113
+ options.ensureDelete(); // 同一实例不支持多处存在
114
+ logicItem = options;
115
+ Object.assign(logicItem, relationOptions);
116
+ } else {
117
+ logicItem = LogicItem.from({
118
+ ...logicItemOptions,
119
+ ...options,
120
+ }, this, 'dynamicUsers');
121
+ }
122
+ this.dynamicUsers.splice(index, 0, logicItem);
123
+ return logicItem;
124
+ }
125
+
126
+ /**
127
+ * 插入逻辑项
128
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
129
+ */
130
+ insertLogicItemInDynamicUsersAt(name: string, index: number): LogicItem;
131
+
132
+ /**
133
+ * 插入逻辑项
134
+ * @param logicItemOptions 逻辑项参数
135
+ */
136
+ insertLogicItemInDynamicUsersAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
137
+
138
+ /**
139
+ * 插入逻辑项
140
+ * @param logicItem 已有的逻辑项实例
141
+ */
142
+ insertLogicItemInDynamicUsersAt(logicItem: LogicItem, index: number): LogicItem;
143
+
144
+ insertLogicItemInDynamicUsersAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
145
+ const node = this._insertLogicItemInDynamicUsersAt(options as any, index);
146
+ node.create({
147
+ index,
148
+ parentNode: this,
149
+ parentKey: 'dynamicUsers',
150
+ });
151
+ return node;
152
+ }
153
+
154
+ /**
155
+ * 添加逻辑项
156
+ * @internal
157
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
158
+ */
159
+ _addLogicItemInDynamicUsers(name?: string): LogicItem;
160
+
161
+ /**
162
+ * 添加逻辑项
163
+ * @internal
164
+ * @param logicItemOptions 逻辑项参数
165
+ */
166
+ _addLogicItemInDynamicUsers(logicItemOptions: Partial<LogicItem>): LogicItem;
167
+
168
+ /**
169
+ * 添加逻辑项
170
+ * @internal
171
+ * @param logicItem 已有的逻辑项实例
172
+ */
173
+ _addLogicItemInDynamicUsers(logicItem: LogicItem): LogicItem;
174
+
175
+ _addLogicItemInDynamicUsers(options?: string | Partial<LogicItem> | LogicItem) {
176
+ const index = this.dynamicUsers.length;
177
+ return this._insertLogicItemInDynamicUsersAt(options as any, index);
178
+ }
179
+
180
+ /**
181
+ * 添加逻辑项
182
+ * @internal
183
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
184
+ */
185
+ addLogicItemInDynamicUsers(name?: string): LogicItem;
186
+
187
+ /**
188
+ * 添加逻辑项
189
+ * @param logicItemOptions 逻辑项参数
190
+ */
191
+ addLogicItemInDynamicUsers(logicItemOptions: Partial<LogicItem>): LogicItem;
192
+
193
+ /**
194
+ * 添加逻辑项
195
+ * @param logicItem 已有的逻辑项实例
196
+ */
197
+ addLogicItemInDynamicUsers(logicItem: LogicItem): LogicItem;
198
+
199
+ addLogicItemInDynamicUsers(options?: string | Partial<LogicItem> | LogicItem) {
200
+ const node = this._addLogicItemInDynamicUsers(options as any);
201
+ const index = this.dynamicUsers.indexOf(node);
202
+ node.create({
203
+ index,
204
+ parentNode: this,
205
+ parentKey: 'dynamicUsers',
206
+ });
207
+ return node;
208
+ }
209
+
210
+ /**
211
+ * 插入逻辑项
212
+ * @internal
213
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
214
+ */
215
+ _insertLogicItemInDynamicRolesAt(name: string, index: number): LogicItem;
216
+
217
+ /**
218
+ * 插入逻辑项
219
+ * @internal
220
+ * @param logicItemOptions 逻辑项参数
221
+ */
222
+ _insertLogicItemInDynamicRolesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
223
+
224
+ /**
225
+ * 插入逻辑项
226
+ * @internal
227
+ * @param logicItem 已有的逻辑项实例
228
+ */
229
+ _insertLogicItemInDynamicRolesAt(logicItem: LogicItem, index: number): LogicItem;
230
+
231
+ _insertLogicItemInDynamicRolesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
232
+ const logicItemOptions: any = {};
233
+ const relationOptions = { parentNode: this, parentKey: 'dynamicRoles' };
234
+ let logicItem: LogicItem;
235
+ if (!options) {
236
+ logicItem = LogicItem.from({
237
+ ...logicItemOptions,
238
+ name: this.getLogicItemUniqueName(),
239
+ }, this, 'dynamicRoles');
240
+ } else if (typeof options === 'string') {
241
+ logicItem = LogicItem.from({
242
+ ...logicItemOptions,
243
+ name: options,
244
+ }, this, 'dynamicRoles');
245
+ } else if (options instanceof LogicItem) {
246
+ options.ensureDelete(); // 同一实例不支持多处存在
247
+ logicItem = options;
248
+ Object.assign(logicItem, relationOptions);
249
+ } else {
250
+ logicItem = LogicItem.from({
251
+ ...logicItemOptions,
252
+ ...options,
253
+ }, this, 'dynamicRoles');
254
+ }
255
+ this.dynamicRoles.splice(index, 0, logicItem);
256
+ return logicItem;
257
+ }
258
+
259
+ /**
260
+ * 插入逻辑项
261
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
262
+ */
263
+ insertLogicItemInDynamicRolesAt(name: string, index: number): LogicItem;
264
+
265
+ /**
266
+ * 插入逻辑项
267
+ * @param logicItemOptions 逻辑项参数
268
+ */
269
+ insertLogicItemInDynamicRolesAt(logicItemOptions: Partial<LogicItem>, index: number): LogicItem;
270
+
271
+ /**
272
+ * 插入逻辑项
273
+ * @param logicItem 已有的逻辑项实例
274
+ */
275
+ insertLogicItemInDynamicRolesAt(logicItem: LogicItem, index: number): LogicItem;
276
+
277
+ insertLogicItemInDynamicRolesAt(options: string | Partial<LogicItem> | LogicItem, index: number) {
278
+ const node = this._insertLogicItemInDynamicRolesAt(options as any, index);
279
+ node.create({
280
+ index,
281
+ parentNode: this,
282
+ parentKey: 'dynamicRoles',
283
+ });
284
+ return node;
285
+ }
286
+
287
+ /**
288
+ * 添加逻辑项
289
+ * @internal
290
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
291
+ */
292
+ _addLogicItemInDynamicRoles(name?: string): LogicItem;
293
+
294
+ /**
295
+ * 添加逻辑项
296
+ * @internal
297
+ * @param logicItemOptions 逻辑项参数
298
+ */
299
+ _addLogicItemInDynamicRoles(logicItemOptions: Partial<LogicItem>): LogicItem;
300
+
301
+ /**
302
+ * 添加逻辑项
303
+ * @internal
304
+ * @param logicItem 已有的逻辑项实例
305
+ */
306
+ _addLogicItemInDynamicRoles(logicItem: LogicItem): LogicItem;
307
+
308
+ _addLogicItemInDynamicRoles(options?: string | Partial<LogicItem> | LogicItem) {
309
+ const index = this.dynamicRoles.length;
310
+ return this._insertLogicItemInDynamicRolesAt(options as any, index);
311
+ }
312
+
313
+ /**
314
+ * 添加逻辑项
315
+ * @internal
316
+ * @param name 逻辑项名称,如果不填会自动生成一个唯一名称
317
+ */
318
+ addLogicItemInDynamicRoles(name?: string): LogicItem;
319
+
320
+ /**
321
+ * 添加逻辑项
322
+ * @param logicItemOptions 逻辑项参数
323
+ */
324
+ addLogicItemInDynamicRoles(logicItemOptions: Partial<LogicItem>): LogicItem;
325
+
326
+ /**
327
+ * 添加逻辑项
328
+ * @param logicItem 已有的逻辑项实例
329
+ */
330
+ addLogicItemInDynamicRoles(logicItem: LogicItem): LogicItem;
331
+
332
+ addLogicItemInDynamicRoles(options?: string | Partial<LogicItem> | LogicItem) {
333
+ const node = this._addLogicItemInDynamicRoles(options as any);
334
+ const index = this.dynamicRoles.indexOf(node);
335
+ node.create({
336
+ index,
337
+ parentNode: this,
338
+ parentKey: 'dynamicRoles',
339
+ });
340
+ return node;
341
+ }
342
+
343
+
344
+
345
+
346
+ /**
347
+ * 删除逻辑项
348
+ * @param name 逻辑项名称
349
+ */
350
+ removeLogicItemInDynamicUsers(name: string): void;
351
+
352
+ /**
353
+ * 删除逻辑项
354
+ * @param logicItem 已有的逻辑项实例
355
+ */
356
+ removeLogicItemInDynamicUsers(logicItem: LogicItem): void;
357
+
358
+ removeLogicItemInDynamicUsers(options: string | LogicItem) {
359
+ let logicItem: LogicItem;
360
+ if (typeof options === 'string') {
361
+ logicItem = this.dynamicUsers.find((item) => item.name === options);
362
+ if (!logicItem) {
363
+ throw new Error('找不到逻辑项 ' + options);
364
+ }
365
+ } else {
366
+ logicItem = options;
367
+ }
368
+ return logicItem.delete();
369
+ }
370
+
371
+
372
+
373
+ /**
374
+ * 删除逻辑项
375
+ * @param name 逻辑项名称
376
+ */
377
+ removeLogicItemInDynamicRoles(name: string): void;
378
+
379
+ /**
380
+ * 删除逻辑项
381
+ * @param logicItem 已有的逻辑项实例
382
+ */
383
+ removeLogicItemInDynamicRoles(logicItem: LogicItem): void;
384
+
385
+ removeLogicItemInDynamicRoles(options: string | LogicItem) {
386
+ let logicItem: LogicItem;
387
+ if (typeof options === 'string') {
388
+ logicItem = this.dynamicRoles.find((item) => item.name === options);
389
+ if (!logicItem) {
390
+ throw new Error('找不到逻辑项 ' + options);
391
+ }
392
+ } else {
393
+ logicItem = options;
394
+ }
395
+ return logicItem.delete();
396
+ }
397
+
398
+ __removeLogicItem(logicItem: LogicItem) {
399
+ const parentKey = logicItem.parentKey;
400
+ const params: Params = {
401
+ parentNode: this,
402
+ parentKey,
403
+ index: -1,
404
+ object: null,
405
+ oldObject: logicItem,
406
+ };
407
+ if (parentKey) {
408
+ params.parentKey = parentKey;
409
+ if (Array.isArray((this as any)[parentKey])) {
410
+ const index = (this as any)[parentKey].indexOf(logicItem);
411
+ ~index && (this as any)[parentKey].splice(index, 1);
412
+ params.index = index;
413
+ } else if ((this as any)[parentKey] === logicItem) {
414
+ params.index = 0;
415
+ (this as any)[parentKey] = undefined;
416
+ }
417
+ }
418
+ return params;
419
+ }
420
+
421
+ //================================================================================
422
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
423
+ // 自动生成的代码已结束。下面可以手动编写。
424
+ //================================================================================
425
+
426
+ //================================================================================
427
+ // 从这里开始到结尾注释之间的代码由 NASL Workbench 自动生成,请不手动修改!
428
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
429
+ //================================================================================
430
+ }
431
+
432
+ classMap['Assignee'] = Assignee;
433
+ export default Assignee;
434
+ //================================================================================
435
+ // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
436
+ // 自动生成的代码已结束。下面可以手动编写。
437
+ //================================================================================
@@ -188,9 +188,9 @@ export class BinaryExpression extends LogicItem {
188
188
  return code;
189
189
  }
190
190
  let code = '';
191
- code += this.left?.toVue ? this.left.toVue() : '';
191
+ code += '(' + (this.left?.toVue() || '') + ')';
192
192
  code += ` ${this.operator} `;
193
- code += this.right?.toVue ? this.right.toVue() : '';
193
+ code += '(' + (this.right?.toVue() || '') + ')';
194
194
  return code;
195
195
  }
196
196
 
@@ -206,12 +206,13 @@ export class BinaryExpression extends LogicItem {
206
206
  code += '.' + fnName + '(';
207
207
  code += this.right?.toUI ? this.right.toUI(shiftState(state, code, { inline: true })) : '';
208
208
  code += ')';
209
+
209
210
  return code;
210
211
  }
211
212
  let code = '';
212
- code += this.left?.toUI ? this.left.toUI(shiftState(state, code, { inline: true })) : '';
213
+ code += '(' + (this.left?.toUI(shiftState(state, code, { inline: true })) || '') + ')';
213
214
  code += ` ${this.operator} `;
214
- code += this.right?.toUI ? this.right.toUI(shiftState(state, code, { inline: true })) : '';
215
+ code += '(' + (this.right?.toUI(shiftState(state, code, { inline: true })) || '') + ')';
215
216
  return code;
216
217
  }
217
218
 
@@ -230,9 +231,9 @@ export class BinaryExpression extends LogicItem {
230
231
  return code;
231
232
  }
232
233
  let code = '';
233
- code += '(' + this.left?.toJS ? this.left.toJS(shiftState(state, code, { inline: true })) : '' + ')';
234
+ code += '(' + (this.left?.toJS(shiftState(state, code, { inline: true })) || '') + ')';
234
235
  code += ` ${this.operator} `;
235
- code += '(' + this.right?.toJS ? this.right.toJS(shiftState(state, code, { inline: true })) : '' + ')';
236
+ code += '(' + (this.right?.toJS(shiftState(state, code, { inline: true })) || '') + ')';
236
237
  return code;
237
238
  }
238
239
 
@@ -15,6 +15,7 @@ import classMap from '../common/classMap';
15
15
  import LogicItem from './LogicItem__';
16
16
  import Destination from './Destination__';
17
17
  import ValidationRule from './ValidationRule__';
18
+ import Assignee from './Assignee__';
18
19
  import ViewElement from './ViewElement__';
19
20
  import ProcessElement from './ProcessElement__';
20
21
  import View from './View__';
@@ -69,6 +70,12 @@ export class BindAttribute extends BaseNode {
69
70
  @property('ValidationRule')
70
71
  rules: Array<ValidationRule> = [];
71
72
 
73
+ /**
74
+ * 经办人
75
+ */
76
+ @property('Assignee')
77
+ assignee: Assignee = undefined;
78
+
72
79
  /**
73
80
  * 是否使用 v-model
74
81
  */
@@ -184,6 +191,21 @@ export class BindAttribute extends BaseNode {
184
191
  });
185
192
  }
186
193
 
194
+ /**
195
+ * 设置经办人
196
+ */
197
+ setAssignee(assignee: Assignee) {
198
+ assignee._delete();
199
+ const relationOptions = { parentNode: this, parentKey: 'assignee' };
200
+ Object.assign(assignee, relationOptions);
201
+ const object = {
202
+ assignee,
203
+ };
204
+ this.update({
205
+ ...object,
206
+ });
207
+ }
208
+
187
209
  /**
188
210
  * 设置是否开启双向绑定
189
211
  */
@@ -240,7 +262,7 @@ export class BindAttribute extends BaseNode {
240
262
  name: options,
241
263
  }, this, 'rules');
242
264
  } else if (options instanceof ValidationRule) {
243
- options.delete(); // 同一实例不支持多处存在
265
+ options.ensureDelete(); // 同一实例不支持多处存在
244
266
  validationRule = options;
245
267
  Object.assign(validationRule, relationOptions);
246
268
  } else {
@@ -419,6 +441,33 @@ export class BindAttribute extends BaseNode {
419
441
  return validationRule.delete();
420
442
  }
421
443
 
444
+
445
+
446
+ /**
447
+ * 删除经办人
448
+ * @param name 经办人名称
449
+ */
450
+ removeAssignee(name: string): void;
451
+
452
+ /**
453
+ * 删除经办人
454
+ * @param assignee 已有的经办人实例
455
+ */
456
+ removeAssignee(assignee: Assignee): void;
457
+
458
+ removeAssignee(options: string | Assignee) {
459
+ let assignee: Assignee;
460
+ if (typeof options === 'string') {
461
+ assignee = this.assignee;
462
+ if (!assignee) {
463
+ throw new Error('找不到经办人 ' + options);
464
+ }
465
+ } else {
466
+ assignee = options;
467
+ }
468
+ return assignee.delete();
469
+ }
470
+
422
471
  __removeLogicItem(logicItem: LogicItem) {
423
472
  const parentKey = logicItem.parentKey;
424
473
  const params: Params = {
@@ -472,7 +521,7 @@ export class BindAttribute extends BaseNode {
472
521
  value = value.replace(/"/g, "'");
473
522
  }
474
523
  if (this.name === 'destination' && this.type === 'dynamic') {
475
- return this.destination.toVue(options);
524
+ return this.destination ? this.destination.toVue(options) : '';
476
525
  } else if (this.name === 'rules' && this.rules) {
477
526
  const ruleStrs = this.rules.map((rule) => rule.toVue());
478
527
  value = ruleStrs.join(' | ');
@@ -223,7 +223,26 @@ export class BindDirective extends BaseNode {
223
223
  value = value?.replace(/"/g, "'");
224
224
  }
225
225
  if (this.name === 'auth' && !!this.value) {
226
- value = `'/${this.view.name}/${this.element.name}'`;
226
+ const regex = /(.\w+\[name=\w+\])/g;
227
+ const paths = this.element.nodePath.match(regex);
228
+ const regex1 = /\s*=(\w+)\]/;
229
+ let pathArr: string[] = [];
230
+ const isElement = paths.find((item) => {
231
+ if (item.startsWith('.elements')) {
232
+ return true;
233
+ } else {
234
+ pathArr.push(item);
235
+ return false;
236
+ }
237
+ });
238
+ if (isElement) {
239
+ pathArr = [...pathArr, ...paths.slice(-1)];
240
+ }
241
+ const _path = pathArr.reduce((str, item) => {
242
+ const c = item.match(regex1);
243
+ return str + '/' + c[1];
244
+ }, '');
245
+ value = `'${_path}'`;
227
246
  }
228
247
  return value !== '' && value !== undefined && value !== null ? `v-${this.name}${modifiersString}${this.arg ? ':' + this.arg : ''}="${value}"` : '';
229
248
  }
@@ -165,7 +165,7 @@ export class BindEvent extends BaseNode {
165
165
  const relationOptions = { parentNode: this, parentKey: 'arguments' };
166
166
  let argument: Argument;
167
167
  if (options instanceof Argument) {
168
- options.delete(); // 同一实例不支持多处存在
168
+ options.ensureDelete(); // 同一实例不支持多处存在
169
169
  argument = options;
170
170
  Object.assign(argument, relationOptions);
171
171
  } else {
@@ -289,7 +289,10 @@ export class BindEvent extends BaseNode {
289
289
  // ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
290
290
  // 自动生成的代码已结束。下面可以手动编写。
291
291
  //================================================================================
292
-
292
+ // 用于logic回填
293
+ get calleewholeKey(): string {
294
+ return this.calleeNamespace + '.' + this.calleeName;
295
+ }
293
296
  get tsCalleeNamespace() {
294
297
  if (this.calleeNamespace) {
295
298
  let tsCalleeNamespace = this.calleeNamespace;
@@ -303,7 +306,7 @@ export class BindEvent extends BaseNode {
303
306
  get calleeKey(): string {
304
307
  const tsCalleeNamespace = this.tsCalleeNamespace;
305
308
  if (!tsCalleeNamespace) {
306
- return `logics.${this.calleeName}`;
309
+ return `${this.calleeName}`;
307
310
  }
308
311
  // elements单独处理相对路径,和后缀的问题
309
312
  if (tsCalleeNamespace.startsWith('elements') && tsCalleeNamespace.endsWith('logics')) {
@@ -326,7 +329,7 @@ export class BindEvent extends BaseNode {
326
329
  return `${randerNameSpace}.${this.calleeName}`;
327
330
  }
328
331
  // 绑定事件转驼峰
329
- toHump = (name: string) => name ? name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase()) : '';
332
+ toHump = (name: string) => (name ? name.replace(/\-(\w)/g, (all, letter) => letter.toUpperCase()) : '');
330
333
 
331
334
  @withSourceMap()
332
335
  toEmbeddedTS(state?: TranslatorState, isPageCycle?: Boolean): string {
@@ -377,7 +380,6 @@ export class BindEvent extends BaseNode {
377
380
  */
378
381
  toVue(options?: ElementToVueOptions) {
379
382
  const calleeNamespace = this.calleeNamespace;
380
-
381
383
  let isComponentLogic = false;
382
384
  let componentName = '';
383
385
  if (calleeNamespace) {
@@ -388,21 +390,42 @@ export class BindEvent extends BaseNode {
388
390
  componentName = namespaceArr[0];
389
391
  }
390
392
  }
391
- const calleeName = isComponentLogic ? `$refs.${componentName}.${this.calleeName}` : this.calleeName;
393
+ let callee = '';
394
+ if (isComponentLogic)
395
+ callee = `$refs.${componentName}.${this.calleeName}`;
396
+ else if (calleeNamespace?.startsWith('nasl.'))
397
+ callee = `$global.${this.calleeName}`;
398
+ else
399
+ callee = this.calleeName;
392
400
  let code = '';
393
- if (calleeName) {
394
- code += `@${this.name}="${calleeName}`;
401
+ if (callee) {
402
+ code += `@${this.name}="${callee}`;
403
+ const argsList: string[] = [];
404
+ const argsMap: any = {};
395
405
  if (Array.isArray(this.arguments) && this.arguments.length) {
396
- code += '(';
397
- this.arguments.forEach((arg, index) => {
398
- code += arg.toJS();
399
- if (index !== this.arguments.length - 1)
400
- code += ', ';
406
+ this.arguments.forEach((arg) => {
407
+ const argStr = arg.toJS();
408
+ argsList.push(argStr);
409
+ argsMap[argStr] = true;
401
410
  });
402
- code += ')';
403
- } else {
404
- code += '($event)';
405
411
  }
412
+ const additionalArgs: string[] = ['$event'];
413
+ if (Array.isArray(options?.scopeList) && options?.scopeList.length) {
414
+ additionalArgs.push(...options.scopeList);
415
+ }
416
+ additionalArgs.forEach((arg) => {
417
+ if (!argsMap[arg]) {
418
+ argsList.push(arg);
419
+ argsMap[arg] = true;
420
+ }
421
+ });
422
+ code += '(';
423
+ argsList.forEach((arg, index) => {
424
+ code += arg;
425
+ if (index !== argsList.length - 1)
426
+ code += ', ';
427
+ });
428
+ code += ')';
406
429
  code += `"`;
407
430
  }
408
431
  return code;